ROS学习笔记(1)——如何创建一个ROS PACKAGE


Written By Asou,
4/22/2018


简介:本文将使用catkin来创建package,并且使用rospack来显示package中的依赖关系。参考文章:ROSwiki


1. catkin package的组成

每个package都必然包含package.xmlCMakeLists.txt两个文件。每一个package都必须拥有其独有的源文件夹,即不同的package之间不能共享同一个目录。

my_package/
   package.xml
   CMakeLists.txt

package.xml中提供了对这个package的相关信息。
CMakeLists.txt包含了在编译这个package时的编译选项和顺序等信息。
wiki中推荐的package的创建方式是在catkin的workspace下创建,一个workspace下的package的组织形式是这样的:

my_workspace/
    CMakeLists.txt
    package_1/
        package.xml
        CMakeLists.txt
    package_2/
        package.xml
        CMakeLists.txt
    ...
    package_n/
        package.xml
        CMakeLists.txt

2. catkin package的创建

wiki上列出的创建共有5个命令。当然前提是首先需要创建一个workspace,创建workspace的方法很简单,只需要source注册一次(我使用的ROS版本是indigo),然后创建作为workspace的文件夹,以及该文件夹下的src文件夹,最后catkin_make即可。具体步骤如下:

source /opt/ros/indigo/setup.bash
# catkin_ws is the name of the workspace folder
# remember building the /src folder in the workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
# if you wanna check if your workspace built successfully,
# you can run the following command
echo $ROS_PACKAGE_PATH

workspace创建完成后的图应该是这个样子:
ROS学习笔记(1)——如何创建一个ROS PACKAGE_第1张图片

接下来就是创建package阶段:

cd ~/catkin_ws/src
catkin_create_pkg beginning_tutorials std_msgs rospy roscpp
cd ~/catkin_ws
catkin_make
. ~/catkin_ws/devel/setup.bash

理论上只要执行完以上命令,你就应该可以创建出一个叫做beginning_tutorials的package了。创建完成后的界面应该是这个样子(可以使用rospack命令来验证是否创建成功):
ROS学习笔记(1)——如何创建一个ROS PACKAGE_第2张图片

catkin_create_pkg

catkin_create_pkg是创建package的命令,命令的格式是这样子的:

catkin_create_pkg  [depend1] [depend2] [depend3]

命令中的后三个选项指的是该package的依赖项,在wiki的实例中,beginning_tutorials依赖的是ROS的标准msg类型std_msgs,以及roscpprospy
注意caikin_create_pkg要在catkin_ws/src目录下执行。

其他注意事项

  1. 在创建一个新的package以后,一定要执行catkin_make使得新的package生效。
  2. 要执行. catkin_ws/devel/setup.bash对新的package进行注册。

3. 查看package的依赖项

# rospack depends1 用于查看该package的第一层依赖
# rospack depends 用于查看package的所有依赖
rospack depends1 beginning_tutorials
rospack depends beginning_tutorials

如果rospack depends beginning_tutorials执行结果显示不存在该包,那就说明这个package没有创建成功,此时要检查创建package的命令有没有执行错误或遗漏。最容易犯得错误就是package直接在~/catkin_ws/下创建(应该在~/catkin_ws/src下创建);以及遗漏最后一步. ~/catkin_ws/devel/setup.bash


你可能感兴趣的:(ROS)