Tinymal-B感知教程7-四足机器人导航TEB算法调参

本帖子记录TEB导航参数调节和效果

基本参数下载:
链接:https://pan.baidu.com/s/1HFTGSQY07DEpKNyaD5iMLQ 提取码:sqp1 --来自百度网盘超级会员V3的分享
在move_base.launch中增加:
<!-- move_base use Tinymal planner--> <group if="$(eval planner == 'tinymal')"> <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen"> <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" /> <rosparam file="$(find robot_vslam)/param/Tinymal/costmap_common_params.yaml" command="load" ns="global_costmap" /> <rosparam file="$(find robot_vslam)/param/Tinymal/costmap_common_params.yaml" command="load" ns="local_costmap" /> <rosparam file="$(find robot_vslam)/param/Tinymal/local_costmap_params.yaml" command="load" /> <rosparam file="$(find robot_vslam)/param/Tinymal/global_costmap_params.yaml" command="load" /> <rosparam file="$(find robot_vslam)/param/Tinymal/move_base_params.yaml" command="load" /> <remap from="cmd_vel" to="$(arg cmd_vel_topic)"/> <remap from="odom" to="$(arg odom_topic)"/> <rosparam file="$(find robot_vslam)/param/Tinymal/teb_local_planner_params.yaml" command="load" /> <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" /> </node> </group>

2023年3月5日

参数配置如下:
(1)TEB参数
TebLocalPlannerROS: odom_topic: odom # Trajectory teb_autosize: True dt_ref: 0.45 dt_hysteresis: 0.1 max_samples: 500 global_plan_overwrite_orientation: True allow_init_with_backwards_motion: True max_global_plan_lookahead_dist: 0.0 global_plan_viapoint_sep: 0.35 global_plan_prune_distance: 1 exact_arc_length: False feasibility_check_no_poses: 5 publish_feedback: False # Robot max_vel_x: 0.25 max_vel_x_backwards: 0.15 max_vel_y: 0.2 max_vel_theta: 0.45 # the angular velocity is also bounded by min_turning_radius in case of a carlike robot (r = v / omega) acc_lim_x: 0.2 acc_lim_y: 0.15 acc_lim_theta: 0.2 # ********************** Carlike robot parameters ******************** min_turning_radius: 0.15 # Min turning radius of the carlike robot (compute value using a model or adjust with rqt_reconfigure manually) wheelbase: 0.1 # Wheelbase of our robot cmd_angle_instead_rotvel: False # stage simulator takes the angle instead of the rotvel as input (twist message) # ******************************************************************** footprint_model: # types: "point", "circular", "two_circles", "line", "polygon" type: "line" line_start: [-0.14, 0.0] # for type "line" line_end: [0.14, 0.0] # for type "line" # GoalTolerance xy_goal_tolerance: 0.15 yaw_goal_tolerance: 0.57 free_goal_vel: False complete_global_plan: True # Obstacles min_obstacle_dist: 0.2 # This value must also include our robot's expansion, since footprint_model is set to "line". inflation_dist: 0.6 include_costmap_obstacles: True costmap_obstacles_behind_robot_dist: 1.0 obstacle_poses_affected: 15 dynamic_obstacle_inflation_dist: 0.6 include_dynamic_obstacles: True costmap_converter_plugin: "" costmap_converter_spin_thread: True costmap_converter_rate: 5 # Optimization no_inner_iterations: 5 no_outer_iterations: 4 optimization_activate: True optimization_verbose: False penalty_epsilon: 0.1 obstacle_cost_exponent: 4 weight_max_vel_x: 2 weight_max_vel_y: 1 weight_max_vel_theta: 1 weight_acc_lim_x: 1 weight_acc_lim_y: 1 weight_acc_lim_theta: 1 weight_kinematics_nh: 1000 weight_kinematics_forward_drive: 1 weight_kinematics_turning_radius: 0.1 weight_optimaltime: 2 # must be > 0 weight_shortest_path: 1 weight_obstacle: 100 weight_inflation: 0.2 weight_dynamic_obstacle: 10 # not in use yet weight_dynamic_obstacle_inflation: 0.2 weight_viapoint: 1 weight_adapt_factor: 2 # Homotopy Class Planner enable_homotopy_class_planning: False enable_multithreading: True max_number_classes: 4 selection_cost_hysteresis: 1.0 selection_prefer_initial_plan: 0.95 selection_obst_cost_scale: 1.0 selection_alternative_time_cost: False roadmap_graph_no_samples: 15 roadmap_graph_area_width: 5 roadmap_graph_area_length_scale: 1.0 h_signature_prescaler: 0.5 h_signature_threshold: 0.1 obstacle_heading_threshold: 0.45 switching_blocking_period: 0.0 viapoints_all_candidates: True delete_detours_backwards: True max_ratio_detours_duration_best_duration: 3.0 visualize_hc_graph: False visualize_with_time_as_z_axis_scale: False # Recovery shrink_horizon_backup: True shrink_horizon_min_duration: 10 oscillation_recovery: True oscillation_v_eps: 0.1 oscillation_omega_eps: 0.1 oscillation_recovery_min_duration: 10 oscillation_filter_duration: 10
(2)move base
controller_frequency: 5.0 controller_patience: 3.0 planner_frequency: 2 planner_patience: 5.0 conservative_reset_dist: 3.0 oscillation_timeout: 1000.0 oscillation_distance: 0.35 clearing_rotation_allowed: false
(3)local cost
local_costmap: global_frame: map robot_base_frame: base_footprint update_frequency: 15.0 publish_frequency: 10.0 rolling_window: true width: 2.5 height: 2.5 resolution: 0.05 transform_tolerance: 0.5 plugins: - {name: static_layer, type: "costmap_2d::StaticLayer"} - {name: obstacle_layer, type: "costmap_2d::ObstacleLayer"}
(4)global planner
GlobalPlanner: allow_unknown: true default_tolerance: 0.2 use_grid_path: false use_quadratic: true old_navfn_behavior: false lethal_cost: 253 neutral_cost: 50 cost_factor: 3 publish_potential: true orientation_mode: 2 orientation_window_size: 1 outline_map: true visualize_potential: false
(5)costmap common 
#---standard pioneer footprint--- #---(in meters)--- footprint: [ [-0.15,-0.13], [0.15,-0.13], [0.15,0.13], [-0.15,0.13] ] transform_tolerance: 0.2 always_send_full_costmap: true obstacle_layer: enabled: true obstacle_range: 3.0 raytrace_range: 4.0 inflation_radius: 0.2 track_unknown_space: true combination_method: 1 observation_sources: laser_scan_sensor laser_scan_sensor: {data_type: LaserScan, topic: scan, marking: true, clearing: true} inflation_layer: enabled: true cost_scaling_factor: 10.0 # exponential rate at which the obstacle cost drops off (default: 10) inflation_radius: 0.5 # max. distance from an obstacle at which costs are incurred for planning paths. static_layer: enabled: true map_topic: "/map"
(6)global cost
global_costmap: global_frame: map robot_base_frame: base_footprint update_frequency: 2.0 publish_frequency: 1.0 transform_tolerance: 0.5 plugins: - {name: static_layer, type: "costmap_2d::StaticLayer"} - {name: obstacle_layer, type: "costmap_2d::VoxelLayer"} - {name: inflation_layer, type: "costmap_2d::InflationLayer"}
https://blog.csdn.net/allenhsu6/article/details/113523546

