ROS入门之 turtlesim 小海龟

首先,介绍一些ROS的常用命令行工具

  • rostopic
  • rosservice
  • rosnode
  • rosparam
  • rosmsg
  • rossrv

下面以ros的小海龟举例讲解ROS的使用:
以下三条命令需要在三个不同终端中依次运行
启动ROS Masterroscore
启动小海龟仿真器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讲学习笔记

你可能感兴趣的:(ROS)