中南覆鸥人力资源有限公司

你的位置:首頁 > 傳感技術(shù) > 正文

實現(xiàn)機器人操作系統(tǒng)——ADI Trinamic電機控制器ROS1驅(qū)動程序簡介

發(fā)布時間:2024-04-24 來源:ADI公司 責任編輯:lina

【導讀】機器人操作系統(tǒng)(ROS)驅(qū)動程序基于ADI產(chǎn)品而開發(fā),因此可直接在ROS生態(tài)系統(tǒng)中使用這些產(chǎn)品。本文將概述如何在應用、產(chǎn)品和系統(tǒng)(例如,自主導航、安全氣泡地圖和數(shù)據(jù)收集機器人)中使用和集成這些驅(qū)動程序;以及這樣將如何有助于迅速評估新技術(shù),并避免出現(xiàn)與第三方產(chǎn)品的互操作性問題。

  

摘要


機器人操作系統(tǒng)(ROS)驅(qū)動程序基于ADI產(chǎn)品而開發(fā),因此可直接在ROS生態(tài)系統(tǒng)中使用這些產(chǎn)品。本文將概述如何在應用、產(chǎn)品和系統(tǒng)(例如,自主導航、安全氣泡地圖和數(shù)據(jù)收集機器人)中使用和集成這些驅(qū)動程序;以及這樣將如何有助于迅速評估新技術(shù),并避免出現(xiàn)與第三方產(chǎn)品的互操作性問題。在本文探討的所有產(chǎn)品中,將重點關(guān)注最近發(fā)布的用于ADI Trinamic?電機控制器的ROS驅(qū)動程序,該驅(qū)動程序是用于嵌入式運動控制的完整板級模塊,融合ADI Trinamic運動控制專業(yè)知識,以及ADI的模擬工藝技術(shù)和電源設計技能。1


什么是ROS?


ROS是機器人中間件,包含一組軟件庫和強大的開發(fā)工具(從驅(qū)動程序到先進算法),可作為機器人系統(tǒng)或應用的開發(fā)基礎(chǔ)。ROS涉及多領(lǐng)域(例如,消費電子、工業(yè)、汽車等),支持多個平臺(Linux、Windows、MacOS和一些嵌入式平臺),而且100%開源,并提供商業(yè)選項。得益于來自全球技術(shù)社區(qū)的專用資源,ROS可獲得豐富的支持,從而幫助用戶簡化其設計和應用。


該技術(shù)的工作原理是什么?


ROS始于2007年,已成為自動駕駛汽車、工業(yè)機器人、飛行器等領(lǐng)域備受歡迎的機器人開發(fā)原型制作平臺。經(jīng)過不斷發(fā)展,該技術(shù)現(xiàn)在有兩個版本:ROS1和ROS2。


ROS1和ROS2系統(tǒng)必須相互隔離,但通過ROS橋,這兩個系統(tǒng)之間可進行通信和交換數(shù)據(jù)。


表1.ROS1和ROS2的主要區(qū)別2


因素

ROS1

ROS2

通信協(xié)議

XMLRPC + TCPROS

DDS

架構(gòu)

ROS主控制器 + 分布式

完全分布式

構(gòu)建系統(tǒng)

Catkin(基于cmake)

colcon/ament(基于cmake)

構(gòu)建輸出

ros_ws/devel

ros_ws/install

參數(shù)

全局參數(shù)服務器動態(tài)重新配置

每節(jié)點參數(shù)

發(fā)布

XML

Python(+XML、YAML替代語言)

命令

roslaunch、rosrun、rostopic等

ros2 launch、ros2 run、ros2 topic等

平臺

主要是ubuntu

Linux、MacOS、Windows


ROS支持的平臺


ROS Noetic是ROS1的最終版本,將于2025年5月終止支持,而ROS2自2020年6月推出以來,不斷滾動更新發(fā)行版。


如需獲取完整列表,請查看這些鏈接,以了解ROS1支持的平臺和ROS2支持的平臺。


ROS基本概念


圖1顯示了ROS的一些基本概念,包括功能包、節(jié)點、主題、服務和消息。


實現(xiàn)機器人操作系統(tǒng)——ADI Trinamic電機控制器ROS1驅(qū)動程序簡介

圖1.ROS基本數(shù)據(jù)流。


注:對ROS1和ROS2而言,下文討論的ROS基本概念相似。


功能包

