<li id="wkceg"></li>
<rt id="wkceg"><delect id="wkceg"></delect></rt>
<bdo id="wkceg"></bdo>
<strike id="wkceg"><acronym id="wkceg"></acronym></strike>

  • 帳號(hào):
    密碼:
    智動(dòng)化 / 文章 /

    以馬達(dá)控制器ROS1驅(qū)動(dòng)程式實(shí)現(xiàn)機(jī)器人作業(yè)系統(tǒng)
    [作者 ADI]   2024年12月19日 星期四 瀏覽人次: [48817]

    機(jī)器人作業(yè)系統(tǒng)(ROS)驅(qū)動(dòng)程式是基於ADI產(chǎn)品而開發(fā),因此可直接在ROS生態(tài)系統(tǒng)中使用這些產(chǎn)品。本文概述如何在應(yīng)用、產(chǎn)品和系統(tǒng)(例如自主導(dǎo)航、安全氣泡地圖和資料採集機(jī)器人)中使用和整合這些驅(qū)動(dòng)程式;以及如此將如何有助於迅速評(píng)估新技術(shù),並避免出現(xiàn)與協(xié)力廠商產(chǎn)品的互通性問題。


    在本文探討的所有產(chǎn)品中,將重點(diǎn)關(guān)注用於ADI Trinamic馬達(dá)控制器的ROS驅(qū)動(dòng)程式,該驅(qū)動(dòng)程式是用於嵌入式運(yùn)動(dòng)控制的完整板級(jí)模組,融合ADI Trinamic運(yùn)動(dòng)控制專業(yè)知識(shí),以及ADI的類比技術(shù)和電源設(shè)計(jì)技能。


    什麼是ROS?

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


    技術(shù)工作原理


    ROS始於2007年,已成為自駕車、工業(yè)機(jī)器人、飛行器等領(lǐng)域備受歡迎的機(jī)器人開發(fā)原型製作平臺(tái)。經(jīng)過不斷發(fā)展,該技術(shù)現(xiàn)在已經(jīng)有兩個(gè)版本:ROS1和ROS2。ROS1和ROS2系統(tǒng)必須相互隔離,但通過ROS橋,這兩個(gè)系統(tǒng)之間可進(jìn)行通訊和交換資料。


    表一:ROS1和ROS2的主要區(qū)別

    因素

    ROS1

    ROS2

    通訊協(xié)議

    XMLRPC + TCPROS

    DDS

    構(gòu)建

    ROS 主控制器 + 分散式

    完全分散式

    構(gòu)建系統(tǒng)

    Catkin (基於cmake)

    colcon/ament

    (基於cmake)

    構(gòu)建輸出

    ros_ws/devel

    ros_ws/install

    參數(shù)

    全域參數(shù)伺服器
    動(dòng)態(tài)重新配置

    每節(jié)點(diǎn)參數(shù)

    發(fā)佈

    XML

    Python (+XML、YAML 替代語言)

    命令

    roslaunch、rosrun、rostopic等

    ros2 launch、 ros2 run、 ros2 topic等

    平臺(tái)

    主要是ubuntu

    Linux、MacOS、 Windows


    ROS支援的平臺(tái)

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


    ROS基本概念

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



    圖一 : ROS基本資料流程。
    圖一 : ROS基本資料流程。

    註:對(duì)ROS1和ROS2而言,下文討論的ROS基本概念相似。

    功能包

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


    節(jié)點(diǎn)

    ROS節(jié)點(diǎn)是在ROS中創(chuàng)建的可執(zhí)行程式。它們是執(zhí)行特定任務(wù)的進(jìn)程。ROS節(jié)點(diǎn)可使用ROS用戶端庫(如Python用戶端庫rospy和C++ 用戶端庫roscpp)相互通訊。節(jié)點(diǎn)可以訂閱和/或發(fā)表主題,也可以提供或使用服務(wù)。3


    主題

    ROS主題是ROS節(jié)點(diǎn)生成(或者發(fā)表,以ROS術(shù)語而言)的資料通道。


    在ROS中,發(fā)表者節(jié)點(diǎn)是主題的廣播者,而訂閱者節(jié)點(diǎn)是主題的收聽者。


    在圖二中,generic_motor_control的節(jié)點(diǎn)是廣播者。/cmd_vel是velocity_ publisher發(fā)表的主題。這表示,velocity_publisher提供基於馬達(dá)控制(或命令速度)的速度資訊。



    圖二 : 發(fā)表者-訂閱者
    圖二 : 發(fā)表者-訂閱者

    而ros_application的節(jié)點(diǎn)是收聽者,velocity_subscriber訂閱主題/cmd_vel。這表示,velocity_subscriber存取或使用velocity_publisher提供的速度資訊。


    消息

    主題是資料通道,而消息是資料,採用與ROS相容、適用於不同感測(cè)器的格式。


    以下是適用於ROS消息格式的示例感測(cè)器:


    ? 飛時(shí)測(cè)距(ToF)攝影機(jī):sensor_msgs/Image、sensor_msgs/PointCloud


    ? 慣性測(cè)量單元(IMU)感測(cè)器:sensor_msgs/Imu


    ? 馬達(dá)控制:geometry_msgs/Twist


    ? 車輪編碼器:geometry_msgs/TwistStamped、geometry_msgs/TwistWithCovarianceStampe


    ROS主題透過發(fā)送消息(主題發(fā)佈者)或接收消息(主題訂閱者)進(jìn)行通訊,並且必須採用匹配的資料類型。


    例如,在圖二中,來自velocity_publisher節(jié)點(diǎn)的速度資訊(命令速度)希望被velocity_subscriber節(jié)點(diǎn)存取/使用。如果主題發(fā)佈者velocity_publisher使用資料類型geometry_msgs/Twist,則主題訂閱者velocity_subscriber也應(yīng)使用相同的資料類型。


    服務(wù)

    發(fā)表者-訂閱者通訊模式是開放式模式,不適用於分散式系統(tǒng)中通常需要的回復(fù)交互。服務(wù)支援節(jié)點(diǎn)透過發(fā)送請(qǐng)求和接收回應(yīng)進(jìn)行通訊。發(fā)表者-訂閱者通訊模式使用.srv檔,在這些檔中,指定了請(qǐng)求和回應(yīng)的消息類型等服務(wù)描述。


    服務(wù)是雙向同步通訊模式,其中包含用戶端和伺服器。伺服器節(jié)點(diǎn)提供服務(wù),而用戶端節(jié)點(diǎn)發(fā)送請(qǐng)求並等待伺服器節(jié)點(diǎn)做出回應(yīng)。


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



    圖三 : 使用服務(wù)示例
    圖三 : 使用服務(wù)示例

    client_node發(fā)送請(qǐng)求,將命令速度設(shè)定為2.5 mbps。server_node收到請(qǐng)求後,立即發(fā)送"success"回應(yīng)。


    將解決方案整合至ROS生態(tài)系統(tǒng)

    ADI是ROS-Industrial聯(lián)盟的正式成員,ROS-Industrial是一個(gè)開源專案,旨在將ROS軟體的先進(jìn)功能擴(kuò)展到與工業(yè)相關(guān)的硬體與應(yīng)用中。作為該技術(shù)社群的一份子,ADI最初的目標(biāo)是針對(duì)工業(yè)領(lǐng)域開發(fā)專用模組。


    ADI針對(duì)不同的專用模組開發(fā)了ROS驅(qū)動(dòng)程式。為了展示所開發(fā)的驅(qū)動(dòng)程式並利用ROS的功能,ADI也開發(fā)了ADI自主移動(dòng)機(jī)器人(ADAM)作為內(nèi)部自主移動(dòng)平臺(tái)(參見圖四)。



    圖四 : ADAM
    圖四 : ADAM

    ADAM:ADI自主移動(dòng)機(jī)器人

    ADAM由ROS提供支援,並搭載ROS支援的不同元件。該平臺(tái)展示了ADI的ROS驅(qū)動(dòng)程式如何整合到移動(dòng)機(jī)器人應(yīng)用中,特別是自主導(dǎo)航應(yīng)用。


    圖五所示為具有不同模組的ADAM的簡化硬體圖。該ADAM主要連接以下元件:


    ? ADIS16470或IMU感測(cè)器採用精密陀螺儀、加速度計(jì)、磁力計(jì)和壓力感測(cè)器的多軸組合,這些元件主要用作檢測(cè)回饋,用 於改善位置/方向估算。


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


    ? EVAL-ADTF3175D-NXZ或 CMOS ToF提供出色的高解析度,與深度運(yùn)算和處理、鐳射驅(qū)動(dòng)器、電源管理以及具有參考韌體/軟體的開發(fā)工具相輔相成,可帶來更多優(yōu)勢(shì)。


    ? ADI Trinamic馬達(dá)控制器是用於嵌入式運(yùn)動(dòng)控制的完整板級(jí)解決方案,融合ADI Trinamic運(yùn)動(dòng)控制專業(yè)知識(shí),以及ADI的模擬工藝技術(shù)和電源設(shè)計(jì)技能。1



    圖五 : ADAM硬體圖
    圖五 : ADAM硬體圖

    圖六所示為ADAM的簡化ROS架構(gòu),該ADAM使用ROS驅(qū)動(dòng)程式和自主導(dǎo)航所需的多個(gè)應(yīng)用/演算法節(jié)點(diǎn)。IMU資料(/imu/data_raw)和ADI Trinamic馬達(dá)控制器回饋(/tmc_info)用作姿態(tài)估算的輸入,從而得到機(jī)器人的里程測(cè)量結(jié)果(/odom)。雷射雷達(dá)資料(/scan) 是用於生成地圖的同步定位與地圖繪製(SLAM)演算法的主要輸入;ToF資料(/image_raw) 還可用作其他SLAM演算法的輸入。然後,move_base節(jié)點(diǎn) 將等待使用者發(fā)出任何目標(biāo)姿態(tài),並向ADI Trinamic馬達(dá)控制器發(fā)送速度指令(/cmd_vel),使機(jī)器人能夠移動(dòng)。



    圖六 : ADAM導(dǎo)航堆疊的簡化ROS架構(gòu)。
    圖六 : ADAM導(dǎo)航堆疊的簡化ROS架構(gòu)。

    ADI Trinamic馬達(dá)控制器ROS驅(qū)動(dòng)程式


    ADI Trinamic馬達(dá)控制器(TMC)是用於嵌入式運(yùn)動(dòng)控制的完整板級(jí)解決方案,融合ADI Trinamic運(yùn)動(dòng)控制專業(yè)知識(shí),以及ADI的類比技術(shù)和電源設(shè)計(jì)技能。支援單軸/多軸步進(jìn)馬達(dá)、無刷直流馬達(dá)(BLDC)等各類馬達(dá),可用介面包括 CAN、 EtherCAT、RS-232、RS-485 和USB,支援的協(xié)定涵蓋Trinamic運(yùn)動(dòng)控制語言(TMCL)、CANopen、 over EtherCAT (CoE)、 CANopen 或 Modbus。


    名為TMCL-IDE的IDE可協(xié)助用戶開發(fā)應(yīng)用並對(duì)這些模組輕鬆重新編程。該IDE使用TMCL實(shí)現(xiàn)獨(dú)立操作,或使用標(biāo)準(zhǔn)化CANopen協(xié)議,允許使用者設(shè)定參數(shù)、即時(shí)針對(duì)資料進(jìn)行視覺化處理,並開發(fā)/調(diào)試獨(dú)立應(yīng)用。


    由於TMC使新型智慧執(zhí)行器成為可能,並且隨著ROS而日益普及,尤其是在機(jī)器人領(lǐng)域中,我們針對(duì)這些模組開發(fā)了額外的支援,如ROS驅(qū)動(dòng)程式,進(jìn)而進(jìn)一步擴(kuò)展製造業(yè)和工業(yè)自動(dòng)化的用例。具體來說,預(yù)計(jì)這些ROS驅(qū)動(dòng)程式將能夠控制馬達(dá)的速度、位置或扭矩,以及監(jiān)控馬達(dá)控制器和馬達(dá)資訊。


    TMC ROS驅(qū)動(dòng)程式與TMCL-IDE提供的功能相似,但其能夠讓支援ROS的系統(tǒng)節(jié)點(diǎn)輕鬆使用這些TMC,無需安裝任何其他驅(qū)動(dòng)程式。截至本文發(fā)表之時(shí),該驅(qū)動(dòng)程式僅支援CAN介面(特別是SocketCAN),其他介面正在開發(fā)中,很快也將提供支援。此處列出目前支援的ADI Trinamic馬達(dá)控制器模組(TMCM)。


    軟體架構(gòu)

    圖七所示為adi_tmcl的簡化軟體架構(gòu)。



    圖七 : adi_tmcl的簡化軟體架構(gòu)
    圖七 : adi_tmcl的簡化軟體架構(gòu)

    如圖七所示,由於adi_tmcl使用大多數(shù)Linux系統(tǒng)預(yù)設(shè)支援的SocketCAN 驅(qū)動(dòng)程式,所以不需要任何額外的驅(qū)動(dòng)程式。此外,adi_tmcl具有自己的TMCL協(xié)議解析器,因而能夠理解用戶請(qǐng)求的符合TMCL的發(fā)送/接收指令。作為最後一層,tmcl_ros_node以發(fā)表者、訂閱者和服務(wù)的形式在ROS系統(tǒng)上提供直接介面。每種形式均提供特定的功能,這些功能可選擇使用一組參數(shù)進(jìn)行配置。


    結(jié)論

    運(yùn)用ADI Trinamic馬達(dá)控制器可實(shí)現(xiàn)新型智慧執(zhí)行器。隨著ROS日益普及,尤其是在機(jī)器人領(lǐng)域,針對(duì)這些模組開發(fā)額外支援,如ROS驅(qū)動(dòng)程式,旨在進(jìn)一步擴(kuò)展製造業(yè)和工業(yè)自動(dòng)化用例。


    本文展示ROS如何擴(kuò)展元件,其帶來的優(yōu)勢(shì)為提供附加價(jià)值,例如擴(kuò)展工業(yè)應(yīng)用;透過ROS通訊框架,與協(xié)力廠商產(chǎn)品可輕鬆實(shí)現(xiàn)交互操作;提供更廣泛的選項(xiàng),方便客戶在其系統(tǒng)中選用產(chǎn)品;快速評(píng)估新技術(shù)並立即開始使用。


    (本文作者為ADI軟體系統(tǒng)工程師Krizelle Paulene Apostol,資深軟體系統(tǒng)工程師Jamila Macagba及軟體系統(tǒng)設(shè)計(jì)工程經(jīng)理Maggie Maralit)


    相關(guān)文章
    ? CAD/CAM軟體無縫加值協(xié)作
    ? 探討用於工業(yè)馬達(dá)控制的CANopen 協(xié)定
    ? 確保機(jī)器人的安全未來:資安的角色
    ? 雙臂機(jī)器人引風(fēng)潮 類人形應(yīng)用猶欠東風(fēng)
    ? 智慧型無線工業(yè)感測(cè)器之設(shè)計(jì)指南
    comments powered by Disqus
      相關(guān)新聞
    » 意法半導(dǎo)體推出高整合低位電流感測(cè)放大器,簡化高精度量測(cè)設(shè)計(jì)
    » 意法半導(dǎo)體推出創(chuàng)新記憶體技術(shù),加速新世代車用微控制器開發(fā)與演進(jìn)
    » u-blox 推出精巧、強(qiáng)大且安全的藍(lán)牙低功耗模組 ANNA-B5
    » TrendForce:自動(dòng)化成關(guān)稅戰(zhàn)避風(fēng)港 美智慧工廠成本遠(yuǎn)超陸廠
    » Discovery《臺(tái)灣無比精采:AI 科技島》即將首播 外宣臺(tái)灣科技實(shí)力
      相關(guān)產(chǎn)品
    » 適用于高頻功率應(yīng)用的 IXD2012NTR 高壓側(cè)和低壓側(cè)柵極驅(qū)動(dòng)器
    » KSC XA輕觸開關(guān)提供聲音柔和的輕觸回饋,增強(qiáng)用戶體驗(yàn)
    » 首款採用 DO-214AB 緊湊型封裝的 2kA 保護(hù)晶閘管
    » 意法半導(dǎo)體推出新款智慧型功率開關(guān),具備小巧外型、高效率與高度可靠性
    » 意法半導(dǎo)體推出全方位參考設(shè)計(jì),專為低壓高功率馬達(dá)應(yīng)用打造

    ?
    刊登廣告 新聞信箱 讀者信箱 著作權(quán)聲明 隱私權(quán)聲明 本站介紹

    Copyright ©1999-2025 遠(yuǎn)播資訊股份有限公司版權(quán)所有 Powered by O3
    地址:臺(tái)北數(shù)位產(chǎn)業(yè)園區(qū)(digiBlock Taipei) 103臺(tái)北市大同區(qū)承德路三段287-2號(hào)A棟204室
    電話 (02)2585-5526 #0 轉(zhuǎn)接至總機(jī) / E-Mail: webmaster@hope.com.tw
    主站蜘蛛池模板: 郧西县| 萍乡市| 梓潼县| 大庆市| 鄂尔多斯市| 海伦市| 措勤县| 舟山市| 咸宁市| 广安市| 安福县| 永昌县| 分宜县| 德安县| 彰化县| 鄂伦春自治旗| 沙雅县| 太谷县| 黄平县| 正阳县| 浏阳市| 繁峙县| 浏阳市| 秦安县| 新巴尔虎左旗| 岳普湖县| 句容市| 旺苍县| 黄梅县| 瑞昌市| 永和县| 贵港市| 龙州县| 台安县| 宣汉县| 东乡县| 革吉县| 乌兰县| 桐庐县| 铅山县| 颍上县|