一、安装一个学习需要的ros学习包:
sudo apt-get install ros-kinetic-ros-tutorials
二、功能包
1.最简单的程序包也许看起来就像这样:
my_package/
CMakeLists.txt
package.xml
软件包必须包含一个catkin编译文件package.xml(manifests文件),此文件包含了描述该软件包的重要信息。
软件包必须包含一个CMakeLists.txt文件,并且采用catkin。
2.在catkin工作空间中的程序包
一个简单的工作空间也许看起来像这样:
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
3.创建一个catkin软件包
现在使用catkin_create_pkg命令来创建一个名为'beginner_tutorials'的新程序包,这个程序包依赖于std_msgs、roscpp和rospy:
cd ~/catkin/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
依赖于std_msgs、rospy、roscpp在src目录下创建一个名为beginner_tutorials的catkin软件包,这将会创建一个名称为beginner_tutorials的包含CMakeLists.txt和package.xml文件的文件夹。
catkin_create_pkg命令会要求你输入package_name,如果有需要你还可以在后面添加一些需要依赖的其它程序包:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
回到工作空间根目录下进行编译并且设置环境变量:
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
在编译完成工作空间之后,在devel文件夹中产生了一系列的和/opt/ros/indigo目录中结构相似的文件,通过读取devel文件夹中的.*sh文件来将软件包的工作空间添加到环境变量当中。
4.程序包依赖关系
直接依赖:
在前面利用catkin_create_pkg命令的时候,在选项中提供了一些依赖,利用rospack工具可以查看这些直接依赖。
rospack depends1 beginner_tutorials
std_msgs
rospy
roscpp
可以看出rospack工具列出了在使用catkin_create_pkg命令的时候提供的依赖,这些信息存储在packa.xml文件中,可以cat package.xml查看。
间接依赖:
使用rospack depends(没有阿拉伯数字1),则会列出catkin软件包的所有依赖文件。
总结:
- catkin软件包必要组成:package.xml和CMakeList.txt文件。
- 创建catkin软件包:catkin_create_pkg命令创建一个新的catkin软件包。
- 编译catkin工作空间:catkin_make命令编译catkin工作空间。
- 查看ROS软件包依赖:rospack depends1查看直接依赖,rospack depends查看间接依赖。