> 文章列表 > 【ros】7.ros导航navigation(定位规划)

【ros】7.ros导航navigation(定位规划)

【ros】7.ros导航navigation(定位规划)

物竞天择,优胜劣汰;苟不自新,何以获存。——梁启超

文章目录

    • :smirk:1. ros导航
    • :blush:2. 2d导航
    • :satisfied:3. 3d导航

😏1. ros导航

ros机器人有个导航功能,类似自动驾驶车辆的规控部分,即根据地图(上一部分)和感知信息,获取自身定位,并规划出到达目的地的最优路径,并将指令发布出去。

ROS的导航是指ROS机器人在环境中行驶的过程。ROS中通常使用AMCL (自适应蒙特卡罗定位器)来定位机器人,并使用Costmap和全局规划算法进行路径规划。以下是ROS导航的主要组件:

  1. 传感器:机器人需要安装适当的传感器,如激光雷达、摄像头、IMU等,以获取环境信息。
  2. 地图构建:机器人需要在运动区域内扫描环境以生成地图。可以使用激光雷达和SLAM算法来构建地图。
  3. 定位:机器人需要通过传感器数据融合(激光雷达、IMU等),实现定位。ROS中提供了AMCL算法,通过数据融合实现机器人的定位。
  4. 路径规划:机器人需要在已构建好的地图上规划一条到达目标点的路径。ROS中提供了全局规划算法(如Dijkstra、A*等)来实现路径规划。
  5. 路径跟踪:机器人需要在规划好的路径上运动,同时需要对障碍物进行避让。ROS中提供了局部路径规划算法(如DWA、EBF等)来实现路径跟踪。
  6. 运动控制:机器人需要执行速度和方向控制,以沿着已规划好的路径行进。ROS中的navigation stack提供了运动控制的接口和API。

地图构建的部分在上一节slam已经提过,这一节主要是定位和规控。

😊2. 2d导航

2d导航常用算法有:

  1. Dijkstra算法:基于图论的寻路算法,用于寻找两点之间的最短路径。它从起点开始,一步一步地向外扩张,直到扩张到目标点为止。
  2. A*算法:是一种基于评估函数的启发式寻路算法,能够更加高效地搜索到最短路径。它通过估算从当前节点到目标节点的路径长度,来决定下一步走哪条路径。
  3. DWA算法:是一种基于反馈控制的运动规划算法,能够实时计算出机器人在当前环境中的最优轨迹。它通过不断调整机器人的速度和方向,以适应环境的变化和机器人的约束条件。
  4. EBF算法:是一种基于经验贝叶斯优化的路径规划算法,能够较好地处理环境的动态变化和非凸障碍物。它通过不断优化半高程地图,以减少轨迹的运动成本。
  5. AMCL算法:AMCL算法是一种自适应蒙特卡洛定位算法,可用于3D导航中的机器人位置估计。与2D导航不同的是,AMCL需要融合多种传感器数据,如激光雷达、IMU、RGB-D相机等,实现机器人位置的高精度估计。
  6. MoveIt算法:MoveIt是一种运动规划框架和库,为机器人提供路径规划、运动控制、碰撞检测等功能。
  7. Move_base算法:是ROS中常用的机器人导航库,它提供了一套完整的导航系统包括路径规划、本地路径跟踪、机器人状态估计等功能。Move_base由多种算法组成

源码:https://github.com/ros-planning/navigation

源码中包含了amcl和move_base功能包,可直接使用或二次开发。

😆3. 3d导航

ros中关于3d导航的功能包。

源码:https://github.com/ros-planning/3d_navigation

【ros】7.ros导航navigation(定位规划)

以上。

路由器知识