move_base配置参数解析 文章目录costmap_common_params.yamldwa_local_planner_params.yamlglobal_costmap_params.yamllocal_costmap_params.yamlmove_base_params.yamlmove_base实际需要设置6部分参数move_base自身参数全局代价地图global_costmap局部代价地图local_costmap全局规划器global_planner局部规划器local_planner恢复机制recovery_behaviors以上参数在move_base节点加载时全部加载用以下参数文件格式launch node pkgmove_base typemove_base respawnfalse namemove_base outputscreen rosparam file$(find myrobot)/param/navigation_omi/omi/costmap_common_params.yaml commandload nsglobal_costmap / rosparam file$(find myrobot)/param/navigation_omi/omi/costmap_common_params.yaml commandload nslocal_costmap / rosparam file$(find myrobot)/param/navigation_omi/local_costmap_params.yaml commandload / rosparam file$(find myrobot)/param/navigation_omi/global_costmap_params.yaml commandload / rosparam file$(find myrobot)/param/navigation_omi/omi/base_local_planner_params.yaml commandload / rosparam file$(find myrobot)/param/navigation_omi/omi/base_global_planner_params.yaml commandload / rosparam file$(find myrobot)/param/navigation_omi/move_base_params.yaml commandload / remap from/cmd_vel to/raw_cmd_vel/ /node /launchcostmap_common_params.yamlmax_obstacle_height:1.0# assume something like an arm is mounted on top of the robot# Obstacle Cost Shaping (http://wiki.ros.org/costmap_2d/hydro/inflation)robot_radius:0.2# 如果机器人是圆形则指定机器人的半径map_type:voxel# 地图类型# 障碍物层的参数配置obstacle_layer:enabled:true# 使能障碍物层max_obstacle_height:2.0# 考虑的最大障碍物高度origin_z:0.0z_resolution:0.2z_voxels:2unknown_threshold:15mark_threshold:0combination_method:1track_unknown_space:true# true 禁止全局路径规划穿越未知区域obstacle_range:5.5# 添加障碍物范围一方面考虑激光范围另外范围越大越耗计算资源raytrace_range:6.0# 清除障碍物范围publish_voxel_map:falseobservation_sources:ultrasonic scan# 数据源ultrasonic:data_type:PointCloud2topic:/robot_base/ultra_pcloud2#ultra_pcloud2marking:trueclearing:falsemin_obstacle_height:0.0max_obstacle_height:2.0oscillation_timeout:0.0inf_is_valid:trueobservation_persistence:0.0scan:data_type:LaserScan# scan数据类型topic:scan# scan的话题名称marking:true# 是否根据scan添加障碍物clearing:true# 是否根据scan清除障碍物min_obstacle_height:0.0# scan检测到的最小有效障碍物高度max_obstacle_height:2.0# scan检测到的最大有效障碍物高度inf_is_valid:true# scan的无穷远数据是否有效# 全局膨胀层参数配置global_inflation_layer:enabled:true# 是否使能全局膨胀层cost_scaling_factor:5.0# 膨胀层的指数衰减速度值越小衰减越慢(default: 10)inflation_radius:1.1# 全局最大有效膨胀半径即安装指数衰减扩张的最大半径计算障碍物cos函数时使用。# 局部膨胀层参数配置local_inflation_layer:enabled:true# 是否使能局部膨胀层cost_scaling_factor:5.0# 膨胀层的指数衰减速度值越小衰减越慢(default: 10)inflation_radius:0.1# 局部最大有效膨胀半径即安装指数衰减扩张的最大半径计算障碍物cos函数时使用。# 静态层参数配置static_layer:map_topic:navigation_map# 静态地图话题enabled:true# 是否使用静态层dwa_local_planner_params.yamlDWAPlannerROS:# Robot Configuration Parameters - Kobuki 机器人配置参数-Kobukimax_vel_x:0.5# x方向最大线速度绝对值单位米min_vel_x:-0.05# x方向最小线速度绝对值单位:米/秒。如果为负值表示可以后退.max_vel_y:0.0# diff drive robot # y方向最大线速度绝对值单位:米/秒。turtlebot为差分驱动机器人所以为0min_vel_y:0.0# diff drive robot # y方向最小线速度绝对值单位:米/秒。turtlebot为差分驱动机器人所以为0max_trans_vel:0.5# 机器人最大平移速度的绝对值单位为 m/smin_trans_vel:0.1# 器人最小平移速度的绝对值单位为 m/strans_stopped_vel:0.1# 机器人被认属于“停止”状态时的平移速度。如果机器人的速度低于该值则认为机器人已停止。单位为 m/s# 注意不要将min_trans_vel设置为0否则DWA认为平移速度不可忽略将创建较小的旋转速度。max_rot_vel:0.55# 机器人的最大旋转角速度的绝对值单位为 rad/smin_rot_vel:0.35# 机器人的最小旋转角速度的绝对值单位为 rad/srot_stopped_vel:0.4# 机器人被认属于“停止”状态时的旋转速度。单位为 rad/sacc_lim_x:2.0# 机器人在x方向的极限加速度单位meters/sec^2acc_lim_theta:4.0# 机器人的极限旋转加速度单位为rad/sec^2acc_lim_y:0.0# diff drive robot 机器人在y方向的极限加速度对于差分机器人来说当然是0# Goal Tolerance Parameters 目标容差参数 注这三个参数的设置及影响讨论请参考《ROS导航功能调优指南》yaw_goal_tolerance:0.1# 到达目标点时控制器在偏航/旋转时的弧度容差(tolerance)。即到达目标点时偏行角允许的误差单位弧度xy_goal_tolerance:0.1# 到到目标点时控制器在x和y方向上的容差tolerence米。即到达目标点时,在xy平面内与目标点的距离误差# latch_xy_goal_tolerance: false # 设置为true时表示如果到达容错距离内,机器人就会原地旋转即使转动是会跑出容错距离外。# Forward Simulation Parameters 正向仿真参数 注参数的设置及影响讨论请参考《ROS导航功能调优指南》sim_time:1.7# 前向模拟轨迹的时间单位为s(seconds).7vx_samples:6# x方向速度空间的采样点数.vy_samples:1# y方向速度空间采样点数 Tutulebot为差分驱动机器人所以y方向永远只有1个值0.0vtheta_samples:20# 旋转方向的速度空间采样点数.# Trajectory Scoring Parameters 轨迹评分参数path_distance_bias:32.0#60.0 # 控制器与给定路径接近程度的权重goal_distance_bias:24.0#24.0 # 控制器与局部目标点的接近程度的权重也用于速度控制occdist_scale:10.0# 控制器躲避障碍物的程度forward_point_distance:0.325# 以机器人为中心额外放置一个计分点的距离stop_time_buffer:0.2# 机器人在碰撞发生前必须拥有的最少时间量。该时间内所采用的轨迹仍视为有效。即为防止碰撞,机器人必须提前停止的时间长度scaling_speed:0.25# 开始缩放机器人足迹时的速度的绝对值单位为m/s。# 在进行对轨迹各个点计算footprintCost之前会先计算缩放因子。如果当前平移速度小于scaling_speed则缩放因子为1.0# 否则缩放因子为(vmag - scaling_speed) / (max_trans_vel - scaling_speed) * max_scaling_factor 1.0。# 然后该缩放因子会被用于计算轨迹中各个点的footprintCost。max_scaling_factor:0.2# 最大缩放因子。max_scaling_factor为上式的值的大小。turn_round_penalty:6.0turn_round_scale:1.0# Oscillation Prevention Parameters 防振参数oscillation_reset_dist:0.05# 机器人必须运动多少米远后才能复位震荡标记(机器人运动多远距离才会重置振荡标记)# Debugging 调试参数publish_traj_pc:true# 将规划的轨迹在RVIZ上进行可视化publish_cost_grid_pc:false# 将代价值进行可视化显示,如果设置为true,那么就会在~/cost_cloud话题上发sensor_msgs/PointCloud2类型消息.global_frame_id:odom# 全局参考坐标系为odom# Differential-drive robot configuration - necessary? # 差分机器人配置参数# holonomic_robot: false # 是否为全向机器人。值为false时为差分机器人为true时表示全向机器人global_costmap_params.yamlglobal_costmap:global_frame:map# 全局坐标系robot_base_frame:base_link# 机器人基准坐标系update_frequency:1.0# global_costmap更新频率内部计算用publish_frequency:1.0# global_costmap发布频率Rviz显示用static_map:true# 是否位静态地图transform_tolerance:0.5# 订阅tf时的时间差冗余量resolution:0.05# 栅格地图分辨率plugins:-{name:static_layer,type:costmap_2d::StaticLayer}-{name:obstacle_layer,type:costmap_2d::VoxelLayer}# - {name: range_sensor_layer, type: range_sensor_layer::RangeSensorLayer}# - {name: vectormap_layer, type: vectormap_layer::VectorMapLayer}-{name:global_inflation_layer,type:costmap_2d::InflationLayer}# - {name: polygon_obstacle_layer, type: polygon_obstacle_layer_namespace::PolygonObstacleLayer}local_costmap_params.yamllocal_costmap:global_frame:odomrobot_base_frame:base_linkupdate_frequency:7.0# 局部代价地图的更新频率内部计算使用publish_frequency:7.0# 局部代价地图的发布频率 Rviz显示使用static_map:true# 是否为静态地图属性代价地图位动态rolling_window:true# 是否位滚动窗口随着机器人移动而滑动width:6.0# 局部地图宽度height:6.0# 局部地图高度长度resolution:0.05# 栅格地图分辨率transform_tolerance:0.5# 订阅tf时的时间差冗余量plugins:# 局部代价地图使用的地图插件顺序颠倒会影响效果-{name:static_layer,type:costmap_2d::StaticLayer}# 静态地图层-{name:obstacle_layer,type:costmap_2d::VoxelLayer}# 障碍物层# - {name: range_sensor_layer, type: range_sensor_layer::RangeSensorLayer}# - {name: vectormap_layer, type: vectormap_layer::VectorMapLayer}-{name:local_inflation_layer,type:costmap_2d::InflationLayer}# 膨胀层# - {name: polygon_obstacle_layer, type: polygon_obstacle_layer_namespace::PolygonObstacleLayer}move_base_params.yamlshutdown_costmaps:false# move_base空闲时shutdown_costmaps为true会关掉cost_map,激活是会重新开启controller_frequency:10.0#10.0 # 向底盘控制移动话题cmd_vel发送命令的频率也是局部路径规划的更新频率规划一次就算一次速度controller_patience:5.0#5.0 # 在空间清理操作执行前控制器花多长时间等有效控制下发planner_frequency:5.0#1.0 # 全局规划操作的执行频率planner_patience:7.0#7.0 # 在空间清理操作执行前留给规划器多长时间来找出一条有效规划oscillation_timeout:10.0# 10 # 执行修复机制前允许振荡的时间oscillation_distance:0.2# 来回运动在多大距离以上不会被认为是振荡# local planner - default is trajectory rolloutbase_local_planner:dwa_local_planner/DWAPlannerROS# 指定用于move_base的局部规划器名称#base_local_planner: teb_local_planner/TebLocalPlannerROSbase_global_planner:navfn/NavfnROS#指定用于move_base的全局规划器插件名称#base_global_planner: global_planner/GlobalPlanner #alternatives: global_planner/GlobalPlanner, carrot_planner/CarrotPlannerclearing_radius:20.0#We plan to integrate recovery behaviors for robot but currently those belong to gopher and still have to be adapted.## recovery behaviors; we avoid spinning, but we need a fall-back replanning#recovery_behavior_enabled: falserecovery_behaviors:-name:super_conservative_reset1type:clear_costmap_recovery/ClearCostmapRecovery#- name: conservative_reset1#type: clear_costmap_recovery/ClearCostmapRecovery-name:aggressive_reset1type:clear_costmap_recovery/ClearCostmapRecovery-name:clearing_rotation1type:rotate_recovery/RotateRecoverysuper_conservative_reset1:reset_distance:1.5aggressive_reset1:reset_distance:0.0参考链接[1] dwa_local_planner_params.yaml解读[2] 【移动机器人技术】move_base参数配置方法及含义[3] move_base_params.yaml参数解析