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

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

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

ROS系統(tǒng)的本地搭建(下)

jf_78858299 ? 來源:安全客 ? 作者:ERROR404 ? 2023-05-19 17:16 ? 次閱讀
  • 安裝必要小工具

可以使用以下命令來安裝一些工具以方便我們后續(xù)構(gòu)建項(xiàng)目。

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

3

測試小烏龜項(xiàng)目

小烏龜項(xiàng)目是內(nèi)置在ROS系統(tǒng)中的用于測試的項(xiàng)目,此項(xiàng)目中同時用到了發(fā)布者-訂閱者消息模式和客戶端-服務(wù)端消息模式。

  • 啟動Master Server

首先,若還記得之前在”物聯(lián)網(wǎng)協(xié)議——MQTT與ROS”一文中提到的消息代理的概念,對于ROS系統(tǒng),不論是使用了哪種消息模式都需要啟動一個消息代理用于將消息分發(fā)到合適的消息接收端。

那么,我們需要使用roscore啟動一個主服務(wù)器以充當(dāng)master server。

圖片

這里我們做以下幾點(diǎn)補(bǔ)充說明:

  1. roscore會默認(rèn)將計(jì)算機(jī)名作為主服務(wù)器的host,此時,ROS系統(tǒng)僅能用于本地測試。
  2. 可以使用環(huán)境變量來控制roscore的啟動行為,其中,最重要的三個環(huán)境變量是:

ROS_ROOT:此環(huán)境變量必須指向ROS環(huán)境的安裝位置,當(dāng)系統(tǒng)中安裝了多個版本的ROS軟件包時,需要使用此環(huán)境變量進(jìn)行手動指定。(默認(rèn)值:/opt/ros/melodic/share/ros)

ROS_MASTER_URI:此環(huán)境變量必須指向ROS主服務(wù)器的完整地址,當(dāng)我們想把主服務(wù)器暴露在網(wǎng)絡(luò)中時,需要使用此環(huán)境變量進(jìn)行手動指定。(默認(rèn)值:(空),建議值:http://0.0.0.0:11311)

PYTHONPATH:此環(huán)境變量必須指向ROS系統(tǒng)所使用的Python環(huán)境位置,由于ROS系統(tǒng)底層的部分模塊需要依賴Python,因此盡管我們可以使用其他語言構(gòu)建項(xiàng)目,但是為了保證運(yùn)行無誤必須配置Python環(huán)境,ROS系統(tǒng)安裝時已經(jīng)默認(rèn)一并安裝了Python,當(dāng)我們需要更換時需要手動指定。(默認(rèn)值:/opt/ros/melodic/lib/python2.7/dist-packages)

如果不使用&標(biāo)志符限定,默認(rèn)此服務(wù)將會在前臺運(yùn)行,在進(jìn)行接下來的測試時請務(wù)必不要關(guān)閉一開始的窗口。

  • 啟動node觀察器

現(xiàn)在我們可以使用rosnode這個小工具來查看目前的ROS系統(tǒng)中存在哪些節(jié)點(diǎn)

圖片

這個節(jié)點(diǎn)就是由消息代理啟動的一個用于管理消息發(fā)送接收的節(jié)點(diǎn),正如之前說過的,ROS系統(tǒng)與MQTT不同,他是一個高度集成的系統(tǒng),同時支持兩種消息模式。那么,/rosout事實(shí)上就擁有了三種屬性:

訂閱者:/rosout可以作為訂閱者,訂閱若干其他節(jié)點(diǎn),用于具有多播特性的Pub-Sub mode。

發(fā)布者:/rosout可以作為發(fā)布者,向其他若干節(jié)點(diǎn)發(fā)布消息,用于具有多播特性的Pub-Sub mode。

服務(wù)者:/rosout可以作為服務(wù)端,提供若干服務(wù)以供其他節(jié)點(diǎn)發(fā)起調(diào)用,用于具有單播特性的CS mode。

圖片

我們可以使用rosnode info命令去看到其所有的訂閱者、發(fā)布目標(biāo)以及服務(wù)列表,此外,還能看到此節(jié)點(diǎn)的位置以及PID。

??:在ROS系統(tǒng)中,為了最高效的利用資源,當(dāng)我們啟動一個新節(jié)點(diǎn)時,默認(rèn)策略會使得主服務(wù)器隨機(jī)選擇一個可用端口進(jìn)行節(jié)點(diǎn)綁定,當(dāng)有其他節(jié)點(diǎn)想要鏈接此節(jié)點(diǎn)時只需要向消息代理詢問即可,這個策略盡管實(shí)現(xiàn)了空間解耦,但是阻礙了我們利用ROS系統(tǒng)進(jìn)行CTF競賽的命題,因?yàn)闊o法動態(tài)的進(jìn)行docker的端口映射,如果有讀者可以解決此問題,請?jiān)诒疚脑u論區(qū)發(fā)布評論,筆者在此感激不盡。

  • 啟動小烏龜節(jié)點(diǎn)【需要桌面環(huán)境】

