[ROS]重名问题-工作空间覆盖(功能包重名)1.1

所谓工作空间覆盖,是指不同工作空间中,存在重名的功能包的情形。

实现:

1.新建工作空间A和工作空间B,两个工作空间中都创建功能包:turtlesim

2.在~/.bashrc文件下追加当前工作空间的bash格式如下:

source /home/用户/路径/工作空间A/devel/setup.bash
source /home/用户/路径/工作空间B/devel/setup.bash

注意:在.bashrc文件中,放在文件最后的source路径语句优先级更高。

3.新开命令行:source .bashrc加载环境变量

4.查看ROS环境环境变量echo $ROS_PACKAGE_PATH

结果:自定义工作空间B:自定义空间A:系统内置空间

5.调用命令:roscd turtlesim 会进入自定义工作空间B

结论:

功能包重名时,会按照ROS_PACKAGE_PATH查找,配置在前的会优先执行

隐患:

存在安全隐患,比如当前工作空间B优先级更高,意味这当程序调用turtlesim时,不会调用工作空间A也不会调用系统内置的turtlesim,如果工作空间A在实现时有其他功能包依赖于自身的turtlesim,而按照ROS工作空间覆盖的涉及原则,那么实际执行时将会调用工作空间B的turtlesim,从而导致执行异常,出现安全隐患。

BUG说明:

当在.bashrc文件中source多个工作空间后,可能出现的情况,在ROS_PACKAGE_PATH中只包含两个工作空间,可以删除自定义工作空间的build与devel目录,重新catkin_make,然后重新载入.bashrc文件,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值