使用ROS1驅動程序來操控ADI Trinamic電機控製器
發布時間:2024-05-14 來源:ADI公司 責任編輯:lina
【導讀】“實現機器人操作係統——電機控製器ROS1驅動程序簡介”一文中概述了新型ADI Trinamic™電機控製器(TMC)驅動程序,並討論了將電機控製器集成到機器人操作係統(ROS)生態係統中的方法。TMC ROS1驅動程序支持TMC驅動層和應用層之間在ROS框架內無縫通信,且適用於它支持的各種TMC板。本文將深入探討TMC ROS1驅動程序的功能,包括電機控製、信息檢索、命令執行、參數獲取以及對多種設置的支持。文中還概述了如何將電機控製器集成到嵌入式係統和應用中,從而利用ROS框架提供的優勢。
摘要
“實現機器人操作係統——電機控製器ROS1驅動程序簡介”一文中概述了新型ADI Trinamic™電機控製器(TMC)驅動程序,並討論了將電機控製器集成到機器人操作係統(ROS)生態係統中的方法。TMC ROS1驅動程序支持TMC驅動層和應用層之間在ROS框架內無縫通信,且適用於它支持的各種TMC板。本文將深入探討TMC ROS1驅動程序的功能,包括電機控製、信息檢索、命令執行、參數獲取以及對多種設置的支持。文中還概述了如何將電機控製器集成到嵌入式係統和應用中,從而利用ROS框架提供的優勢。
ADI Trinamic電機控製器ROS1驅動程序
ROS是shi一yi個ge機ji器qi人ren係xi統tong中zhong間jian層ceng,包bao含han一yi組zu軟ruan件jian庫ku和he強qiang大da的de開kai發fa工gong具ju,從cong驅qu動dong程cheng序xu到dao最zui先xian進jin的de算suan法fa,可ke以yi在zai此ci基ji礎chu上shang開kai發fa機ji器qi人ren係xi統tong或huo應ying用yong程cheng序xu。ADI Trinamic電機控製器支持新型智能執行器,並且隨著ROS變得越來越流行,尤其是在機器人領域,為了擴展在製造和工業自動化應用中的適用性,我們開發了ROS驅動程序等附加模塊支持。ADI公司的TMC ROS1驅動程序提供與Triaminic電機控製語言集成開發環境(TMCL-IDE)類似的功能,但有一個關鍵區別:它允許支持ROS的係統中的節點使用TMC,而無需額外安裝驅動程序。此外,adi_tmcl集成了自己的TMCL協議解釋器,因此能夠解釋符合TMCL標準的用戶請求的命令。最後一層是tmcl_ros_node,它建立了與ROS係統的直接接口,提供發布者、訂閱者和服務等功能。每一個功能都可以使用一組參數進行自定義,以下部分將詳細討論這些功能。
功能
1.支持多種TMC模塊
TMC ROS驅動程序或adi_tmcl旨在支持所有遵守TMCL協議的商用TMC。截至本文發布,它目前支持CAN接口(特別是SocketCAN)。但開發工作還在進行,不久的將來會支持其他接口。這些TMC包含ADI Trinamic PANdrive™智能電機和模塊,可以支持步進電機和直流無刷伺服(BLDC)電機。由於使用ROS參數,adi_tmcl能夠無縫支持不同的TMC模塊。隻需配置tmcl_ros_node而無需重新構建整個控製包。
在adi_tmcl/config目錄中,每個ADI Trinamic電機控製器模塊(TMCM)都有兩個相關的YAML文件。這些文件以人類可讀的數據序列化語言編寫,包含ROS參數,應在執行期間加載:
►adi_tmcl/config/autogenerated/TMCM-XXXX.yaml
此YAML文件是自動生成的,包含特定於模塊的參數,不建議修改,以免導致節點行為異常。
►adi_tmcl/config/TMCM-XXXX_Ext.yaml
此YAML文件包含用戶可以修改的所有參數,以便(1)與板通信(例如接口名稱),(2)實現電機控製,以及(3)更改ROS主題名稱。
例如,如果您想使用TMCM-1636(圖3),隻需運行圖1所示的代碼。