ROS功能包是ROS程序或節(jié)點的主要組織系統(tǒng)。這是ROS中最核心的構(gòu)建/發(fā)布項。創(chuàng)建ROS功能包時,請務必設置專用的ROS工作空間。該工作空間被稱為catkin工作空間,其中catkin是ROS的官方構(gòu)建系統(tǒng)。


節(jié)點

ROS節(jié)點是在ROS中創(chuàng)建的可執(zhí)行程序。它們是執(zhí)行特定任務的進程。ROS節(jié)點可使用ROS客戶端庫(如Python客戶端庫rospy和C++客戶端庫roscpp)相互通信。節(jié)點可以訂閱和/或發(fā)布主題,也可以提供或使用服務。3


主題

ROS主題是ROS節(jié)點生成(或者發(fā)布,用ROS的術(shù)語來說)的數(shù)據(jù)通道。


在ROS中,發(fā)布者節(jié)點是主題的廣播者,而訂閱者節(jié)點是主題的收聽者。


在圖2中,generic_motor_control的節(jié)點是廣播者。/cmd_vel是velocity_publisher發(fā)布的主題。這表示,velocity_publisher提供基于電機控制(或命令速度)的速度信息。


而ros_application的節(jié)點是收聽者,velocity_subscriber訂閱主題/cmd_vel。這表示,velocity_subscriber訪問或使用velocity_publisher提供的速度信息。


實現(xiàn)機器人操作系統(tǒng)——ADI Trinamic電機控制器ROS1驅(qū)動程序簡介

圖2.發(fā)布者-訂閱者。


消息

主題是數(shù)據(jù)通道,而消息是數(shù)據(jù),采用與ROS兼容、適用于不同傳感器的格式。


以下是適用于ROS消息格式的示例傳感器:

?飛行時間(ToF)攝像頭:sensor_msgs/Image、sensor_msgs/PointCloud

?慣性測量單元(IMU)傳感器:sensor_msgs/Imu

?電機控制:geometry_msgs/Twist

?車輪編碼器:geometry_msgs/TwistStamped、geometry_msgs/ TwistWithCovarianceStamped


ROS主題通過發(fā)送消息(主題發(fā)布者)或接收消息(主題訂閱者)進行通信,并且必須采用匹配的數(shù)據(jù)類型。


例如,在圖2中,來自velocity_publisher節(jié)點的速度信息(命令速度)希望被velocity_subscriber節(jié)點訪問/使用。如果主題發(fā)布者velocity_publisher使用數(shù)據(jù)類型geometry_msgs/Twist,則主題訂閱者velocity_subscriber也應使用相同的數(shù)據(jù)類型。


服務


發(fā)布者-訂閱者通信模式是開放式模式,不適用于分布式系統(tǒng)中通常需要的回復交互。4


服務支持節(jié)點通過發(fā)送請求和接收響應進行通信。發(fā)布者-訂閱者通信模式使用.srv文件,在這些文件中,指定了請求和響應的消息類型等服務描述。


服務是雙向同步通信模式,其中包含客戶端和服務器。服務器節(jié)點提供服務,而客戶端節(jié)點發(fā)送請求并等待服務器節(jié)點做出響應。


例如,在圖3中,server_node提供服務SetVelocity.srv以更改命令速度vel。該服務接受float32格式的速度值,并以字符串格式返回狀態(tài);如果設置了請求的速度,則為“success”;否則,為“FAIL”。


實現(xiàn)機器人操作系統(tǒng)——ADI Trinamic電機控制器ROS1驅(qū)動程序簡介

圖3.使用服務示例。


client_node發(fā)送請求,將命令速度設置為2.5 mbps。server_node收到請求后,立即發(fā)送“success”響應。


將ADI解決方案集成到ROS生態(tài)系統(tǒng)中


ADI是ROS-Industrial聯(lián)盟的正式成員,ROS-Industrial是一個開源項目,旨在將ROS軟件的高級功能擴展到與工業(yè)相關(guān)的硬件與應用。5作為該技術(shù)社區(qū)的一份子,ADI最初的目標是面向工業(yè)領(lǐng)域開發(fā)專用模塊。


ADI針對不同的專用模塊開發(fā)了ROS驅(qū)動程序。為了展示所開發(fā)的驅(qū)動程序并利用ROS的功能,ADI公司開發(fā)了ADI自主移動機器人(ADAM)作為內(nèi)部自主移動平臺(參見圖4)。


實現(xiàn)機器人操作系統(tǒng)——ADI Trinamic電機控制器ROS1驅(qū)動程序簡介

