movebase导航和地图数据的使用 - 5 actionlib在movebase中的使用

http://wiki.ros.org/actionlib

http://wiki.ros.org/actionlib/Tutorials

SimpleActionServer和SimpleActionClient基于actionlib实现。

client和server之间靠ros的topic或者service机制通讯。

actionServer向client提供了一种可以发送request,等待结果,覆盖/取消之前的request,不断受到当前request的状态反馈,以及受到最终结果的机制,一般用于耗时时间常的操作。

server端都会起独立的线程来处理request.

上图中client和server之间的箭头就是他们之间用于通讯的topic。

可见request是靠goal这个topic发送出去的。

所以在movebase里面,有一个代码就是直接向”goal”这个topic发送一个目标。其实也就是触发了一个设定目的地的request.



使用方法:

1. 需要定义specification,也就是消息格式,在某个package的目录下,增加action目录,下面增加xxxx.action文件,定义request,feedback,result的数据类型。然后给makefile增加解析该action文件生成特定msg的命令。详细见:http://wiki.ros.org/actionlib

2. 建立server,需要提供一个callback,用于处理request。注意该callback运行于server建立的独立线程。看看movebase里面的定义server的代码:

typedefactionlib::SimpleActionServer<move_base_msgs::MoveBaseAction>MoveBaseActionServer;



as_ = new MoveBaseActionServer(ros::NodeHandle(), "move_base",boost::bind(&MoveBase::executeCb, this, _1), false);



3. 建立client.

Move base原生代码没有使用标准的client,而是直接向server关注的goaltopic发送数据了。MoveBase::goalCB函数就是监听到了simple_goal消息,直接就向goaltopic发送数据了。

后来,我们向movebase里新加入的代码中,使用了标准的client,下面这段代码主要用于自助建图。

typedefactionlib::SimpleActionClient<move_base_msgs::MoveBaseAction>MoveBaseClient



MoveBaseClient ac_;

MoveBase::sendGoal()//向server发送request,并等待处理结束。

-》ac.sendGoal()

ac.waitForResult()

ROS导航实战:从move_base核心组件到TEB/DWA调优与插件化部署 本文深入解析ROS导航实战中的move_base核心组件,涵盖AMCL定位、代价地图管理及DWA/TEB规划器调优技巧。通过实战案例展示如何优化导航参数配置与插件化部署,帮助开发者提升机器人在复杂环境中的导航性能与稳定性。重点探讨DWA算法在动态避障中的参数优化策略。 阅读详情

相关推荐

TurtleBot入门指南:ROS移动机器人开发实战路径

移动机器人开发是机器人技术落地的核心环节,其本质是将感知、定位、规划与控制等算法能力,通过标准化软硬件接口在物理平台上协同实现。ROS(Robot Operating System)作为行业事实标准,提供了消息通信、坐标变换(TF)、仿真(Gazebo)和导航栈(move_base)等关键基础设施,大幅降低系统集成门槛。TurtleBot作为久经验证的ROS教学平台,以Burger/Waffle底盘为载体,完整呈现SLAM建图、AMCL定位、DWA局部规划等典型流程,兼具工程真实性与教学可调试性。它不替代算

366

Navigation(五) Move_base最最全解析(按执行逻辑梳理)

零、前言 此前写了一篇对move_base的解析,号称全网最全,因为把整个包都加了注释hhh。 但是那篇文章由于是以源代码+注释的形式呈现,存在诸多问题,比如:没有按照逻辑顺序解析(而阅读代码的正确步骤是 按照程序执行顺序一步一步看),没有深挖里面的函数而更多的是对本框架的理解,也没有把各个函数之间通用的变量讲清楚(比如:move_base的状态实际上是贯穿整个规划过程的、各个标志位在不同函数之间都是有变化的),等等。 本篇博文在此前那篇的基础上,按照程序执行顺序一步一步进行讲解,并且在一定程度上进行

qq_41050642的博客 9884

四足机器人技术栈解析:从硬件到AI的工程化落地与商业思考

机器人技术作为人工智能与自动化领域的关键分支,其核心在于将感知、决策与控制算法集成于物理实体,实现自主作业。其技术原理涵盖硬件层(如高扭矩密度电机)、驱动控制、状态估计、运动规划、感知导航及智能应用等多个层级,通过系统集成解决复杂环境下的稳定运动与任务执行问题。该技术的核心价值在于替代或辅助人类完成危险、重复或高精度作业,在工业巡检、物流仓储、特种作业等场景展现出巨大潜力。本文以四足机器人为具体载体,深入探讨其完整技术栈构成,并分析从实验室原型到可靠产品的工程化挑战,其中涉及**系统集成**与**工程化量产

