【ROS导航Navigation】一 | 概述

本文介绍了ROS中的关键模块,如SLAM用于即时定位与地图构建,AMCL的自适应定位,Move_base的路径规划,以及cmd_vel的运动控制。着重强调了环境感知在机器人导航中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

致谢:ROS赵虚左老师

一、【概述】二狗子找大水法

二、【SLAM】即时定位与地图构建

三、【AMCL】自适应蒙特卡洛定位

四、【Move_base】路径规划

五、【cmd_vel】运动控制

六、环境感知


致谢:ROS赵虚左老师

Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

参考赵虚左老师的实战教程

一、【概述】二狗子找大水法

关键技术有如下五点:

1.全局地图

2.自身定位

3.路径规划

4.运动控制

5.环境感知

ROS 官方为了提供了一张导航功能包Navigation的图示 

怎么画一张地图???

二、【SLAM】即时定位与地图构建

simultaneous localization and mapping

实时            定位           和            建图

SLAM问题可以描述为: 机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,以绘制出外部环境的完全地图。

边定位边建图

SLAM技术:gmapping、hector_slam、cartographer、rgbdslam、ORB_SLAM

要完成 SLAM ,机器人必须要具备感知外界环境的能力,尤其是要具备获取周围环境深度信息的能力。感知的实现需要依赖于传感器,比如: 激光雷达、摄像头、RGB-D摄像头

SLAM 可以用于地图生成,而生成的地图还需要被保存以待后续使用,在 ROS 中保存地图的功能包是 map_server

三、【AMCL】自适应蒙特卡洛定位

adaptiveMonteCarloLocalization

自适应的蒙特卡洛定位,是用于2D移动机器人的概率定位系统。它实现了自适应(或KLD采样)蒙特卡洛定位方法,该方法使用粒子过滤器根据已知地图跟踪机器人的姿态。

四、【Move_base】路径规划

  1. 全局路径规划(gloable_planner)

    根据给定的目标点和全局地图实现总体的路径规划,使用 Dijkstra 或 A* 算法进行全局路径规划,计算最优路线,作为全局路线

  2. 本地时时规划(local_planner)

    在实际导航过程中,机器人可能无法按照给定的全局最优路线运行,比如:机器人在运行中,可能会随时出现一定的障碍物... 本地规划的作用就是使用一定算法(Dynamic Window Approaches) 来实现障碍物的规避,并选取当前最优路径以尽量符合全局最优路径

五、【cmd_vel】运动控制

导航功能包集假定它可以通过话题"cmd_vel"发布geometry_msgs/Twist类型的消息,这个消息基于机器人的基座坐标系,它传递的是运动命令。这意味着必须有一个节点订阅"cmd_vel"话题, 将该话题上的速度命令转换为电机命令并发送。

六、环境感知

感知周围环境信息,比如: 摄像头、激光雷达、编码器...,摄像头、激光雷达可以用于感知外界环境的深度信息,编码器可以感知电机的转速信息,进而可以获取速度信息并生成里程计信息。

在导航功能包集中,环境感知也是一重要模块实现,它为其他模块提供了支持。其他模块诸如: SLAM、amcl、move_base 都需要依赖于环境感知。

2023.11.14

渝北仙桃数据谷

### 小车导航功能在ROS2中的实现 #### 导航堆栈概述ROS2中,`navigation2` 是 `navigation` 堆栈的更新版本,旨在支持更现代的功能并适应ROS2架构的变化。它提供了类似于传统ROS1 Navigation Stack的功能集,包括全局和局部路径规划、避障以及地图构建等功能[^5]。 #### 主要组件介绍 以下是 `navigation2` 的主要组成部分及其功能: - **Nav2 Lifecycle Manager**: 负责管理各个节点的生命周期状态转换(如启动、暂停等),这是ROS2特有的特性之。 - **Global Planner Plugin**: 提供从起点到终点的整体最优路径方案。此插件可以替换为不同的算法实现,比如A* 或 Dijkstra 等[^3]。 - **Local Planner Plugin**: 实现动态窗口调整或者时间弹性带这样的实时轨迹优化技术来避开障碍物的同时保持向目标前进的方向不变。 - **Recovery Behavior Plugins**: 当遇到无法解决的情况时触发特定的行为模式尝试解决问题,例如旋转清理视野或是倒退段距离再重新寻找出路。 - **Costmap 2D Plugins**: 创建成本图用于表示环境信息给规划器做决策依据;这些数据来源于激光测距仪读数或者其他感知设备采集的信息经过处理后形成二维栅格形式的地图结构。 #### 安装与配置过程 为了设置好个基于`navigation2`的小型移动平台项目,请按照如下指南操作: 1. **安装依赖项** 需要先确认已经正确设置了基础开发环境,并且安装好了必要的软件包。可以通过下面命令完成基本工具链部署: ```bash sudo apt install ros-<distro>-navigation2 ros-<distro>-nav2-bringup ``` 2. **创建自定义参数文件** 参数化是灵活定制行为的关键环节,在这里可以根据实际需求修改默认设定值。通常涉及到的内容有最大线速度/角速度限制、安全间距大小等等。示例yaml片段如下所示: ```yaml controller_server: ros__parameters: use_sim_time: True controller_frequency: 20.0 min_x_velocity_threshold: 0.001 failure_tolerance: 0.3 planner_server: ros__parameters: expected_update_rate: 1.0 tolerance: 0.25 max_global_plan_lookahead_dist: 3.0 ``` 3. **编写launch脚本** 使用Python或XML语法描述如何加载上述提到的各种服务端实例以及其他辅助模块。以下是个简单的py版例子: ```python from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ Node( package='nav2_controller', executable='controller_server', name='controller_server' ), Node( package='nav2_planner', executable='planner_server', name='planner_server' ) ]) ``` 4. **测试运行效果** 最后步就是在仿真环境中验证整个系统的可用性和稳定性。推荐利用Gazebo配合rviz共同观察模拟场景下的表现情况[^2]。 ```bash ros2 launch nav2_bringup bringup.launch.py map:=<path_to_map> params_file:=<path_to_params> ``` 以上步骤完成后应该能够看到辆虚拟小车顺利沿着预定好的线路行驶至指定的目的地点位去了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Akaxi-1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值