首先,介绍一些ROS的常用命令行工具
- rostopic
- rosservice
- rosnode
- rosparam
- rosmsg
- rossrv
下面以ros的小海龟举例讲解ROS的使用:
以下三条命令需要在三个不同终端中依次运行
启动ROS Master:roscore
启动小海龟仿真器:rosrun turtlesim turtlesim_node
(rosrun + 功能包名 + 仿真器节点)
运行后出现仿真界面
启动小海龟控制节点:rosrun turtlesim turtle_teleop_key
(rosrun + 功能包名 + 键盘控制节点)
在此终端中通过方向键可以控制仿真界面中的小海龟移动。
查看节点
Commands:
rosnode ping test connectivity to node
rosnode list list active nodes
rosnode info print information about node
rosnode machine list nodes running on a particular machine or list machines
rosnode kill kill a running node
rosnode cleanup purge registration information of unreachable nodes
查看节点间通信关系
rqt_graph
显示如下:
turtle_teleop:键盘控制节点
turtlesim:仿真器节点
两者之间传递话题 /turtle/cmd_vel
查看节点列表
rosnode list
显示如下:
@ubuntu:~$ rosnode list
/rosout
/teleop_turtle
/turtlesim
/rosout :为默认话题,采集节点信息,提交给上层用作显示。
查看节点信息
rosnode info /turtlesim
显示如下:
@ubuntu:~$ rosnode info /turtlesim
--------------------------------------------------------------------------------
Node [/turtlesim] ==注释==
Publications: 该节点正在发布的话题
* /rosout [rosgraph_msgs/Log]
* /turtle1/color_sensor [turtlesim/Color]
* /turtle1/pose [turtlesim/Pose]
Subscriptions: 该节点正在订阅的话题
* /turtle1/cmd_vel [geometry_msgs/Twist]
Services: 提供的一些服务通过这些服务可以完成一些配置
* /clear
* /kill
* /reset
* /spawn
* /turtle1/set_pen
* /turtle1/teleport_absolute
* /turtle1/teleport_relative
* /turtlesim/get_loggers
* /turtlesim/set_logger_level
contacting node http://gc-Lenovo-Y50c:37603/ ...
Pid: 5676
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
* topic: /turtle1/cmd_vel
* to: /teleop_turtle (http://gc-Lenovo-Y50c:45715/)
* direction: inbound
* transport: TCPROS
通过命令行工具使海龟运动
输入如下命令,可以通过Tab命令补齐。
gc@gc-Lenovo-Y50c:~$ 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: 1.0"
回车后,可以发现小海龟可以自己移动了。
查看Twist中定义的数据类型
rosmsg show geometry_msgs/Twist
gc@gc-Lenovo-Y50c:~$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
服务器列表
rosservice list
gc@gc-Lenovo-Y50c:~$ rosservice list
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level
创建一个新的小海龟
在原点创建一个名为turtle2的小海龟
gc@gc-Lenovo-Y50c:~$ rosservice call /spawn "x: 0.0
y: 0.0
theta: 0.0
name: 'turtle2'"
话题记录
打开一个终端后,输入
话题记录命令:rosbag recode -a -O cmd_record
在teleop结点终端窗口中通过方向键控制海龟移动,后台会自动记录运动状态,并将其记录到home/cmd_record.bag文件中,Ctrl+c结束记录。
进入命令行输入
话题复现命令:resbag play cmd_record.bag
可以发现海龟可以复现运动。
古月ROS 21讲学习笔记