最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

3.2 工作空間覆蓋

2023-09-27 14:03 作者:猛獅集訓營  | 我要投稿

場景

同一工作空間下不允許出現(xiàn)功能包重名的情況,但是當存在多個工作空間時,不同工作空間下的功能包是可以重名的,那么當功能包重名時,會調(diào)用哪一個呢?

比如:自定義工作空間A存在功能包turtlesim,自定義工作空間B也存在功能包turtlesim,當然系統(tǒng)自帶工作空間也存在turtlesim,如果調(diào)用turtlesim包,會調(diào)用哪個工作空間中的呢?

概念

所謂工作空間覆蓋,是指不同工作空間存在重名功能包時,重名功能包的調(diào)用會產(chǎn)生覆蓋的情況。

作用

沒什么用,這種情況是需要極力避免出現(xiàn)的。

演示

1.分別在不同的工作空間下創(chuàng)建turtlesim功能包。

終端下進入ws00_helloworld的src目錄,新建功能包:

ros2 pkg create turtlesim --node-name turtlesim_node

為了方便查看演示結(jié)果,將默認生成的 turtlesim_node.cpp 中的打印內(nèi)容修改為:ws00_helloworld turtlesim\n

終端下進入ws01_plumbing的src目錄,新建功能包:

ros2 pkg create turtlesim --node-name turtlesim_node

為了方便查看演示結(jié)果,將默認生成的 turtlesim_node.cpp 中的打印內(nèi)容修改為:ws01_plumbing turtlesim\n

2.在 ~/.bashrc 文件下追加如下內(nèi)容:

source /home/ros2/ws00_helloworld/install/setup.bash source /home/ros2/ws01_plumbing/install/setup.bash

修改完畢后,保存并關(guān)閉文件。

3.新建終端,輸入如下指令:

ros2 run turtlesim turtlesim_node

輸出結(jié)果為:ws01_plumbing turtlesim,也即執(zhí)行的是 ws01_plumbing 功能包下的 turtlesim,而 ws00_helloworld 下的 turtlesim 與內(nèi)置的 turtlesim 被覆蓋了。

原因

這與~/.bashrc中不同工作空間的setup.bash文件的加載順序有關(guān):

1.ROS2 會解析 ~/.bashrc 文件,并生成全局環(huán)境變量 AMENT_PREFIX_PATH 與 PYTHONPATH,兩個環(huán)境變量取值分別對應(yīng)了 ROS2 中 C++ 和 Python 功能包,環(huán)境變量的值由功能包名稱組成;

2.兩個變量的值的設(shè)置與 ~/.bashrc 中的 setup.bash 的配置順序有關(guān),對于自定義的工作空間而言,后配置的優(yōu)先級更高,主要表現(xiàn)在后配置的工作空間的功能包在環(huán)境變量值組成的前部,而前配置工作空間的功能包在環(huán)境變量值組成的后部分,如果更改兩個自定義工作空間在 ~/.bashrc 中的配置順序,那么變量值也將相應(yīng)更改,但是 ROS2 系統(tǒng)工作空間的配置始終處于最后。

3.調(diào)用功能包時,會按照 AMENT_PREFIX_PATH 或 PYTHONPATH 中包配置順序從前往后依次查找相關(guān)功能包,查找到功能包時會停止搜索,也即配置在前的會優(yōu)先執(zhí)行。

隱患

前面提到,工作空間覆蓋的情況是需要極力避免出現(xiàn)的,因為導致一些安全隱患:

  1. 可能會出現(xiàn)功能包調(diào)用混亂,出現(xiàn)實際調(diào)用與預(yù)期調(diào)用結(jié)果不符的情況;

  2. 即便可以通過 ~/.bashrc 來配置不同工作空間的優(yōu)先級,但是經(jīng)過測試,修改 ~/.bashrc 文件之后不一定馬上生效,還需要刪除工作空間下build與install目錄重新編譯,才能生效,這個過程繁瑣且有不確定性。

綜上,在實際工作中,需要制定明確的包命名規(guī)范,避免包重名情況。

B站有完整的ros系列教程視頻,可以觀看完整內(nèi)容ros課程ROS2理論與實踐

更多內(nèi)容將在猛獅知識星球社區(qū)更新最新課程,后續(xù)將推出更多優(yōu)質(zhì)內(nèi)容——詳情可關(guān)注猛獅集訓營公眾號和猛獅集訓營官方網(wǎng)站。

3.2 工作空間覆蓋的評論 (共 條)

分享到微博請遵守國家法律
民县| 永安市| 鞍山市| 古丈县| 荔波县| 永胜县| 沾益县| 嘉禾县| 莱州市| 绍兴市| 广东省| 山东省| 朝阳县| 堆龙德庆县| 报价| 朝阳县| 平乡县| 天门市| 介休市| 板桥市| 伊金霍洛旗| 府谷县| 汝州市| 惠安县| 盘锦市| 杭锦后旗| 阿图什市| 大余县| 邹平县| 浙江省| 霍州市| 上饶市| 罗甸县| 天柱县| 澄城县| 潍坊市| 商都县| 郑州市| 安塞县| 阿瓦提县| 开封市|