目标:使用CMake或者Python来创建一个新的包,运行可执行程序;
背景
1、ROS2的包是什么
一个包是作为ROS2代码的组织单元。如果你想安装你的代码或与他人共享,那么你需要将其组织在一个包中。有了软件包,您可以发布您的ROS 2作品,并允许其他人轻松构建和使用它。
在ROS2中包的创建使用ament作为它的编译系统,然后colcon作为它的编译工具。您可以使用官方支持的CMake或Python创建包,尽管也存在其他构建类型。
2、ROS2包由什么组成
ROS 2 Python和CMake软件包都有自己的最低要求内容:
CMake
CMakeLists.txt文件描述了怎样编译包中的代码;
include/<package_name>目录包含包中的公用头文件;
package.xml文件包含有关包的元信息;
src目录包含包中源代码;
最简单的包,如下所示:
my_package/ CMakeLists.txt include/my_package/ package.xml src/
3、工作空间中的包
一个工作区可以包含任意多个包,每个包都位于各自的文件夹中。
你也可以在一个工作区中有不同构建类型的包(CMake、Python等)。你不能有嵌套的包。
工作空间看起来如下:
workspace_folder/ src/ cpp_package_1/ CMakeLists.txt include/cpp_package_1/ package.xml src/ py_package_1/ package.xml resource/py_package_1 setup.cfg setup.py py_package_1/ ... cpp_package_n/ CMakeLists.txt include/cpp_package_n/ package.xml src/
任务
1、创建一个包
首先,source你的ros2安装目录
c++版本
ros2 pkg create --build-type ament_cmake <package_name>
python版本
ros2 pkg create --build-type ament_python <package_name>
--node-name指定节点的名字
ros2 pkg create --build-type ament_cmake --node-name my_node my_package
会自动生成以下的信息
going to create a new package package name: my_package destination directory: /home/user/ros2_ws/src package format: 3 version: 0.0.0 description: TODO: Package description maintainer: ['<name> <email>'] licenses: ['TODO: License declaration'] build type: ament_cmake dependencies: [] node_name: my_node creating folder ./my_package creating ./my_package/package.xml creating source and include folder creating folder ./my_package/src creating folder ./my_package/include/my_package creating ./my_package/CMakeLists.txt creating ./my_package/src/my_node.cpp
2、编译包
编译所有的包
colcon build
编译指定的包
colcon build --packages-select my_package
3、source setup文件
source install/local_setup.bash
你的工作空间已经添加到了你的path,可以使用新的包了。
4、使用package
ros2 run my_package my_node
会出现如下信息
hello world my_package package
5、检查包的内容
6、自定义package.xml
在创建包的时候,会返回description,license以及TODO等内容,他们没有被自动设置,如果你想发布你的包,则这些是需要设置的,以及maintainer需要增加。
<?xml version="1.0"?> <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?> <package format="3"> <name>my_package</name> <version>0.0.0</version> <description>TODO: Package description</description> <maintainer email="[email protected]">user</maintainer> <license>TODO: License declaration</license> <buildtool_depend>ament_cmake</buildtool_depend> <test_depend>ament_lint_auto</test_depend> <test_depend>ament_lint_common</test_depend> <export> <build_type>ament_cmake</build_type> </export> </package>
比如 <description>Beginner client libraries tutorials practice package</description> <license>Apache License 2.0</license>
总结
创建了一个包用于组织你的代码,并且于其他人容易使用;
您的包自动填充了必要的文件,然后您使用colcon构建它,以便在本地环境中使用它的可执行文件。
标签:xml,src,creating,Beginner,package,libraries,Client,ament,my From: https://www.cnblogs.com/gary-guo/p/17451194.html