ROS多个工作空间与环境变量

断断续续地学习ROS和Moveit做运动规划,前段时间把理论推导整理完,现在来处理代码,发现随处都是坑,在这里记录下来,督促自己,可能的话帮助到他人也是一件好事。

ROS创建单个工作空间

参考官方文档,我们很容易建立自己的工作空间。主要步骤如下:

1创建catkin工作空间

// 新建一个名为catkin_ws的工作空间
$  mkdir -p ~/catkin_ws/src
$  cd ~/catkin_ws/src
$  catkin_init_workspace

注意工作空间下一定要有一个src文件夹,后面将包放在/src下。

2编译catkin工作空间

// 编译catkin_make工作空间
$  cd ~/catkin_ws/
$  catkin_make

3配置环境变量

// 配置环境变量
$ source ~/catkin_ws/devel/setup.bash

但是上述命令只是在当前终端里面会生效,如果我们新打开一个终端的话,这个环境变量依然会找不到。
所以你也可以参考很多教程上的,写到 .bashrc
使用vim或者gedit打开~/.bashrc(隐藏文件,需要Ctrl+H查看)
在最后一行加上

// 配置环境变量
$ source ~/catkin_ws/devel/setup.sh

或者更干脆,直接

// 配置环境变量
$ echo "source ~/catkin_ws/devel/setup.sh" >> ~/.bashrc

不管怎么改,别忘了source一下

$ source ~/.bashrc

这样每次新打开一个终端都能加载环境变量

4查看配置好的环境变量

$ echo $ROS_PACKAGE_PATH

就可以看到刚才配置好的环境变量了。

5*创建包

刚开始git或复制别人的包进行实验就行了,当需要创建自己的包的时候,使用catkin_creat_pkg命令,后面的依赖项一般有std_msgs,rospy,roscpp等等,当然也是可以修改的,在编译包之后出现的package.xml中可以修改。

// 创建包
$  cd ~/catkin_ws/src
$  catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

创建包之后就可以写程序了,放在新生成的包中。

5*编译包

创建好包之后就该编译了,如果报错,大概率是环境变量设置有问题,可能是忘了source或者是由于多个工作空间造成的环境变量混乱(后文会讲到)。

// 创建包
$  cd ~/catkin_ws
$  catkin_make

创建多个工作空间

在学习ROS过程中常常会新建工作区来测试代码,由于ROS在不同工作空间下允许存在同名功能包,在使用roslaunch等命令的时候,常常会疑惑到底调用的是哪里的包。
这里有两种办法检查:
查看环境变量

$ echo $ROS_PACKAGE_PATH

使用roscd命令或rospack find

$ roscd  <package_name>
$ rospack find  <package_name>

通过测试,我们知道ROS是根据环境变量中的先后顺序查找功能包。
但是,在测试过程中我发现了问题
当我在~/.bashrc文件最后增加多个包的setup.sh地址,source后,环境变量并没有按照我预想的变化
比如我有catkin_ws和test_ws两个工作空间,在~/.bashrc后增加了两行:

$ source ~/catkin_ws/devel/setup.sh
$ source ~/test_ws/devel/setup.sh

source后查看环境变量,却并没有显示我增加的两行
查看了ROSwiki和很多博客,发现很多人都出现了这种情况1比如
根据李太白lx的测试2
这种情况是由于两个工作空间中有同名的包导致的
ROSwiki中有详细说明3,由于有同名的包,会出现工作区覆盖,造成环境变量意外的“混乱”。
根据ROSwiki上的说明,如果需要使用多个工作区,且多个工作区中有同名的包,建议在~/.bashrc文件去掉所有工作区的source并手动配置setup.sh。
为了安全起见,建议catkin_make前,仅保持一个活动的工作区,检查环境变量是否指向自己需要的那个包。
ps.测试时,我甚至出现过~/.bashrc文件中已清除所有ROS工作区相关环境变量信息,但在查看环境变量时仍出现的情况。当出现环境变量异常时,可以手动清理环境变量

$ unset $ROS_PACKAGE_PATH

这样,所有ROS包相关的环境变量都被清除


  1. https://blog.csdn.net/robinhjwy/article/details/79597095 ↩︎

  2. https://blog.csdn.net/tiancailx/article/details/78622536 ↩︎

  3. http://wiki.ros.org/catkin/Tutorials/workspace_overlaying ↩︎

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值