weixin_34050519的博客 501

ROS源代码阅读(7)——导航(Navigation)

2021SC@SDUSC ROS源代码阅读(7) 后面主要看导航,看完需要时间,一起整理

qzyj99的博客 2328

ROS导航包Navigation中的 Movebase节点路径规划相关流程梳理

本文主要介绍ROS导航包Navigation中的 Movebase节点中的路径规划的相关流程,并对其进行梳理概括,同时本文也是《ROS局部路径规划器插件teb_local_planner规划流程概括总结》部分的前述文章。

慕羽★的博客 5028

基于move_base的循环导航程序

基于move_base的能够循环导航的完成程序包。已经配置好Cmakelists.txt等文件。用法见我的博客。

Navigation源码阅读之move_base

move_base是小车控制的核心模块,这一块从宏观上调控了整个导航过程。先瞄一眼头文件: typedef actionlib::SimpleActionServer<move_base_msgs::MoveBaseAction> MoveBaseActionServer; enum MoveBaseState { PLANNING, CONTROLLIN...

weixin_42048023的博客 1697

ros move_base中多个导航点的c++实现

ros move_base提供了actionlib的服务,用户可以通过该服务来设置一系列导航位置点,该例子提供了c++的一个实现,通过使用相应的回调函数,用户还可以随时取消不需要的导航点。

ROS move_base 自主重规划全局路径

ROS move_base 自主重规划全局路径

weixin_56867479的博客 2894

halcon3D 点云拟合球体

halon3D 点云拟合球面

weixin_43213429的博客 1641

C#连接数据库报Authentication to host ‘127.0.0.1‘ for user ‘root‘ using method ‘caching_sha2_password‘ fail

所以导致的,除了上边的办法,还可以把这个加密规则修改一下,这个的修改方式有很多,具体原因是因为MySQL8.0以前的加密规则是。

weixin_42209881的博客 4131

ROS actionlib 发布MoveBaseAction消息实现多点导航,从csv文件读取位姿列表,比用PoseStamped清爽 python实现

在这个程序上改的 https://github.com/cristian-frincu/navigation_waypoints_scripts。注意 1、有两处需要修改文件路径 2、csv文件中前两个是位置,后两个是方向。

yiyamala的专栏 1177

实战|验证码突破思路

漏洞成因:由于逻辑设计缺陷,可绕过验证,比如直接删除COOKIE或验证码参数可绕过、当验证不通过清空session时,验证码参数值为空时绕过等。测试方法:抓包,删除验证码字段,查看是否可以成功发送抓包,正常流程下,记录验证码后的数据包,替换目标包中内容,直接发送,查看是否可以直接绕过验证码案例:Step1.输入正确账户信息和错误验证码,登录时抓包Step2.删除COOKIEStep3.客户端登陆成功。

weixin_46239998的博客 8106

movebase导航和地图数据的使用 - 3 movebase的初始化分析

MoveBase::MoveBase(tf::TransformListener& tf) : tf_(tf), as_(NULL), planner_costmap_ros_(NULL), controller_costmap_ros_(NULL), bgp_loader_("nav_core","nav_core::BaseGlobalPlanner"), blp_load

1377

Ubuntu终端一键安装英伟达驱动:无需手动下载的完整指南

本文提供了一份在Ubuntu系统上通过终端命令一键安装英伟达显卡驱动的完整指南。该方法利用官方PPA源,无需手动下载驱动文件,可自动检测硬件并安装最佳版本,极大简化了流程,适合深度学习环境搭建等场景,有效提升安装效率与稳定性。

weixin_29232121的博客 181

dify安装ollama插件及OLLAMA模型添加失败问题完整解决方法

plugin_daemon-1 | 2025/05/10 17:37:36 stdio.go:160: [INFO]plugin langgenius/ollama:0.0.6: Installed model: ollama 提示ollama安装成功,再添加模型就不会有问题了。安装dify1.2.0和1.3.1均出现OLLAMA插件安装失败或插件安装后添加模型失败的问题,具体表现为一是添加ollama插件时没反应,需要二次添加才成功;二是添加模型时点保存报500错误或点保存后没反应,无法成功添加。

symstandsun的博客 9080

ROS C++多线程Action客户端实战:解决waitForResult阻塞问题

在ROS机器人系统中,Action机制是实现长周期任务(如导航、抓取)的核心通信范式,其本质基于topic/service的异步协调协议。然而,C++默认的SimpleActionClient因waitForResult等同步调用导致主线程阻塞,严重破坏实时性与任务并发能力。理解actionlib的底层状态机、Goal生命周期及线程安全约束,是构建高可靠客户端的前提。通过std::thread显式解耦I/O与业务逻辑,并采用线程安全回调队列统一处理Feedback/Result,可兼顾ROS NodeHan

weixin_30832405的博客 305

PyTorch 最新安装教程(2021-07-27)

PyTorch 最新安装教程(2021-07-27)前言1. 安装 Anaconda2. 检查显卡,更新驱动3. 创建PyTorch环境4. 配置清华TUNA镜像源5. 安装 PyTorch6. 测试 前言 万事开头难! 这句话又一次被我验证。 记得前不久刚陷入Tensorflow2.0的安装困境,这一次又被PyTorch 搞哭辽。 孩子太难了o(╥﹏╥)o,不过还好最终成功安装,感谢全网资源,感谢大佬们的博客!被我一次一次试了出来。 1. 安装 Anaconda Anaconda 是一个用于科学计算的 P

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 23万+

move_bae参数介绍

1、move_bae框架 参考:http://wiki.ros.org/move_base 1.主体介绍: move_base是ROS下关于机器人路径规划的中心枢纽。 它通过订阅激光雷达、map地图、amcl的定位等数据,然后规划出全局和局部路径,再将路径转化为机器人的速度信息,最终实现机器人导航。 首先左上角的amcl左上角的amcl模块是ROS的导航定位模块,amcl也叫自适应蒙...

xiaoma_bk的博客 1559

RT-DETR 模型剪枝优化:结构化剪枝对 R18/R50 性能的影响

本文提出分层结构化剪枝策略R18:参数量减少 42%(28M→16.2M),推理速度提升 35%(15→20.3 FPS@Jetson Nano),mAP@0.5 仅降 1.2%;R50:参数量减少 55%(170M→76.5M),推理速度提升 48%(42→62.2 FPS@T4),mAP@0.5 仅降 2.1%。核心价值:为 RT-DETR 提供“精度-效率-部署”平衡的轻量化方案,推动其在边缘设备、工业质检等场景的大规模落地。部署建议。

走向CTO的路上... 466

UG\NX二次开发 分割曲线

分割曲线没有ufun函数?那就换一种思路实现。

王牌飞行员_里海的博客 1149

功能优先机器人T01部署指南:从ROS环境搭建到任务验证

机器人操作系统(ROS)作为机器人开发的核心框架,通过提供硬件抽象、底层设备控制、消息传递和包管理等基础服务,构建了模块化、分布式的软件架构。其核心原理在于节点间的松耦合通信,使得感知、规划、控制等模块能独立开发与复用,极大地提升了开发效率。这一技术价值在于为机器人功能实现提供了标准化平台,尤其在移动操作(Mobile Manipulation)和任务规划等关键领域。在工业分拣、物流搬运等应用场景中,基于ROS的机器人能稳定执行抓取、放置等序列化动作。本文以有怡科技T01为例,详细阐述了如何从环境准备、驱动

weixin_33946020的博客 375

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

机器人导航:move_base的actionlib机制

通过actionlib客户端发布目标点 让actionlib 服务器响应。 在actionlin客户端 #include <ros/ros.h> #include <tf/transform_listener.h> #include <nav_msgs/Odometry.h> #include <string.h> #include <move_base_msgs/MoveBaseAction.h> #include <actionlib/

lzy6041的博客 1683

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

move_base中的actionlib机制的源码探析

actionlib是

weixin_42048023的博客 3167

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

ROS机器人031-机器人实现navigation(导航)-move_base(路径规划)包学习

move_base包 在总体框架图中可以看到、move_base提供ROS导航的配置,运行、交互接口、它主要包括两个部分: (1)全局路径规划(global planner):根据给定的目标位置进行总体路径的规划 (2)本地实时规划(local planner):根据附近的障碍物进行躲避路线规划。 一、数据结构 ROS中定义了MoveBaseActionGoal数据结构来存储导航的目标位置数据,...

weixin_39193953的博客 5271

move_base参数配置

现在我们已经可以构建当前环境地图,可以实现机器人在当前地图中的定位。那接下来就可以在地图上给定目标点,开始规划路径控制机器人移动过去,这样就可以完成在已知地图中进行自动导航的任务了。在已知地图中进行路径规划可以举一个很形象的例子,大家在公园里游玩时,经常需要找特定的游玩地点。例如想要寻找熊猫馆,那么就需要在公园提供的游览地图中首先找自己的定位在公园地图的哪一点上,然后开始寻找熊猫馆,这样我们就可以...

shixiaolu63的博客 2万+
上一篇: movebase导航和地图数据的使用 - 4 movebase 如何处理target请求
下一篇: movebase导航和地图数据的使用 - 6 local planner如何使用global planner计算出的路径规划和自己的local costmap数据完成避障
csshell2002
博客等级 码龄11年 30粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值