圖1.啟動TMCM-1636。
其中,adi_tmcl/launch/tmcm_1636.launch加載TMCM-1636專用的YAML文件。

圖2.使用TMCM-1636運行TMC ROS驅動程序的代碼片段。

圖3.(上)TMCM-1636硬件連接圖;(下)實際設置的參考圖片。
要使用TMCM-1260(圖6),請運行以下命令:

圖4.使用TMCM-1260啟動TMC ROS驅動程序的命令。
其中,adi_tmcl/launch/tmcm_1260.launch加載TMCM-1260專用的YAML文件。

圖5.使用TMCM-1260運行TMC ROS驅動程序的代碼片段。

圖6.(上)TMCM-1260硬件連接圖;(下)實際設置的參考圖片。
啟動目錄包括所有支持的TMC模塊,可以點擊此處查看。
2.使用TMCL-IDE一次性配置TMC模塊
在通過ROS使用TMC模塊之前,需要根據所使用的電機完成配置。所有的配置使用TMCL-IDE完成,並應存儲在EEPROM中(否則可能無法正確控製電機)。
►BLDC電機模塊(如TMCM-1636)
有關如何在TMCL-IDE中通過Wizard Pool工具完成電機校準的流程/教程,請查看此教程。
有關如何在TMCL-IDE中完成比例積分(PI)調諧功能的流程/教程,請查看此教程。
►步進電機模塊(如TMCM-1260)
有關如何在TMCL-IDE中通過Wizard Pool功能完成初始化配置的流程/教程,請查看此教程。
初始化和調諧後,務必將所有參數存儲在板的EEPROM中。這可以通過如下方法來完成:(1)store參數,(2)STAP命令,以及/或者(3)創建和上傳TMCL程序並啟用自動啟動模式。有些板僅支持其中的少數選項。
TMC ROS驅動程序的設計得到了簡化,在完成TMC模塊和電機的初始化配置/調諧後,基於使用TMCL-IDE的一次性配置即可控製電機。
3.移動/停止電機
TMC ROS驅動程序通過在以下任一主題中發布命令來移動/停止電機:
►/cmd_vel (geometry_msgs/Twist)—設置電機轉速
►/cmd_abspos (std_msgs/Int32)—設置電機的絕對位置
►/cmd_relpos (std_msgs/Int32)—設置電機的相對位置
►/cmd_trq (std_msgs/Int32)—設置電機扭矩
注:多軸TMC設置中的不同電機有不同的地址。
用戶可以連接ROS係統來發送至這些特定指令,從而控製電機的運動。指令的選擇取決於具體應用、TMC設置以及所用電機的類型。例如,對於輪式機器人,用戶可以選擇設置速度;而對於夾具,設置位置會更合適。
作為說明性示例,可以看看腳本adi_tmcl/scripts/fake_cmd_vel.sh。這個簡單的腳本可以控製電機以順時針和逆時針兩個方向旋轉,並且逐漸提高轉速。要執行此腳本,請按照圖7所示的命令進行操作。

圖7.用於測試TMC ROS驅動程序轉速控製的命令。
注意:
►2號終端窗口和3號終端窗口最好並排顯示。
►可以按Ctrl-C複製1號終端窗口中的命令,完成後粘貼到2號終端窗口中。
►3號終端窗口中的命令會自行停止。
為了驗證電機是否已移動,圖8顯示了來自TMC (/tmc_info_0)的實際轉速反饋圖。

