用catkin工作空间覆盖(overlaying)

转载 2018年04月15日 22:14:24

http://www.rosclub.cn/post-179.html

https://blog.csdn.net/wilylcyu/article/details/51747738 

ROS官方或者其他个人提供了很多package供大家使用,但是随着学习的深入,很多人可能想去修改这些package的源代码,ROS提供了一种称之为overlaying的机制。它允许ROS原有安装的package和你修改的package共存,譬如安装ROS的时候已经安装了用于二维SLAM的gmapping包,但是你要修改源代码,而又想保存好ROS原已安装的,ROS运行的时候还要能够找到你修改的那个package,而不是使用原装的,这时候overlaying机制就派上用场了。

该博客分为两部分:

(1) 用ros_tutorials package作为例子讲解overlaying机制的使用

(2) 如何overlaying gmapping包

这篇博客中我们将覆盖ros官方的ros_tutorials 包,如果你没用安装过这个包,请先进行如下准备工作:

1.安装ros_tutorials 

$ sudo apt-get install ros-groovy-ros-tutorials

这个包中包含了ROS的一些教程,如用于仿真的渔龟turtlesim等。接下来我们看看这个包安装到了哪里?在终端中输入:

$ roscd rospy_tutorials
$ pwd
/opt/ros/hydro/share/rospy_tutorials

可以看到这个package和大多数ROS原装的package一样,放在了ROS安装时的文件夹里。

我们自己如果想要改动这个代码该如何做呢?

ROS的overlaying机制华丽登场:       

在学习此篇博客的时候,博主猜想读者您应该熟练使用ROS做了一些工作了,这时候的你已经有了一个catkin工作空间(如LZ的 catkin_ws),在这个工作空间中(catkin_ws/src)已经有了很多你自己或者其他网友提供的package(如usb_cam,beginner_tutorials)。为了overlaying 工作的进行,博主强烈建议另外再新建一个catkin空间,专门用来做覆盖原始package的工作

$ mkdir -p ~/overlay_ws
$ cd ~/overlay_ws

创建好以后(其实就只是建了个新文件夹),再新建/src文件夹,并使用wstool

$ git clone git://github.com/ros/ros_tutorials.git
$ wstool update

Note:这里不一定适用wstool,可以使用git下载是一样的效果:

$ git clone git://github.com/ros/ros_tutorials.git

复制进来之后,按找以前学习的步奏应该就是使用catkin_make编译这个文件了。但是这里是要overlay,也就是覆盖原来的package,好让ROS运行的时候能够找到我们自己修改了的这个package。在做准备工作的时候,我们已经知道ros_tutorials 安装在ROS安装文件夹(/opt/ros/hydro)下。所以我们要先source一下这个环境,说明我们要覆盖的ros_tutorials在那个环境中:

$ source /opt/ros/hydro/setup.bash

注意:这一步其实没必要做,因为安装ROS的时候,我们已经把这句话写到了/.bashrc文件中,每次启动终端时会自动调用这句命令。不信的话,你可以使用gedit ~/.bashrc命令来打开在这个文件,看它的最后一行。但是,这里强调这一步是为了告诉你,有时候你要覆盖的package可能是在你自己的另一个catkin工作空间中(如catkin_ws),如你的工作空间catkin_ws中有一个自己的机器人驱动包robot_dirver,然后你也想在overlay_ws空间中覆盖他,进行一些修改再进行试验,那你就要使用如下的source来说明一下原有的package所在的环境了,更详细的请参考ROS官方wiki里的第四部分chaining catkin worksapces

$ source ~/caktin_ws/devel/setup.bash

声明完你要覆盖的package所处的环境以后,就可以编译了

$ cd ~/overlay_ws/
$ catkin_make

到此,所有的工作已经完成,接下来调用ros_tutorials这个包试试,

在使用这前,别忘了source overlay_ws这个工作空间:

$ source ~/overlay_ws/devel/setup.bash

接下来看看调用ros_tutorials包,ROS会调用哪个?

$ roscd rospy_tutorials
$ pwd
~/overlay_ws/src/ros_tutorials/rospy_tutorials

1.png

这个时候结果很明显,但是ROS原装的那个/opt/ros/hydro里的那个ros_tutorials也还存在,如果你不想调用自己修改了的,而去用原装的package那怎么做?

很简单,只要不使用source overlay_ws,而是使用source /opt/ros...就行,总结起来如下:

$ source /opt/ros/hydf/setup.bash 
$ roscd rospy_tutorials
$ pwd
/opt/ros/hydro/share/rospy_tutorials
$ source ~/overlay_ws/devel/setup.bash
$ roscd rospy_tutorials
$ pwd
/home//overlay_ws/src/ros_tutorials/rospy_tutorials

做一个简要的重述:

$ roscd rospy_tutorials
roscd: command not found

$ source /opt/ros/groovy/setup.bash 
$ roscd rospy_tutorials
$ pwd
/opt/ros/groovy/share/rospy_tutorials

$ source ~/overlay_ws/devel/setup.bash
$ roscd rospy_tutorials
$ pwd
/home/<user>/overlay_ws/src/ros_tutorials/rospy_tutorials

$ source ~/overlay_ws_overlay/devel/setup.bash 
$ roscd rospy_tutorials
$ pwd
/home/<user>/overlay_ws_overlay/src/ros_tutorials/rospy_tutorials$ 
此文只做普及,尽量不要如此使用。

创建一个catkin工作空间

先确定自己的环境变量是否设置正确 export | grep ROS 若出现如下的,说明是正确的 declare -x ROSLISP_PACKAGE_DIRECTORIES="" declare ...
  • sonicmlj
  • sonicmlj
  • 2016-11-30 16:13:45
  • 171

ROS的学习(五)在工作空间中构建和使用catkin包

在这篇博客中将会介绍,如何在工作空间中构建和使用一个包。      首先,我们来看一下如何在catkin工作空间中,使用catkin_make工具从源文件构建和安装一个包。使用catkin_make...
  • xiaocainiaoshangxiao
  • xiaocainiaoshangxiao
  • 2013-10-28 21:11:35
  • 18045

ROS文件系统+catkin工作空间及程序包

一、ROS文件系统1. 文件系统概念,包含两部分: (1)Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。 (2)Ma...
  • zuotian5212008
  • zuotian5212008
  • 2017-08-17 22:05:16
  • 560

创建catkin工作空间和程序包

catkin方式创建ROS工作空间 开始创建一个catkin 工作空间: $ mkdir -p ~/dashgo_ws/src $ cd ~/dashgo_ws/src 即使这...
  • LL1234566
  • LL1234566
  • 2017-09-29 20:00:17
  • 132

配置ROS工作空间catkin+rosbuild

目录 概念 nodepackageworkspacebuild systemsource setup.bashoverlay overlay rosbuild_ws->catkin_...
  • zhuquan945
  • zhuquan945
  • 2017-06-15 11:33:50
  • 500

我的ROS学习之路—创建catkin的工作空间

创建ros工作空间 在ubuntu终端执行以下命令 1.  source /opt/ros/kinetic/setup.bash 2.  mkdir -p ~/catakin_ws/src   连...
  • yguoelect
  • yguoelect
  • 2016-10-21 21:53:16
  • 6407

创建一个Catkin工作空间(indigo版本)

在创建Catkin空间的前提是你已经安装了ROS环境,我这里安装的是Indigo版本,安装步骤请参考http://blog.csdn.net/mt_lixinzeng/article/details/...
  • mt_lixinzeng
  • mt_lixinzeng
  • 2017-10-20 11:11:17
  • 100

ROS的学习(三)创建一个工作空间

在官网上本节的题目是Creating a workspace for catkin,其中的catkin不知道是什么意思,在网上找到的结果是:(1)卡婷是一个广告公司,(2)葇荑花。这两种翻译显然都不太...
  • xiaocainiaoshangxiao
  • xiaocainiaoshangxiao
  • 2013-10-28 15:24:48
  • 25272

ROS学习历程(5)-----在工作空间中构建和使用catkin包

首先打开beginner_tutorials包下面的src文件夹,在里面添加或者编辑源文件。然后回到包beginner_tutorials的根目录下,更新一下CMakeLists.txt文件,最后回到...
  • xu1129005165
  • xu1129005165
  • 2016-11-30 16:47:59
  • 494

创建ROS工作空间catkin_make编译出现错误

问题描述 本人按照ROS的Tutorials,进行到“3创建工作空间”时 执行这一步: 出现如下结果: 解决过程 参考这一问答 我默认的python编译器是anaconda $python...
  • Ja1r0
  • Ja1r0
  • 2017-07-26 20:32:42
  • 1097
收藏助手
不良信息举报
您举报文章:用catkin工作空间覆盖(overlaying)
举报原因:
原因补充:

(最多只允许输入30个字)