笔者根据 古月居 · ROS入门21讲 学习整理,并参考《ROS机器人开发实践》一书。
【注】该部分可参考 古月居 · ROS入门21讲 第8讲
实验准备:启动小海龟仿真器
- 使用
$ roscore启动 Ros Master - 打开一个新的终端,启动小海龟仿真器:
$ rosrun turtlesim turtlesim_node - 打开一个新的终端,启动小海龟控制节点:
$ rosrun turtlesim turtle_teleop_key
工具使用
-
$ rqt_graph:计算图可视化界面 -
$ rosnode:节点工具-
$ rosnode ping node_name:测试连接某节点 -
$ rosnode list:列出当前所有的节点 -
$ rosnode info node_name:查看某节点信息 -
$ rosnode machine machine_name:列出在特定机器或列表机器上运行的节点 -
$ rosnode kill node_name:杀死某节点 -
$ rosnode cleanup:清除不可到达节点的注册信息 -
$ rosnode help:查看帮助信息
-
-
$ rostopic:话题工具-
$ rostopic bw topic_name:查看某个topic的带宽 -
$ rostopic delay topic_name:在标题中通过时间戳显示话题延迟 -
$ rostopic echo topic_name:显示某个topic的内容 -
$ rostopic find topic_type:查找某个类型的topic -
$ rostopic hz topic_name:查看某个topic的频率 -
$ rostopic info topic_name:显示某个topic的属性信息 -
$ rostopic list:列出当前所有的topic -
$ rostopic pub topic_name:向某个topic发布内容- 输入话题名后,双击TAB键补全默认结构,包括该topic的数据结构和具体数据
- 例如,输入
$ rostopic pub /turtle1/cmd_vel后双击TAB键,补全的信息分别为Twist数据结构中的线速度linear和角速度angular,单位分别为米和弧度。 -
-r rate_number设置发布topic的频率,例如,输入$ rostopic pub -r 10 /turtle1/cmd_vel后双击TAB键补全信息,表示每秒钟发布10次该topic。
-
$ rostopic type topic_name:查看某个topic的类型(msg)
-
-
$ rosmsg:消息工具-
$ rosmsg show message_name:查看某个消息的数据结构 -
$ rosmsg info message_name:同上,show的别名。 -
$ rosmsg list:列出当前所有的消息 -
$ rosmsg md5 package_name: _ 未知 _ -
$ rosmsg package package_name:列出某个包中的所有消息 -
$ rosmsg packages message_name:列出包含该消息的所有包
-
-
$ rosservice:服务工具-
$ rosservice args:查看某个服务的参数结构 -
$ rosservice call sevice_name:请求某个服务- 输入服务名后,双击TAB键补全默认结构
- 例如,请求生成新小海龟的服务,输入
$ rosservice call /spawn后双击TAB键,补全的信息分别为新小海龟的x,y坐标,theta角度朝向,name名称。
-
$ rosservice find service_type:按照服务类型查找服务 -
$ rosservice info sevice_name:查看某个服务的详细信息 -
$ rosservice list:列出当前所有可请求的服务 -
$ rosservice type sevice_name:查看某个服务的类型 -
$ rosservice uri sevice_name:查看某个服务rosrpc所在的主机及端口
-
-
$ rosbag:话题记录工具-
$ rosbag check:判断一个bag文件在当前系统是否可执行,可移动 -
$ rosbag compress:压缩一个或多个bag文件 -
$ rosbag decompress:解压一个或多个bag文件 -
$ rosbag decrypt:解密一个或多个bag文件 -
$ rosbag encrypt:加密一个或多个bag文件 -
$ rosbag filter:过滤bag中的内容 -
$ rosbag fix:修复bag文件使其在当前系统可执行 -
$ rosbag help:查看帮助信息 -
$ rosbag info:总览一个或多个bag文件的内容 -
$ rosbag play:以时间同步的方式回放一个或多个包文件的内容 -
$ rosbag record:用指定主题的内容记录一个bag文件 -
$ rosbag reindex:重新索引一个或多个bag文件 - 常用指令
- 话题记录:
$ rosbag record -a -O record_file_name - 话题复现:
$ rosbag play record_file_name.bag
- 话题记录:
-
实践练习
- 启动ROS仿真器
-
$ roscore: 启动 Ros Master -
$ rosrun turtlesim turtlesim_node:启动小海龟仿真器
-
- 控制指令
- turtle1 绘制 “O”
-
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.5708]':向左90°弧 -
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist '[2.5, 0.0, 0.0]' '[0.0, 0.0, 0.0]':前行2.5 -
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist '[4.0, 0.0, 0.0]' '[0.0, 0.0, 3.1416]':向左180°弧 -
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist '[2.5, 0.0, 0.0]' '[0.0, 0.0, 0.0]':前行2.5 -
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.5708]':向左90°弧
-
- turtle2 绘制 “R”
-
$ rosservice call /spawn 1.0 5.5 1.5708 "turtle2":创建新乌龟turtle2,坐标为(1.0, 5.5),头朝向北 -
$ rostopic pub -1 /turtle2/cmd_vel geometry_msgs/Twist '[5.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]':前行5.0 -
$ rostopic pub -1 /turtle2/cmd_vel geometry_msgs/Twist '[0.0, 0.0, 0.0]' '[0.0, 0.0, -1.5708]':原地右转90° -
$ rostopic pub -1 /turtle2/cmd_vel geometry_msgs/Twist '[1.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]':前行1.0 -
$ rostopic pub -1 /turtle2/cmd_vel geometry_msgs/Twist '[4.0, 0.0, 0.0]' '[0.0, 0.0, -3.1416]':向右180°弧 -
$ rostopic pub -1 /turtle2/cmd_vel geometry_msgs/Twist '[1.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]':前行1.0 -
$ rostopic pub -1 /turtle2/cmd_vel geometry_msgs/Twist '[0.0, 0.0, 0.0]' '[0.0, 0.0, 2.3562]':原地左转135° -
$ rostopic pub -1 /turtle2/cmd_vel geometry_msgs/Twist '[3.5355, 0.0, 0.0]' '[0.0, 0.0, 0.0]':前行3.5355
-
- turtle3 绘制 “S”
-
$ rosservice call /spawn 8.0 5.5 0.0 "turtle3":创建新乌龟turtle3,坐标为(10.0, 5.5),头朝向东 -
$ rostopic pub -1 /turtle3/cmd_vel geometry_msgs/Twist '[1.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]':前行1.0 -
$ rostopic pub -1 /turtle3/cmd_vel geometry_msgs/Twist '[4.0, 0.0, 0.0]' '[0.0, 0.0, 3.1416]':向左180°弧 -
$ rostopic pub -1 /turtle3/cmd_vel geometry_msgs/Twist '[4.0, 0.0, 0.0]' '[0.0, 0.0, -3.1416]':向右180°弧 -
$ rostopic pub -1 /turtle3/cmd_vel geometry_msgs/Twist '[1.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]':前行1.0
-
- turtle1 绘制 “O”