ROS功能包之move_base和amcl(导航)

目录

一、导航框架

二、move_base功能包

1.话题和服务

2.参数配置

三、amcl功能包

1.话题和服务

2.参数配置

总体过滤器参数

激光参数模型

里程计模型参数

3.坐标变换

四、代价地图的配置

1.通用配置文件

2.全局规划配置文件

3.本地规划配置文件

五、本地规划器配置


学习笔记来源于:ROS机器人开发与实践(古月居)

一、导航框架

导航的关键是机器人定位和路径规划两大部分

  • move_base:实现机器人导航中的最优路径规划
  • amcl:实现二维地图中的机器人定位

在上述两个功能包的基础上,ROS提供一系列完整的导航框架:

机器人发布必要的传感器信息和导航的目标位置,ROS即可完成导航功能。在该框架中,move_base功能包提供导航的主要运行、交互接口。amcl功能包保障路径的准确性,对自己所处的位置进行精确定位。

  1. 首先,导航功能包采集机器人的传感器信息,达到实时避障的效果。机器人通过ROS发布sensor_msgs/LaserScan或者是三维点云的信息

  2. 其次,导航功能包发布nav_msgs/Odometry格式的里程计信息,同时发布相应的TF变换

  3. 最后,导航功能包的输出是geometry_msgs/Twist格式控制命令,机器人通过这些指令完成任务

二、move_base功能包

路径规划主要有下面的两大规划器组成:

  • 全局路径规划(global_planner):根据给定的目标位置和全局地图进行总体的路劲规划。在导航中,使用迪特斯克或者A*算法进行全局路径的规划,计算出最佳路径
  • 本地实施规划(local_planner):实际情况下,由于可能出现障碍物,无法完美按照全局路径规划。本地实施规划由local_planner模块实现,使用Dynamic Window Approaches算法搜索躲避障碍物行进的多条路径,综合评价标准(是否撞击障碍物,所需的时间)选取最优路径,并且计算行驶周期内的线速度和角速度,避免与动态的障碍物发生碰撞。

1.话题和服务

2.参数配置

三、amcl功能包

自主定位:机器人在任意状态下都可以推算自己在地图中的所处的位置

ROS提供一种自适应(或kld采样)的蒙特卡罗定位方法(amcl),这是一种概率统计的方法,针对已有地图使用粒子滤波器跟踪一个机器人的姿态

1.话题和服务

2.参数配置

总体过滤器参数

激光参数模型

里程计模型参数

3.坐标变换

里程计可以帮助机器人定位,而amcl也可以实现机器人定位,但是两者具有区别:

  • 里程计定位:只是通过里程计的数据来处理/base和/odom之间的TF变换
  • amcl定位:可以估计及机器人在地图坐标系/map下的位姿信息,提供/base,/odom,/map之间的TF转换

四、代价地图的配置

导航地图使用两种代价地图存储周围环境的障碍信息:

  • 全局路径规划-代价地图(global_costmap)
  • 本地路径规划和实时避障(local_costmap)

两种代价地图需要使用一些共用的或独立的配置文件:通用配置文件、全局规划配置文件和本地规划配置文件呢

1.通用配置文件

代价地图用来存储周围环境的障碍信息,其中需要申明地图关注的机器人传感器消息,以便于地图信息更新。针对两种代价地图通用的配置选型,创建名为costmap_common_params.yaml的配置文件,解析如下:

#这两个参数用来设置代价地图中障碍物的相关阀值
obstacle_range: 2.5#用来设置障碍物的最大范围,若设置为2.5,则表在2.5m范围内检测到的障碍信息才会在地图中更新
raytrace_range: 3.0#用来设置检测自由空间的最大范围,设置为3,.0,表示在3m的范围内机器人将根据传感器的信息清楚范围内的自由空间


