ros中move_base的使用

简介: ros中move_base的使用

move_base概述

move_base 包提供了一个动作的实现(参见actionlib包),给定世界上的目标,它将尝试使用移动基地来实现它。move_base 节点将全局和本地规划器链接在一起以完成其全局导航任务。它支持任何遵循在nav_core包中指定的 nav_core::BaseGlobalPlanner 接口的全局规划器和任何遵循在nav_core包中指定的 nav_core::BaseLocalPlanner 接口的本地规划器。move_base 节点还维护两个成本地图,一个用于全局规划器,另一个用于本地规划器(参见costmap_2d包),用于完成导航任务。


关于actionlib

在任何基于 ROS 的大型系统中,都会有这样的情况:有人想向节点发送请求以执行某些任务,同时也会收到对请求的回复。这目前可以通过 ROS服务来实现。如果服务需要很长时间来执行,用户可能希望能够在执行期间取消请求或获得有关请求进展情况的定期反馈。该actionlib包提供的工具来创建执行长期运行的目标是可以被抢占的服务器。它还提供了一个客户端接口,以便向服务器发送请求。


关于目标的的设定

除了使用在rviz界面中设定的方法外。Move_base源码中有为rviz等提供调用借口,将geometry_msgs::PoseStamped形式的goal转换成move_base_msgs::MoveBaseActionGoal,再发布到对应类型的goal话题中所以可以通过命令行发送对应的导航目标点。

 

如果起始点为空,设置global_pose为起始点

利用局部路径规划器直接输出轮子速度,控制机器人按照路径走到目标点

地图数据超时,即观测传感器数据不够新,停止机器人,返回false

 

move_base 状态机

move_base 状态机是处理导航的控制逻辑;movebase状态机分为planning,controlling,clearing 和default。planning是指接受新目标与进行全局规划的整个过程,cotrolling是指调用局部规划器计算机器人速度的过程,clearing是指利用用户定义的行为进行recovery的过程。


一般默认状态或者接收到一个有效goal时是PLANNING,在规划出全局路径后state_会由PLANNING->CONTROLLING如果规划失败则由PLANNING->CLEARING。

//recovery是指恢复的规划器,其跟全局规划器和局部规划器是同一个等级的。


//不同的是,它是在机器人在局部代价地图或者全局代价地图中找不到路时才会被调用,比如rotate_recovery让机器人原地360°旋转,clear_costmap_recovery将代价地图恢复到静态地图的样子。

 

Move_base的使用

启动move_base用的是launch文件,主要内容包括解析map文件,move_base和amcl定位三个部分,构成一个完整的框架,

 

global_planner这个包,它默认使用的是dijkstra,也可以使用A*全局路径规划,局部路径规划包括dwa和teb

dwa参数简单,阿克曼底盘使用teb算法,teb算法更先进些;但是dwa对于除了阿克曼以外的其他底盘,都完全满足要求了;

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
相关文章
|
机器学习/深度学习 人工智能 算法
【PyTorch深度强化学习】TD3算法(双延迟-确定策略梯度算法)的讲解及实战(超详细 附源码)
【PyTorch深度强化学习】TD3算法(双延迟-确定策略梯度算法)的讲解及实战(超详细 附源码)
2657 1
|
4月前
|
监控 Ubuntu Linux
在Ubuntu环境中制定脚本开机自动启动设置
以上就是在Ubuntu环境下制定脚本开机自动启动的设置方法。通过Systemd服务,你可以按需要轻松管理脚本的自动执行。全新的一天开始时,脚本已静静地运行,无需额外手动启动,机器恰如一位忠诚的仲夏夜的梦想者,在黎明的许诺中尽职尽责。于是心满意足地看着,任由它在自己选择的轨道上静静地飞翔。
484 26
|
传感器 自动驾驶 机器人
大疆Livox Mid360 使用指南
本文是大疆Livox Mid-360激光雷达的使用指南,包括Livox Viewer 2的安装与使用、Livox SDK2的安装与演示、Livox ROS的配置与启动,以及一些使用时的注意事项。文章还提供了关于Livox Mid-360的详细特点、接线信息、尺寸信息、主控端IP设置、修改Livox Mid 360的IP方法、坐标系定义和IMU内参的介绍。此外,还提供了官方资料和软件下载的链接。
5329 2
|
程序员 编译器
C 标准库 - <float.h>详解
`&lt;float.h&gt;` 是 C 标准库中的头文件,用于定义浮点数的属性和限制,包括有效数字位数(如 `FLT_DIG`)、最小最大值(如 `FLT_MIN` 和 `FLT_MAX`),以及特殊值(如 `FLT_INFINITY`)。它通过提供一系列常量和宏帮助程序员处理浮点运算的范围和精度问题。
|
7月前
|
图形学
Unity 射线移动物体Ray
在Unity中,通过射线检测实现3D物体的拖拽和移动。射线由起点和方向组成,使用`Physics.Raycast`检测与物体的交点。点击物体时,记录位置偏移量,拖动过程中更新物体位置。代码包括基本拖拽和上下拖动功能,适用于正交摄像机场景。测试时为物体设置特定标签(如&quot;JQR&quot;)以便区分和操作。 示例代码展示了如何通过鼠标事件控制物体移动,并结合层级掩码优化射线检测。具体实现包括:点击选中物体、拖动更新位置、释放鼠标取消选择。此外,提供了上下拖动的额外功能,通过按键切换模式。
|
8月前
|
算法
基于RRT优化算法的机械臂路径规划和避障matlab仿真
本课题基于RRT优化算法实现机械臂路径规划与避障。通过MATLAB2022a进行仿真,先利用RRT算法计算避障路径,再将路径平滑处理,并转换为机械臂的关节角度序列,确保机械臂在复杂环境中无碰撞移动。系统原理包括随机生成树结构探索空间、直线扩展与障碍物检测等步骤,最终实现高效路径规划。
|
小程序 前端开发 Java
社区生鲜团购小程序
社区生鲜团购小程序
559 0
|
算法 C++
大地经纬度坐标与地心地固坐标的的转换
大地经纬度坐标与地心地固坐标的的转换
408 0
|
语音技术 物联网 程序员
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-2
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-2
51单片机智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结-2
|
机器学习/深度学习 算法
大模型开发:解释反向传播算法是如何工作的。
反向传播算法是训练神经网络的常用方法,尤其适用于多层前馈网络。它包括前向传播、计算损失、反向传播和迭代过程。首先,输入数据通过网络层层传递至输出层,计算预测值。接着,比较实际输出与期望值,计算损失。然后,从输出层开始,利用链式法则反向计算误差和权重的梯度。通过梯度下降等优化算法更新权重和偏置,以降低损失。此过程反复进行,直到损失收敛或达到预设训练轮数,优化模型性能,实现对新数据的良好泛化。
546 4