圖4.ADAM。


ADAM:ADI自主移動機器人


ADAM由ROS提供支持,并搭載ROS支持的不同器件。該平臺展示了ADI公司的ROS驅(qū)動程序如何集成到移動機器人應用中,特別是自主導航應用。


圖5所示為具有不同模塊的ADAM的簡化硬件圖。該ADAM主要連接以下器件:

?ADIS16470IMU傳感器采用精密陀螺儀、加速度計、磁力計和壓力傳感器的多軸組合,這些器件主要用作檢測反饋,用于改善位置/方向估算。

?ADBMS6948是一款多單元電池監(jiān)控器,可測量多達16個串聯(lián)連接的電芯,在整個溫度范圍內(nèi)具有較高的測量精度。

?EVAL-ADTF3175D-NXZ或CMOS ToF提供出色的高分辨率,與深度計算和處理、激光驅(qū)動器、電源管理以及具有參考固件/軟件的開發(fā)工具相輔相成,可帶來更多優(yōu)勢。

?ADI Trinamic電機控制器是用于嵌入式運動控制的完整板級解決方案,融合ADI Trinamic運動控制專業(yè)知識,以及ADI的模擬工藝技術(shù)和電源設計技能。1


實現(xiàn)機器人操作系統(tǒng)——ADI Trinamic電機控制器ROS1驅(qū)動程序簡介

圖5.ADAM的簡化硬件圖。


圖6所示為ADAM的簡化ROS架構(gòu),該ADAM使用ROS驅(qū)動程序和自主導航所需的多個應用/算法節(jié)點。IMU數(shù)據(jù)(/imu/data_raw)和ADI Trinamic電機控制器反饋(/tmc_info)用作姿態(tài)估算的輸入,從而得到機器人的里程測量結(jié)果(/odom)。激光雷達數(shù)據(jù)(/scan)是用于生成地圖的同步定位與地圖繪制(SLAM)算法的主要輸入;ToF數(shù)據(jù)(/image_raw)還可用作其他SLAM算法的輸入。然后,move_base節(jié)點將等待用戶發(fā)出任何目標姿態(tài),并向ADI Trinamic電機控制器發(fā)送速度命令(/cmd_vel),使機器人移動。


實現(xiàn)機器人操作系統(tǒng)——ADI Trinamic電機控制器ROS1驅(qū)動程序簡介

圖6.ADAM導航堆棧的簡化ROS架構(gòu)。


ADI Trinamic電機控制器ROS驅(qū)動程序


ADI Trinamic電機控制器(TMC)是用于嵌入式運動控制的完整板級解決方案,融合ADI Trinamic運動控制專業(yè)知識,以及ADI的模擬工藝技術(shù)和電源設計技能。1支持單軸/多軸步進電機、無刷直流電機(BLDC)等各類電機,可用接口包括CAN、EtherCAT?、RS-232、RS-485和USB,支持的協(xié)議涵蓋Trinamic運動控制語言(TMCL?)、CANopen? over EtherCAT (CoE)、CANopen或Modbus。1


名為TMCL-IDE的IDE可幫助用戶開發(fā)應用并對這些模塊輕松重新編程。該IDE使用TMCL實現(xiàn)獨立操作,或使用標準化CANopen?協(xié)議,允許用戶設置參數(shù)、實時對數(shù)據(jù)進行可視化處理,并開發(fā)/調(diào)試獨立應用。


由于TMC使新型智能執(zhí)行器成為可能,并且隨著ROS日益普及,尤其是在機器人領(lǐng)域,我們針對這些模塊開發(fā)了額外支持,如ROS驅(qū)動程序,從而進一步擴展制造業(yè)和工業(yè)自動化的用例。具體來說,預計這些ROS驅(qū)動程序?qū)⒛軌颍?/p>

?控制電機的速度、位置或扭矩

?監(jiān)控電機控制器和電機信息


TMC ROS驅(qū)動程序與TMCL-IDE提供的功能相似,但它能夠讓支持ROS的系統(tǒng)節(jié)點輕松使用這些TMC,無需安裝任何其他驅(qū)動程序。截至本文發(fā)表之時,該驅(qū)動程序僅支持CAN接口(特別是SocketCAN),其他接口正在開發(fā)中,很快也將提供支持。


此處列出了目前支持的ADI Trinamic電機控制器模塊(TMCM)。


軟件架構(gòu)


圖7所示為adi_tmcl的簡化軟件架構(gòu)。


