总结:把总结写在前面,如果不想看大段文字只想跑通ROS的话只要看总结就好了。
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
正文:在创建一个ROS package之前,会遇到这几个概念:catkin、catkin workspace。通俗的来讲,catkin workspace是可以创建、安装、修改catkin package的文件夹,可以类比于我们的一个工程,一个工程里面可以包含很多个package,至于catkin是啥,目前我也没搞清楚,还需要进一步深入学习。在这里catkin package就是我们说的ROS package。
1.catkin package的组成
一个简单的package长这样,以下是一个名为my_package的ros package
my_package/
CMakeLists.txt
package.xml
2.创建一个catkin workspace
workspace可以类比于我们的一个工程,一个工程里面可以包含很多个package,每个package执行着各自的功能,他们一起合作就构成了机器人的软件功能。一个典型的workspace长这样
workspace_folder/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
package_1/
CMakeLists.txt -- CMakeLists.txt file for package_1
package.xml -- Package manifest for package_1
...
package_n/
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n
下面我们讲解如何创建一个workspace。新建一个包含有src文件夹的workspace文件夹:catkin_ws/src,然后去到catkin_ws目录下,执行一下编译指令catkin_make
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
这个过程只需要在你新建package时执行一次就可以了。它会帮你初始化好你的工作空间,创建一些必要的文件夹以及文件,此时你的src文件夹里面创建了一个CMakeList.txt文件
接着执行
source devel/setup.bash
使当前的工作空间能够被遍历(这句指令的作用我还没搞懂,大家可以参看原网页,官网tutorial原文:Sourcing any of these files will overlay this workspace on top of your environment. )
3.创建一个catkin package
3.1 定位到catkin workspace文件夹
cd ~/catkin_ws/src
3.2 用catkin_create_pkg创建一个参考std_msgs,roscpp以及rospy的名叫’beginner_tutorials’的package
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
至此,一个工作在catkin worksace的叫’beginner_tutorials’的package创建好了。
catkin_create_pkg 使用方法
# catkin_create_pkg [depend1] [depend2] [depend3]
4.编译package和把workspace加入ros环境
4.1 编译package
新建了package之后需要重新编译一下
$ cd ~/catkin_ws
$ catkin_make
4.2 把workspace加入ros环境
$ . ~/catkin_ws/devel/setup.bash
5.Package依赖
5.1 一级依赖
刚刚使用catkin_create_pkg时我们给新建的package提供了一些依赖,我们可以通过下面这个命令查看某个包的一级依赖。
$ rospack depends1 beginner_tutorials
运行上述命令查看一级依赖,运行结果:
roscpp
rospy
std_msgs
这些依赖都被存储在package.xml里,也可运行以下指令查看xml里的内容。
$ roscd beginner_tutorials
$ cat package.xml
5.2 非直接依赖
一般来说依赖里面还会有其他依赖,比如说我们想查看rospy的依赖
$ rospack depends1 rospy
运行结果:
genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs
一个package会有一阶依赖以及非直接依赖,可以执行下面的语句查看所有的依赖
$ rospack depends beginner_tutorials
6.定制你的package
本节我们将会逐行地看catkin_create_pkg生成的文件,然后学习怎么定制自己的package文件
6.1 定制package.xml
生成的package.xml文件在包文件夹里面,我们去到beginner_tutorials文件夹下面,打开package.xml文件
6.1.1 description tags
<description>The beginner_tutorials packagedescription>
该标签描述了包的基本信息,可以任意修改
6.1.2 maintainer tags
<maintainer email="[email protected]">julismaintainer>
该标签描述了该包的维护人员的基本信息,包括了名字和邮件
6.1.3 license tags
<license>TODOlicense>
该标签描述了许可证类型,请根据自己的需要填入许可证类型
6.1.4 dependencies tags
<buildtool_depend>catkinbuildtool_depend>
<build_depend>roscppbuild_depend>
<build_depend>rospybuild_depend>
<build_depend>std_msgsbuild_depend>
<build_export_depend>roscppbuild_export_depend>
<build_export_depend>rospybuild_export_depend>
<build_export_depend>std_msgsbuild_export_depend>
<exec_depend>roscppexec_depend>
<exec_depend>rospyexec_depend>
<exec_depend>std_msgsexec_depend>
该标签描述了依赖项,我们希望这些依赖在编译阶段和运行阶段都其作用,于是分别在