使用ROS1驅動(dòng)程序來(lái)操控ADI Trinamic電機控制器

發(fā)布時(shí)間:2024-5-13 19:49    發(fā)布者:eechina
關(guān)鍵詞: ROS1 , Trinamic , 電機控制
作者:Krizelle Paulene Apostol,軟件系統工程師;
Jamila Macagba,高級軟件系統工程師;
Maggie Maralit,軟件系統設計工程經(jīng)理
ADI公司

摘要

“實(shí)現機器人操作系統——電機控制器ROS1驅動(dòng)程序簡(jiǎn)介”一文中概述了新型ADI Trinamic™電機控制器(TMC)驅動(dòng)程序,并討論了將電機控制器集成到機器人操作系統(ROS)生態(tài)系統中的方法。TMC ROS1驅動(dòng)程序支持TMC驅動(dòng)層和應用層之間在ROS框架內無(wú)縫通信,且適用于它支持的各種TMC板。本文將深入探討TMC ROS1驅動(dòng)程序的功能,包括電機控制、信息檢索、命令執行、參數獲取以及對多種設置的支持。文中還概述了如何將電機控制器集成到嵌入式系統和應用中,從而利用ROS框架提供的優(yōu)勢。

ADI Trinamic電機控制器ROS1驅動(dòng)程序

ROS是一個(gè)機器人系統中間層,包含一組軟件庫和強大的開(kāi)發(fā)工具,從驅動(dòng)程序到最先進(jìn)的算法,可以在此基礎上開(kāi)發(fā)機器人系統或應用程序。ADI Trinamic電機控制器支持新型智能執行器,并且隨著(zhù)ROS變得越來(lái)越流行,尤其是在機器人領(lǐng)域,為了擴展在制造和工業(yè)自動(dòng)化應用中的適用性,我們開(kāi)發(fā)了ROS驅動(dòng)程序等附加模塊支持。ADI公司的TMC ROS1驅動(dòng)程序提供與Triaminic電機控制語(yǔ)言集成開(kāi)發(fā)環(huán)境(TMCL-IDE)類(lèi)似的功能,但有一個(gè)關(guān)鍵區別:它允許支持ROS的系統中的節點(diǎn)使用TMC,而無(wú)需額外安裝驅動(dòng)程序。此外,adi_tmcl集成了自己的TMCL協(xié)議解釋器,因此能夠解釋符合TMCL標準的用戶(hù)請求的命令。最后一層是tmcl_ros_node,它建立了與ROS系統的直接接口,提供發(fā)布者、訂閱者和服務(wù)等功能。每一個(gè)功能都可以使用一組參數進(jìn)行自定義,以下部分將詳細討論這些功能。

功能

1.        支持多種TMC模塊

TMC ROS驅動(dòng)程序或adi_tmcl旨在支持所有遵守TMCL協(xié)議的商用TMC。截至本文發(fā)布,它目前支持CAN接口(特別是SocketCAN)。但開(kāi)發(fā)工作還在進(jìn)行,不久的將來(lái)會(huì )支持其他接口。這些TMC包含ADI Trinamic PANdrive™智能電機和模塊,可以支持步進(jìn)電機和直流無(wú)刷伺服(BLDC)電機。由于使用ROS參數,adi_tmcl能夠無(wú)縫支持不同的TMC模塊。只需配置tmcl_ros_node而無(wú)需重新構建整個(gè)控制包。

在adi_tmcl/config目錄中,每個(gè)ADI Trinamic電機控制器模塊(TMCM)都有兩個(gè)相關(guān)的YAML文件。這些文件以人類(lèi)可讀的數據序列化語(yǔ)言編寫(xiě),包含ROS參數,應在執行期間加載:

►        adi_tmcl/config/autogenerated/TMCM-XXXX.yaml

此YAML文件是自動(dòng)生成的,包含特定于模塊的參數,不建議修改,以免導致節點(diǎn)行為異常。

►        adi_tmcl/config/TMCM-XXXX_Ext.yaml

