解决ROS工作空间在bashrc中覆盖的问题

1. 在bashrc中source 了多个工作空间,ROS_PACKAGE_PATH却有缺漏

使用ros有时需要多个利用多个工作空间,但每打开一个终端就要source一次工作空间比较麻烦。将工作空间的setup.bash脚本写入~/.bashrc中是一种较为方便的做法。但经常存在我们写入了多个工作空间,但在终端中使用如下命令

echo $ROS_PACKAGE_PATH

却发现有部分工作空间并没有被成功地source。在网络上查阅了一些资料,可能的原因是因为source 的部分工作空间在写入bashrc时没有编译导致顺序错乱。总之一团乱麻。

2. 解决方法

比较方便的解决方法是,找到最后一条source ./…/…/setup.bash的那个工作空间。如下所示,在我的~/.bashrc中,我要找到的就是catkin_flytest这个工作空间

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export PATH=$PATH:/usr/local/cuda/bin
PS1="\[\033[1;36;01m\]\u\[\033[00m\]\[\033[1;34;01m\]@\[\033[00m\]\[\033[1;32;01m\]\h\[\033[00m\]\[\033[34;01m\]:\[\033[00m\]\[\033[31;01m\]\w\[\033[00m\]\[\033[31;01m\] \$\[\033[37;00m\] "
alias sudo='sudo env PATH=$PATH'
source /opt/ros/kinetic/setup.bash
source /home/joeyyu/catkin_flytest/devel/setup.sh

找到最后这个工作空间,在其devel文件夹中找到_setup_util.py,打开_setup_util.py,找到CMAKE_PREFIX_PATH,在其中键入缺少的工作空间的devel路径。保存退出,重新source ~/.bashrc。此时再任意打开一个终端,echo $ROS_PACKAGE_PATH,就可以看到我们所需要的
完整的ROS_PACKAGE_PATH了。

if not args.local:
            # environment at generation time
            CMAKE_PREFIX_PATH = '/home/joeyyu/catkin_Btraj_joeyyu/devel;/home/joeyyu/catkin_ws_eth_sim/devel;/opt/ros/kinetic'.split(';')
        else:

3. 额外的小技巧

额外的,我们可以单独建立一个工作空间专门用来管理ROS_PACKAGE_PATH,比如就叫catkin_ros_manage好了,只在bashrc中写入

source /home/joeyyu/catkin_ros_manage/devel/setup.sh

每一次我们想增添新的工作空间,只要在catkin_ros_manage工作空间的devel文件夹下的_setup_util.py中CMAKE_PREFIX_PATH处进行增添就好了。

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值