如圖7所示,由于adi_tmcl使用大多數(shù)Linux系統(tǒng)默認支持的SocketCAN驅(qū)動程序,所以不需要任何額外的驅(qū)動程序。此外,adi_tmcl具有自己的TMCL協(xié)議解析器,因而能夠理解用戶請求的符合TMCL的發(fā)送/接收命令。作為最后一層,tmcl_ros_node以發(fā)布者、訂閱者和服務的形式在ROS系統(tǒng)上提供直接接口。每種形式均提供特定的功能,這些功能可使用以下部分詳細介紹的一組參數(shù)進行配置。


實現(xiàn)機器人操作系統(tǒng)——ADI Trinamic電機控制器ROS1驅(qū)動程序簡介

圖7.adi_tmcl的簡化軟件架構(gòu)。


特性

adi_tmcl提供一系列特性,包括:

1.     支持不同的TMC板

2.      使用TMCL-IDE對TMC模塊進行一次性配置

3.      移動/停止電機

4.      能夠獲取TMC/電機信息

5.      執(zhí)行自定義TMC命令

6.      能夠獲取所有軸參數(shù)值

7.     能夠獲取所有全局參數(shù)值

8.      支持多個TMC板設置

9.      輕松集成到ROS系統(tǒng)/應用中


敬請關(guān)注下月《模擬對話》中的文章“掌控搭載ROS1驅(qū)動程序的Trinamic電機控制器”,文中將詳細探討這些特性,并舉例說明如何使用這些特性。


結(jié)論


利用ADI Trinamic電機控制器可實現(xiàn)新型智能執(zhí)行器。隨著ROS日益普及,尤其是在機器人領(lǐng)域,我們針對這些模塊開發(fā)了額外支持,如ROS驅(qū)動程序,旨在進一步擴展制造業(yè)和工業(yè)自動化用例。

在本文中,我們展示了ROS如何擴展器件,帶來以下優(yōu)勢:

?提供附加價值,比如擴展工業(yè)應用;

?通過ROS通信框架,與第三方產(chǎn)品可輕松實現(xiàn)互操作;

?提供更廣泛的選項,方便客戶在其系統(tǒng)中選用ADI產(chǎn)品;

?快速評估新技術(shù)并立即開始使用。


探索永不停息

?敬請關(guān)注有關(guān)ADI Trinamic電機控制器ROS1驅(qū)動程序的文章,深入了解相關(guān)信息

?敬請關(guān)注未來發(fā)表的有關(guān)用于ADI Trinamic電機控制器的ROS2的文章

?下載ADI Trinamic電機控制器ROS1ROS2驅(qū)動程序

?購買ADI Trinamic電機和電機控制器評估板


參考文獻

1“用于電機和運動控制的ADI Trinamic硬件?!盇DI公司

2“ros2/ros2_documentation?!?GitHub, Inc.

3“了解ROS節(jié)點。” ROS.org.

4“服務。”ROS.org.

5“ROS-Industrial?!盧OS.org.

適合運動控制應用的工業(yè)通信協(xié)議和接口?!盇DI公司

(來源:ADI公司,作者:Krizelle Paulene Apostol,軟件系統(tǒng)工程師;Jamila Macagba,軟高級件系統(tǒng)工程師;Maggie Maralit,軟件系統(tǒng)涉及工程經(jīng)理)


免責聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理。


推薦閱讀:

ST 的RS-485收發(fā)器兼?zhèn)鋫鬏敺€(wěn)定性與速度,適用于工業(yè)自動化、智能建筑和機器人

羅姆集團旗下SiCrystal與意法半導體新簽協(xié)議,擴大碳化硅襯底供應

MCX N系列微處理器之NPU使用方法簡介

自主移動機器人的發(fā)展方向與解決方案

電動壓縮機設計-ASPM模塊篇


特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉

岳西县| 双鸭山市| 黔南| 宁津县| 九江县| 桓台县| 宣汉县| 西平县| 巴彦淖尔市| 芜湖县| 广平县| 太保市| 康马县| 修水县| 维西| 杨浦区| 治县。| 庆城县| 上杭县| 台山市| 五大连池市| 澄迈县| 西和县| 河北省| 西贡区| 新河县| 五原县| 长治市| 乌兰县| 鹿邑县| 仪陇县| 高碑店市| 太白县| 米林县| 桂林市| 嘉荫县| 大化| 衡阳县| 伊吾县| 仪征市| 福鼎市|