《電子技術應用》
您所在的位置:首頁 > 人工智能 > 解決方案 > 使用ROS1驅動程序來操控ADI Trinamic電機控制器

使用ROS1驅動程序來操控ADI Trinamic電機控制器

2024-05-15
作者:Krizelle Paulene Apostol,軟件系統工程師;Jamila Macagba,高級軟件系統工程師;Maggie Maralit,軟件系統設計工程經理
來源:ADI
關鍵詞: ADI ROS 電機控制器

  摘要

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

  ADI Trinamic電機控制器ROS1驅動程序

  ROS是一個機器人系統中間層,包含一組軟件庫和強大的開發工具,從驅動程序到最先進的算法,可以在此基礎上開發機器人系統或應用程序。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所示的代碼。

屏幕截圖 2024-05-15 164612.png

  圖1.啟動TMCM-1636。

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

屏幕截圖 2024-05-15 164623.png

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

屏幕截圖 2024-05-15 164635.png

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

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

屏幕截圖 2024-05-15 164646.png

  圖4.使用TMCM-1260啟動TMC ROS驅動程序的命令。

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

屏幕截圖 2024-05-15 164658.png

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

屏幕截圖 2024-05-15 164710.png

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

  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所示的命令進行操作。

屏幕截圖 2024-05-15 164723.png

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

  注意:

  ▲2號終端窗口和3號終端窗口最好并排顯示。

  ▲可以按Ctrl-C復制1號終端窗口中的命令,完成后粘貼到2號終端窗口中。

  ▲3號終端窗口中的命令會自行停止。

  為了驗證電機是否已移動,圖8顯示了來自TMC (/tmc_info_0)的實際轉速反饋圖。

屏幕截圖 2024-05-15 164733.png

  圖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所示的命令。

屏幕截圖 2024-05-15 164745.png

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

  為了驗證電機是否已移動,圖10顯示了來自TMC (/tmc_info_0)的實際位置回讀圖。

屏幕截圖 2024-05-15 164755.png

  圖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)操作。

屏幕截圖 2024-05-15 164806.png

  圖11.通過RQT觸發的tmcl_custom_cmd服務。

  6.訪問所有軸參數值

  系統可以通過以下方式訪問TMC軸參數值:

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

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

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

屏幕截圖 2024-05-15 164820.png

  圖12.通過RQT觸發的tmcl_gap_all服務。

  7.訪問所有全局參數值

  系統可以通過以下方式訪問TMC全局參數值:

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

  此功能可以檢索TMC板的當前配置和狀態。可訪問的一些GP包括:CAN比特率、串行波特率、自動啟動模式等。

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

屏幕截圖 2024-05-15 164832.png

  圖13.通過RQT觸發的tmcl_ggp_all。

  8.多個TMC板設置

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

  a.多個CAN通道中的多個TMC板

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

屏幕截圖 2024-05-15 164842.png

  圖14.多個CAN通道中的多個TMC板的示例圖。

  圖15中的代碼是用于設置此用例的示例啟動文件。在此示例中,電機A可以通過發布到/tmcm1/cmd_abspos來控制,電機B可以通過發布到/tmcm2/cmd_abspos來控制,電機C可以通過發布到/tmcm3/cmd_abspos來控制。

屏幕截圖 2024-05-15 164858.png

  圖15.使用多個CAN通道運行多個TMC ROS驅動程序的代碼片段。

  a.單個CAN通道中的多個TMC板

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

屏幕截圖 2024-05-15 164910.png

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

  圖17顯示了用于設置此用例的示例啟動文件。在此示例中,電機A可以通過發布到/tmcm1/cmd_abspos來控制,電機B可以通過發布到/tmcm2/cmd_abspos來控制,電機C可以通過發布到/tmcm3/cmd_abspos來控制。

屏幕截圖 2024-05-15 164924.png

  圖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可以相應地重新校準。

屏幕截圖 2024-05-15 164936.png

  圖18.AGV/AMR的簡化架構。

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

屏幕截圖 2024-05-15 164946.png

  圖19.帶有TMC ROS驅動程序的AGV/AMR簡化架構。

  a.集成到機械臂中

  圖20說明了為將TMC板集成到采用機械臂的貼片應用中,控制機械臂需要使用多個電機。與之前的用例類似,用戶需要確保pick_and_place_node會訂閱/發布所預期的數據格式。

屏幕截圖 2024-05-15 164957.png

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

  結論

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

  本文深入探討了ADI Trinamic電機控制器ROS1驅動程序提供的功能,包括:

  ▲電機運動控制

  ▲檢索電機和控制器信息

  ▲執行TMC命令

  ▲獲取軸和全局參數值

  ▲支持多個TMC模塊控制設置

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




更多精彩內容歡迎點擊==>>電子技術應用-AET<<

