一、ROS的前世今生
近年來,機(jī)器人的智能化已經(jīng)成為現(xiàn)代機(jī)器人發(fā)展的終極目標(biāo)。隨著人工智能技術(shù)發(fā)展,機(jī)器人發(fā)展的速度在不斷提升,應(yīng)用范圍也在不斷拓展至自動駕駛、服務(wù)機(jī)器人、信息機(jī)器人、無人機(jī)、農(nóng)業(yè)機(jī)器人、工業(yè)機(jī)器人諸多領(lǐng)域。機(jī)器人系統(tǒng)是很多復(fù)雜算法模塊的集合,如障礙物檢測、行為決策、智能控制、環(huán)境識別等,機(jī)器人技術(shù)是一門跨學(xué)科、跨領(lǐng)域、需要許多先驗知識的龐雜的學(xué)問,從零開始開發(fā)系統(tǒng)對技術(shù)人員要求非常高,而且工作量巨大。機(jī)器人不僅要實現(xiàn)基本的數(shù)據(jù)搜集與移動能力,還需要在對數(shù)據(jù)的有效分析、感知世界、實時通訊、智能思考并決策、協(xié)助或主導(dǎo)完成實際有效的工作等方面具備必要的技能。
筆者堅定的學(xué)習(xí)、推廣、布道ROS的動力是源于失敗的項目經(jīng)歷。筆者參與的第一個機(jī)器人項目并沒有使用ROS,完全是從0開始,在經(jīng)歷大量的編碼、測試、幾經(jīng)迭代后,初代機(jī)器人終究成了回憶。
1.1
什么是ROS
ROS - Robot Operating System機(jī)器人操作系統(tǒng)并非傳統(tǒng)意義的操作系統(tǒng),而是在操作系統(tǒng)之上的一整套幫助開發(fā)者構(gòu)建機(jī)器人應(yīng)用的開源軟件及工具集或者稱之為次操作系統(tǒng)。它提供類似操作系統(tǒng)所提供的功能,包含硬件抽象描述、底層驅(qū)動程序管理、共用功能的執(zhí)行、程序間的消息傳遞、程序發(fā)行包管理,它也提供一些工具程序和庫用于獲取、建立、編寫和運(yùn)行多機(jī)整合的程序。從驅(qū)動程序到最先進(jìn)的算法,以及強(qiáng)大的開發(fā)工具,ROS擁有您構(gòu)建機(jī)器人項目所需的一切。作為運(yùn)行于操作系統(tǒng)之上的框架,ROS的主要目標(biāo)是為機(jī)器人研究和開發(fā)提供代碼復(fù)用的支持,只需要管理與機(jī)器人相關(guān)的資源,控制機(jī)器人相關(guān)的邏輯,至于其他部分則交由操作系統(tǒng)來處理。
從軟件架構(gòu)的層面來說,ROS是一個基于消息傳遞的分布式的進(jìn)程框架或者說是節(jié)點框架(Nodes)。這使可執(zhí)行文件能被單獨設(shè)計,并且在運(yùn)行時松散耦合。這些過程可以封裝到數(shù)據(jù)包(Packages)和堆棧(Stacks)中,以便于共享和分發(fā)。ROS還支持代碼庫的聯(lián)合系統(tǒng)。使得協(xié)作亦能被分發(fā)。這種從文件系統(tǒng)級別到社區(qū)一級的設(shè)計讓獨立地決定發(fā)展和實施工作成為可能。
為了順利達(dá)成分發(fā)與協(xié)作目的,ROS框架有以下幾個顯著特性:
1
小型化:ROS盡可能設(shè)計的很小,不封裝main() 函數(shù),這樣的優(yōu)勢是ROS編寫的代碼可以輕松的在其它機(jī)器人軟件平臺上使用,可以輕松集成在其它機(jī)器人軟件平臺:ROS已經(jīng)可以與OpenRAVE,Orocos和Player集成。
2
點對點設(shè)計:ROS進(jìn)程存在于多個不同的主機(jī)并且在運(yùn)行過程中通過端對端的拓?fù)浣Y(jié)構(gòu)進(jìn)行聯(lián)系。雖然基于中心服務(wù)器的那些軟件框架也可以實現(xiàn)多進(jìn)程和多主機(jī)的優(yōu)勢,但是在這些框架中,當(dāng)各電腦通過不同的網(wǎng)絡(luò)進(jìn)行連接時,中心數(shù)據(jù)服務(wù)器就會發(fā)生問題。ROS的點對點設(shè)計以及服務(wù)和節(jié)點管理器等機(jī)制可以分散由計算機(jī)視覺和語音識別等功能帶來的實時計算壓力,能夠適應(yīng)多機(jī)器人遇到的挑戰(zhàn)。
圖1-2 點對點設(shè)計
3
不敏感庫:首選開發(fā)模型都是用不依賴ROS的干凈的庫函數(shù)編寫而成。可擴(kuò)展:ROS可以適用于大型運(yùn)行時系統(tǒng)和大型開發(fā)進(jìn)程。
4
語言獨立:ROS框架可以簡單地使用任何的現(xiàn)代編程語言實現(xiàn),當(dāng)下已經(jīng)支持已Python、C++、Lisp、Java和Lua語言
5
開源開放:吸引了大量的開發(fā)者參與其中,營造了極佳的生態(tài)環(huán)境。
6
工具豐富:為了管理復(fù)雜的軟件框架,ROS利用了大量的小工具去編譯和運(yùn)行多種多樣的組件,而不是構(gòu)建一個龐大的開發(fā)和運(yùn)行環(huán)境。此外,ROS內(nèi)建一個了叫做rostest的單元、集成測試框架,可以輕松安裝或卸載測試模塊。
圖1-3 豐富的工具集
1.2
ROS歷史與發(fā)展
ROS系統(tǒng)是起源于2007年斯坦福大學(xué)人工智能實驗室的項目與機(jī)器人技術(shù)公司Willow Garage的個人機(jī)器人項目(Personal Robots Program)之間的合作,最初的ROS版本主要解決了機(jī)器人各組件的通信問題。2008年之后就由Willow Garage來進(jìn)行推動。2010年Willow Garage公司發(fā)布了開源機(jī)器人操作系統(tǒng)ROS(Robot Operating System),很快在機(jī)器人研究領(lǐng)域展開了學(xué)習(xí)和使用ROS的熱潮?,F(xiàn)如今ROS操作系統(tǒng)由Open Robotics承擔(dān)主要的維護(hù)及推動工作?;赗OS標(biāo)準(zhǔn)且完善的通信機(jī)制,越來越多的機(jī)器人工具、算法集成到ROS中來,使其有了長足的發(fā)展。
圖1-4 ROS歷史
ROS的分支版本可以分為ROS、ROS-I以及ROS2。ROS的初衷是用于實驗室與科研,它定義的原型是面向于服務(wù)機(jī)器人。因此,它有一些先天限制。例如針對于工業(yè)機(jī)械臂來說,ROS的實時性與魯棒性并不能滿足工業(yè)上的需求,因此在2013年有那么幾家世界知名的機(jī)械臂廠家聯(lián)合起來,開始著力對ROS進(jìn)行改造,用線程代替進(jìn)程,用差一點的模塊化,換取系統(tǒng)的穩(wěn)定性能與實時性能。他們把他們的版本命名為ROS-I,并制定了他們的準(zhǔn)入門檻。ROS-I面向的是機(jī)械臂的解決方案,期望解決的問題是對于傳統(tǒng)的焊接、塑型、噴涂等方面的現(xiàn)代化工藝改進(jìn),讓產(chǎn)品線的升級改造的成本降低。盡管如此,ROS-I并不能滿足大部分人的普遍性需求,解決不了落后技術(shù)帶來的弊端。因此,從2015起,OSRF開始著手第二代機(jī)器人操作系統(tǒng)。ROS2是更符合機(jī)器人技術(shù)的發(fā)展,并且它具備更大的容量、可擴(kuò)展性來容納當(dāng)下或者說未來對機(jī)器人的一些需求。
圖1-5 ROS版本演進(jìn)
圖1-6 ROS2版本演進(jìn)
1.3
ROS2的特點
盡管ROS的發(fā)展如火如荼,但其先天劣勢,如實時性差、過分依賴Master主節(jié)點、嚴(yán)重依賴Ubuntu導(dǎo)致系統(tǒng)較為臃腫。ROS2在繼承ROS優(yōu)良特性的基礎(chǔ)上解決了諸多關(guān)鍵問題:支持多機(jī)器人系統(tǒng);支持微控制器;支持實時控制;跨系統(tǒng)平臺支持以及填平原型與產(chǎn)品之間的鴻溝,縮短上市時間。
圖1-7 ROS2與ROS架構(gòu)對比
1
ROS2引入了數(shù)據(jù)分發(fā)服務(wù)(DDS)通信協(xié)議,它可以零拷貝的方式傳遞消息,節(jié)省了CPU和內(nèi)存資源,同時增加通信的實時性;ROS2為托管啟動,用戶可以指定節(jié)點啟動順序;ROS2去除了ros master這個中心節(jié)點管理器,改進(jìn)了ROS對master節(jié)點的高度依賴的缺點;
2
ROS2為托管啟動,用戶可以指定節(jié)點啟動順序;
3
ROS2去除了ros master這個中心節(jié)點管理器,改進(jìn)了ROS對master節(jié)點的高度依賴的缺點;
1.4
ROS2 通信框架
圖1-8 ROS2通信框架
1
參與者(Domain Participant):一個參與者Participant就是一個容器,對應(yīng)于一個使用DDS的用戶,任何DDS的用戶都必須通過Participant來訪問全局?jǐn)?shù)據(jù)空間;
2
發(fā)布者(Publisher):數(shù)據(jù)發(fā)布的執(zhí)行者,支持多種數(shù)據(jù)類型的發(fā)布,可以與多個數(shù)據(jù)寫入器(DataWriter)相聯(lián),發(fā)布一種或多種主題(Topic)的消息;
3
訂閱者(Subscriber):數(shù)據(jù)訂閱的執(zhí)行者,支持多種數(shù)據(jù)類型的訂閱,可以與多個數(shù)據(jù)讀取器(DataReader)相聯(lián),訂閱一種或多種主題(Topic)的消息;
4
數(shù)據(jù)寫入器(DataWriter):應(yīng)用向發(fā)布者更新數(shù)據(jù)的對象,每個數(shù)據(jù)寫入器對應(yīng)一個特定的Topic,類似于ROS1中的一個消息發(fā)布者;
5
數(shù)據(jù)讀取器(DataReader):應(yīng)用從訂閱者讀取數(shù)據(jù)的對象,每個數(shù)據(jù)讀取器對應(yīng)一個特定的Topic,類似于ROS1中的一個消息訂閱者;
6
主題(Topic):這個和ROS1中的Topic概念一致,一個Topic包含一個名稱和一種數(shù)據(jù)結(jié)構(gòu);
7
QoS Policy:Quality of Service,質(zhì)量服務(wù)原則,這個模塊在ROS1中可從沒見過,看名稱就猜測應(yīng)該是負(fù)責(zé)數(shù)據(jù)質(zhì)量的。QoS是DDS中非常重要的一環(huán),控制了各方面與底層的通訊機(jī)制,主要從時間限制、可靠性、持續(xù)性、歷史記錄幾個方面,滿足用戶針對不同場景的數(shù)據(jù)應(yīng)用需求。
ROS2相較ROS運(yùn)行更可靠,持續(xù)性更好,更節(jié)省資源,消息傳遞實時性更佳,因此ROS2更適合應(yīng)用在工業(yè)生產(chǎn)環(huán)境?;赗OS2的以上特點,該框架被廣泛應(yīng)用與工廠AGV作業(yè)機(jī)器人、智能立體倉庫、送餐及快遞等服務(wù)機(jī)器人、自動駕駛、機(jī)械手智能控制等新興智能機(jī)器人領(lǐng)域.
ROS2與ROS完全是獨立的系統(tǒng),學(xué)習(xí)ROS2并不需要ROS的基礎(chǔ),當(dāng)然學(xué)習(xí)了ROS有了實戰(zhàn)經(jīng)驗對于學(xué)習(xí)ROS2會有幫助。了解完ROS的前世今生,在下一章節(jié)我們安裝ROS2系統(tǒng)并實現(xiàn)小烏龜模擬仿真。
二、ROS2環(huán)境搭建
2.1
版本選擇
從學(xué)習(xí)嘗鮮的角度出發(fā),選擇最新的版本一定是正確的。但從產(chǎn)品開發(fā)的角度出發(fā),選擇穩(wěn)定可靠且有較長生命周期的版本,才是不二之選。從ROS2的版本演進(jìn)圖中我們可以看到,F(xiàn)oxy是第一個長期支持的版本,我們采用這個版本進(jìn)行環(huán)境搭建。
2.2
系統(tǒng)平臺
本文是進(jìn)行中機(jī)器人項目的開發(fā)記錄筆記,因此我們直接使用產(chǎn)品中的主控設(shè)備Intel NUC阿特拉斯峽谷作為硬件平臺搭載Ubuntu20.04作為操作系統(tǒng)。此款NUC性能功耗比好、接口豐富、加之體積小,完全勝任機(jī)器人控制工作。
盡管ROS2已實現(xiàn)跨平臺,能夠支持MacOS、Windows系統(tǒng),但在實際工作產(chǎn)品中還是以Linux為主要的部署系統(tǒng)。此外,從目前可用的工具出發(fā)、諸多工具、算法包在Windows上使用不便,因此Linux還是優(yōu)選系統(tǒng)。
圖2-2 硬件平臺
2.3
ROS2 安裝
1.配置系統(tǒng)源服務(wù)器
安裝ROS操作系統(tǒng)出現(xiàn)問題,99%是因為網(wǎng)絡(luò),剩余1%是因為環(huán)境及版本。
在正式安裝前我們先來配置系統(tǒng)下載服務(wù)器。
打開軟件和更新應(yīng)用-下載自-中國-選擇最佳服務(wù)器
圖2-3 配置下載服務(wù)器
若遇到不能正常下載,可以嘗試使用清華ROS2鏡像,配置參考如下網(wǎng)址: https://mirrors.tuna.tsinghua.edu.cn/help/ros2/
2.配置環(huán)境支持UTF-8編碼
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8.UTF-8
export.UTF-8
3.設(shè)置軟件源,添加apt倉庫
sudo apt update && sudo apt install curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list
命令執(zhí)行成功后在系統(tǒng)/etc/apt/source.list.d文件夾中將出現(xiàn)ros2-lastest.list文件
圖2-4 配置源
4.安裝ROS2 foxy
sudo apt update
sudo apt install ros-foxy-desktop
圖2-5 安裝foxy
與ROS(需要安裝約2.5G的應(yīng)用)相比,ROS2的應(yīng)用體積要小很多,在網(wǎng)絡(luò)暢通的情況下,很快可以安裝完成。
5.安裝效率工具
sudo apt install python3-argcomplete
圖2-6 安裝自動補(bǔ)齊工具
6.配置環(huán)境變量
echo “source /opt/ros/foxy/setup.bash” >> ~/.bashrc
將環(huán)境變量寫入rc文件中,打開終端時可自動初始化環(huán)境變量。
圖2-7 配置環(huán)境變量
7.測試
ROS2終端指令格式如下,我們在后續(xù)的章節(jié)中會用各種命令實現(xiàn)不同應(yīng)用的控制。
ros2run
打開兩個終端,在其中一個終端輸入如下命令,作為消息發(fā)送方;
ros2 run demo_nodes_cpp talker
另一個終端中,輸入如下命令,作為消息接收方;
ros2 run demo_nodes_cpp listener
一切運(yùn)行正常,則消息發(fā)送與消息接收對等出現(xiàn)。
圖2-8 安裝測試
2.4
海龜仿真器
海龜仿真器(Turtlesim)是ROS2中一個非常重要的入門級案例,通過海龜仿真,我們可以了解到很多ROS2的底層原理,涉及節(jié)點、話題、服務(wù)等核心概念。我們在后續(xù)章節(jié)都會以海龜仿真器為模板進(jìn)行介紹。
1.安裝
我們在安裝ROS2選擇了ros-foxy-desktop,turtlesim作為默認(rèn)配套工具一并安裝到系統(tǒng)中,我們可以通過下面的命令,檢查安裝是否成功。
ros2 pkg executables turtlesim
命令執(zhí)行完成后,若出現(xiàn)如下內(nèi)容,則說明安裝成功。
圖2-9 turtlesim安裝校驗
若系統(tǒng)中并未安裝海龜模擬器,我們則通過以下命令進(jìn)行安裝。
sudo apt-get install ros-foxy-turtlesim
圖2-10 turtlesim安裝
2.啟動
ros2 run turtlesim turtlesim_node
終端中輸入如下命令啟動仿真器。
圖2-11 啟動turtlesim
程序運(yùn)行后,我們會看到仿真界面一只在海里游泳的海龜,應(yīng)用會隨機(jī)使用一個ROS2的logo作為顯示海龜?shù)奈恢茫呀?jīng)開啟的系統(tǒng)終端中,也會顯示海龜?shù)拿Q及坐標(biāo)。
圖2-12 turtlesim仿真界面
3.讓海龜動起來
我們再開啟一個新終端,輸入下面命令:
ros2 run turtlesim turtle_teleop_key
根據(jù)終端中提示,我們可以點擊物理鍵盤控制海龜運(yùn)動。需要注意的是,我們要讓鍵盤控制節(jié)點一致處于激活狀態(tài)。
圖2-13 turtlesim運(yùn)動控制
很好,我們已經(jīng)成功讓海龜運(yùn)動起來,接下來使用如下命令查看仿真器后臺到底運(yùn)行了哪些功能,這些概念也會在后續(xù)章節(jié)中詳細(xì)介紹。
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
ros2 param list
圖2-14 turtlesim后臺服務(wù)
2.5
關(guān)鍵的通信概念及模型
上一節(jié)中我們提到了節(jié)點(Node)、話題(Topic)、服務(wù)(Service)、參數(shù)(Parameters)以及動作(Action),這些都是ROS2系統(tǒng)中通信的基礎(chǔ)概念及模型。每一個完成具體功能的模塊稱之為“節(jié)點”,例如控制車輪、獲取雷達(dá)數(shù)據(jù)、獲取視覺數(shù)據(jù)等,節(jié)點之間通過話題、服務(wù)、動作或者參數(shù)實現(xiàn)數(shù)據(jù)的收發(fā)。在本節(jié)中我們詳細(xì)展開。
1.節(jié)點Node
節(jié)點,從本質(zhì)上來說是一個可執(zhí)行文件(C++或者Python)。它利用ROS2的通信網(wǎng)絡(luò)能與其他節(jié)點進(jìn)行通信(數(shù)據(jù)交互)。ROS中每一個節(jié)點應(yīng)該負(fù)責(zé)一個單一的、模塊化的功能。例如,一個節(jié)點用于控制電機(jī),一個節(jié)點用于控制激光雷達(dá)。
ros2 run是啟動節(jié)點的命令。
關(guān)于查看節(jié)點的命令,列出節(jié)點,及查看節(jié)點詳細(xì)信息。
ros2 node list
ros2 node info <節(jié)點名稱>
圖2-16 ROS2節(jié)點信息
2.話題Topic
ROS2將復(fù)雜的系統(tǒng)分解成許多模塊化的節(jié)點,話題(Topic)是ROS2通信中的重要元素,充當(dāng)節(jié)點交換信息的總線,是一種發(fā)布訂閱模型。如圖所示:
圖2-17 ROS2話題
話題通信模型有以下特點:
1
話題名字是關(guān)鍵,發(fā)布訂閱接口類型要相同,發(fā)布的是字符串,接受也要用字符串來接收;
2
同一節(jié)點可以訂閱多個話題,同時也可以發(fā)布多個話題;
3
同一個話題可以有多個發(fā)布者;
一個節(jié)點可以向任意數(shù)量的話題發(fā)布數(shù)據(jù)并同時訂閱任意數(shù)量的話題。因為在ROS2中,所有的節(jié)點都是同一個級別。即可以實現(xiàn)一對多、多對一、多對多的通信模式。如圖所示:
圖2-18 ROS2話題一對多
關(guān)于話題的命令:
ros2 topic list #查看話題列表
ros2 topic echo#查看話題內(nèi)容
ros2 topic info#查看話題詳情
ros2 topic pub #發(fā)布指令
ros2 topic hz #查看話題發(fā)布周期
圖2-19 ROS2話題指令
3.服務(wù)Service
之上提到的話題通信是基于訂閱/發(fā)布機(jī)制的,無論有沒有訂閱者,發(fā)布者都會周期發(fā)布數(shù)據(jù),這種模式適合持續(xù)數(shù)據(jù)的收發(fā),比如傳感器數(shù)據(jù)。機(jī)器人系統(tǒng)中還有另外一些配置性質(zhì)的數(shù)據(jù),并不需要周期處理,此時就可以用“服務(wù)”通信模型實現(xiàn)。服務(wù)是基于客戶端/服務(wù)器模型的通信機(jī)制,服務(wù)器端只有在接收到客戶端請求時才會提供反饋數(shù)據(jù)。
圖2-20 ROS2服務(wù)
值得注意的是,在服務(wù)通信模型中,可以有多個客戶端請求同一個服務(wù)器,但一個服務(wù)模型中,只可以存在一個服務(wù)器。
圖2-21 ROS2服務(wù)
關(guān)于服務(wù)的指令:
ros2 service list #查看服務(wù)列表
ros2 service info#查看服務(wù)詳情
ros2 service type#查看服務(wù)的類型
ros2 service find #查找特定類型的服務(wù)
ros2 service call #通過終端發(fā)送服務(wù)請求
4.動作Action
“動作”是ROS2中用于長時間運(yùn)行任務(wù)的一種通信類型,例如我們要讓機(jī)械臂抓取一個物體,我們不僅要發(fā)出指令,還需要獲取機(jī)械臂的實時反饋,在這種場景下我們就需要“動作”類型?!皠幼鳌敝饕扇糠纸M成:目標(biāo)(goal)、反饋(feedback)以及結(jié)果(result)。動作通信建立在話題和服務(wù)之上,類似與服務(wù)的C/S通信模型,但是不同之處在于,客戶端可以隨時取消動作。動作還提供穩(wěn)定的反饋,而不是返回單一響應(yīng)的服務(wù)。
圖2-22 ROS2動作
關(guān)于服務(wù)的指令:
ros2 action list #查看動作列表
ros2 action info#查看動作詳情
ros2 action send_goal#發(fā)送動作請求
5.參數(shù)Parameter
參數(shù)也是ROS2中很重要的一個概念,其主要作用是對節(jié)點功能進(jìn)行配置。在ROS2中,每個節(jié)點都有自己的參數(shù),這些參數(shù)可以用整型數(shù)、浮點數(shù)、布爾型數(shù)、字符串和列表來描述。
關(guān)于服務(wù)的指令:
ros2 param list #查看參數(shù)列表
ros2 param info#查看某節(jié)點的參數(shù)詳情
ros2 param set#參數(shù)設(shè)置
ros2 param get#參數(shù)設(shè)置
ros2 param dump#參數(shù)設(shè)置
例如我們查看海龜仿真器的參數(shù),并將背景顏色由海藍(lán)色改為天藍(lán)色。
圖2-23 ROS2設(shè)置參數(shù)
6.圖形化展示
上面的內(nèi)容中我們采用命令行方式實現(xiàn)人機(jī)交互,終端命令行具有較高的調(diào)試效率,其缺點是節(jié)點間關(guān)系沒能直觀呈現(xiàn),rqt_graph圖形化工具剛好可以彌補(bǔ)這一缺陷。
終端命令行輸入:可以啟動圖形化工具,直觀顯示節(jié)點、話題、參數(shù)關(guān)系。
rqt_graph
圖2-24 ROS2動作
至此,我們已成功安裝ROS2環(huán)境,并且運(yùn)行了海龜模擬器,成功讓小海龜運(yùn)動起來,同時我們也了解了ROS2系統(tǒng)的核心通信概念,ROS2系統(tǒng)功能強(qiáng)大遠(yuǎn)不止如此,我們僅完成了入門工作,也幫助我們更好的理解后續(xù)內(nèi)容。
審核編輯 :李倩
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28467瀏覽量
207332 -
智能化
+關(guān)注
關(guān)注
15文章
4897瀏覽量
55454 -
模擬器
+關(guān)注
關(guān)注
2文章
877瀏覽量
43255
原文標(biāo)題:ROS2+OpenVINO? 實踐教程 - 上篇 | 開發(fā)者實戰(zhàn)
文章出處:【微信號:英特爾物聯(lián)網(wǎng),微信公眾號:英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論