当前位置:网站首页>ROS工作空间覆盖
ROS工作空间覆盖
2022-07-27 05:21:00 【三个刺客】
所谓工作空间覆盖,是指不同工作空间中,存在重名的功能包的情形。
ROS 开发中,会自定义工作空间且自定义工作空间可以同时存在多个,可能会出现一种情况: 虽然特定工作空间内的功能包不能重名,但是自定义工作空间的功能包与内置的功能包可以重名或者不同的自定义的工作空间中也可以出现重名的功能包,那么调用该名称功能包时,会调用哪一个呢?比如:自定义工作空间A存在功能包 turtlesim,自定义工作空间B也存在功能包 turtlesim,当然系统内置空间也存在turtlesim,如果调用turtlesim包,会调用哪个工作空间中的呢?
实现
0.新建工作空间A与工作空间B,两个工作空间中都创建功能包: turtlesim。
1.在 ~/.bashrc 文件下追加当前工作空间的 bash 格式如下:
source /home/用户/路径/工作空间A/devel/setup.bash
source /home/用户/路径/工作空间B/devel/setup.bash
2.新开命令行:source .bashrc加载环境变量
3.查看ROS环境环境变量echo $ROS_PACKAGE_PATH
结果:自定义工作空间B:自定义空间A:系统内置空间
4.调用命令:roscd turtlesim会进入自定义工作空间B
原因
ROS 会解析 .bashrc 文件,并生成 ROS_PACKAGE_PATH ROS包路径,该变量中按照 .bashrc 中配置设置工作空间优先级,在设置时需要遵循一定的原则:ROS_PACKAGE_PATH 中的值,和 .bashrc 的配置顺序相反--->后配置的优先级更高,如果更改自定义空间A与自定义空间B的source顺序,那么调用时,将进入工作空间A。
结论
功能包重名时,会按照 ROS_PACKAGE_PATH 查找,配置在前的会优先执行。
隐患
存在安全隐患,比如当前工作空间B优先级更高,意味着当程序调用 turtlesim 时,不会调用工作空间A也不会调用系统内置的 turtlesim,如果工作空间A在实现时有其他功能包依赖于自身的 turtlesim,而按照ROS工作空间覆盖的涉及原则,那么实际执行时将会调用工作空间B的turtlesim,从而导致执行异常,出现安全隐患。
BUG 说明:
当在 .bashrc 文件中 source 多个工作空间后,可能出现的情况,在 ROS PACKAGE PATH 中只包含两个工作空间,可以删除自定义工作空间的 build 与 devel 目录,重新 catkin_make,然后重新载入 .bashrc 文件,问题解决。
边栏推荐
- arcgis for js api-入门系列
- [first song] rebirth of me in py introductory training (3): if conditional sentence
- 力扣160. 相交链表
- Dynamic planning for solving problems (6)
- 力扣题解 动态规划(7)
- Can it replace PS's drawing software?
- 安全帽反光衣检测识别数据集和yolov5模型
- 遥感影像识别-成像合成
- When multiple formulas in latex share a sequence number
- [first song] machine learning of rebirth - linear regression
猜你喜欢

tqdm无法单行显示的问题

力扣每日一题 剑指 Offer II 091. 粉刷房子

Leetcode one question per day 30. Concatenate substrings of all words

Leetcode每日一题30. 串联所有单词的子串

IP核之RAM

力扣 236. 二叉树的最近公共祖先

What has been updated in the Chinese version of XMIND mind map 2022 v12.0.3?
![[first song] machine learning of rebirth - linear regression](/img/70/3efd9eacf88f55022eb52d096926f7.png)
[first song] machine learning of rebirth - linear regression

无法启动程序,拒绝访问?

geonode geoserver win10 安装教程(亲测)
随机推荐
力扣题解 二叉树(8)
[song] rebirth of me in py introductory training (10): numpy
力扣每日一题leetcode 513. 找树左下角的值
Li Kou 236. the nearest common ancestor of binary tree
Force buckle 160. intersecting linked list
Dynamic programming for solving problems (1)
编程学习记录--第2课【初识C语言】
论文报告-Linear Regression for face recognition
Lightroom classic 2022 v11.4 Chinese version "latest resources"
发布 分辨率0.22m的建筑物分割数据库
文件的路径
C语言-自定义结构类型
AE 3D particle system plug-in: Trapcode particle
浅记一下十大排序
C语言-动态内存管理
C语言-文件操作
One of the usage of operator()
IP核之ROM
Weidongshan digital photo frame project learning (IV) simple TXT document display (e-paper book)
C语言扫雷最新 递归展开 超详解(附源码)