小乌龟介绍
小乌龟节点启动¶
1. 启动小乌龟模拟器节点¶
rosrun turtlesim turtlesim_node
2. 启动小乌龟键盘输入节点¶
rosrun turtlesim turtle_teleop_key
Warning
启动完成后,可以通过键盘输入操控小乌龟移动。
键盘操控时,光标一定要在命令行上。
小乌龟操控原理¶
1. 节点信息查看¶
小乌龟启动过程中,我们启动了两个可执行的程序:turtlesim_node
和turtle_teleop_key
。可以通过命令查看当前的启动的节点:
Tip
可以查看到启动程序对应的节点/turtlesim
和/teleop_turtle
查看小乌龟节点¶
通过命令可以查看/turtlesim
节点的详情
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://ubuntu:42049/ ...
Pid: 20218
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
* topic: /turtle1/cmd_vel
* to: /teleop_turtle (http://ubuntu:44433/)
* direction: inbound
* transport: TCPROS
Note
rosnode info
命令可以查看当前节点的一些信息:
- Publications:此节点上定义的发布者
- Subscriptions:此节点上定义的订阅者
- Services:此节点上定义的服务
- 进程id,占用的网络端口
- Connections: 此节点和其他节点间的连接信息
查看控制节点¶
同理,我们也可以通过rosnode info
查询/teleop_turtle
节点的信息,
rosnode info /teleop_turtle
--------------------------------------------------------------------------------
Node [/teleop_turtle]
Publications:
* /rosout [rosgraph_msgs/Log]
* /turtle1/cmd_vel [geometry_msgs/Twist]
Subscriptions: None
Services:
* /teleop_turtle/get_loggers
* /teleop_turtle/set_logger_level
contacting node http://ubuntu:44433/ ...
Pid: 20443
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
* topic: /turtle1/cmd_vel
* to: /turtlesim
* direction: outbound
* transport: TCPROS
现在我们大致可以搞清楚一些通讯的关系:
/teleop_turtle
节点存在一个发布者,往/turtle1/cmd_vel
主题中发布数据。/turtlesim
节点存在一个订阅者,去/turtle1/cmd_vel
主题中获取数据。
2. 可视化工具查询节点关系¶
rqt_graph
工具提供了可视化的工具方便我们查看这种节点间的关系:
rosrun rqt_graph rqt_graph
Note
图像显示,/teleop_turtle
通过主题/turtle1/cmd_vel
给/turtlesim
进行数据传递。
/teleop_turtle
为具备Publisher功能的节点。
/turtlesim
为具备Subscriber功能的节点。
/turtle1/cmd_vel
为publisher和subscriber通讯的主题。
调试工具操控小乌龟¶
1. rqt_publisher
模拟数据发送¶
启动rqt_publisher
工具
rosrun rqt_publisher rqt_publisher
通过图形化配置参数:
2. 通过命令行模拟数据发送¶
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 3.0"
小乌龟坐标系相关¶
面板¶
- 面板的坐标原点在左下脚,即左下角为(0,0)
- 面板的X轴是自左向右,数值是0开始正向增长
- 面板的Y轴是自下向上,数值是0开始正向增长
- 面板的宽度和高度相同,值为11.088899
小乌龟¶
- 小乌龟的坐标原点为小乌龟的中心点。
小乌龟移动指令参数¶
我们通过rostopic命令可以获得小乌龟的移动数据类型为geometry_msgs/Twist
rostopic type /turtle1/cmd_vel
通过rosmsg命令可以查看数据的详细格式:
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
Tip
geometry_msgs/Vector3 linear
指的是线速度,小乌龟只用到了float64 x
,代表着乌龟向前进的线速度
geometry_msgs/Vector3 angular
指的是角速度,小乌龟只用到了float64 z
,代表着乌龟旋转的角速度