ROS2学习(三).ROS2环境配置
ROS 2 Galactic環(huán)境配置
- 官方流程
- 流程
- 執(zhí)行配置腳本
- 將配置命令加入shell啟動(dòng)腳本中
- 將colcon_cd加入shell啟動(dòng)腳本中
- colcon安裝
- 環(huán)境變量檢查
- ROS_DOMAIN_ID變量
- 驗(yàn)證樣例
- 設(shè)置
- 限制條件
- 小結(jié)
- 參考
ROS2在shell環(huán)境中使用了組合工作區(qū)workspace。
Workspace : 系統(tǒng)上使用ROS2進(jìn)行開(kāi)發(fā)的位置,跟我們一般的工作區(qū)概念是一致的。
核心ROS2工作區(qū)被稱(chēng)為底層underlay,其他的本地工作區(qū)被稱(chēng)為覆蓋層overlay。
通常我們使用ROS2開(kāi)發(fā)時(shí),將同時(shí)擁有幾個(gè)活動(dòng)的工作區(qū)。
官方流程
Configuring your ROS 2 environment1
流程
執(zhí)行配置腳本
在每個(gè)要運(yùn)行ROS 2命令的終端,執(zhí)行以下命令:
source /opt/ros/galactic/setup.bash注意
不同的安裝方式該命令的執(zhí)行路徑可能不一致,請(qǐng)注意調(diào)整。
將配置命令加入shell啟動(dòng)腳本中
將上述source命令加入shell的默認(rèn)啟動(dòng)腳本.bashrc中,可以避免每次執(zhí)行命令的麻煩。
echo "source /opt/ros/galactic/setup.bash" >> ~/.bashrc注意
~/.bashrc的設(shè)置僅對(duì)當(dāng)前登錄用戶(hù)有效。
如果要取消,則從~/.bashrc中去除對(duì)應(yīng)命令即可
將colcon_cd加入shell啟動(dòng)腳本中
colcon_cd命令允許你快速地將現(xiàn)有工作區(qū)目錄跳轉(zhuǎn)到包的目錄。例如
colcon_cd some_ros_package會(huì)將您帶到~/ ros2_install /src/some_ros_package目錄。
簡(jiǎn)單來(lái)說(shuō),就是一個(gè)ros2專(zhuān)用的路徑切換命令工具。
其中colcon-argcomplete.bash是自動(dòng)補(bǔ)全工具。
注意
在執(zhí)行上述之前,請(qǐng)先試著執(zhí)行
按照debian binary安裝包的安裝方法的話(huà),colcon_cd并不會(huì)默認(rèn)被安裝。
可以參考下一節(jié)colcon安裝,先進(jìn)行colcon相關(guān)功能的安裝。
colcon安裝
如果colcon已經(jīng)安裝過(guò),可以跳過(guò)此節(jié)。本節(jié)參考colcon安裝。2
我們還是采用apt的方法安裝debian包。
ROS工程中已經(jīng)包含了colcon,因此我們可以選擇相應(yīng)的ROS工程的源。
apt倉(cāng)庫(kù)源設(shè)置
下述二選一即可
- ROS源
- 非ROS源
安裝colcon
直接用apt install 安裝
安裝完后手動(dòng)執(zhí)行
source /usr/share/colcon_cd/function/colcon_cd.sh看是否安裝成功了。
只要確認(rèn)能執(zhí)行就好啦。
環(huán)境變量檢查
上述配置文件將會(huì)設(shè)定一些操作ROS2所需的環(huán)境變量。
但我們還是需要對(duì)這些變量是否被正確的設(shè)置進(jìn)行確認(rèn),如果沒(méi)有,請(qǐng)重新執(zhí)行上面步驟的配置工作。
請(qǐng)?zhí)貏e注意以下變量
ROS_VERSION=2 ROS_PYTHON_VERSION=3 ROS_DISTRO=galactic注意
通過(guò) echo命令加入到 ~/.bashrc的是不會(huì)馬上生效的,需要新開(kāi)一個(gè)終端。
ROS_DOMAIN_ID變量
ROS_DOMAIN_ID 是ROS的通信域設(shè)定,用來(lái)標(biāo)記哪些域之間可以互相通信。
只有相同的ROS_DOMAIN_ID的shell間可以通信。
我們拿原先的例子來(lái)理解一下。
驗(yàn)證樣例
在一個(gè)終端(A)里,啟動(dòng)C++的talker
ros2 run demo_nodes_cpp talker在另一個(gè)終端(B)里,啟動(dòng)Python的listener
ros2 run demo_nodes_py listener此時(shí) listener終端是可以收到talker終端的消息的。
我們?cè)贏終端設(shè)置ROS_DOMAIN_ID變量,終端B不設(shè)置(或設(shè)置為其他值)。
export ROS_DOMAIN_ID=5在終端A里,啟動(dòng)C++的talker
ros2 run demo_nodes_cpp talker在終端B里,啟動(dòng)Python的listener
ros2 run demo_nodes_py listener此時(shí) listener終端就無(wú)法收到talker終端的消息了。
我們?cè)贐終端也設(shè)置同A終端相同的ROS_DOMAIN_ID變量。
export ROS_DOMAIN_ID=5在終端A里,啟動(dòng)C++的talker
ros2 run demo_nodes_cpp talker在終端B里,啟動(dòng)Python的listener
ros2 run demo_nodes_py listener此時(shí) 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)行選擇。
這里暫時(shí)不做展開(kāi),詳情可以參考The ROS_DOMAIN_ID3。
后續(xù)預(yù)計(jì)會(huì)對(duì)這一塊做一些說(shuō)明。
小結(jié)
ROS2開(kāi)發(fā)環(huán)境需要在使用前被正確配置,配置方法主要有
參考
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环境配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ROS2学习(一).Ubuntu 20.
- 下一篇: ROS2学习(四).ROS 2 核心概念