2023年3月7日

相比之前版本优化参数,之前在走直线中会互相超调晃动导致机器人移动效率低,这个版本参数优化了该问题,但是会导致机器人在终点处倒车
TebLocalPlannerROS: odom_topic: odom # Trajectory teb_autosize: True dt_ref: 0.45 dt_hysteresis: 0.045 max_samples: 500 global_plan_overwrite_orientation: True allow_init_with_backwards_motion: True max_global_plan_lookahead_dist: 0.0 global_plan_viapoint_sep: 0.16 global_plan_prune_distance: 1 exact_arc_length: False feasibility_check_no_poses: 5 publish_feedback: False # Robot max_vel_x: 0.3 max_vel_x_backwards: 0.25 max_vel_y: 0.2 max_vel_theta: 0.45 # the angular velocity is also bounded by min_turning_radius in case of a carlike robot (r = v / omega) acc_lim_x: 0.2 acc_lim_y: 0.15 acc_lim_theta: 0.35 # ********************** Carlike robot parameters ******************** min_turning_radius: 0.15 # Min turning radius of the carlike robot (compute value using a model or adjust with rqt_reconfigure manually) wheelbase: 0.01 # Wheelbase of our robot cmd_angle_instead_rotvel: False # stage simulator takes the angle instead of the rotvel as input (twist message) # ******************************************************************** footprint_model: # types: "point", "circular", "two_circles", "line", "polygon" type: "line" line_start: [-0.14, 0.0] # for type "line" line_end: [0.14, 0.0] # for type "line" # GoalTolerance xy_goal_tolerance: 0.15 yaw_goal_tolerance: 1.57 free_goal_vel: False complete_global_plan: True # Obstacles min_obstacle_dist: 0.2 # This value must also include our robot's expansion, since footprint_model is set to "line". inflation_dist: 0.6 include_costmap_obstacles: True costmap_obstacles_behind_robot_dist: 1.0 obstacle_poses_affected: 15 dynamic_obstacle_inflation_dist: 0.6 include_dynamic_obstacles: True costmap_converter_plugin: "" costmap_converter_spin_thread: True costmap_converter_rate: 5 # Optimization no_inner_iterations: 5 no_outer_iterations: 4 optimization_activate: True optimization_verbose: False penalty_epsilon: 0.1 obstacle_cost_exponent: 4 weight_max_vel_x: 2 weight_max_vel_y: 1 weight_max_vel_theta: 1 weight_acc_lim_x: 1 weight_acc_lim_y: 1 weight_acc_lim_theta: 1 weight_kinematics_nh: 1000 weight_kinematics_forward_drive: 1 weight_kinematics_turning_radius: 1 weight_optimaltime: 2 # must be > 0 weight_shortest_path: 1 weight_obstacle: 100 weight_inflation: 0.2 weight_dynamic_obstacle: 10 # not in use yet weight_dynamic_obstacle_inflation: 0.2 weight_viapoint: 1 weight_adapt_factor: 2 # Homotopy Class Planner enable_homotopy_class_planning: False enable_multithreading: True max_number_classes: 4 selection_cost_hysteresis: 1.0 selection_prefer_initial_plan: 0.95 selection_obst_cost_scale: 1.0 selection_alternative_time_cost: False roadmap_graph_no_samples: 15 roadmap_graph_area_width: 5 roadmap_graph_area_length_scale: 1.0 h_signature_prescaler: 0.5 h_signature_threshold: 0.1 obstacle_heading_threshold: 0.45 switching_blocking_period: 0.0 viapoints_all_candidates: True delete_detours_backwards: True max_ratio_detours_duration_best_duration: 3.0 visualize_hc_graph: False visualize_with_time_as_z_axis_scale: False # Recovery shrink_horizon_backup: True shrink_horizon_min_duration: 10 oscillation_recovery: True oscillation_v_eps: 0.1 oscillation_omega_eps: 0.1 oscillation_recovery_min_duration: 10 oscillation_filter_duration: 10
2023-03-07