--- ### NAVIGATION ### bt_navigator: ros__parameters: use_sim_time: false global_frame: /map robot_base_frame: /base_link odom_topic: //odom plugin_lib_names: - nav2_compute_path_to_pose_action_bt_node - nav2_follow_path_action_bt_node - nav2_back_up_action_bt_node - nav2_spin_action_bt_node - nav2_wait_action_bt_node - nav2_clear_costmap_service_bt_node - nav2_is_stuck_condition_bt_node - nav2_goal_reached_condition_bt_node - nav2_goal_updated_condition_bt_node - nav2_initial_pose_received_condition_bt_node - nav2_reinitialize_global_localization_service_bt_node - nav2_rate_controller_bt_node - nav2_distance_controller_bt_node - nav2_speed_controller_bt_node - nav2_truncate_path_action_bt_node - nav2_goal_updater_node_bt_node - nav2_recovery_node_bt_node - nav2_pipeline_sequence_bt_node - nav2_round_robin_node_bt_node - nav2_transform_available_condition_bt_node - nav2_time_expired_condition_bt_node - nav2_distance_traveled_condition_bt_node - nav2_remove_passed_goals_action_bt_node - nav2_compute_path_through_poses_action_bt_node bt_navigator_rclcpp_node: ros__parameters: use_sim_time: false controller_server: ros__parameters: use_sim_time: false controller_frequency: 10.0 odom_topic: //odom # if velocity is below threshold value it is set to 0 min_x_velocity_threshold: 0.001 min_y_velocity_threshold: 0.5 min_theta_velocity_threshold: 0.001 progress_checker_plugin: progress_checker progress_checker: plugin: nav2_controller::SimpleProgressChecker required_movement_radius: 0.5 movement_time_allowance: 10.0 goal_checker_plugin: goal_checker goal_checker: plugin: nav2_controller::SimpleGoalChecker xy_goal_tolerance: 0.1 yaw_goal_tolerance: 0.25 stateful: true # if stateful is true goal checker will not check if the xy position matches again once it is found to be true. controller_plugins: [FollowPath] FollowPath: # Shim controller first rotates robot in place to orientation of global path # and the switches to DWB - otherwise DWB won't turn in place, but with arc, which # is less optimal plugin: nav2_rotation_shim_controller::RotationShimController primary_controller: dwb_core::DWBLocalPlanner angular_dist_threshold: 0.4 # quite low value to avoid moving in arc forward_sampling_distance: 0.5 rotate_to_heading_angular_vel: 1.5 # I'm not sure why, but ang vel is limited max_angular_accel param divided by 10 # actual acceleration will be limited by controller, so it can be set to higher value max_angular_accel: 10.0 simulate_ahead_time: 1.0 debug_trajectory_details: true # Velocity/acceleration limits also have to be adjusted in the velocity smoother min_vel_x: -0.25 max_vel_x: 0.5 acc_lim_x: 1.0 decel_lim_x: -1.0 min_speed_xy: 0.007 max_speed_xy: 0.5 max_vel_theta: 1.5 min_speed_theta: 0.4 acc_lim_theta: 4.0 decel_lim_theta: -4.0 min_vel_y: 0.0 max_vel_y: 0.0 acc_lim_y: 0.0 decel_lim_y: 0.0 vx_samples: 20 vy_samples: 0 vtheta_samples: 20 transform_tolerance: 0.2 short_circuit_trajectory_evaluation: true trajectory_generator_name: dwb_plugins::StandardTrajectoryGenerator sim_time: 0.75 # low value to avoid slow movement near goal discretize_by_time: false linear_granularity: 0.05 angular_granularity: 0.025 # Critics used for scoring trajectories created by trajectory generator # Final score is a sum of critics' score critics: [BaseObstacle, ObstacleFootprint, GoalAlign, GoalDist, PathAlign, PathDist, RotateToGoal, Oscillation] BaseObstacle.scale: 0.02 GoalAlign.scale: 24.0 GoalAlign.forward_point_distance: 0.1 GoalDist.scale: 24.0 PathAlign.scale: 32.0 PathAlign.forward_point_distance: 0.1 PathDist.scale: 32.0 xy_goal_tolerance: 0.1 trans_stopped_velocity: 0.25 RotateToGoal.scale: 32.0 RotateToGoal.slowing_factor: 5.0 RotateToGoal.lookahead_time: -1.0 controller_server_rclcpp_node: ros__parameters: use_sim_time: false local_costmap: local_costmap: ros__parameters: use_sim_time: false global_frame: /odom robot_base_frame: /base_link update_frequency: 5.0 publish_frequency: 2.0 width: 5 height: 5 resolution: 0.05 always_send_full_costmap: true rolling_window: true transform_tolerance: 0.1 footprint: '[[0.45, 0.47], [0.45, -0.47], [-0.45, -0.47], [-0.45, 0.47]]' plugins: [obstacle_layer, inflation_layer] obstacle_layer: plugin: nav2_costmap_2d::ObstacleLayer enabled: true observation_sources: scan scan: topic: //scan max_obstacle_height: 2.0 clearing: true marking: true data_type: LaserScan raytrace_max_range: 3.0 raytrace_min_range: 0.0 obstacle_max_range: 2.5 obstacle_min_range: 0.0 inflation_layer: plugin: nav2_costmap_2d::InflationLayer enabled: true cost_scaling_factor: 1.3 inflation_radius: 1.5 local_costmap_client: ros__parameters: use_sim_time: false local_costmap_rclcpp_node: ros__parameters: use_sim_time: false global_costmap: global_costmap: ros__parameters: use_sim_time: false global_frame: /map robot_base_frame: /base_link update_frequency: 1.0 publish_frequency: 1.0 resolution: 0.05 always_send_full_costmap: true track_unknown_space: true # if false, treats unknown space as free space, else as unknown space transform_tolerance: 0.1 footprint: '[[0.45, 0.47], [0.45, -0.47], [-0.45, -0.47], [-0.45, 0.47]]' plugins: [static_layer, obstacle_layer, inflation_layer] static_layer: plugin: nav2_costmap_2d::StaticLayer enabled: true map_subscribe_transient_local: true map_topic: //map obstacle_layer: plugin: nav2_costmap_2d::ObstacleLayer enabled: true observation_sources: scan scan: topic: //scan max_obstacle_height: 2.0 clearing: true marking: true data_type: LaserScan raytrace_max_range: 3.0 raytrace_min_range: 0.0 obstacle_max_range: 2.5 obstacle_min_range: 0.0 inflation_layer: plugin: nav2_costmap_2d::InflationLayer enabled: true cost_scaling_factor: 1.5 inflation_radius: 1.5 global_costmap_client: ros__parameters: use_sim_time: false global_costmap_rclcpp_node: ros__parameters: use_sim_time: false planner_server: ros__parameters: use_sim_time: false planner_plugins: [GridBased] GridBased: plugin: nav2_smac_planner/SmacPlanner2D tolerance: 0.125 # tolerance for planning if unable to reach exact pose, in meters downsample_costmap: false # whether or not to downsample the map downsampling_factor: 1 # multiplier for the resolution of the costmap layer (e.g. 2 on a 5cm costmap would be 10cm) allow_unknown: true # allow traveling in unknown space max_iterations: 1000000 # maximum total iterations to search for before failing (in case unreachable), set to -1 to disable max_on_approach_iterations: 1000 # maximum number of iterations to attempt to reach goal once in tolerance max_planning_time: 2.0 # max time in s for planner to plan, smooth motion_model_for_search: MOORE # 2D Moore, Von Neumann cost_travel_multiplier: 2.0 # Cost multiplier to apply to search to steer away from high cost areas. Larger values will place in the center of aisles more exactly (if non-`FREE` cost potential field exists) but take slightly longer to compute. To optimize for speed, a value of 1.0 is reasonable. A reasonable tradeoff value is 2.0. A value of 0.0 effective disables steering away from obstacles and acts like a naive binary search A*. use_final_approach_orientation: false # Whether to set the final path pose at the goal's orientation to the requested orientation (false) or in line with the approach angle so the robot doesn't rotate to heading (true) planner_server_rclcpp_node: ros__parameters: use_sim_time: false recoveries_server: ros__parameters: use_sim_time: false global_frame: /odom robot_base_frame: /base_link transform_tolerance: 0.1 costmap_topic: local_costmap/costmap_raw footprint_topic: local_costmap/published_footprint cycle_frequency: 10.0 recovery_plugins: [spin, backup, wait] spin: plugin: nav2_recoveries/Spin backup: plugin: nav2_recoveries/BackUp wait: plugin: nav2_recoveries/Wait # spin & backup simulate_ahead_time: 2.0 # spin max_rotational_vel: 1.0 min_rotational_vel: 0.4 rotational_acc_lim: 3.2 behavior_server: ros__parameters: use_sim_time: false waypoint_follower: ros__parameters: use_sim_time: false loop_rate: 20 stop_on_failure: false waypoint_task_executor_plugin: wait_at_waypoint wait_at_waypoint: plugin: nav2_waypoint_follower::WaitAtWaypoint enabled: true waypoint_pause_duration: 200 ### LOCALIZATION ### amcl: ros__parameters: use_sim_time: false global_frame_id: /map odom_frame_id: /odom base_frame_id: /base_link scan_topic: //scan robot_model_type: nav2_amcl::DifferentialMotionModel set_initial_pose: true always_reset_initial_pose: true initial_pose: x: 0.0 y: 0.0 yaw: 0.0 tf_broadcast: true transform_tolerance: 1.0 alpha1: 0.2 alpha2: 0.2 alpha3: 0.2 alpha4: 0.2 alpha5: 0.2 # Beam skipping - ignores beams for which a majoirty of particles do not agree with the map # prevents correct particles from getting down weighted because of unexpected obstacles # such as humans do_beamskip: false beam_skip_distance: 0.5 beam_skip_error_threshold: 0.9 beam_skip_threshold: 0.3 lambda_short: 0.1 laser_model_type: likelihood_field laser_likelihood_max_dist: 2.0 laser_max_range: 12.0 laser_min_range: -1.0 max_beams: 60 max_particles: 2000 min_particles: 500 pf_err: 0.05 pf_z: 0.99 recovery_alpha_fast: 0.0 recovery_alpha_slow: 0.0 resample_interval: 1 save_pose_rate: 0.5 sigma_hit: 0.2 update_min_a: 0.1 update_min_d: 0.15 z_hit: 0.5 z_max: 0.05 z_rand: 0.5 z_short: 0.05 amcl_map_client: ros__parameters: use_sim_time: false amcl_rclcpp_node: ros__parameters: use_sim_time: false ### MAP SERVER ### map_server: ros__parameters: use_sim_time: false yaml_filename: map.yaml frame_id: /map ### SLAM ### /slam_toolbox: ros__parameters: # Plugin params solver_plugin: solver_plugins::CeresSolver ceres_linear_solver: SPARSE_NORMAL_CHOLESKY ceres_preconditioner: SCHUR_JACOBI ceres_trust_strategy: LEVENBERG_MARQUARDT ceres_dogleg_type: TRADITIONAL_DOGLEG ceres_loss_function: None #HuberLoss # ROS Parameters odom_frame: /odom map_frame: /map base_frame: /base_link scan_topic: //scan mode: mapping #localization debug_logging: false throttle_scans: 1 transform_publish_period: 0.04 map_update_interval: 1.0 resolution: 0.1 max_laser_range: 12.0 #for rastering images minimum_time_interval: 0.05 transform_timeout: 0.5 tf_buffer_duration: 20.0 stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps enable_interactive_mode: false # General Parameters use_scan_matching: true use_scan_barycenter: true minimum_travel_distance: 0.2 minimum_travel_heading: 0.1 scan_buffer_size: 10 scan_buffer_maximum_scan_distance: 0.5 link_match_minimum_response_fine: 0.1 link_scan_maximum_distance: 0.75 loop_search_maximum_distance: 3.0 do_loop_closing: true loop_match_minimum_chain_size: 10 loop_match_maximum_variance_coarse: 3.0 loop_match_minimum_response_coarse: 0.35 loop_match_minimum_response_fine: 0.45 # Correlation Parameters - Correlation Parameters correlation_search_space_dimension: 0.5 correlation_search_space_resolution: 0.01 correlation_search_space_smear_deviation: 0.1 # Correlation Parameters - Loop Closure Parameters loop_search_space_dimension: 8.0 loop_search_space_resolution: 0.05 loop_search_space_smear_deviation: 0.03 # Scan Matcher Parameters distance_variance_penalty: 0.5 angle_variance_penalty: 1.0 fine_search_angle_offset: 0.00349 coarse_search_angle_offset: 0.349 coarse_angle_resolution: 0.0349 minimum_angle_penalty: 0.9 minimum_distance_penalty: 0.5 use_response_expansion: true use_sim_time: false