#footprint: [[0.175, 0.175], [0.175, -0.175], [-0.175, -0.175], [-0.175, 0.175]]
#footprint_inflation: 0.01
robot_radius: 0.175
inflation_radius: 0.1#这个是机器人和障碍物保持的最小安全距离为0.1m以上
#这个footprint参数设置机器人在二维地图上的占用的面积,参数以机器人的中心作为坐标原点
#要是机器人外形是圆形,则需要设置机器人的外形半径robot_radius


max_obstacle_height: 0.6
min_obstacle_height: 0.0
#这两个参数描述障碍物的最大高度和最小高度

observation_sources: scan#这里以激光雷达为例
scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}
#observation_sources参数列出了代价地图需要关注的所有的传感器信息,每个传感器信息都会在后面列出来
#data_type表示激光数据或者是点云数据使用的消息
#topic:表示传感器发布的话题的名称
#marking和clearing:表示是否需要使用传感器的实时信息来添加或清除代价地图中的障碍物信息

2.全局规划配置文件

全局规划配置文件用于存储配置全局代价地图的参数,命名为global_costmap_params.yaml,代码详解:

global_costmap:
   global_frame: map 
#用来表示全局代价地图需要在哪个参考系下运行,这里选择了map参考系

   robot_base_frame: base_footprint 
#参数用来表示代价地图可以参考的机器人本体的坐标系

   update_frequency: 1.0
#参数用来决定全局地图信息更新的频率,单位是Hz

   publish_frequency: 1.0

   static_map: true
#参数用来决定代价地图是否需要根据map_server提供的地图信息进行初始化,如果不需要使用已有的地图这最好设置为false

   rolling_window: false
   resolution: 0.01#分辨率
   transform_tolerance: 1.0#转换容忍
   map_type: costmap#地图类型

3.本地规划配置文件

本地规划配置文件用来存储代价地图的配置参数,命名为local_costmap_params.yaml,代码详解如下:

local_costmap:
    #下面的这几个参数和全局规划配置文件中的参数相同
   global_frame: map
   robot_base_frame: base_footprint
   update_frequency: 3.0
   publish_frequency: 1.0#参数用于设置代价地图发布可视化信息的频率,单位是Hz
   static_map: true

   rolling_window: false
#参数是用来设置在机器人移动过程中是否可以需要滚动窗口以保持机器人在中心位置

   width: 6.0
   height: 6.0
   resolution: 0.01
#这三个参数分别设置代价地图的长(米)高(米)和分辨率(米/格)虽然分辨率设置和静态地图的不同,但是一般条件下是相同的

   transform_tolerance: 1.0

五、本地规划器配置

本地规划器base_local_planner的主要作用是,根据规划的全局路径计算发布给机器人的速度控制指令。

该规划根据机器人的规格配置相关参数,创建名为base_local_planner_params.yaml的配置文件,代码如下:

controller_frequency: 3.0#控制频率
recovery_behavior_enabled: false
clearing_rotation_allowed: false

TrajectoryPlannerROS:#声明机器人本地规划采用Trajectory Rollout算法
#下面是设置算法需要用到的机器人的速度、加速度阀值等参数
   max_vel_x: 0.5
   min_vel_x: 0.1
   max_vel_y: 0.0  # zero for a differential drive robot(0是为差动机器人设置的)
   min_vel_y: 0.0
   max_vel_theta: 1.0
   min_vel_theta: -1.0
   min_in_place_vel_theta: 0.4
   escape_vel: -0.1
   acc_lim_x: 1.5
   acc_lim_y: 0.0  # zero for a differential drive robot(0是为差动机器人设置的)
   acc_lim_theta: 1.2

   holonomic_robot: false
   yaw_goal_tolerance: 0.1 # about 6 degrees(偏航的角度容忍度大约是6°)
   xy_goal_tolerance: 0.05  # 5 cm
   latch_xy_goal_tolerance: false
   pdist_scale: 0.4
   gdist_scale: 0.8
   meter_scoring: true

   heading_lookahead: 0.325
   heading_scoring: false
   heading_scoring_timestep: 0.8
   occdist_scale: 0.05
   oscillation_reset_dist: 0.05
   publish_cost_grid_pc: false
   prune_plan: true

   sim_time: 1.0
   sim_granularity: 0.05
   angular_sim_granularity: 0.1
   vx_samples: 8
   vy_samples: 0  # zero for a differential drive robot
   vtheta_samples: 20
   dwa: true
   simple_attractor: false

 

 

 

 

 

 

 

