使用ROS的Action通信机制完成发布simple_goal,并接受Movebase返回的运行状态

本文介绍如何利用ROS的Action通信机制与Movebase交互,发布simple_goal并接收导航状态反馈,以判断机器人是否到达目的地,适用于需要获取导航进度的场景。
摘要由CSDN通过智能技术生成

在使用Movebase进行导航时,大部分情况下并不只是让机器人到达指定地点,而是需要到达目的地后执行进一步的动作。在发布goal后,需要获取导航执行进度,判断是否到达目的点,才能进行下一步动作。
显而易见的是ROS话题和服务通信无法提供反馈信息,从而无法获取到进度信息,而另一种通信机制Action正好带有反馈信息的功能,详细原理见http://www.guyuehome.com/908。并且Movebase实际上是actionlib的服务端的实现,如图示:
在这里插入图片描述
所以,我们只要实现客户端来发送goal并接受来自Action反馈的状态即可判断是否到达目标点了。
代码如下,实现了发送一个simple goal,并且判断Movebase执行是否完成。

/*
* 此处根据需要添加头文件
*/

#include <move_base_msgs/MoveBaseAction.h>
#include <actionlib/client/simple_action_client.h>
//使用Action通信所需要的头文件

using namespace std;

typedef actionlib::SimpleActionClient<move_base_msgs::MoveBaseAction> MoveBaseClient; 

int main(int argc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值