0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ROS2概述和實(shí)踐入門

3D視覺(jué)工坊 ? 來(lái)源:深藍(lán)AI ? 作者:深藍(lán)AI ? 2022-10-26 11:11 ? 次閱讀

ROS可以說(shuō)是?前機(jī)器?相關(guān)開(kāi)源社區(qū)最流?的項(xiàng)?之?,它是?個(gè)易?且完備的機(jī)器?開(kāi)發(fā)框架、?態(tài)乃?社區(qū),海量的機(jī)器?開(kāi)源項(xiàng)?(涵蓋感知、規(guī)劃、控制、定位、SLAM和建圖、可視化等?乎所有機(jī)器?領(lǐng)域)均使?ROS作為基礎(chǔ)。

以?動(dòng)駕駛汽?為代表的新的機(jī)器?應(yīng)?場(chǎng)景對(duì)于中間層和開(kāi)發(fā)框架在實(shí)時(shí)性、可靠性、伸縮性、跨平臺(tái)可移植等??提出了?量新的需求,ROS 顯然不能滿?這些需求,ROS2因此產(chǎn)?,在經(jīng)歷了若?年的迭代后,ROS2項(xiàng)??前已經(jīng)相對(duì)完備和穩(wěn)定,對(duì)于我們開(kāi)發(fā)者??,是時(shí)候擁抱ROS2了。

01為什么轉(zhuǎn)向ROS

ROS?2007年發(fā)布以來(lái),為機(jī)器?社區(qū)提供了?套相對(duì)完善的中間層、?具、軟件乃?通?的接?和標(biāo)準(zhǔn),可以說(shuō),憑借ROS,機(jī)器??業(yè)領(lǐng)域的開(kāi)發(fā)者能夠快速開(kāi)發(fā)系統(tǒng)原型并做測(cè)試和驗(yàn)證。?動(dòng)駕駛本質(zhì)上是機(jī)器?研究的?個(gè)應(yīng)?領(lǐng)域,在產(chǎn)品原型快速開(kāi)發(fā)的過(guò)程中也通常會(huì)采?ROS。

如果說(shuō)ROS1為科研和原型開(kāi)發(fā)提供了很好的?態(tài)的話,那么ROS2就是?于實(shí)際產(chǎn)品的部署環(huán)境的開(kāi)發(fā)架構(gòu)和相應(yīng)?具鏈。

02ROS1的天然缺陷ROS1項(xiàng)?的初衷是為了給科研機(jī)器?Willow Garage PR2提供?個(gè)開(kāi)發(fā)環(huán)境和相應(yīng)的?具,為了讓這套軟件在更多的機(jī)器?上運(yùn)?,ROS為機(jī)器?開(kāi)發(fā)構(gòu)建了應(yīng)?層的抽象和通?的消息接?,最終在機(jī)器?社區(qū)中?為使?并發(fā)展為?前最流?的機(jī)器?軟件?態(tài)體系之?。然?,ROS1研發(fā)的初衷就注定了該架構(gòu)存在以下缺陷:

·?實(shí)時(shí)性(real-time)

·嵌?式設(shè)備不友好

·對(duì)于?絡(luò)通信的重依賴(需要?帶寬且穩(wěn)定的?絡(luò)連接)

·多?于學(xué)術(shù)應(yīng)?

·超?的靈活性帶來(lái)的不規(guī)范的編程模式

·原?的ROS僅?持單機(jī)器?

然?如今ROS已在?量?業(yè)領(lǐng)域的應(yīng)?,包括科研機(jī)器?、?業(yè)機(jī)器?、輪式機(jī)器?、?動(dòng)駕駛汽?乃?航天??駕駛設(shè)備,其原來(lái)的功能設(shè)計(jì)已經(jīng)不能滿?海量應(yīng)?對(duì)于某些性能(如實(shí)時(shí)性、安全性、嵌?式移植等)的需求,ROS2即在這樣的背景下被設(shè)計(jì)和開(kāi)發(fā)。

03ROS2相較于ROS1的提升和改進(jìn)

相較于ROS1,ROS2在設(shè)計(jì)之初就考慮了在產(chǎn)品環(huán)境下?臨的?些挑戰(zhàn),具體來(lái)說(shuō),ROS2采?(或者計(jì)劃采?)以下策略以提升其在產(chǎn)品環(huán)境的適?度:

·?持多機(jī)器?

·對(duì)?型嵌?式設(shè)備和微控制器的?持