### 回答1: cartographer 是一款常用的地图建图定位系统,常用于机器人导航路径规划中。它主要含两个模块:建图模块定位模块。 建图模块使用传感器数据(如激光数据或RGB-D数据)进行实时地图构建。它通过在机器人移动过程中,利用传感器测量的环境信息,将这些信息转化为二维或三维地图。这些地图可以被用于机器人的后续操作,如导航、避障等。 定位模块则提供了机器人在地图中确定自身姿态(位置朝向)的功能。通过与先前建立的地图进行匹配,定位模块可以估计机器人当前的位置,并提供这些信息给其他模块使用。例如,在路径规划中,定位模块可以提供机器人当前所在位置,从而使得路径规划系统能够生成适合该位置的有效路径。 move_base 是一款用于机器人路径规划导航功能。它与 cartographer 结合使用时,可以将 cartographer 提供的地图数据作为输入,同时利用定位模块提供的位置信息,为机器人生成路径规划。move_base 可以考虑机器人的动态环境,并生成安全有效的路径。在导航过程中,move_base 还可以进行障碍物的避障,以确保机器人安全到达目标位置。 所以,cartographer move_base 的结合可以为机器人提供强大的地图建图路径规划导航功能,使得机器人能够在复杂的环境中进行自主移动导航。 ### 回答2: Cartographer是一种用于建图定位的SLAM算法。它通过结合激光扫描数据传感器信息来生成高质量的地图机器人的定位。而move_base是一个ROS软件,用于规划控制机器人在已知地图上的导航。 使用Cartographermove_base,机器人可以先通过激光传感器获取周围环境的扫描数据,并利用Cartographer算法将这些数据进行处理,生成一个准确的地图。然后,机器人可以使用move_base的规划器来根据地图目标位置,计算出一个可行的导航路径。 在导航过程中,move_base还会实时更新机器人的定位信息,通过Cartographer提供的定位算法,精确计算机器人的位置姿态。一旦导航路径完成规划,move_base会将路径上的目标点发送给底层的控制器,控制机器人沿着路径移动。 整个过程中,Cartographer为move_base提供了建图定位的支持,使得机器人能够在已知的环境中实现精确的导航。这种结合可以广泛应用于机器人自主导航、自主探索作业执行等领域。通过使用Cartographermove_base,机器人可以在复杂的环境中高效地进行导航任务,实现自主决策行动。 ### 回答3: cartographer move_base是一种使用于机器人导航的软件系统。它结合了cartographermove_base两个功能模块,提供了高效的实时建图路径规划功能。 首先,cartographer模块是一个先进的2D3D实时建图算法库。它使用激光雷达或深度相机等传感器数据,将机器人周围环境进行高精度建模。它能够实时定位,地图存储传输。因此,当机器人在未知环境中移动时,cartographer能够快速创建地图,并在机器人移动过程中对其进行更新。 而move_base模块是ROS(机器人操作系统)中的一个核心导航功能。它基于全局规划局部规划两个模块,为机器人提供路径规划导航控制。全局规划使用地图信息用户指定的目标位置,计算出机器人的最优导航路径。局部规划根据机器人当前位姿、感知信息全局规划路径,实时生成机器人的局部规划路径,并控制机器人移动。 cartographer move_base结合了这两个功能模块。它能够通过cartographer实时建图获取机器人周围环境的精确信息,并结合move_base进行路径规划导航控制。因此,机器人可以在未知环境中实时感知自己的位置,根据目标位置规划最优路径,并通过move_base进行实时控制,从而实现高效、精确的导航。 综上所述,cartographer move_base是一种能够结合实时建图路径规划功能的软件系统。它为机器人导航提供了强大的功能支持,并广泛应用于自主机器人、无人车等领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值