PARAMETERS
* /rosdistro: jade
* /rosversion: 1.11.16
一、创建ROS工作空间(catkin_workspace)
参考:http://wiki.ros.org/catkin/Tutorials/create_a_workspace
http://wiki.ros.org/catkin/Tutorials/using_a_workspace
1、定位ROS的setup.bash
source /opt/ros/indigo/setup.bash
2、创建工作空间目录,并初始化。
这一步会在src目录下面产生CMakefile.txt链接文件
$ mkdir -p ~/m_ros_ws/src
$ cd ~/m_ros_wss/src
$ catkin_init_workspace
3、编译工作空间。
此步骤会在m_ros_ws工作空间目录下产生build、devel两个目录
$ catkin_make
在build目录下会产生很多setup.*sh文件,source任何一个文件都会使当前目录成为顶层环境目录,当然可以加入~/.bashrc文件
source ~/m_ros_ws/devel/setup.bash就不用每次都要定位一次了。
将上面的这行加入~/.bashrc,在登陆shell终端时会读取到当前的工作空间,使用rospack find package_name指令就会找到当前的包
使用rosrun pkg_name node_name 就可以直接执行该程序包下的节点
检测定位的结果使用 echo $ROS_PACKAGE_PATH
显示如下: /home/sl/m_ros_ws/src:/opt/ros/jade/share:/opt/ros/jade/stacks
说明这个工作空间(/home/sl/m_ros_ws/src)已经被操作系统识别了
4、使用工作空间。
在工作空间中编译程序包(packages)使用catkin_make工具,这个比较简单。可选的可以使用cmake、make
简要步骤:
$ cd ~/m_ros_ws/src/m_package/src #进入程序包下的src目录
# Add/Edit source files #编辑源码文件
$ cd ~/m_ros_ws/src/m_package #进入程序包的顶层目录
# Update CMakeFiles.txt to reflect any changes to your sources#编辑更新CMakefile.txt
$ cd ~/m_ros_ws #进入工作空间顶层目录
$ catkin_make -DCMAKE_BUILD_TYPE=Release #使用catkin_make编译,编译发布方式Release
通过上述步骤,工作空间的源码空间(~/m_ros_ws/src)就会被编译进其编译空间(~/m_ros_ws/build)
所有的源码文件、python库文件、脚本文件、其他的静态文件还将保存在src目录下。所有的生成的文件如路文件,可执行文件,生成的代码都将放进开发目录(~/m_ros_ws/devel)下,这个目录下也会保存生成的setup.*sh文件,它在被定位时,使工作空间进入环境目录
如果想给catkin_make传递任何参数,可以使用catkin_make para 如catkin_make install (等同于cd ~/m_ros_ws/build && make install)这样,将会在工作空间中产生安装空间目录(~/m_ros_ws/install),这个安装空间会包含其自己的setup.*sh文件,定位这个文件会将安装空间覆盖在环境顶部。使用安装空间目录和开发空间目录下的setup.*sh定位环境都是可以的,一般是使用devel目录。install目录也是有用的,比如在编译ROS安装时,可以加进你的工作空间下的安装包。
二、创建ROS程序包,使用catkin工具
参考:http://wiki.ros.org/catkin/Tutorials/CreatingPackage关于ros程序包:我的理解ros程序包package和stack是ros文件系统级的基本单元,使用roscd命令可以直接定位到包所在的文件路径
1、ROS程序包的组成
package.xml ——提供有关程序包的元信息CMakeLists.txt ——catkin版本的
每个package目录下只能有一个程序包,但在catkin工作空间中可以有多个程序目录包
2、创建一个catkin程序包
catkin_create_pkg <package_name> [depend1] [depend2] [depend3] 包名和依赖包名程序包的依赖关系保存在程序包的package.xml文件中
自定义package.xml 描述标签<description>可以写描述程序包的一句话
维护者标签<maintainer> 维护者邮箱
许可标签<license> BSD
依赖项标签3部分,包含buildtool_depend项,build_depend项,run_depend项
自定义CMakeLists.txt
每次改动程序包,就需要在工作空间调用catkin_make来编译一下