接下來我們使用rosrun turtlesim turtlesim_node命令啟動小烏龜節(jié)點(diǎn)

圖片

此時或許可以發(fā)現(xiàn),每次啟動小烏龜節(jié)點(diǎn)時,小烏龜?shù)钠つw都不相同,我們重新使用rosnode命令觀察節(jié)點(diǎn)

圖片

圖片

我們可以發(fā)現(xiàn)以下幾點(diǎn):

  • 小烏龜節(jié)點(diǎn)/turtlesim已經(jīng)對/rosout這個節(jié)點(diǎn)產(chǎn)生了訂閱關(guān)系。
  • /turtlesim同樣提供了若干話題以及若干服務(wù)。

那么,如果我們不想用/turtlesim這個節(jié)點(diǎn)名,ROS系統(tǒng)事實(shí)上提供了自定義節(jié)點(diǎn)名稱的參數(shù)

首先關(guān)閉小烏龜節(jié)點(diǎn)啟動的節(jié)點(diǎn)或者在小烏龜節(jié)點(diǎn)的終端使用Ctrl + C來終止,之后使用命令rosrun turtlesim turtlesim_node __name:=myturtle1啟動,啟動后再次查看node信息

圖片

圖片

可以發(fā)現(xiàn),這個節(jié)點(diǎn)的名字已經(jīng)改變了。

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

    關(guān)注

    2909

    文章

    44671

    瀏覽量

    373711
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9184

    瀏覽量

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

    關(guān)注

    1

    文章

    278

    瀏覽量

    17019
