日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS2学习(三).ROS2环境配置

發(fā)布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS2学习(三).ROS2环境配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ROS 2 Galactic環(huán)境配置

  • 官方流程
  • 流程
    • 執(zhí)行配置腳本
    • 將配置命令加入shell啟動腳本中
    • 將colcon_cd加入shell啟動腳本中
    • colcon安裝
    • 環(huán)境變量檢查
      • ROS_DOMAIN_ID變量
        • 驗(yàn)證樣例
        • 設(shè)置
        • 限制條件
  • 小結(jié)
  • 參考

ROS2在shell環(huán)境中使用了組合工作區(qū)workspace。
Workspace : 系統(tǒng)上使用ROS2進(jìn)行開發(fā)的位置,跟我們一般的工作區(qū)概念是一致的。
核心ROS2工作區(qū)被稱為底層underlay,其他的本地工作區(qū)被稱為覆蓋層overlay。
通常我們使用ROS2開發(fā)時,將同時擁有幾個活動的工作區(qū)。

官方流程

Configuring your ROS 2 environment1

流程

執(zhí)行配置腳本

在每個要運(yùn)行ROS 2命令的終端,執(zhí)行以下命令:

source /opt/ros/galactic/setup.bash

注意
不同的安裝方式該命令的執(zhí)行路徑可能不一致,請注意調(diào)整。

將配置命令加入shell啟動腳本中

將上述source命令加入shell的默認(rèn)啟動腳本.bashrc中,可以避免每次執(zhí)行命令的麻煩。

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

注意
~/.bashrc的設(shè)置僅對當(dāng)前登錄用戶有效。
如果要取消,則從~/.bashrc中去除對應(yīng)命令即可

將colcon_cd加入shell啟動腳本中

colcon_cd命令允許你快速地將現(xiàn)有工作區(qū)目錄跳轉(zhuǎn)到包的目錄。例如
colcon_cd some_ros_package會將您帶到~/ ros2_install /src/some_ros_package目錄。
簡單來說,就是一個ros2專用的路徑切換命令工具。
其中colcon-argcomplete.bash是自動補(bǔ)全工具。

echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bashrc echo "export _colcon_cd_root=~/ros2_install" >> ~/.bashrc

注意
在執(zhí)行上述之前,請先試著執(zhí)行

source /usr/share/colcon_cd/function/colcon_cd.sh

按照debian binary安裝包的安裝方法的話,colcon_cd并不會默認(rèn)被安裝。
可以參考下一節(jié)colcon安裝,先進(jìn)行colcon相關(guān)功能的安裝。

colcon安裝

如果colcon已經(jīng)安裝過,可以跳過此節(jié)。本節(jié)參考colcon安裝。2

我們還是采用apt的方法安裝debian包。
ROS工程中已經(jīng)包含了colcon,因此我們可以選擇相應(yīng)的ROS工程的源。

apt倉庫源設(shè)置
下述二選一即可

  • ROS源
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' $ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
  • 非ROS源
$ curl -s https://packagecloud.io/install/repositories/dirk-thomas/colcon/script.deb.sh | sudo bash

安裝colcon
直接用apt install 安裝

$ sudo apt update $ sudo apt install python3-colcon-common-extensions

安裝完后手動執(zhí)行

source /usr/share/colcon_cd/function/colcon_cd.sh

看是否安裝成功了。
只要確認(rèn)能執(zhí)行就好啦。

環(huán)境變量檢查

上述配置文件將會設(shè)定一些操作ROS2所需的環(huán)境變量。
但我們還是需要對這些變量是否被正確的設(shè)置進(jìn)行確認(rèn),如果沒有,請重新執(zhí)行上面步驟的配置工作。

xh@hp-prodesk-680-g1-twr:~$ printenv | grep -i ROS ROS_VERSION=2 ROS_PYTHON_VERSION=3 AMENT_PREFIX_PATH=/opt/ros/galactic PYTHONPATH=/opt/ros/galactic/lib/python3.8/site-packages _colcon_cd_root=/home/xh/ros2_install LD_LIBRARY_PATH=/opt/ros/galactic/opt/yaml_cpp_vendor/lib:/opt/ros/galactic/opt/rviz_ogre_vendor/lib:/opt/ros/galactic/lib/x86_64-linux-gnu:/opt/ros/galactic/lib ROS_LOCALHOST_ONLY=0 PATH=/opt/ros/galactic/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin ROS_DISTRO=galactic

請?zhí)貏e注意以下變量

ROS_VERSION=2 ROS_PYTHON_VERSION=3 ROS_DISTRO=galactic

注意
通過 echo命令加入到 ~/.bashrc的是不會馬上生效的,需要新開一個終端。

ROS_DOMAIN_ID變量

ROS_DOMAIN_ID 是ROS的通信域設(shè)定,用來標(biāo)記哪些域之間可以互相通信。
只有相同的ROS_DOMAIN_ID的shell間可以通信。

我們拿原先的例子來理解一下。

驗(yàn)證樣例

  • 不設(shè)定ROS_DOMAIN_ID
  • 在一個終端(A)里,啟動C++的talker

    ros2 run demo_nodes_cpp talker

    在另一個終端(B)里,啟動Python的listener

    ros2 run demo_nodes_py listener

    此時 listener終端是可以收到talker終端的消息的。

  • 兩個終端設(shè)置不同的ROS_DOMAIN_ID
  • 我們在A終端設(shè)置ROS_DOMAIN_ID變量,終端B不設(shè)置(或設(shè)置為其他值)。

    export ROS_DOMAIN_ID=5

    在終端A里,啟動C++的talker

    ros2 run demo_nodes_cpp talker

    在終端B里,啟動Python的listener

    ros2 run demo_nodes_py listener

    此時 listener終端就無法收到talker終端的消息了。

  • 兩個終端設(shè)置相同的ROS_DOMAIN_ID
  • 我們在B終端也設(shè)置同A終端相同的ROS_DOMAIN_ID變量。

    export ROS_DOMAIN_ID=5

    在終端A里,啟動C++的talker

    ros2 run demo_nodes_cpp talker

    在終端B里,啟動Python的listener

    ros2 run demo_nodes_py listener

    此時 listener終端又可以收到talker終端的消息了。:)

    設(shè)置

    如果僅要設(shè)置目前的shell的ROS_DOMAIN_ID,在shell終端輸入:

    export ROS_DOMAIN_ID=5

    如果要在所有的shell終端保持相同的配置,老規(guī)矩

    echo "export ROS_DOMAIN_ID=5" >> ~/.bashrc

    上述5可以換為下述限制條件內(nèi)的任意值。

    限制條件

    ROS_DOMAIN_ID一般有兩種(short version / long version)。
    正常使用推薦short version,在[0, 101]之間進(jìn)行選擇即可。
    long version則可以在[0, 232]之間進(jìn)行選擇。
    這里暫時不做展開,詳情可以參考The ROS_DOMAIN_ID3
    后續(xù)預(yù)計會對這一塊做一些說明。

    小結(jié)

    ROS2開發(fā)環(huán)境需要在使用前被正確配置,配置方法主要有

  • 在每個打開的shell使用source命令運(yùn)行設(shè)置文件;
  • 將source命令加入到啟動腳本中。
  • 參考


  • https://docs.ros.org/en/galactic/Tutorials/Configuring-ROS2-Environment.html#id5 ??

  • https://colcon.readthedocs.io/en/released/user/installation.html# ??

  • https://docs.ros.org/en/galactic/Concepts/About-Domain-ID.html ??

  • 總結(jié)

    以上是生活随笔為你收集整理的ROS2学习(三).ROS2环境配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。