ROS机器人入门-常用命令
在机器人系统中,需要启动的节点少则几个十几个,多则几十个,不同节点之间的话题、名称、参数等都不相同。当自定义的节点需要与其他节点进行通信时,我们该如何获取节点信息?
ROS中提供了一些命令,用于获取不同节点的信息,一些常用命令如下:
- rosnode:操作节点
- rostopic:操作话题
- rosservice:操作服务
- rosmsg:操作msg消息
- rossrv:操作srv消息
- rosparam:操作参数
这些命令可以动态地获取到运行节点的各项信息。
rosnode
rosnode 是用于获取节点信息的命令
1 | rosnode ping 测试到节点的连接状态 |
rosnode ping
测试到节点的连接状态
rosnode list
列出活动节点
rosnode info
打印节点信息
rosnode machine
列出指定设备上的节点
rosnode kill
杀死某个节点
rosnode cleanup
清除无用节点,启动乌龟节点,然后 ctrl + c 关闭,该节点并没被彻底清除,可以使用 cleanup 清除节点
rostopic
rostopic包含rostopic命令行工具,用于显示有关ROS 主题的调试信息,包括发布者,订阅者,发布频率和ROS消息。它还包含一个实验性Python库,用于动态获取有关主题的信息并与之交互。
1 | rostopic bw 显示主题使用的带宽 |
rostopic list(-v)
直接调用即可,控制台将打印当前运行状态下的主题名称
rostopic list -v : 获取话题详情(比如列出:发布者和订阅者个数…)
rostopic pub
可以直接调用命令向订阅者发布消息
为roboware 自动生成的 发布/订阅 模型案例中的 订阅者 发布一条字符串
1
2rostopic pub /主题名称 消息类型 消息内容
rostopic pub /chatter std_msgs gagaxixi为 小乌龟案例的 订阅者 发布一条运动信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21rostopic pub /turtle1/cmd_vel geometry_msgs/Twist
"linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0"
//只发布一次运动信息
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist
"linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0"
// 以 10HZ 的频率循环发送运动信息rostpic echo
获取指定话题当前发布的消息
rostopic info
获取当前话题的小关信息
消息类型
发布者信息
订阅者信息
rostopic type
列出话题的消息类型
rostopic find 消息类型
根据消息类型查找话题
rostopic delay
列出消息头信息
rostopic hz
列出消息发布频率
rostopic bw
列出消息发布带宽
rosmsg
rosmsg是用于显示有关 ROS消息类型的 信息的命令行工具。
rosmsg 演示
1 | rosmsg show 显示消息描述 |
rosmsg list
会列出当前 ROS 中的所有 msg
rosmsg packages
列出包含消息的所有包
rosmsg package
列出某个包下的所有msg
1
2//rosmsg package 包名
rosmsg package turtlesimrosmsg show
显示消息描述
1
2
3
4
5
6
7
8//rosmsg show 消息名称
rosmsg show turtlesim/Pose
结果:
float32 x
float32 y
float32 theta
float32 linear_velocity
float32 angular_velocityrosmsg info
作用与 rosmsg show 一样
rosmsg md5
一种校验算法,保证数据传输的一致性。
[详情可访问命令文档](http://wiki.ros.org/ROS/Technical Overview#Message_serialization_and_msg_MD5_sums)
rosservice
rosservice包含用于列出和查询ROSServices的rosservice命令行工具。
调用部分服务时,如果对相关工作空间没有配置 path,需要进入工作空间调用 source ./devel/setup.bash
1 | rosservice args 打印服务参数 |
rosservice list
列出所有活动的 service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18~ rosservice list
/clear
/kill
/listener/get_loggers
/listener/set_logger_level
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rostopic_4985_1578723066421/get_loggers
/rostopic_4985_1578723066421/set_logger_level
/rostopic_5582_1578724343069/get_loggers
/rostopic_5582_1578724343069/set_logger_level
/spawn
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_levelrosservice args
打印服务参数
1
2rosservice args /spawn
x y theta namerosservice call
调用服务
为小乌龟的案例生成一只新的乌龟
1
2
3
4
5
6
7rosservice call /spawn "x: 1.0
y: 2.0
theta: 0.0
name: 'xxx'"
name: "xxx"
//生成一只叫 xxx 的乌龟rosservice find
根据消息类型获取话题
rosservice info
获取服务话题详情
rosservice type
获取消息类型
rosservice uri
获取服务器 uri
rossrv
rossrv是用于显示有关ROS服务类型的信息的命令行工具,与 rosmsg 使用语法高度雷同。
1 | rossrv show 显示服务消息详情 |
rossrv list
会列出当前 ROS 中的所有 srv 消息
rossrv packages
列出包含服务消息的所有包
rossrv package
列出某个包下的所有msg
1
2//rossrv package 包名
rossrv package turtlesimrossrv show
显示消息描述
1
2
3
4
5
6
7
8
9//rossrv show 消息名称
rossrv show turtlesim/Spawn
结果:
float32 x
float32 y
float32 theta
string name
---
string namerossrv info
作用与 rossrv show 一致
rossrv md5
对 service 数据使用 md5 校验(加密)
rosparam
rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数。
1 | rosparam set 设置参数 |
rosparam list
列出所有参数
1
2
3
4
5
6
7rosparam list
//默认结果
/rosdistro
/roslaunch/uris/host_helloros_virtual_machine__42911
/rosversion
/run_idrosparam set
设置参数
1
2
3
4
5
6
7
8rosparam set name huluwa
//再次调用 rosparam list 结果
/name
/rosdistro
/roslaunch/uris/host_helloros_virtual_machine__42911
/rosversion
/run_idrosparam get
获取参数
1
2
3
4rosparam get name
//结果
huluwarosparam delete
删除参数
1
2
3
4rosparam delete name
//结果
//去除了namerosparam load(先准备 yaml 文件)
从外部文件加载参数
1
rosparam load xxx.yaml
rosparam dump
将参数写出到外部文件
1
rosparam dump yyy.yaml