·實(shí)時(shí)系統(tǒng):?持實(shí)時(shí)控制,包括進(jìn)程間和機(jī)器間通信的實(shí)時(shí)性

·?持?理想?絡(luò)環(huán)境:在低質(zhì)量?延遲等?絡(luò)環(huán)境下系統(tǒng)仍然能夠?作

·對(duì)產(chǎn)品環(huán)境的?持的能力

·規(guī)范的編程模型以?持基于ROS的?規(guī)模?的構(gòu)建、開(kāi)發(fā)和部署

04ROS2中的DDS中間層

ROS1的核?是?個(gè)基于master中?節(jié)點(diǎn)的匿名發(fā)布-訂閱通信中間層,相?之下,ROS2采?基于RTSP(Real-Time Publish-Subscribe)協(xié)議的DDS作為中間層,DDS(Data-Distribution Service)是?種?于實(shí)時(shí)和嵌?式系統(tǒng)發(fā)布-訂閱式通信的?業(yè)標(biāo)準(zhǔn),這種點(diǎn)到點(diǎn)的通信模式類似于ROS1的中間層,但是DDS不需要像ROS1那樣借由master節(jié)點(diǎn)來(lái)完成兩個(gè)節(jié)點(diǎn)間通信,這使得系統(tǒng)更加容錯(cuò)和靈活,DDS 被?泛應(yīng)?于關(guān)鍵系統(tǒng)中,包括戰(zhàn)艦、?型基礎(chǔ)設(shè)施(如?電站)、?融系統(tǒng)、空間系統(tǒng)、航空系統(tǒng)等場(chǎng)景,這些?例也證實(shí)了DDS的可靠性。

多個(gè)?商提供多種DDS實(shí)現(xiàn),?般來(lái)說(shuō)DDS的底層通信機(jī)制基于UDP協(xié)議或者共享內(nèi)存機(jī)制(當(dāng)然也有 ?商提供基于TCP的DDS實(shí)現(xiàn)),?ROS2?持多種DDS實(shí)現(xiàn),??可以根據(jù)實(shí)際情況選擇DDS中間層, ?前來(lái)說(shuō)ROS2 Foxy完整?持以下DDS中間層:

·eProsima的Fast RTPS(當(dāng)前ROS2版本默認(rèn)的DDS實(shí)現(xiàn))

·RTI的Connext DDS

·Eclipse Cyclone DDS

了解更多DDS相關(guān)背景,可以參考這篇?章:

https://design.ros2.org/articles/ros_on_dds.html

ROS2的內(nèi)部架構(gòu):

777b2638-54bb-11ed-a3b6-dac502259ad0.png

點(diǎn)擊可查看大圖

ROS2的內(nèi)部接?主要包括兩個(gè)層:

·rmw (ros middleware interface): 相對(duì)底層的接?層,直接和DDS交互,C語(yǔ)?實(shí)現(xiàn)

·rcl (ros cliend libraries): 對(duì)rmw相對(duì)?層的抽象,c/c++實(shí)現(xiàn)

此外上圖中還有?個(gè)ros_to_dds組件,該組件主要為??直接訪問(wèn)DDS層提供接?。

更多關(guān)于rmw和rcl等中間層的實(shí)現(xiàn)機(jī)制以及ROS msg,DSS idl?件和python、c++和C上的類(或者結(jié) 構(gòu)體)的轉(zhuǎn)換可以參考ROS2官??檔:

https://docs.ros.org/en/foxy/Concepts/About-Internal-Interfaces.html

05ROS2中的QoS策略ROS2中引?了Quality of Service, QoS(服務(wù)質(zhì)量)的策略?于配置節(jié)點(diǎn)間通信,進(jìn)?提升了ROS2適應(yīng)于不同應(yīng)?場(chǎng)景的靈活性。ROS1只?持基于TCP的通信,通過(guò)配置QoS,ROS2可以表現(xiàn)出TCP的可靠性,也可以表現(xiàn)出UDP那樣的?實(shí)時(shí)性。??可以通過(guò)選擇不同的QoS配置?件以實(shí)現(xiàn)不同的通信表現(xiàn),QoS配置?件為策略的集合,ROS2提供了預(yù)設(shè)的QoS配置?件,如下所?:

·發(fā)布-訂閱機(jī)制的QoS設(shè)定

·服務(wù) (Service) 的QoS設(shè)定