此YAML文件包含用戶(hù)可以修改的所有參數,以便(1)與板通信(例如接口名稱(chēng)),(2)實(shí)現電機控制,以及(3)更改ROS主題名稱(chēng)。

例如,如果您想使用TMCM-1636(圖3),只需運行圖1所示的代碼。


圖1.啟動(dòng)TMCM-1636。

其中,adi_tmcl/launch/tmcm_1636.launch加載TMCM-1636專(zhuān)用的YAML文件。


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


圖3.(上)TMCM-1636硬件連接圖;(下)實(shí)際設置的參考圖片。

要使用TMCM-1260(圖6),請運行以下命令:


圖4.使用TMCM-1260啟動(dòng)TMC ROS驅動(dòng)程序的命令。

其中,adi_tmcl/launch/tmcm_1260.launch加載TMCM-1260專(zhuān)用的YAML文件。


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


圖6.(上)TMCM-1260硬件連接圖;(下)實(shí)際設置的參考圖片。

啟動(dòng)目錄包括所有支持的TMC模塊,可以點(diǎn)擊此處查看。

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

在通過(guò)ROS使用TMC模塊之前,需要根據所使用的電機完成配置。所有的配置使用TMCL-IDE完成,并應存儲在EEPROM中(否則可能無(wú)法正確控制電機)。

►        BLDC電機模塊(如TMCM-1636)
        有關(guān)如何在TMCL-IDE中通過(guò)Wizard Pool工具完成電機校準的流程/教程,請查看此教程。
        有關(guān)如何在TMCL-IDE中完成比例積分(PI)調諧功能的流程/教程,請查看此教程。
►        步進(jìn)電機模塊(如TMCM-1260)
        有關(guān)如何在TMCL-IDE中通過(guò)Wizard Pool功能完成初始化配置的流程/教程,請查看此教程。

初始化和調諧后,務(wù)必將所有參數存儲在板的EEPROM中。這可以通過(guò)如下方法來(lái)完成:(1)store參數,(2)STAP命令,以及/或者(3)創(chuàng )建和上傳TMCL程序并啟用自動(dòng)啟動(dòng)模式。有些板僅支持其中的少數選項。

TMC ROS驅動(dòng)程序的設計得到了簡(jiǎn)化,在完成TMC模塊和電機的初始化配置/調諧后,基于使用TMCL-IDE的一次性配置即可控制電機。

3.        移動(dòng)/停止電機

TMC ROS驅動(dòng)程序通過(guò)在以下任一主題中發(fā)布命令來(lái)移動(dòng)/停止電機:
►        /cmd_vel (geometry_msgs/Twist)—設置電機轉速
►        /cmd_abspos (std_msgs/Int32)—設置電機的絕對位置
►        /cmd_relpos (std_msgs/Int32)—設置電機的相對位置
►        /cmd_trq (std_msgs/Int32)—設置電機扭矩

注:多軸TMC設置中的不同電機有不同的地址。

用戶(hù)可以連接ROS系統來(lái)發(fā)送至這些特定指令,從而控制電機的運動(dòng)。指令的選擇取決于具體應用、TMC設置以及所用電機的類(lèi)型。例如,對于輪式機器人,用戶(hù)可以選擇設置速度;而對于夾具,設置位置會(huì )更合適。

作為說(shuō)明性示例,可以看看腳本adi_tmcl/scripts/fake_cmd_vel.sh。這個(gè)簡(jiǎn)單的腳本可以控制電機以順時(shí)針和逆時(shí)針兩個(gè)方向旋轉,并且逐漸提高轉速。要執行此腳本,請按照圖7所示的命令進(jìn)行操作。


圖7.用于測試TMC ROS驅動(dòng)程序轉速控制的命令。

注意:
►        2號終端窗口和3號終端窗口最好并排顯示。
►        可以按Ctrl-C復制1號終端窗口中的命令,完成后粘貼到2號終端窗口中。
►        3號終端窗口中的命令會(huì )自行停止。

為了驗證電機是否已移動(dòng),圖8顯示了來(lái)自TMC (/tmc_info_0)的實(shí)際轉速反饋圖。


圖8.使用RQT繪制的電機實(shí)際轉速圖(以m/s為單位)。

4.        TMC/電機信息檢索

系統可以通過(guò)訂閱以下主題,從TMC ROS驅動(dòng)程序檢索信息:

►        /tmc_info (adi_tmcl/TmcInfo) - 提供電壓、TMC狀態(tài)、實(shí)際轉速、實(shí)際位置和實(shí)際扭矩信息

注:多軸TMC設置中的不同電機有不同的主題。

用戶(hù)可以鏈接ROS系統來(lái)訂閱這些指定的主題。這樣,用戶(hù)就可以監視參數值,并根據參數值采取行動(dòng)。例如,在特定于應用的場(chǎng)景中,當檢測到TMC狀態(tài)出錯時(shí),操作員可能會(huì )選擇停止系統,或者在電機到達特定位置時(shí)執行預編程的動(dòng)作。

作為例子,adi_tmcl/scripts/fake_cmd_pos.sh是一個(gè)簡(jiǎn)單的腳本,它讓電機先順時(shí)針旋轉,再逆時(shí)針旋轉,并且不斷提高位置幅度。請執行圖9所示的命令。


圖9.用于測試TMC ROS驅動(dòng)程序位置控制的命令。

為了驗證電機是否已移動(dòng),圖10顯示了來(lái)自TMC (/tmc_info_0)的實(shí)際位置回讀圖。


圖10.使用RQT繪制的電機實(shí)際位置圖(以度為單位)。

5.        執行自定義TMC命令

系統可以通過(guò)執行以下功能來(lái)訪(fǎng)問(wèn)和調整TMC參數:

►        tmcl_custom_cmd (adi_tmcl/TmcCustomCmd) - 獲取/設置TMC的軸參數AP和全局參數(GP)的值

用戶(hù)可以選擇將此服務(wù)集成到ROS系統中,以滿(mǎn)足特定應用需求。此功能使用戶(hù)能夠直接從ROS驅動(dòng)程序配置TMC板。例如,用戶(hù)可以選擇設置軸參數(SAP)以獲得最大電流,從而調整允許的絕對電流水平。但是,用戶(hù)必須透徹了解他們要通過(guò)此功能修改的參數,不正確的設置可能會(huì )導致TMC ROS驅動(dòng)程序故障。因此,強烈建議任何配置都通過(guò)TMCL-IDE執行。圖11提供了調用此服務(wù)的示例,展示了使用指令類(lèi)型208對DrvStatusFlags進(jìn)行獲取軸參數(GAP)操作。


圖11.通過(guò)RQT觸發(fā)的tmcl_custom_cmd服務(wù)。

6.        訪(fǎng)問(wèn)所有軸參數值

系統可以通過(guò)以下方式訪(fǎng)問(wèn)TMC軸參數值:

►        tmcl_gap (adi_tmcl/TmcGapGgpAll) - 獲取指定電機/軸的所有TMC軸參數(AP)的值

用戶(hù)可以將ROS系統與此功能集成,以滿(mǎn)足特定應用的需求。例如,此服務(wù)可以捕獲TMC板的當前設置和狀態(tài),包括AP(例如編碼器步長(cháng)、PI調諧、換向模式等)。

圖12顯示了部分輸出示例。通過(guò)分析該結果,用戶(hù)可以確認一次性配置是否正確保存在板的EEPROM中。


圖12.通過(guò)RQT觸發(fā)的tmcl_gap_all服務(wù)。

7.        訪(fǎng)問(wèn)所有全局參數值

系統可以通過(guò)以下方式訪(fǎng)問(wèn)TMC全局參數值:

►        tmcl_ggp (adi_tmcl/TmcGapGgpAll) - 獲取所有TMC全局參數(GP)的值

此功能可以檢索TMC板的當前配置和狀態(tài)?稍L(fǎng)問(wèn)的一些GP包括:CAN比特率、串行波特率、自動(dòng)啟動(dòng)模式等。

圖13顯示了執行此服務(wù)后獲得的部分輸出。此結果使用戶(hù)能夠確認一次性配置是否已正確存儲在板的EEPROM中。


圖13.通過(guò)RQT觸發(fā)的tmcl_ggp_all。

8.        多個(gè)TMC板設置

對于可能需要多個(gè)TMC模塊的較大系統(如機械臂),TMC ROS驅動(dòng)程序支持多個(gè)器件設置。

a.        多個(gè)CAN通道中的多個(gè)TMC板

如圖14所示,當用戶(hù)的每個(gè)TMC板都有一個(gè)CAN-USB時(shí),系統將添加命名空間以區分每個(gè)節點(diǎn)的實(shí)例。在此特定用例中,需要相應更新comm_interface_name參數,以確保與板正確通信。


圖14.多個(gè)CAN通道中的多個(gè)TMC板的示例圖。

圖15中的代碼是用于設置此用例的示例啟動(dòng)文件。在此示例中,電機A可以通過(guò)發(fā)布到/tmcm1/cmd_abspos來(lái)控制,電機B可以通過(guò)發(fā)布到/tmcm2/cmd_abspos來(lái)控制,電機C可以通過(guò)發(fā)布到/tmcm3/cmd_abspos來(lái)控制。


圖15.使用多個(gè)CAN通道運行多個(gè)TMC ROS驅動(dòng)程序的代碼片段。

b.        單個(gè)CAN通道中的多個(gè)TMC板

TMC ROS驅動(dòng)程序支持的另一種設置是單個(gè)CAN通道中有多個(gè)TMC板,如圖16所示。與上文所述的對多個(gè)TMC板的支持非常相似,系統引入命名空間來(lái)區分每個(gè)節點(diǎn)實(shí)例。所有板的comm_interface_name保持一致。調整comm_tx_id和comm_rx_id以確保與各板正確通信。


圖16.單CAN通道中的多個(gè)TMC板的示例圖。

圖17顯示了用于設置此用例的示例啟動(dòng)文件。在此示例中,電機A可以通過(guò)發(fā)布到/tmcm1/cmd_abspos來(lái)控制,電機B可以通過(guò)發(fā)布到/tmcm2/cmd_abspos來(lái)控制,電機C可以通過(guò)發(fā)布到/tmcm3/cmd_abspos來(lái)控制。


圖17.使用單個(gè)CAN通道運行多個(gè)TMC ROS驅動(dòng)程序的代碼片段。

9.        輕松集成到ROS系統/應用中

借助ROS提供的消息傳遞系統,即便是較大的系統也可以輕松地交換節點(diǎn)(例如驅動(dòng)程序、算法等)。TMC ROS驅動(dòng)程序將這一優(yōu)勢擴展到了TMC板,允許它無(wú)縫集成到ROS系統/應用中。

a.        集成到AGV/AMR中

圖18說(shuō)明了navigation_node如何通過(guò)發(fā)送geometry_msg/Twist格式的/cmd_vel來(lái)控制移動(dòng)機器人。然后,motor_controller通過(guò)Geometry_msg/ Twist格式的/wheel_velocity發(fā)送反饋,使得navigation_node可以相應地重新校準。


圖18.AGV/AMR的簡(jiǎn)化架構。

通過(guò)了解navigation_node發(fā)布和訂閱的位置,tmcl_ros_node可以輕松更改motor_controller(圖19)。與TMC信息檢索功能類(lèi)似,adi_tmcl會(huì )發(fā)布關(guān)于車(chē)輪轉速的實(shí)時(shí)信息,wheel_velocity_node會(huì )將車(chē)輪轉速信息從adi_tmcl/TmcInfo轉換為geometry_msg/Twist。由于新架構及其集成的TMC板符合正確的數據格式,因此移動(dòng)機器人預計以相同方式工作。


圖19.帶有TMC ROS驅動(dòng)程序的AGV/AMR簡(jiǎn)化架構。

b.        集成到機械臂中

圖20說(shuō)明了為將TMC板集成到采用機械臂的貼片應用中,控制機械臂需要使用多個(gè)電機。與之前的用例類(lèi)似,用戶(hù)需要確保pick_and_place_node會(huì )訂閱/發(fā)布所預期的數據格式。


圖20.(上)帶有通用電機控制器的機械臂;(下)帶有TMC板的機械臂。

有關(guān)將TMC板集成到ROS系統的分步指南以及如何利用所述的功能,請點(diǎn)擊此處。

結論

ADI公司的TMC ROS1驅動(dòng)程序支持TMC基礎驅動(dòng)層和應用層之間在ROS管理的系統內無(wú)縫通信,且適用于它支持的各種TMC模塊。

本文深入探討了ADI Trinamic電機控制器ROS1驅動(dòng)程序提供的功能,包括:
►        電機運動(dòng)控制
►        檢索電機和控制器信息
►        執行TMC命令
►        獲取軸和全局參數值
►        支持多個(gè)TMC模塊控制設置

所有這些功能都是利用ROS的消息傳遞系統實(shí)現的,使得電機控制器可以輕松集成到基于ROS的系統和應用中。

如需了解更多信息,請訪(fǎng)問(wèn)ADI機器人頁(yè)面。

探索永不停息
►       敬請關(guān)注未來(lái)發(fā)表的有關(guān)用于A(yíng)DITrinamic電機控制器的ROS2的文章!
►       點(diǎn)擊此處購買(mǎi)ADITrinamic電機控制器評估板

►       點(diǎn)擊此處購買(mǎi)ADITrinamic電機

關(guān)于作者

Krizelle Paulene Apostol是一名軟件系統工程師,她所在的ADI公司菲律賓開(kāi)發(fā)中心與智能運動(dòng)和機器人部門(mén)展開(kāi)合作。她于2019年12月加入ADI公司,工作地點(diǎn)位于菲律賓甲米地。她畢業(yè)于菲律賓信心學(xué)院,獲計算機工程學(xué)士學(xué)位。她曾參與眾多項目,專(zhuān)注于ROS、Gazebo仿真、固件開(kāi)發(fā)、通信協(xié)議和算法開(kāi)發(fā)等領(lǐng)域。

Jamila“Jam”Aria Macagba是一名高級軟件系統工程師,她所在的ADI公司菲律賓開(kāi)發(fā)中心與智能運動(dòng)和機器人部門(mén)展開(kāi)合作。她于2018年7月加入ADI公司,工作地點(diǎn)位于菲律賓甲米地。她畢業(yè)于菲律賓大學(xué)洛斯巴洛斯分校,獲電氣工程學(xué)士學(xué)位。她主要負責ROS系統中的ROS驅動(dòng)程序開(kāi)發(fā)與集成工作。

Maggie是一名軟件系統設計工程經(jīng)理,她所在的ADI公司菲律賓開(kāi)發(fā)中心與工業(yè)運動(dòng)和機器人部門(mén)展開(kāi)合作。她于2019年4月加入ADI公司,工作地點(diǎn)位于菲律賓甲米地。她畢業(yè)于菲律賓大學(xué)洛斯巴洛斯分校(位于菲律賓拉古納),獲計算機科學(xué)學(xué)士學(xué)位。她目前在菲律賓工廠(chǎng)率領(lǐng)工程師小組,為工業(yè)機器人項目提供支持。從2009年至2010年,Maggie在惠普擔任應用專(zhuān)家;從2010年至2013年,在Canon Information Technologies Phils., Inc.擔任高級軟件工程師;從2013年至2015年,在Ionics EMS, Inc.擔任固件開(kāi)發(fā)工程師;從2015年至2019年,在新加坡大陸汽車(chē)公司擔任高級嵌入式軟件工程師。

本文地址:http://selenalain.com/thread-856947-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页