3bff459604b6c9954731105876ec40d.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美三级网页| 韩国视频理论视频久久| 欧美在线高清| 宅男噜噜噜66一区二区| 亚洲电影第1页| 欧美一区二区三区免费视频| 亚洲午夜在线| 一区二区日韩| 亚洲理论在线| 亚洲激情在线观看| 在线观看久久av| 禁断一区二区三区在线| 国产一区999| 国产日韩精品久久| 国产麻豆成人精品| 国产精品久久久久久久久久直播| 欧美日韩免费高清| 欧美日韩mp4| 欧美精品在线网站| 欧美精品免费看| 欧美喷水视频| 欧美日韩综合在线免费观看| 欧美日韩系列| 欧美三级视频在线| 欧美午夜一区二区三区免费大片 | 欧美一级播放| 欧美一区二区三区的| 亚洲欧美综合精品久久成人 | 国产精品久久久久9999| 国产精品激情电影| 国产精品视屏| 国产区日韩欧美| 国产在线不卡精品| 黄网站免费久久| 尤物九九久久国产精品的特点| 狠狠色香婷婷久久亚洲精品| 揄拍成人国产精品视频| 在线精品观看| 亚洲日韩欧美视频| 一区二区三区高清在线观看| 亚洲砖区区免费| 欧美在线视频免费| 亚洲国产精品va| 亚洲精品视频在线观看网站 | 亚洲影院免费| 欧美在线播放一区二区| 欧美在线一区二区三区| 久久久久久综合网天天| 蜜臀久久久99精品久久久久久 | 尤妮丝一区二区裸体视频| 亚洲国产你懂的| 日韩视频精品| 亚洲综合色自拍一区| 欧美淫片网站| 亚洲精品欧美一区二区三区| 亚洲天堂av在线免费观看| 妖精成人www高清在线观看| 亚洲欧美日韩综合aⅴ视频| 久久精品欧美日韩精品| 欧美高清影院| 国产精品嫩草99a| 狠狠色综合播放一区二区| 亚洲精品欧美激情| 亚洲欧美在线免费| 亚洲黄色高清| 亚洲一区二区伦理| 久久精品在线观看| 欧美精品日日鲁夜夜添| 国产乱码精品1区2区3区| 娇妻被交换粗又大又硬视频欧美| 亚洲精品资源美女情侣酒店| 亚洲欧美在线播放| 亚洲精品美女在线| 性高湖久久久久久久久| 老司机精品导航| 欧美日韩一区二区精品| 国产日产高清欧美一区二区三区| 狠狠综合久久| 在线一区二区三区做爰视频网站 | 黄色成人在线免费| 日韩午夜在线播放| 欧美在线影院| 亚洲主播在线| 欧美成年人视频网站| 国产精品视频精品视频| 亚洲电影下载| 午夜精品视频在线观看| 亚洲精品日韩精品| 欧美一区二区免费| 欧美日韩成人综合天天影院| 国产一区二区三区在线免费观看 | 欧美日韩成人网| 国产一区高清视频| 一本久久综合亚洲鲁鲁| 亚洲第一精品夜夜躁人人爽 | 国产精品成人观看视频免费 | 国产午夜精品麻豆| 99国产麻豆精品| 亚洲国产婷婷| 久久激情五月婷婷| 欧美日韩午夜| 亚洲国产精品综合| 久久激情综合网| 午夜影视日本亚洲欧洲精品| 欧美成人午夜免费视在线看片| 国产亚洲一区二区在线观看| 在线综合亚洲欧美在线视频| 99re热这里只有精品免费视频| 久久人体大胆视频| 国产欧美日韩综合一区在线观看| 夜夜嗨av色综合久久久综合网| 亚洲精品男同| 男人插女人欧美| 激情一区二区| 久久国产加勒比精品无码| 欧美在线观看你懂的| 国产精品theporn| 亚洲日本无吗高清不卡| 亚洲精美视频| 麻豆亚洲精品| 在线 亚洲欧美在线综合一区| 欧美一区二区视频免费观看| 久久精品亚洲国产奇米99| 国产日本亚洲高清| 亚洲欧美精品在线| 午夜精品久久久久99热蜜桃导演| 国产精品久久久久久超碰| 一本色道久久综合| 亚洲天堂av在线免费| 欧美日韩精品一区二区三区| 日韩视频在线播放| 亚洲午夜av在线| 国产精品美女久久久久av超清| 亚洲午夜精品网| 欧美一级在线视频| 国产亚洲综合在线| 亚洲第一中文字幕| 免费观看欧美在线视频的网站| 亚洲国产国产亚洲一二三| 91久久一区二区| 欧美理论在线| 9i看片成人免费高清| 亚洲欧美清纯在线制服| 国产精品一区二区三区乱码| 午夜一区不卡| 亚洲天堂成人在线观看| 欧美日韩一区三区四区| 欧美视频在线观看| 亚洲午夜激情| 亚洲欧洲三级电影| 欧美日韩免费一区二区三区视频 | 欧美在线国产| 久久视频一区二区| 激情av一区二区| 亚洲第一视频网站| 久久亚洲精品视频| 精品成人在线观看| 91久久嫩草影院一区二区| 免费永久网站黄欧美| 亚洲电影第1页| 亚洲在线中文字幕| 国产精品久久久久高潮| 亚洲永久免费精品| 欧美一区在线视频| 国产精品久久久久99| 久久大香伊蕉在人线观看热2| 久久综合久久久久88| 亚洲国产欧美在线人成| 99av国产精品欲麻豆| 国产乱肥老妇国产一区二| 午夜免费久久久久| 久久久久久9| 亚洲成色最大综合在线| 久久国产天堂福利天堂| 欧美日韩高清免费| 一本久道久久久| 欧美亚洲一区三区| 国产在线日韩| 亚洲激情综合| 欧美日产国产成人免费图片| 亚洲日本中文字幕区| 日韩午夜在线播放| 欧美视频官网| 亚洲福利视频在线| 欧美精品一区在线播放| 亚洲天堂偷拍| 久久精品国产在热久久| 亚洲区一区二区三区| 亚洲一区二区成人在线观看| 国产女主播一区二区三区| 亚洲电影天堂av| 欧美日韩1区| 亚洲欧美精品在线观看| 美女被久久久| 99re66热这里只有精品4| 亚洲影院在线观看| 亚洲国产99| 亚洲综合99| 韩国三级在线一区| 亚洲全部视频|