·傳感器數(shù)據(jù)的QoS設(shè)定

·參數(shù)的QoS設(shè)定

·DDS中間層默認(rèn)的QoS設(shè)定

06ROS2的安裝和開(kāi)發(fā)環(huán)境準(zhǔn)備

ROS2?前?乎每半年會(huì)release?個(gè)版本,不同的版本會(huì)有對(duì)應(yīng)的代號(hào)(類似與ROS1中的Kinetic, Melodic和Noetic等版本代號(hào)),以下是ROS2的?些歷史版本:

·Crystal: 2018年12?

·Dashing: 2019年5?底

·Eloquent: 2019年11?

·Foxy: 2020年6?

·Galactic: 2021年5?

我們以最新的Galactic為例,ROS2是跨平臺(tái)的架構(gòu),同時(shí)?持Linux, MacOS和Windows,但是依據(jù)我們?cè)赗OS1上開(kāi)發(fā)的經(jīng)驗(yàn),我依然推薦?家在Linux的Ubuntu發(fā)?版上從事相應(yīng)的ROS2 Application開(kāi)發(fā)?作。在Ubuntu上,安裝ROS2可以通過(guò)binary安裝或者源代碼編譯安裝,在Ubuntu上,最簡(jiǎn)單的安裝?式是通過(guò)Debian packages安裝(也就是apt安裝),我們以此為例,在Ubuntu 20.04上使?apt 安裝ROS2的Galactic版本。

07ROS2在Ubuntu下的安裝在你的Ubuntu 20.04系統(tǒng)中,配置ROS2的apt源:

sudo apt update && sudo apt install curl gnupg lsb-release sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/s echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-k

更新apt索引

sudo apt update

使?apt安裝完整的ROS2:

sudo apt install ros-galactic-desktop

安裝完成后,在~/.bashrc?件中添加ros2的環(huán)境變量:

echo"source/opt/ros/galactic/setup.bash">>~/.bashrc

簡(jiǎn)單地驗(yàn)證?下安裝情況,新建?個(gè)terminal,運(yùn)?demo的talker:

ros2 run demo_nodes_cpp talker

在另?個(gè)terminal中,運(yùn)?listener:

ros2 run demo_nodes_py listener

可以看到,?個(gè)類似于ROS1的Publisher-Subscriber通信demo就運(yùn)?起來(lái)了:

77a5cb40-54bb-11ed-a3b6-dac502259ad0.png

點(diǎn)擊可查看大圖

不難發(fā)現(xiàn),ROS2并不需要像ROS1那樣啟動(dòng)roscore(即master節(jié)點(diǎn)),ROS2這種去中?化的策略能讓其適應(yīng)更多?業(yè)應(yīng)?和產(chǎn)品級(jí)應(yīng)?場(chǎng)景的需求。

NOTE:ROS1和ROS2可以并存于同?臺(tái)電腦,你只需要source不同的setup.bash即可完成環(huán)境的選擇。

08ROS2的基本工具和命令和ROS1?樣,ROS2也提供了?量的開(kāi)發(fā)調(diào)試?具,如Rviz, Rqt等?具均已經(jīng)可以在ROS2中使?,運(yùn)行rqt,可以看到我們剛剛運(yùn)?的兩個(gè)demo節(jié)點(diǎn):

77c29428-54bb-11ed-a3b6-dac502259ad0.png

點(diǎn)擊可查看大圖

運(yùn)?rviz2可以啟動(dòng)ROS2環(huán)境下的rviz軟件。

同時(shí),ROS2也提供類似于ROS1的命令?指令,指令和ROS1略有區(qū)別:

·ros2 node: 輸出node相關(guān)信息

·ros2 topic: topic相關(guān)指令,包括list,hz,echo等

·ros2 service:service相關(guān)指令,如list,call,type等

·ros2 bag: rosbag相關(guān)指令, 錄包,播包,打印數(shù)據(jù)包信息等

·ros2 bag:package相關(guān)指令

·ros2 param: 參數(shù)相關(guān)

·ros2 launch:運(yùn)?launch?件

·ros2 run:運(yùn)?單個(gè)節(jié)點(diǎn)

完整的ros2命令如下所?:

77dcd36a-54bb-11ed-a3b6-dac502259ad0.png

絕?多數(shù)指令基本是將ros1中的rosxxxx拆分成了ros2 xxxx。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    211

    文章

    28418

    瀏覽量

    207082
  • 嵌人式
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    7510
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    278

    瀏覽量

    17009

