小乌龟回顾
小乌龟节点启动¶
1. 启动小乌龟模拟器节点¶
ros2 run turtlesim turtlesim_node
2. 启动小乌龟键盘输入节点¶
ros2 run turtlesim turtle_teleop_key
小乌龟操作原理¶
1. 节点信息查看¶
小乌龟启动过程中,我们启动了两个可执行的程序:turtlesim_node
和turtle_teleop_key
。可以通过命令查看当前的启动的节点:
查看小乌龟节点¶
通过命令可以查看/turtlesim
节点的详情
ros2 node info /turtlesim
命令运行后,可以看到以下结果:
/turtlesim
Subscribers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/turtle1/cmd_vel: geometry_msgs/msg/Twist
Publishers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/turtle1/color_sensor: turtlesim/msg/Color
/turtle1/pose: turtlesim/msg/Pose
Service Servers:
/clear: std_srvs/srv/Empty
/kill: turtlesim/srv/Kill
/reset: std_srvs/srv/Empty
/spawn: turtlesim/srv/Spawn
/turtle1/set_pen: turtlesim/srv/SetPen
/turtle1/teleport_absolute: turtlesim/srv/TeleportAbsolute
/turtle1/teleport_relative: turtlesim/srv/TeleportRelative
/turtlesim/describe_parameters: rcl_interfaces/srv/DescribeParameters
/turtlesim/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/turtlesim/get_parameters: rcl_interfaces/srv/GetParameters
/turtlesim/list_parameters: rcl_interfaces/srv/ListParameters
/turtlesim/set_parameters: rcl_interfaces/srv/SetParameters
/turtlesim/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Service Clients:
Action Servers:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
Action Clients:
rosnode info
命令可以查看当前节点的一些信息:
- Publications:此节点上定义的发布者
- Subscriptions:此节点上定义的订阅者
- Services:此节点上定义的服务
- 进程id,占用的网络端口
- Connections: 此节点和其他节点间的连接信息
查看控制节点¶
同理,我们也可以通过ros2 node info
查询/teleop_turtle
节点的信息
ros2 node info /teleop_turtle
结果如下:
/teleop_turtle
Subscribers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
Publishers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/turtle1/cmd_vel: geometry_msgs/msg/Twist
Service Servers:
/teleop_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
/teleop_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/teleop_turtle/get_parameters: rcl_interfaces/srv/GetParameters
/teleop_turtle/list_parameters: rcl_interfaces/srv/ListParameters
/teleop_turtle/set_parameters: rcl_interfaces/srv/SetParameters
/teleop_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Service Clients:
Action Servers:
Action Clients:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
现在我们大致可以搞清楚一些通讯的关系:
/teleop_turtle
节点存在一个发布者,往/turtle1/cmd_vel
主题中发布数据。/turtlesim
节点存在一个订阅者,去/turtle1/cmd_vel
主题中获取数据。
2. 可视化工具查看节点关系¶
rqt_graph
工具提供了可视化的工具方便我们查看这种节点间的关系:
ros2 run rqt_graph rqt_graph
图像显示,
/teleop_turtle
通过主题/turtle1/cmd_vel
给/turtlesim
进行数据传递。
/teleop_turtle
为具备Publisher功能的节点。
/turtlesim
为具备Subscriber功能的节点。
/turtle1/cmd_vel
为publisher和subscriber通讯的主题。
调试工具控制小乌龟¶
1. rqt模拟数据发送¶
rqt
通过图形化配置参数:
2. 通过命令行模拟数据发送¶
ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
小乌龟坐标系相关¶
面板¶
- 面板的坐标原点在左下脚,即左下角为(0,0)
- 面板的X轴是自左向右,数值是0开始正向增长
- 面板的Y轴是自下向上,数值是0开始正向增长
- 面板的宽度和高度相同,值为11.088899
小乌龟¶
- 小乌龟的坐标原点为小乌龟的中心点。
小乌龟移动指令参数¶
我们通过ros2 topic命令可以获得小乌龟的移动数据类型为geometry_msgs/msg/Twist
ros2 topic type /turtle1/cmd_vel
通过ros2 interface命令可以查看数据的详细格式:
ros2 interface proto geometry_msgs/msg/Twist
输出的格式为:
geometry_msgs/msg/Twist
"linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
"
linear
指的是线速度,小乌龟只用到了x
,代表着乌龟向前进的线速度
angular
指的是角速度,小乌龟只用到了z
,代表着乌龟旋转的角速度