ROS命令行工具的使用
几个重要概念:
-
节点(NODE):一个节点就是一个可执行程序,它使用ROS可以和其他节点进行通信。
-
消息(Message):当在一个话题上,发布或订阅时所使用的ROS的数据类型。
-
话题(Topic):节点可以在一个话题上发布消息,同样也可以订阅一个话题来接收消息。
-
主机(Master):是ROS的名字服务器。
一、常用命令
-
$ roscore
启动ROS Master(ROS的节点管理器,在执行其他指令之前必须先执行) -
$ rosrun
运行某个节点 -
$ rosnode
查看ROS节点信息 -
$ rostopic
-
$ rosservice
-
$ rosparam
-
$ rosmsg
-
$ rossrv
-
$ rqt_graph
查看系统中运行的计算图
二、以小海龟仿真器为例
(一)、启动步骤
-
$ roscore
启动ROS Master -
$ rosrun turtlesim turtlesim_node
启动小海龟仿真器节点 -
$ rosrun turtlesim turtle_teleop_key
(这一步需要新开一个终端) 启动海龟控制节点(用键盘上的方向键控制)
(二)、其他指令
-
$ rosnode list
查看话题列表
回车,终端显示
lacyexsale@lacyexsale-KLV-WX9:~$ rosnode list
/rosout
/turtlesim
-
$ rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist
发布话题消息
回车,终端显示
lacyexsale@lacyexsale-KLV-WX9:~$ 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: 0.0"
其中:
- -r 10表示以10Hz的速率执行下面的代码
- linear表示线速度,默认单位m/s
- angular表示角速度,默认单位rad/s
- 让指令停止运行: ctal+alt+C
- 用左右方向键可以移动光标来修改参数
- 斜杠/之后的内容按tab可以自动补全
-
$ rosservice call /spawn
接两下tab,可以在指定位置生成第二只海龟 -
$ rostopic pub -r 10 /turtle2/cmd_vel geometry_msgs/Twist
发布第二只海龟的话题消息 -
$ rosbag record -a -O cmd_record
话题记录
回车,终端显示
lacyexsale@lacyexsale-KLV-WX9:~$ rosbag record -a -O cmd_record
[ INFO] [1620646159.046640118]: Recording to 'cmd_record.bag'.
[ INFO] [1620646159.049065144]: Subscribing to /rosout_agg
[ INFO] [1620646159.051456605]: Subscribing to /rosout
[ INFO] [1620646159.053698522]: Subscribing to /turtle1/pose
[ INFO] [1620646159.055860707]: Subscribing to /turtle1/color_sensor
[ INFO] [1620646159.057686358]: Subscribing to /turtle1/cmd_vel
[ INFO] [1620646159.059708993]: Subscribing to /turtle2/pose
[ INFO] [1620646159.061294253]: Subscribing to /turtle2/color_sensor
[ INFO] [1620646159.063796728]: Subscribing to /turtle3/pose
[ INFO] [1620646159.066294434]: Subscribing to /turtle3/color_sensor
此后对小海龟执行的移动操作都会被记录在 /home/lacyexsale/cmd_record.bag
文件下
关闭键盘对小海龟的控制窗口,关闭小海龟仿真器,再重新运行一个小海龟仿真器,执行
-
$ rosbag play cmd_record.bag
回车,终端显示
lacyexsale@lacyexsale-KLV-WX9:~$ rosbag play cmd_record.bag
[ INFO] [1620646696.485302981]: Opening cmd_record.bag
Waiting 0.2 seconds after advertising topics... done.
Hit space to toggle paused, or 's' to step.
[RUNNING] Bag Time: 1620646159.067916 Duration: 0.000000 / 27.4 [RUNNING] Bag Time: 1620646159.067965 Duration: 0.000048 / 27.4 [RUNNING] Bag Time: 1620646159.068010 Duration: 0.000094 / 27.4 [RUNNING] Bag Time: 1620646159.168353 Duration: 0.100436 / 27.4 [RUNNING] Bag Time: 1620646159.268543 Duration: 0.200627 / 27.4 [RUNNING] Bag Time: 1620646159.305973 Duration: 0.238056 / 27.4
*** #后面很长,省略一些代码
可以看到小海龟会自动复现上次被记录的轨迹