• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 機器人 > 設計應用 > 以馬達控制器ROS1驅動程序實現機器人操作系統

    以馬達控制器ROS1驅動程序實現機器人操作系統

    作者: 時間:2025-01-20 來源: 收藏

    (ROS)是基于產品而開發,因此可直接在ROS生態系統中使用這些產品。本文概述如何在應用、產品和系統(例如自主導航、安全氣泡地圖和數據采集機器人)中使用和整合這些;以及如此將如何有助于迅速評估新技術,并避免出現與第三方產品的互操作性問題。
    在本文探討的所有產品中,將重點關注用于 的ROS,該驅動程序是用于嵌入式運動控制的完整板級模塊,融合 運動控制專業知識,以及ADI的模擬技術和電源設計技能。

    什么是ROS?
    ROS是機器人中間件,包含一組軟件庫和強大的開發工具(從驅動程序到先進算法),可作為機器人系統或應用的開發基礎。ROS涉及多領域(例如消費性電子、工業、汽車等),支持多個平臺(Linux、Windows、MacOS和一些嵌入式平臺),而且100%開源。得益于來自全球技術社群的專用資源,ROS可獲得豐富的支持,進而幫助用戶簡化其設計和應用。

    技術工作原理
    ROS始于2007年,已成為自駕車、工業機器人、飛行器等領域備受歡迎的機器人開發原型制作平臺。經過不斷發展,該技術現在已經有兩個版本:和ROS2。和ROS2系統必須相互隔離,但通過ROS橋,這兩個系統之間可進行通訊和交換數據。

    本文引用地址:http://www.czjhyjcfj.com/article/202501/466493.htm

    表一:和ROS2的主要區別

    因素

    ROS1

    ROS2

    通訊協議

    XMLRPC   + TCPROS

    DDS

    構建

    ROS 主控制器 + 分布式

    完全分布式

    構建系統

    Catkin (基于cmake)

    colcon/ament

    (基于cmake)

    構建輸出

    ros_ws/devel

    ros_ws/install

    參數

    全局參數服務器
      動態重新配置

    每節點參數

    發布

    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月推出以來則不斷滾動更新發行版。

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

    圖片.png圖片.png
     
    圖一 : ROS基本數據流。

    注:對ROS1和ROS2而言,下文討論的ROS基本概念相似。
    功能包
    ROS功能包是ROS程序或節點的主要組織系統。這是ROS中最核心的構建/發表項。創建ROS功能包時,請務必設定專用的ROS工作空間。該工作空間被稱為catkin工作空間,其中catkin是ROS的官方構建系統。
    節點
    ROS節點是在ROS中創建的可執行程序。它們是執行特定任務的進程。ROS節點可使用ROS客戶端庫(如Python客戶端庫rospy和C++ 客戶端庫roscpp)相互通訊。節點可以訂閱和/或發表主題,也可以提供或使用服務。
    主題
    ROS主題是ROS節點生成(或者發表,以ROS術語而言)的數據信道。
    在ROS中,發表者節點是主題的廣播者,而訂閱者節點是主題的收聽者。
    在圖二中,generic_motor_control的節點是廣播者。/cmd_vel是velocity_ publisher發表的主題。這表示,velocity_publisher提供基于馬達控制(或命令速度)的速度信息。

    圖片.png
     
    圖二 : 發表者-訂閱者

    而ros_application的節點是收聽者,velocity_subscriber訂閱主題/cmd_vel。這表示,velocity_subscriber存取或使用velocity_publisher提供的速度信息。
    消息
    主題是數據信道,而消息是數據,采用與ROS兼容、適用于不同傳感器的格式。
    以下是適用于ROS消息格式的示例傳感器:
    ? 飛時測距(ToF)攝影機:sensor_msgs/Image、sensor_msgs/PointCloud
    ? 慣性測量單元(IMU)傳感器:sensor_msgs/Imu
    ? 馬達控制:geometry_msgs/Twist
    ? 車輪編碼器:geometry_msgs/TwistStamped、geometry_msgs/TwistWithCovarianceStampe

    ROS主題透過發送消息(主題發布者)或接收消息(主題訂閱者)進行通訊,并且必須采用匹配的數據類型。
    例如,在圖二中,來自velocity_publisher節點的速度信息(命令速度)希望被velocity_subscriber節點存取/使用。如果主題發布者velocity_publisher使用數據類型geometry_msgs/Twist,則主題訂閱者velocity_subscriber也應使用相同的數據類型。

    服務
    發表者-訂閱者通訊模式是開放式模式,不適用于分布式系統中通常需要的回復交互。服務支持節點透過發送請求和接收響應進行通訊。發表者-訂閱者通訊模式使用.srv檔,在這些檔中,指定了請求和響應的消息類型等服務描述。
    服務是雙向同步通訊模式,其中包含客戶端和服務器。服務器節點提供服務,而客戶端節點發送請求并等待服務器節點做出回應。
    例如,在圖三中,server_node提供服務SetVelocity.srv以更改命令速度vel。該服務接受float32格式的速度值,并以字符串格式返回狀態;如果設置了請求的速度,則為"success";否則,為"FAIL"。

    圖片.png 
    圖三 : 使用服務示例

    client_node發送請求,將命令速度設定為2.5 mbps。server_node收到請求后,立即發送"success"響應。

    將解決方案整合至ROS生態系統
    ADI是ROS-Industrial聯盟的正式成員,ROS-Industrial是一個開源項目,旨在將ROS軟件的先進功能擴展到與工業相關的硬件與應用中。作為該技術社群的一份子,ADI最初的目標是針對工業領域開發專用模塊。
    ADI針對不同的專用模塊開發了ROS驅動程序。為了展示所開發的驅動程序并利用ROS的功能,ADI也開發了ADI自主移動機器人(ADAM)作為內部自主移動平臺(參見圖四)。

    圖片.png 
    圖四 : ADAM

    ADAM:ADI自主移動機器人
    ADAM由ROS提供支持,并搭載ROS支持的不同組件。該平臺展示了ADI的ROS驅動程序如何整合到移動機器人應用中,特別是自主導航應用。
    圖五所示為具有不同模塊的ADAM的簡化硬件圖。該ADAM主要連接以下組件:
    ? ADIS16470或IMU傳感器采用精密陀螺儀、加速度計、磁力計和壓力傳感器的多軸組合,這些組件主要用作檢測回饋,用 于改善位置/方向估算。
    ? ADBMS6948是一款多單元電池監控器,可測量多達16個串聯連接的電芯,在整個溫度范圍內具有較高的測量精度。
    ? EVAL-ADTF3175D-NXZ或 CMOS ToF提供出色的高分辨率,與深度運算和處理、激光驅動器、電源管理以及具有參考韌體/軟件的開發工具相輔相成,可帶來更多優勢。
    ? ADI 是用于嵌入式運動控制的完整板級解決方案,融合ADI Trinamic運動控制專業知識,以及ADI的仿真工藝技術和電源設計技能。1

    圖片.png 
    圖五 : ADAM硬件圖

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

    圖片.png
     
    圖六 : ADAM導航堆棧的簡化ROS架構。

    ADI Trinamic馬達控制器ROS驅動程序
    ADI Trinamic馬達控制器(TMC)是用于嵌入式運動控制的完整板級解決方案,融合ADI Trinamic運動控制專業知識,以及ADI的模擬技術和電源設計技能。支援單軸/多軸步進馬達、無刷直流馬達(BLDC)等各類馬達,可用接口包括 CAN、 EtherCAT、RS-232、RS-485 和USB,支持的協議涵蓋Trinamic運動控制語言(TMCL)、CANopen、 over EtherCAT (CoE)、 CANopen 或 Modbus。
    名為TMCL-IDE的IDE可協助用戶開發應用并對這些模塊輕松重新編程。該IDE使用TMCL實現獨立操作,或使用標準化CANopen協議,允許用戶設定參數、實時針對資料進行可視化處理,并開發/調試獨立應用。
    由于TMC使新型智慧執行器成為可能,并且隨著ROS而日益普及,尤其是在機器人領域中,我們針對這些模塊開發了額外的支持,如ROS驅動程序,進而進一步擴展制造業和工業自動化的用例。具體來說,預計這些ROS驅動程序將能夠控制馬達的速度、位置或扭矩,以及監控馬達控制器和馬達信息。
    TMC ROS驅動程序與TMCL-IDE提供的功能相似,但其能夠讓支持ROS的系統節點輕松使用這些TMC,無需安裝任何其他驅動程序。截至本文發表之時,該驅動程序僅支持CAN接口(特別是SocketCAN),其他接口正在開發中,很快也將提供支持。此處列出目前支持的ADI Trinamic馬達控制器模塊(TMCM)。

    軟件架構
    圖七所示為adi_tmcl的簡化軟件架構。

    圖片.png
     
    圖七 : adi_tmcl的簡化軟件架構

    如圖七所示,由于adi_tmcl使用大多數Linux系統默認支持的SocketCAN 驅動程序,所以不需要任何額外的驅動程序。此外,adi_tmcl具有自己的TMCL協議解析器,因而能夠理解用戶請求的符合TMCL的發送/接收指令。作為最后一層,tmcl_ros_node以發表者、訂閱者和服務的形式在ROS系統上提供直接接口。每種形式均提供特定的功能,這些功能可選擇使用一組參數進行配置。

    結論
    運用ADI Trinamic馬達控制器可實現新型智慧執行器。隨著ROS日益普及,尤其是在機器人領域,針對這些模塊開發額外支持,如ROS驅動程序,旨在進一步擴展制造業和工業自動化用例。
    本文展示ROS如何擴展組件,其帶來的優勢為提供附加價值,例如擴展工業應用;透過ROS通訊框架,與第三方產品可輕松實現互操作;提供更廣泛的選項,方便客戶在其系統中選用產品;快速評估新技術并立即開始使用。
    (本文作者為ADI軟件系統工程師Krizelle Paulene Apostol,資深軟件系統工程師Jamila Macagba及軟件系統設計工程經理Maggie Maralit)



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 锡林郭勒盟| 呼伦贝尔市| 黄石市| 高邑县| 云安县| 林州市| 高碑店市| 射阳县| 开平市| 成安县| 胶州市| 达孜县| 扎囊县| 明溪县| 扎赉特旗| 静海县| 滨海县| 阿巴嘎旗| 石柱| 杨浦区| 唐海县| 关岭| 突泉县| 固安县| 建昌县| 鄂尔多斯市| 右玉县| 邵阳市| 麻阳| 和田市| 白银市| 台中市| 乡宁县| 错那县| 白城市| 修文县| 盐城市| 吴川市| 聂拉木县| 黑河市| 霸州市|