5.4ROS2_Action介绍
你好,我是小鱼。通过前面章节的学习,你已经掌握了ROS2中四大通信利器中话题、服务、参数这三个,还差最后一个就能将ROS2的通信机制全部打包带回家了,这节课小鱼就带你一起认识一下Action,并带你动手体验一下Action通信。
1.Action背景 前面章节学习了话题、服务、参数。话题适用于节点间单向的频繁的数据传输,服务则适用于节点间双向的数据传递,而参数则用于动态调整节点的设置,动作Action和他们三个有什么不同之处呢?
小鱼举个例子,在前面的章节中王二通过话题获取李四写的小说。张三通过服务向李四购买小说。
流程是张三将钱通过服务给王二,然后王二凑够对应章节数量的小说返回给张三,这个过程看似没有问题,假设你是张三,你就会发现下面这些问题:
如果这些问题体现在机器人上,可能是这样子的。我们通过服务服务发送一个目标点给机器人,让机器人移动到该点:
上面的场景在机器人控制当中经常出现,比如控制导航程序,控制机械臂运动,控制小乌龟旋转等,很显然单个话题和服务不能满足我们的使用,因此ROS2针对控制这一场景,基于原有的话题和服务,设计了动作(Action)这一通信方式来解决这一问题。
2.Action的组成部分
知道了Action的出现原因,接着说说Action的三大组成部分目标、反馈和结果。
参数是由服务构建出来了,而Action是由话题和服务共同构建出来的(一个Action = 三个服务+两个话题)
3.感受Action
带着前面对Action的了解,接着我们一起来了直观的通过小乌龟的案例来感受一下Action的魅力。
3.1 启动乌龟模拟器和键盘控制节点
乌龟模拟器
ros2 run turtlesim turtlesim_node
键盘控制节点
ros2 run turtlesim turtle_teleop_key
打开键盘控制节点后,你应该窗口中可以看到下面的提示
Use arrow keys to move the turtle.
Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. 'F' to cancel a rotation.
有请翻译官小鱼(其实用Deppl翻译的)
使用方向键移动乌龟。
用G、B、V、C、D、E、R、T键旋转到绝对方向。'F'可以取消旋转。
这段提示什么意思呢?其实就是字面的意思,
小乌龟键盘控制节点,提供两种可选的控制方式。