序言
-
ros2常用命令总结
1. 功能包package
-
查看功能包列表
ros2 pkg list
-
创建一个新的功能包
ros2 pkg create --build-type ament_cmake package_name
-
创建功能包时添加依赖项
ros2 pkg create --build-type ament_cmake package-name --dependencies [deps]
-
编译所有功能包
colcon build
-
编译指定功能包
colcon build –packages-select package_name
2. 节点Node运行
-
查看所有运行节点
ros2 node list
-
查看某一个节点信息
ros2 node info node_name
-
节点运行方式1
ros2 run package_name executable_file
-
节点运行方式2
ros2 launch package_name node_launch_file(.py文件等)
- launch文件的写法和launch启动方式对工程install路径的要求在之后的文章中做总结
3. 显示话题topic信息
-
查看系统内活跃topic
ros2 topic list
-
查看topic的消息类型
ros2 topic type topic_name
-
显示topic内容
ros2 topic echo topic_name
-
向特定topic发送数据
ros2 topic pub topic_name msg_type 'args'
- args是实际数据,需要以YAML格式输入
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
- --once是可选参数,表示发布一个消息然后退出
ros2 topic pub --rate 10 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
- --rate 10代替--once选项,表示以10Hz稳定流发布消息
-
查看发布数据的帧率
ros2 topic hz topic name
4. 查看节点参数param
-
查看节点的子命名空间和参数
ros2 param list
-
获取当前参数的值
ros2 param get node_name param_name
- 如 ros2 patam get /turtlesim background_g
-
设置参数的值
ros2 param set node_name param_name value
- 如 ros2 param set /turtlesim background_r 150
-
存储节点所有参数值:dump命令
ros2 param dump node_name
- 如 ros2 param dump /turtlesim,会得到 Saving to: ./turtlesim.yaml的yaml文件
-
存储节点的所有参数值到指定路径
ros2 param dump node_name --output-dir /保存路径
-
param load使用节点所保存的参数值
ros2 run package_name executable_name --ros-args --params-file <file_name>
- 如 ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml
5. 播包/录包相关命令
-
查看bag信息
ros2 bag info bag_name
-
正常播包命令
ros2 bag play bag_dir_name
-
倍速播包命令
ros2 bag play bag_dir_name -r 2
-
循环播包命令
ros2 bag play bag_dir_name -l
-
播放单个topic
ros2 bag play bag_dir_name --topics /topic_name
-
以上bag_dir_name也可以换成xxx.db3包的具体名字
-
录制特定topic的包
ros2 bag record topic_name
-
录制多个topic的包
ros2 bag record -o new_bag_name topic1_name topic2_name
-
录制所有topic的包
ros2 bag record -a
6. 服务service的相关命令
- service是另一种ros通信机制(类似topic和action),CS模式,一个服务端,可以有多个客户端
-
查看服务列表
ros2 service list # 加-t可显示服务消息类型
-
查看服务的数据类型
ros2 service type service_name
-
查找使用指定数据类型的服务
ros2 service find type_name
-
通过命令行调用服务
ros2 service call <service_name> <service_type> <args>
- 如 ros2 service call /spawn turtlesim/srv/Spawn “{x: 2, y: 2, theta: 0.2, name: ‘’}”
7. 服务action的相关命令
- action是一种类似service的问答通信机制,不同之处在于action带有连续反馈,可以不断反馈任务进度,也可以在任务过程中终止运行。
- 使用action发布机器人的运动目标,机器人在收到action后就开始运动,在运动过程中不断反馈当前的运动状态;过程中也可以随时取消,让机器人停止;当机器人完成运动目标后,action返回任务完成的消息
-
列出域内可用的动作列表
ros2 action list # 加 -t 可显示动作消息类型
-
查看指定action的信息
ros2 action info action_name
-
模拟客户端手动发起动作请求
ros2 action send_goal <action_name> <type_name> <goal_data> <--feedback>
- --feedback指定是否显示反馈主题信息
- 如 ros2 action send_goal /crossing_acton duckietown_interface/action/Crossing “{speed: 0.2, direction: ‘right’}” --feedback
8. lifecycle node节点控制命令
-
LCN = lifecycle node,生命周期节点,受控节点。ros2中LMN(lifecycle management node,控制节点)以CS模式对LCN节点进行控制
-
查看有哪些lifecycle节点
ros2 lifecycle nodes
-
查看lifecycle节点所有可行的转换
ros2 lifecycle list node_name -a
通过终端命令进行状态转换如下
-
查看节点接下来可以进入什么状态
ros2 lifecycle list node_name
-
获取节点状态
ros2 lifecycle get node_name
-
设置节点状态
ros2 lifecycle set node_name configure
-
可以设置的状态有如下几个:
configure
activate
deactivate
cleanup
shutdown -
转换结果示例
-
【参考文章】
ROS2命令行操作常用指令
ROS 2 services 概述
ROS 2 基本命令总结
ROS 2录包与播包
created by shuaixio, 2023.04.09