ros2 pkg
用于创建和管理ROS2的程序包
ros2 pkg create
:创建一个新包。通过指定不同的参数来决定创建哪种类型的程序包,如:ros2 pkg create --build-type ament_cmake --node-name
ros2 pkg executables
:列出程序包中所有可执行文件ros2 pkg prefix
:列出指定包的安装目录的前缀ros2 pkg xml
:返回程序包的xml信息
参数说明
--build-type
:定义程序包的类型。常见的值包括ament_python(Python程序包)和ament_cmake(C++程序包)。--package-format
--dependencies
:程序包的依赖项。--maintainer-email
:程序包的维护者信息--maintainer-name
:程序包的维护者信息--node-name
:定义程序包中主节点的名称。--library-name
:name of the empty library--description
:定义程序包的描述信息。--license
:定义程序包的许可证类型。
package.xml
package.xml中定义了软件包的基本属性以及所需要的依赖项,内容大致如下(rclcpp_components):
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format2.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="2">
<name>rclcpp_components</name>
<version>9.2.2</version>
<description>Package containing tools for dynamically loadable components</description>
<maintainer email="ivanpauno@ekumenlabs.com">Ivan Paunovic</maintainer>
<maintainer email="mabel@openrobotics.org">Mabel Zhang</maintainer>
<maintainer email="william@openrobotics.org">William Woodall</maintainer>
<license>Apache License 2.0</license>
<author email="michael@openrobotics.org">Michael Carroll</author>
<buildtool_depend>ament_cmake_ros</buildtool_depend>
<build_depend>ament_index_cpp</build_depend>
<build_depend>class_loader</build_depend>
<build_depend>composition_interfaces</build_depend>
<build_depend>rclcpp</build_depend>
<build_depend>rcpputils</build_depend>
<exec_depend>ament_index_cpp</exec_depend>
<exec_depend>class_loader</exec_depend>
<exec_depend>composition_interfaces</exec_depend>
<exec_depend>rclcpp</exec_depend>
<test_depend>ament_cmake_google_benchmark</test_depend>
<test_depend>ament_cmake_gtest</test_depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<test_depend>launch_testing</test_depend>
<test_depend>std_msgs</test_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
其中,
name
定义了软件包的名称version
定义了软件包的版本description
定义了软件包的简短描述maintainer
定义了维护者的联系方式。可以有多个maintainer
。email
属性是必需的license
定义了软件包的许可证。可以有多个license。如果许可证的文本包含在软件包中,应提供一个相对于软件包目录的路径buildtool_depend
定义了构建工具的依赖项。对于使用ament的包,这将是ament_cmake
build_depend
和exec_depend
定义了构建和运行时的依赖项depend
是build_depend
,exec_depend
和build_export_depend
的缩写,如果你有一个依赖项在这三个阶段都需要,你可以使用dependtest_depend
定义了运行测试所需的额外依赖项
node
ros2 node list
:查看所有noderos2 node info <node_name>
:查看某个node的信息
topic
ros2 topic echo <topic_name>
:查看topic输出:ros2 topic hz <topic_name>
:查看topic频率ros2 topic list
:查看有哪些topicros2 topic list -t
:查看每个topic及其message type
- 查看topic有哪些pub和sub:
ros2 topic info -v <topic_name>
- 在某个topic上使用命令行pub数据:
- 按默认周期发送:
ros2 topic pub <topic_name> <msg_type> '<args>'
注意,args要使用yaml格式,比如发送std_msgs::msg::String
类型的消息:ros2 topic pub /topic std_msgs::msg::String '{data: "hello,world"}'
- 只发送一次:
ros2 topic pub --once <topic_name> <msg_type> '<args>'
- 按指定周期发送:
ros2 topic pub --rate 1 <topic_name> <msg_type> '<args>'
,1表示频率
- 按默认周期发送:
参数
launch
录包
录包
命令:ros2 bag record
,通过这个命令录制的包是一个包含了选定topic消息的db3文件(文件形式为.db3)。ros2中的bag文件使用了SQLite数据库来存储消息。
-a
或--all
:录制所有topic- -o:指定录包的文件名,如:
ros2 topic record -a -o my_bag.db3
- 录制指定topic的包:
ros2 bag record /topic1 /topic2
查看
- 查看录包信息:
ros2 bag info <bag_file>
- 查看录制的实际内容:
- 播放录制的数据:
ros2 bag play <bag_file>
,循环播放:ros2 bag play <bag_file> -l
- 继续打开一个新的终端窗口,然后使用ros2 topic命令查看,如
ros2 topic list, ros2 topic echo <topic_name>
等
- 播放录制的数据: