ros创建catkin软件包
ros基本操作
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls
ros工作空间的层级关系
见下图
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
创建工作空间
mkdir -p ~/workspacepath/src
cd ~/workspacepathpath/
catkin_make
然后保证工作区被安装脚本正确覆盖,需确定ROS_PACKAGE_PATH环境变量包含你当前的工作空间目录:
echo $ROS_PACKAGE_PATH
/home/<username>/catkin_ws/src:/opt/ros/<distro>/share
创建ros软件包
一个包要想称为catkin软件包,必须符合以下要求:
- 这个包必须有一个符合catkin规范的package.xml文件
- 这个package.xml文件提供有关该软件包的元信息
- 这个包必须有一个catkin版本的CMakeLists.txt文件
- 如果它是个Catkin元包的话,则需要有一个CMakeList.txt文件的相关样板
- 每个包必须有自己的目录
这意味着在同一个目录下不能有嵌套的或者多个软件包存在
cd ~/workspacepath/src
catkin_create_pkg firstpkg std_msgs rospy roscpp
#使用catkin_create_pkg命令创建一个名为firstpkg的新软件包,这个软件包依赖于std_msgs、roscpp和rospy
#(catkin_create_pkg <package_name> [depend1] [depend2] [depend3])
cd ~/workspacepath
catkin_make
. ~/workspacepath/devel/setup. Bash
#将这个工作空间添加到ROS环境中,需要source生成的配置文件
rospack depends1 firstpkg
#使用rospack命令工具来查看一级依赖包
roscd firstpkg
cat package.xml
# rospack列出在运行catkin_create_pkg命令时作为参数的依赖包,这些依赖关系存储在package.xml文件中。
package.xml的内部结构
# description标签
<description>The beginner_tutorials package</description>
# maintainer标签
<!-- One maintainer tag required, multiple allowed, one person per tag -->
<!-- Example: -->
<!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
<maintainer email="user@todo.todo">user</maintainer>
# license标签
<license>BSD</license>
<!-- One license tag required, multiple allowed, one license per tag -->
<!-- Commonly used license strings: -->
<!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
<license>TODO</license>
# 依赖项标签
<!-- The *_depend tags are used to specify dependencies -->
<!-- Dependencies can be catkin packages or system dependencies -->
<!-- Examples: -->
<!-- Use build_depend for packages you need at compile time: -->
<!-- <build_depend>genmsg</build_depend> -->
<!-- Use buildtool_depend for build tool packages: -->
<!-- <buildtool_depend>catkin</buildtool_depend> -->
<!-- Use exec_depend for packages you need at runtime: -->
<!-- <exec_depend>python-yaml</exec_depend> -->
<!-- Use test_depend for packages you need only for testing: -->
<!-- <test_depend>gtest</test_depend> -->
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
# 除了catkin中默认提供的buildtool_depend,所有我们列出的依赖包都已经被添加到build_depend标签中。在本例中,因为在编译和运行时都需要用到所有指定的依赖包,因此还要将每一个依赖包分别添加到run_depend标签中:
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
# 最终的样子
<?xml version="1.0"?>
<package format="2">
<name>beginner_tutorials</name>
<version>0.1.0</version>
<description>The beginner_tutorials package</description>
<maintainer email="you@yourdomain.tld">Your Name</maintainer>
<license>BSD</license>
<url type="website">http://wiki.ros.org/beginner_tutorials</url>
<author email="you@yourdomain.tld">Jane Doe</author>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
</package>
构建catkin软件包
cd ~/workspacepath
catkin_make
和CMake操作差不多
到此,catkin软件包创建完毕
本文来自博客园,作者:不想要名字,转载请注明原文链接:https://www.cnblogs.com/xuwithbean/articles/17809075.html