目录
- 一、打开小海龟
- 1.1终端,启动ROS Master:
- 1.2终端2,启动小海龟仿真器:
- 1.3终端3,启动海龟控制节点:
- 二、查看系统中的计算图
- 三、节点命令
- 3.1查看节点下的命令rosnode
- 3.2显示节点列表rosnode list
- 3.3查看节点信息rosnode info /节点名
- 四、话题命令
- 4.1查看话题命令rostopic
- 4.2显示topic列表rostopic list
- 4.3把数据发布到当前某个正在广播的话题上rostopic pub
- 五、查看消息数据结构
- 六、服务通信
- 6.1查看服务列表rosservice list
- 6.2手动通过服务来进行操作rosservice call
- 七、话题记录和复现rosbag
一、打开小海龟
1.1终端,启动ROS Master:
roscore
1.2终端2,启动小海龟仿真器:
rosrun turtlesim turtlesim_node
输入rosrun turtlesim,敲两下Tab健可查看该命令下有哪些功能
1.3终端3,启动海龟控制节点:
rosrun turtlesim turtle_teleop_key
二、查看系统中的计算图
新建终端窗口:
rqt_graph
可展示系统中运行的计算图:
可以清晰地了解系统节点间通信的部分信息。
teleop_turtle节点(键盘控制节点)通过cmd_vel(topic)向turtlesim节点(海龟仿真器节点)发出消息,使得小海龟移动。
三、节点命令
3.1查看节点下的命令rosnode
rosnode
3.2显示节点列表rosnode list
rosnode list
可以看到有3个节点
3.3查看节点信息rosnode info /节点名
rosnode info /节点名
我们查看海龟仿真器节点/turtlesim的信息:
rosnode info /turtlesim
可以看到海龟仿真器节点/turtlesim自己有一些发布和订阅,也有一些服务
四、话题命令
rostopic命令工具能让你获取ROS话题的信息。
4.1查看话题命令rostopic
rostopic
4.2显示topic列表rostopic list
# (1) 列出当前已被订阅和发布的所有话题。
rostopic list
# (2) 列出所有发布和订阅的主题及其类型的详细信息。
rostopic list -v
4.3把数据发布到当前某个正在广播的话题上rostopic pub
rostopic pub (参数) 话题名 消息数据结构 “具体数据”
# 命令会发送一条消息给turtlesim,告诉它以2.0大小的线速度和1.8大小的角速度移动。
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist “linear [2.0, 0.0, 0.0] [0.0, 0.0, 1.8]"
/turtle1/cmd_vel
:这是要发布到的话题的名称
geometry_msgs/Twist
:这是发布到话题时要使用的消息的类型。
还有一种快速输入的方法:先输入以下命令,然后双击Tab键,最后使用<-和->键修改linear和angular。
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist
下面我们用 rostopic pub -r
命令来发布源源不断的命令:
# 命令以10Hz的频率发送消息给turtlesim,保证乌龟持续做圆周运动
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist “linear [2.0, 0.0, 0.0] [0.0, 0.0, 1.8]"
五、查看消息数据结构
上例我们使用了消息数据结构定义了一个消息传给topic,我们可以查看有哪些消息数据结构。
查看消息数据结构使用:
rosmsg show …
在输入过程中,我们可以勤使用Tab键查看或填充内容。
六、服务通信
上面的例子我们使用了向topic传msg来控制节点,这次我们试试第二种通信方式service。
6.1查看服务列表rosservice list
rosservice list
6.2手动通过服务来进行操作rosservice call
这次我们通过人工产生服务(service)来诞生一只新海龟,使用rosservice call /spawn …
在服务列表中,有个/spawn服务,可以产生一只新的海龟。
格式:
rosservice call (参数) 服务名 “具体数据”
这时我们再输入rostopic list,可以看到turtle2已经在topic里了
七、话题记录和复现rosbag
试想我们尝试让海龟以我们指定的路径移动了一回,我们想要把它 记录下来,拷贝到自己的实验室再复现出来,我们就可以使用话题记录功能。
常用命令
rosbag record -a -O 文件名
比如我们使用之前打开的键盘操作器让海龟移动一圈并记录下来:
(1)打开新终端输入
rosbag record -a -O cmd_record
这样就开始记录了:
(2)移动一下
(3)到记录界面按Ctrl+C停止,文件就记录了
(4)接下去关闭所有打开的ros节点
重新开启roscore
开启海龟节点rosrun turtlesim turtlesim_node
这时我们输入
rosbag play cmd_record
就可以复现之前的移动啦
参考视屏:古月居ROS入门21讲