简介:在前面的章节中,我们先简单学习了ROS2的话题发布和订阅,两种操作都是通过python代码实现的,而在实际应用过程中,我们会经常用到命令行操作来辅助调试,更进一步的可以使用GUI工具辅助调试,比如前边用到的rqt中的Image View工具,这一节在现有功能基础上介绍一部分常用的命令行操作指令。
注:以下实际操作数据都是在duckiebot节点和control节点运行过程中的数据。
目录
1、包管理工具 ros2 pkg
ros2 pkg有create、executables、list、prefix、xml共5个命令,我们常用的是前3个。
1.1 ros2 pkg create
命令功能:创建功能包,指定包名、编译方式、依赖项、节点名等
命令格式:ros2 pkg create duckiebot --build-type ament_python --node-name duckiebot_node --dependencies rclpy std_msgs sensor_msgs
命令 | 说明 |
ros2 pkg create | ROS2功能包创建命令 |
duckiebot | 所建功能包名称,可以放在最后 |
--build-type ament_python | 指定编程语言,我们这里使用python |
--node-name duckiebot_node | 指定要生成的源码文件,可以后期创建,但是手动创建需要手动配置 |
--dependencies rclpy std_msgs sensor_msgs | 指定依赖模块,rclpy是python编程必选的, std_msgs和sensor_msgs是我们要用的消息模块,也可以不指定手动配置 |
1.2 ros2 pkg list
命令功能:查看系统中功能包列表
命令格式:ros2 pkg list
如果要查看自己写的节点包,需要用source设置环境变量
1.3 ros2 pkg executables
命令功能:查看包内可执行文件列表
命令格式: ros2 pkg executables <package_name>
2、节点运行工具 ros2 run
命令功能:运行包内节点功能
命令格式:ros2 run <package_name> <node_name>
3、节点查看工具 ros2 node
3.1 ros2 node list
命令功能: 查看当前域内(ROS_DOMAIN_ID相同的节点组)活动的节点列表
命令格式: ros2 node list
3.2 ros2 node info
命令功能: 查看节点详细信息,包括订阅、发布的消息,开启的服务和动作等
命令格式:ros2 node info <node_name>
4、主题操作工具 ros2 topic
4.1 ros2 topic list
命令功能:列出域内可使用的主题列表
命令格式:ros2 topic list
4.2 ros2 topic info
命令功能:显示主题消息类型,订阅者数量,发布者数量等
命令格式:ros2 topic info <topic_name>
4.3 ros2 topic type
命令功能:查看主题消息类型
命令格式:$ ros2 topic type <topic_name>
4.4 ros2 topic find
命令功能:按消息类型查找相关主题
命令格式:$ ros2 topic find <message_type>
$ ros2 topic find <-c> <message_type>
命令加-c参数,只统计并显示数量
4.5 ros2 topic hz
命令功能:显示主题平均发布频率
命令格式:ros2 topic hz <topic_name>
4.6 ros2 topic bw
命令功能:显示所查阅主题的带宽
命令格式:ros2 topic bw <topic_name>
4.7 ros2 topic delay
命令功能:通过header中的时间戳计算消息延迟
命令格式:ros2 topic delay <topic_name>
4.8 ros2 topic echo
命令功能:在控制台显示主题消息
命令格式:ros2 topic echo <topic_name>
运行主题查看命令后,按方向键,可以看到发布出来的控制消息:
4.9 ros2 topic pub
命令功能:通过命令行发布指定主题消息
命令格式:ros2 topic pub <topic_name> <message_type> <message_content>
ros2 topic pub -1 <topic_name> <message_type> <message_content>
ros2 topic pub -t 5 <topic_name> <message_type> <message_content>
ros2 topic pub -r 5 <topic_name> <message_type> <message_content>
默认循环发布,频率为1Hz,参数-1只发布一次,参数-t 5循环发布5次结束,参数-r 5以5Hz的频率循环发布,详细命令如下:
$ ros2 topic pub control_node/action geometry_msgs/msg/TwistStamped "{header: {stamp:{sec: 0, nanosec: 0}, frame_id: control_node}, twist: {linear: {x: 0.3, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}}"
5、接口操作工具 ros2 interface
5.1 ros2 interface list
命令功能:f分类显示系统内所有的接口,包括消息(Messages)、服务(Services)、动作(Actions)
命令格式:ros2 interface list
5.2 ros2 interface package
命令功能:显示指定接口包内的子接口
命令格式:ros2 interface package <interface_name>
5.3 ros2 interface packages
命令功能:显示指定接口包
命令格式:ros2 interface packages
5.4 ros2 interface show
命令功能:显示指定接口的详细内容
命令格式:ros2 interface show <interface_name>
用于消息类型Messsage
用于服务Service
用于动作Action
5.5 ros2 interface proto
命令功能:显示消息模板
命令格式:ros2 interface proto <message_name>
以上是目前内容可能会用到的命令行操作指令,后续功能再有相关命令时,将通过章节内穿插介绍或者单独章节介绍的方式给出。
若有收获,就点个赞吧