圖8.使用RQT繪製的電機實際轉速圖(以m/s為單位)。
4.TMC/電機信息檢索
係統可以通過訂閱以下主題,從TMC ROS驅動程序檢索信息:
►/tmc_info (adi_tmcl/TmcInfo) - 提供電壓、TMC狀態、實際轉速、實際位置和實際扭矩信息
注:多軸TMC設置中的不同電機有不同的主題。
用戶可以鏈接ROS係統來訂閱這些指定的主題。這樣,用戶就可以監視參數值,並根據參數值采取行動。例如,在特定於應用的場景中,當檢測到TMC狀態出錯時,操作員可能會選擇停止係統,或者在電機到達特定位置時執行預編程的動作。
作為例子,adi_tmcl/scripts/fake_cmd_pos.sh是一個簡單的腳本,它讓電機先順時針旋轉,再逆時針旋轉,並且不斷提高位置幅度。請執行圖9所示的命令。

圖9.用於測試TMC ROS驅動程序位置控製的命令。
為了驗證電機是否已移動,圖10顯示了來自TMC (/tmc_info_0)的實際位置回讀圖。

圖10.使用RQT繪製的電機實際位置圖(以度為單位)。
5.執行自定義TMC命令
係統可以通過執行以下功能來訪問和調整TMC參數:
►tmcl_custom_cmd (adi_tmcl/TmcCustomCmd) - 獲取/設置TMC的軸參數AP和全局參數(GP)的值
用戶可以選擇將此服務集成到ROS係統中,以滿足特定應用需求。此功能使用戶能夠直接從ROS驅動程序配置TMC板。例如,用戶可以選擇設置軸參數(SAP)以獲得最大電流,從而調整允許的絕對電流水平。但是,用戶必須透徹了解他們要通過此功能修改的參數,不正確的設置可能會導致TMC ROS驅動程序故障。因此,強烈建議任何配置都通過TMCL-IDE執行。圖11提供了調用此服務的示例,展示了使用指令類型208對DrvStatusFlags進行獲取軸參數(GAP)操作。

圖11.通過RQT觸發的tmcl_custom_cmd服務。
6.訪問所有軸參數值
係統可以通過以下方式訪問TMC軸參數值:
►tmcl_gap (adi_tmcl/TmcGapGgpAll) - 獲取指定電機/軸的所有TMC軸參數(AP)的值
用戶可以將ROS係統與此功能集成,以滿足特定應用的需求。例如,此服務可以捕獲TMC板的當前設置和狀態,包括AP(例如編碼器步長、PI調諧、換向模式等)。
圖12顯示了部分輸出示例。通過分析該結果,用戶可以確認一次性配置是否正確保存在板的EEPROM中。

圖12.通過RQT觸發的tmcl_gap_all服務。
7.訪問所有全局參數值
係統可以通過以下方式訪問TMC全局參數值:
►tmcl_ggp (adi_tmcl/TmcGapGgpAll) - 獲取所有TMC全局參數(GP)的值
此功能可以檢索TMC板的當前配置和狀態。可訪問的一些GP包括:CAN比特率、串行波特率、自動啟動模式等。
圖13顯示了執行此服務後獲得的部分輸出。此結果使用戶能夠確認一次性配置是否已正確存儲在板的EEPROM中。

圖13.通過RQT觸發的tmcl_ggp_all。
8.多個TMC板設置
對於可能需要多個TMC模塊的較大係統(如機械臂),TMC ROS驅動程序支持多個器件設置。
a.多個CAN通道中的多個TMC板
如圖14所示,當用戶的每個TMC板都有一個CAN-USB時,係統將添加命名空間以區分每個節點的實例。在此特定用例中,需要相應更新comm_interface_name參數,以確保與板正確通信。

圖14.多個CAN通道中的多個TMC板的示例圖。
圖15中的代碼是用於設置此用例的示例啟動文件。在此示例中,電機A可以通過發布到/tmcm1/cmd_abspos來控製,電機B可以通過發布到/tmcm2/cmd_abspos來控製,電機C可以通過發布到/tmcm3/cmd_abspos來控製。

圖15.使用多個CAN通道運行多個TMC ROS驅動程序的代碼片段。
b.單個CAN通道中的多個TMC板
TMC ROS驅動程序支持的另一種設置是單個CAN通道中有多個TMC板,如圖16所示。與上文所述的對多個TMC板的支持非常相似,係統引入命名空間來區分每個節點實例。所有板的comm_interface_name保持一致。調整comm_tx_id和comm_rx_id以確保與各板正確通信。

圖16.單CAN通道中的多個TMC板的示例圖。
圖17顯示了用於設置此用例的示例啟動文件。在此示例中,電機A可以通過發布到/tmcm1/cmd_abspos來控製,電機B可以通過發布到/tmcm2/cmd_abspos來控製,電機C可以通過發布到/tmcm3/cmd_abspos來控製。

圖17.使用單個CAN通道運行多個TMC ROS驅動程序的代碼片段。
9.輕鬆集成到ROS係統/應用中
借助ROS提供的消息傳遞係統,即便是較大的係統也可以輕鬆地交換節點(例如驅動程序、算法等)。TMC ROS驅動程序將這一優勢擴展到了TMC板,允許它無縫集成到ROS係統/應用中。
a.集成到AGV/AMR中
圖18說明了navigation_node如何通過發送geometry_msg/Twist格式的/cmd_vel來控製移動機器人。然後,motor_controller通過Geometry_msg/ Twist格式的/wheel_velocity發送反饋,使得navigation_node可以相應地重新校準。

圖18.AGV/AMR的簡化架構。
通過了解navigation_node發布和訂閱的位置,tmcl_ros_node可以輕鬆更改motor_controller(圖19)。與TMC信息檢索功能類似,adi_tmcl會發布關於車輪轉速的實時信息,wheel_velocity_node會將車輪轉速信息從adi_tmcl/TmcInfo轉換為geometry_msg/Twist。由於新架構及其集成的TMC板符合正確的數據格式,因此移動機器人預計以相同方式工作。

圖19.帶有TMC ROS驅動程序的AGV/AMR簡化架構。
b.集成到機械臂中
圖20說明了為將TMC板集成到采用機械臂的貼片應用中,控製機械臂需要使用多個電機。與之前的用例類似,用戶需要確保pick_and_place_node會訂閱/發布所預期的數據格式。

圖20.(上)帶有通用電機控製器的機械臂;(下)帶有TMC板的機械臂。
有關將TMC板集成到ROS係統的分步指南以及如何利用所述的功能,請點擊此處。
結論
ADI公司的TMC ROS1驅動程序支持TMC基礎驅動層和應用層之間在ROS管理的係統內無縫通信,且適用於它支持的各種TMC模塊。
本文深入探討了ADI Trinamic電機控製器ROS1驅動程序提供的功能,包括:
►電機運動控製
►檢索電機和控製器信息
►執行TMC命令
►獲取軸和全局參數值
►支持多個TMC模塊控製設置
所有這些功能都是利用ROS的消息傳遞係統實現的,使得電機控製器可以輕鬆集成到基於ROS的係統和應用中。
如需了解更多信息,請訪問ADI機器人頁麵。
探索永不停息
►查看文章“實現機器人操作係統——ADI Trinamic電機控製器ROS1驅動程序簡介”
►敬請關注未來發表的有關用於ADI Trinamic電機控製器的ROS2的文章!
►點擊此處購買ADI Trinamic電機控製器評估板
►點擊此處購買ADI Trinamic電機
(來源:ADI公司,作者:Krizelle Paulene Apostol,軟件係統工程師;Jamila Macagba,高級軟件係統工程師;Maggie Maralit,軟件係統設計工程經理)
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
推薦閱讀:
幹貨!UWB新國標深度解讀 | 大帶寬模式是國產化突圍的關鍵
車用TVS、電阻和溫度傳感器選型:三款位居C位的元件,推薦給你
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 1200餘家企業齊聚深圳,CITE2026打造電子信息產業創新盛宴
- 掌握 Gemini 3.1 Pro 參數調優的藝術
- 築牢安全防線:電池擠壓試驗機如何為新能源產業護航?
- Grok 4.1 API 實戰:構建 X 平台實時輿情監控 Agent
- 電源芯片國產化新選擇:MUN3CAD03-SF助力物聯網終端“芯”升級
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall





