《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 解決方案 > 實現(xiàn)機器人操作系統(tǒng):ADI Trinamic電機控制器ROS1驅(qū)動程序

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

2024-05-06
作者:Krizelle Paulene Apostol,軟件系統(tǒng)工程師;Jamila Macagba,,軟高級件系統(tǒng)工程師,;Maggie Maralit,,軟件系統(tǒng)涉及工程經(jīng)理
來源:ADI
關(guān)鍵詞: ADI ROS 電機控制器

  摘要

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

  什么是ROS?

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

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

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

  ROS1和ROS2系統(tǒng)必須相互隔離,,但通過ROS橋,這兩個系統(tǒng)之間可進行通信和交換數(shù)據(jù),。有關(guān)更多信息,,請訪問ros2/ros1_bridge頁面。

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

屏幕截圖 2024-05-06 104743.png


  ROS支持的平臺

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

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

  ROS基本概念

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

屏幕截圖 2024-05-06 104812.png

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

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

  功能包

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

  節(jié)點

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

屏幕截圖 2024-05-06 104903.png



  圖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也應(yīng)使用相同的數(shù)據(jù)類型,。

  服務(wù)

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

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

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

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

屏幕截圖 2024-05-06 105247.png

  圖3.使用服務(wù)示例,。

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

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

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

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

屏幕截圖 2024-05-06 105407.png

  圖4.ADAM。

  ADAM:ADI自主移動機器人

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

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

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

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

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

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

屏幕截圖 2024-05-06 105527.png

  圖5.ADAM的簡化硬件圖。

  圖6所示為ADAM的簡化ROS架構(gòu),,該ADAM使用ROS驅(qū)動程序和自主導(dǎo)航所需的多個應(yīng)用/算法節(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),使機器人移動,。

屏幕截圖 2024-05-06 105556.png

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

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

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

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

  由于TMC使新型智能執(zhí)行器成為可能,,并且隨著ROS日益普及,尤其是在機器人領(lǐng)域,,我們針對這些模塊開發(fā)了額外支持,如ROS驅(qū)動程序,,從而進一步擴展制造業(yè)和工業(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ā)布者、訂閱者和服務(wù)的形式在ROS系統(tǒng)上提供直接接口,。每種形式均提供特定的功能,,這些功能可使用以下部分詳細介紹的一組參數(shù)進行配置。

屏幕截圖 2024-05-06 105901.png

  圖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板設(shè)置

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

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

  結(jié)論

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

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

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

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

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

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

  參考文獻

  1“用于電機和運動控制的ADI Trinamic硬件,。”ADI公司

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

  3“了解ROS節(jié)點?!?ROS.org.

  4“服務(wù),。”ROS.org.

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

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




更多精彩內(nèi)容歡迎點擊==>>電子技術(shù)應(yīng)用-AET<<

3bff459604b6c9954731105876ec40d.jpg



本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。