原文標(biāo)題:擁抱ROS2系列:ROS2概述和實(shí)踐入門

文章出處:【微信號(hào):3D視覺(jué)工坊,微信公眾號(hào):3D視覺(jué)工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ROSCon China 2024 | RDK第一本教材來(lái)了!地瓜機(jī)器人與古月居發(fā)布新書《ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐

    12月7日-8日,為期兩天的ROSCon China 2024在上海圓滿落幕,來(lái)自全球的ROS專家學(xué)者、開(kāi)發(fā)者、企業(yè)代表齊聚一堂,共享機(jī)器人前沿技術(shù)成果。地瓜機(jī)器人攜手眾多RDK生態(tài)產(chǎn)品亮相,并聯(lián)手古月居共同推出首本基于RDK機(jī)器人開(kāi)發(fā)者套件的教材——《ROS
    的頭像 發(fā)表于 12-10 18:48 ?374次閱讀
    ROSCon China 2024 | RDK第一本教材來(lái)了!地瓜機(jī)器人與古月居發(fā)布新書《<b class='flag-5'>ROS</b> <b class='flag-5'>2</b>智能機(jī)器人開(kāi)發(fā)<b class='flag-5'>實(shí)踐</b>》

    ROSCon China 2024 | RDK第一本教材來(lái)了!地瓜機(jī)器人與古月居發(fā)布新書《ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐

    手古月居共同推出首本基于RDK機(jī)器人開(kāi)發(fā)者套件的教材——《ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐》。該書由地平線創(chuàng)始人&CEO余凱博士和華東師范大學(xué)教授張新宇博士作序,獲得了奧比中光創(chuàng)始人黃源浩博士,中國(guó)科學(xué)院軟件研究所副總工程師、ope
    發(fā)表于 12-10 10:56 ?175次閱讀

    TVP5146M2 VBI快速入門

    電子發(fā)燒友網(wǎng)站提供《TVP5146M2 VBI快速入門.pdf》資料免費(fèi)下載
    發(fā)表于 09-30 11:10 ?0次下載
    TVP5146M<b class='flag-5'>2</b> VBI快速<b class='flag-5'>入門</b>

    ROS讓機(jī)器人開(kāi)發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    、路線控制偏離、系統(tǒng)通信異常等嚴(yán)重后果。而ROS系統(tǒng)憑借其優(yōu)勢(shì),已成為AGV開(kāi)發(fā)利器,廣泛應(yīng)用于各種機(jī)器人開(kāi)發(fā),并逐漸成為主流。 RK3568J + Debian的ROS2系統(tǒng)演示案例 創(chuàng)龍科技
    發(fā)表于 07-09 11:38

    如何在ROS中調(diào)用.so文件

    設(shè)備 筆者有一個(gè)需求,需要結(jié)合ROS做模擬量采集。有一種解決方法是ADC芯片+STM32主控,通過(guò)串口的方式與上位機(jī)通信,但串口通信速度很慢,達(dá)不到要求遂放棄。也考慮過(guò)使用NI的數(shù)據(jù)采集卡,貌似NI
    發(fā)表于 07-02 14:44

    ZMC900E控制器之ROS2環(huán)境安裝指南

    ZMC900E是致遠(yuǎn)電子研發(fā)的最新一代高性能EtherCAT控制器,支持ROS2系統(tǒng),兼?zhèn)鋸?qiáng)大功能和實(shí)時(shí)性,為工業(yè)應(yīng)用帶來(lái)新的可能。本文將詳述ROS2特點(diǎn)和安裝,助力用戶在機(jī)器人上的二次開(kāi)發(fā)
    的頭像 發(fā)表于 04-29 08:24 ?596次閱讀
    ZMC900E控制器之<b class='flag-5'>ROS2</b>環(huán)境安裝指南

    請(qǐng)問(wèn)STM32MP157上可以安裝ROS嗎?

    請(qǐng)問(wèn)一下,STM32MP157上可以安裝ROS嗎?
    發(fā)表于 03-26 06:50

    SLAMWARE ROS SDK的基礎(chǔ)架構(gòu)、部署方法和應(yīng)用示例介紹

    ROS作為機(jī)器人行業(yè)應(yīng)用最廣泛的基礎(chǔ)架構(gòu)之一,是很多用戶開(kāi)發(fā)機(jī)器人應(yīng)用的首選框架,如果要在基于ROS開(kāi)發(fā)的系統(tǒng)中集成思嵐科技的機(jī)器人底盤或者SLAMKit建圖定位解決方案,有什么最便捷的方法呢?ROS SDK就是為此而生。
    的頭像 發(fā)表于 03-21 10:44 ?909次閱讀
    SLAMWARE <b class='flag-5'>ROS</b> SDK的基礎(chǔ)架構(gòu)、部署方法和應(yīng)用示例介紹

    EtherCAT運(yùn)動(dòng)控制器在ROS上的應(yīng)用(下)

    正運(yùn)動(dòng)技術(shù)動(dòng)態(tài)鏈接庫(kù)環(huán)境配置以及EtherCAT運(yùn)動(dòng)控制器在ROS下的單軸運(yùn)動(dòng)。
    的頭像 發(fā)表于 03-13 14:54 ?592次閱讀
    EtherCAT運(yùn)動(dòng)控制器在<b class='flag-5'>ROS</b>上的應(yīng)用(下)

    系統(tǒng)鏡像Ubuntu_ROS2ROS2是什么意思,帶有ROS2開(kāi)發(fā)環(huán)境嗎?

    請(qǐng)問(wèn)一下,百度文庫(kù)資料里面,下圖所示的系統(tǒng)鏡像Ubuntu_ROS2ROS2是什么意思,帶有ROS2開(kāi)發(fā)環(huán)境嗎?與前面4GB版本的鏡像有什么區(qū)別?
    發(fā)表于 03-01 23:06

    基于CubeMX的RT-thread Nano可以添加microros這樣的軟件包嗎?

    最近使用rt-thread配置一個(gè)ROS2,但是是用CubeMX聯(lián)合Clion做的,CubeMX使用的是RT-thread nano包, 請(qǐng)問(wèn)這個(gè)環(huán)境可以添加像microros這樣的軟件包嗎?謝謝。
    發(fā)表于 03-01 06:00

    ROS2 HSV值獲取

    飽和度表示顏色的純度或強(qiáng)度,即顏色的深淺程度。飽和度為0時(shí),顏色變?yōu)榛译A;飽和度為最大值時(shí),顏色呈現(xiàn)出最鮮艷的狀態(tài)。飽和度的取值范圍通常在0到1之間,也可以表示為0%到100%。
    的頭像 發(fā)表于 01-30 16:13 ?504次閱讀

    ROS系統(tǒng)的智能車開(kāi)發(fā)-基于米爾芯馳MYD-JD9X開(kāi)發(fā)板

    本篇測(cè)評(píng)由電子工程世界的優(yōu)秀測(cè)評(píng)者“mameng”提供。本文將介紹基于米爾電子MYD-JD9X開(kāi)發(fā)板的ROS系統(tǒng)智能車開(kāi)發(fā)。目前實(shí)現(xiàn)ROS的方式主要有兩種:Ubuntu系統(tǒng)+ROS;Ubuntu系統(tǒng)+docker+
    的頭像 發(fā)表于 01-26 08:01 ?933次閱讀
    <b class='flag-5'>ROS</b>系統(tǒng)的智能車開(kāi)發(fā)-基于米爾芯馳MYD-JD9X開(kāi)發(fā)板

    ROS2 robot-localization配置方案

    robot_localization是一個(gè)ROS的包,基于卡爾曼濾波,對(duì)多種傳感器進(jìn)行數(shù)據(jù)融合,進(jìn)而完成機(jī)器人的定位。近期確實(shí)遇到了需要實(shí)現(xiàn)更高精度定位的問(wèn)題,在多方考慮下其中一部分優(yōu)化方法就是引入了robot-localization庫(kù),這個(gè)庫(kù)的引入還是比較簡(jiǎn)單的,但是實(shí)際上的操作方式還是和大家分享一下。
    的頭像 發(fā)表于 01-22 11:34 ?1.3w次閱讀

    移動(dòng)機(jī)器人與ROS操作系統(tǒng)原理與應(yīng)用

    ROS1不同的是,ROS2誕生的目的就是為了讓更多機(jī)器人使用,所以在設(shè)計(jì)上更加符合技術(shù)的發(fā)展方向,也運(yùn)用了很多最近的技術(shù)框架。
    發(fā)表于 01-02 12:28 ?587次閱讀
    移動(dòng)機(jī)器人與<b class='flag-5'>ROS</b>操作系統(tǒng)原理與應(yīng)用