收藏 人收藏

    評論

    相關(guān)推薦

    Cadence本地搭建從0到1的過程

    本文將主要介紹Cadence本地搭建從0到1的過程,并提供搭建過程中所需要的安裝軟件。搭建Cadence本地庫的目的主要是為了方便元器件的
    的頭像 發(fā)表于 11-20 17:21 ?3678次閱讀
    Cadence<b class='flag-5'>本地</b>庫<b class='flag-5'>搭建</b>從0到1的過程

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

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

    如何去搭建一個基于ROS系統(tǒng)的平衡車呢

    OPENCR硬件是怎樣通過USB虛擬串口的方式和ROS系統(tǒng)進(jìn)行通信呢?如何去搭建一個基于ROS系統(tǒng)的平衡車呢?
    發(fā)表于 11-08 06:57

    怎樣去搭建一種ROS Windows開發(fā)環(huán)境呢

    怎樣去搭建一種ROS Windows開發(fā)環(huán)境呢?怎樣在Windows中編譯ROS Qt功能包呢?
    發(fā)表于 11-22 06:59

    如何搭建實(shí)體機(jī)器人ros底盤

    目錄介紹一、底盤主控板二、嵌入式開發(fā)板1. 與上位機(jī)pc的關(guān)系2. 與STM32主控板的關(guān)系介紹自下而上的分析實(shí)體機(jī)器人(差分輪速機(jī)器人)搭建中的關(guān)鍵過程。一、底盤主控板本部分搭建實(shí)體機(jī)器人ros
    發(fā)表于 01-20 07:36

    如何低成本搭建ARM+ROS的硬件載體?

    上文為大家介紹了實(shí)現(xiàn)的思路及原理,本文將為讀者實(shí)際操作,展示ROS部署前的籌備工作及步驟分解。1. 方案概述本文重點(diǎn)介紹低成本搭建ARM+ROS的硬件及底層實(shí)現(xiàn)。開發(fā)板選用HDG2L-IoT評估套件
    發(fā)表于 10-13 12:02

    搭建ARM+ROS的硬件載體之ROS的移植及測試方法

      1. 準(zhǔn)備工作  經(jīng)過前面的環(huán)境搭建,HDG2L-IoT評估套件已經(jīng)能穩(wěn)定地運(yùn)行Ubuntu+docker環(huán)境,當(dāng)前需要下載運(yùn)行ROS鏡像即可?! ”疚膮⒖?b class='flag-5'>ROS官方文檔《Getting
    發(fā)表于 03-09 13:55

    搭建ARM+ROS的硬件載體之ROS部署前的籌備工作及步驟分解

      1. 方案概述  本文重點(diǎn)介紹低成本搭建ARM+ROS的硬件及底層實(shí)現(xiàn)。開發(fā)板選用HDG2L-IoT評估套件,默認(rèn)配置為2G內(nèi)存、8G存儲,搭載可玩性極高的Ubuntu系統(tǒng)。  開發(fā)套件默認(rèn)
    發(fā)表于 03-09 14:11

    本地測試環(huán)境搭建

    本文主要介紹了本地測試環(huán)境搭建搭建一個本地測試環(huán)境無疑是個明智的選擇,再結(jié)合GitHub、Jenkins、Docker等工具,進(jìn)行持續(xù)集成、資源隔離,既可以快速的構(gòu)建、部署自己的項(xiàng)目,
    的頭像 發(fā)表于 01-31 16:01 ?2875次閱讀
    <b class='flag-5'>本地</b>測試環(huán)境<b class='flag-5'>搭建</b>

    如何搭建本地smtp服務(wù)器

    本文開始闡述的闡述了搭建本地smtp服務(wù)器的教程,另外還介紹了基于CentOS搭建SMTP服務(wù)器的詳細(xì)教程。
    發(fā)表于 04-08 14:46 ?1.9w次閱讀
    如何<b class='flag-5'>搭建</b><b class='flag-5'>本地</b>smtp服務(wù)器

    ROS系統(tǒng)本地搭建(上)

    有關(guān)ROS系統(tǒng)的相關(guān)知識已經(jīng)在上一篇文章中進(jìn)行了闡述,在本篇文章中,將就ROS的進(jìn)一步搭建方法做闡述。 ??:本文中“消息代理”、“主服務(wù)器”、“Master Server”是相
    的頭像 發(fā)表于 05-19 17:17 ?571次閱讀
    <b class='flag-5'>ROS</b><b class='flag-5'>系統(tǒng)</b>的<b class='flag-5'>本地</b><b class='flag-5'>搭建</b>(上)

    實(shí)現(xiàn)ARM+ROS(機(jī)器人操作系統(tǒng))之環(huán)境搭建

    如何低成本搭建ARM+ROS的硬件載體?上文為大家介紹了實(shí)現(xiàn)的思路及原理,本文將為讀者實(shí)際操作,展示ROS部署前的籌備工作及步驟分解。
    的頭像 發(fā)表于 09-28 11:21 ?1207次閱讀
    實(shí)現(xiàn)ARM+<b class='flag-5'>ROS</b>(機(jī)器人操作<b class='flag-5'>系統(tǒng)</b>)之環(huán)境<b class='flag-5'>搭建</b>!

    實(shí)現(xiàn)ARM+ROS(機(jī)器人操作系統(tǒng))之運(yùn)行ROS

    如何低成本搭建ARM+ROS的硬件載體?上文展示ROS部署前的籌備工作及步驟分解,本文將為大家演示ROS的移植及測試方法。
    的頭像 發(fā)表于 10-10 18:15 ?1261次閱讀
    實(shí)現(xiàn)ARM+<b class='flag-5'>ROS</b>(機(jī)器人操作<b class='flag-5'>系統(tǒng)</b>)之運(yùn)行<b class='flag-5'>ROS</b>!

    使用Nexus在本地搭建npm、yum和maven私有倉庫

    使用Nexus在本地搭建npm、yum和maven私有倉庫 為保證在無互聯(lián)網(wǎng)的情況,可正常搭建、構(gòu)建項(xiàng)目,并自動化部署項(xiàng)目,本系統(tǒng)采用Ne
    的頭像 發(fā)表于 08-21 14:46 ?338次閱讀
    使用Nexus在<b class='flag-5'>本地</b><b class='flag-5'>搭建</b>npm、yum和maven私有倉庫

    本地電腦如何搭建云電腦,本地電腦搭建云電腦的步驟

    ? ? 工作中,不可避免的會用到云電腦,實(shí)現(xiàn)電腦連接能方便工作,局域網(wǎng)遠(yuǎn)程桌面控制軟件能幫助管理者解決,保障信息安全;提高工作效率;降低維護(hù)成本。今天小編跟大家講講本地電腦搭建云電腦的步驟
    的頭像 發(fā)表于 12-23 13:31 ?79次閱讀
    <b class='flag-5'>本地</b>電腦如何<b class='flag-5'>搭建</b>云電腦,<b class='flag-5'>本地</b>電腦<b class='flag-5'>搭建</b>云電腦的步驟