ROS学习笔记(三): 创建ROS程序包

二、创建ROS程序包

0.1 catkin软件包组成

  • 该程序包必须包含catkin compliant package.xml文件

    • 这个package.xml文件提供有关程序包的元信息。
  • 程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。

  • 每个目录下只能有一个程序包。

    • 意味着在同一个目录下不能有嵌套的或者多个程序包存在。

0.2 在catkin工作空间中的程序包
开发catkin程序包的一个推荐方法是使用catkin工作空间,但是你也可以单独开发(standalone)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

0.3 创建一个catkin程序包

  • 安装catkin
$ sudo apt-get install ros-melodic-catkin
  • sourced your environment
$ source /opt/ros/melodic/setup.bash
  • 创建catkin workspace
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
  • 创建一个catkin程序包
1.catkin工作空间中的src目录下:
# You should have created this in the Creating a Workspace Tutorial
$ cd ~/catkin_ws/src

2.使用catkin_create_pkg命令来创建一个名为'beginner_tutorials'的新程序包,这个程序包依赖于std_msgs、roscpp和rospy: 
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

在这里插入图片描述
0.4 程序包依赖关系

  • 一级依赖
$ rospack depends1 beginner_tutorials 
"显示:"
roscpp
rospy
std_msgs
"rospack列出了在运行catkin_create_pkg命令时作为参数的依赖包,这些依赖包随后保存在package.xml文件中,可通过如下命令查看:"
$ roscd beginner_tutorials
$ cat package.xml
  • 间接依赖

在很多情况中,一个依赖包还会有它自己的依赖包,比如,rospy还有其它依赖包。

$ rospack depends1 rospy

会显示如下信息:

genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs

一个程序包还可以有好几个间接的依赖包,幸运的是使用rospack可以递归检测出所有的依赖包:

$ rospack depends beginner_tutorials
cpp_common
rostime
roscpp_traits
roscpp_serialization
genmsg
genpy
message_runtime
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
catkin
rospack
roslib
rospy

0.5 自定义软件包

  • 自定义 package.xml
    进入已生成的文件夹,按着提示修改即可。
    示例如下,保存即可:
<?xml version="1.0"?>
<package format="2">
  <name>beginner_tutorials</name>
  <version>0.0.0</version>
  <description>The beginner_tutorials package</description>
  <maintainer email="[email protected]">li</maintainer>
  <license>BSD</license>
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>rospy</build_export_depend>
  <build_export_depend>std_msgs</build_export_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>
  <export>
  </export>
</package>

猜你喜欢

转载自blog.csdn.net/qq_42910179/article/details/106870646
今日推荐