# ============================================================================ # nav2_params.yaml — Odometry-only obstacle navigation # # No static map, no AMCL, no SLAM. # Both costmaps are rolling windows in odom. The launch file can rewrite every # global_frame leaf when a different connected odometry frame is required. # Global planner: Smac Hybrid A* (Reeds-Shepp) # Local controller: MPPI (Ackermann) # ============================================================================ bt_navigator: ros__parameters: use_sim_time: False global_frame: odom robot_base_frame: base_footprint odom_topic: /odom_combined bt_loop_duration: 50 default_server_timeout: 20 # Injected by obstacle_nav2.launch.py from this package's share directory. default_nav_to_pose_bt_xml: "" plugin_lib_names: - nav2_compute_path_to_pose_action_bt_node - nav2_compute_path_through_poses_action_bt_node - nav2_smooth_path_action_bt_node - nav2_follow_path_action_bt_node - nav2_spin_action_bt_node - nav2_wait_action_bt_node - nav2_back_up_action_bt_node - nav2_drive_on_heading_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_globally_updated_goal_condition_bt_node - nav2_is_path_valid_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_truncate_path_local_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_path_expiring_timer_condition - nav2_distance_traveled_condition_bt_node - nav2_single_trigger_bt_node - nav2_is_battery_low_condition_bt_node - nav2_navigate_through_poses_action_bt_node - nav2_navigate_to_pose_action_bt_node - nav2_remove_passed_goals_action_bt_node - nav2_planner_selector_bt_node - nav2_controller_selector_bt_node - nav2_goal_checker_selector_bt_node - nav2_controller_cancel_bt_node - nav2_path_longer_on_approach_bt_node - nav2_wait_cancel_bt_node - nav2_spin_cancel_bt_node - nav2_back_up_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node bt_navigator_rclcpp_node: ros__parameters: use_sim_time: False controller_server: ros__parameters: use_sim_time: False controller_frequency: 20.0 FollowPath: plugin: "nav2_mppi_controller::MPPIController" time_steps: 36 model_dt: 0.05 batch_size: 1000 vx_std: 0.2 vy_std: 0.0 wz_std: 0.4 vx_max: 0.5 vx_min: -0.30 vy_max: 0.0 wz_max: 1.5 iteration_count: 1 temperature: 0.3 gamma: 0.015 motion_model: "Ackermann" visualize: false TrajectoryVisualizer: trajectory_step: 5 time_step: 3 AckermannConstraints: min_turning_r: 0.4 critics: ["ConstraintCritic", "CostCritic", "GoalCritic", "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic", "PathAngleCritic", "PreferForwardCritic"] ConstraintCritic: enabled: true cost_power: 1 cost_weight: 4.0 GoalCritic: enabled: true cost_power: 1 cost_weight: 5.0 threshold_to_consider: 1.4 GoalAngleCritic: enabled: true cost_power: 1 cost_weight: 3.0 threshold_to_consider: 0.5 PreferForwardCritic: enabled: true cost_power: 1 cost_weight: 5.0 threshold_to_consider: 0.5 CostCritic: enabled: true cost_power: 1 cost_weight: 3.81 critical_cost: 300.0 consider_footprint: true collision_cost: 1000000.0 near_goal_distance: 1.0 trajectory_point_step: 2 PathAlignCritic: enabled: true cost_power: 1 cost_weight: 14.0 max_path_occupancy_ratio: 0.05 trajectory_point_step: 4 threshold_to_consider: 0.5 offset_from_furthest: 20 use_path_orientations: false PathFollowCritic: enabled: true cost_power: 1 cost_weight: 5.0 offset_from_furthest: 5 threshold_to_consider: 1.4 PathAngleCritic: enabled: true cost_power: 1 cost_weight: 2.0 offset_from_furthest: 4 threshold_to_consider: 0.5 max_angle_to_furthest: 1.0 forward_preference: true controller_server_rclcpp_node: ros__parameters: use_sim_time: False local_costmap: local_costmap: ros__parameters: update_frequency: 5.0 publish_frequency: 2.0 transform_tolerance: 0.5 global_frame: odom robot_base_frame: base_footprint use_sim_time: False rolling_window: true width: 3 height: 3 resolution: 0.05 footprint: "[[0.14, 0.085], [0.14, -0.085], [-0.14, -0.085], [-0.14, 0.085]]" footprint_padding: 0.02 track_unknown_space: false plugins: ["obstacle_array_layer", "inflation_layer"] obstacle_array_layer: plugin: "obstacle_nav2::ObstacleArrayLayer" enabled: true topic: /obstacles obstacle_timeout: 0.5 transform_tolerance: 0.2 default_obstacle_radius: 0.05 minimum_obstacle_radius: 0.02 maximum_obstacle_radius: 0.50 extra_inflation: 0.02 inflation_layer: plugin: "nav2_costmap_2d::InflationLayer" cost_scaling_factor: 3.0 inflation_radius: 0.55 always_send_full_costmap: True 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: update_frequency: 1.0 publish_frequency: 1.0 transform_tolerance: 0.5 global_frame: odom robot_base_frame: base_footprint use_sim_time: False rolling_window: true width: 10 height: 10 resolution: 0.05 footprint: "[[0.14, 0.085], [0.14, -0.085], [-0.14, -0.085], [-0.14, 0.085]]" footprint_padding: 0.02 track_unknown_space: false plugins: ["obstacle_array_layer", "inflation_layer"] obstacle_array_layer: plugin: "obstacle_nav2::ObstacleArrayLayer" enabled: true topic: /obstacles obstacle_timeout: 0.5 transform_tolerance: 0.2 default_obstacle_radius: 0.05 minimum_obstacle_radius: 0.02 maximum_obstacle_radius: 0.50 extra_inflation: 0.02 inflation_layer: plugin: "nav2_costmap_2d::InflationLayer" cost_scaling_factor: 3.0 inflation_radius: 0.55 always_send_full_costmap: True global_costmap_client: ros__parameters: use_sim_time: False global_costmap_rclcpp_node: ros__parameters: use_sim_time: False planner_server: ros__parameters: planner_plugins: ["GridBased"] use_sim_time: False GridBased: plugin: "nav2_smac_planner/SmacPlannerHybrid" downsample_costmap: false downsampling_factor: 1 tolerance: 0.25 allow_unknown: false max_iterations: 1000000 max_on_approach_iterations: 1000 max_planning_time: 5.0 motion_model_for_search: "REEDS_SHEPP" angle_quantization_bins: 72 analytic_expansion_ratio: 3.5 analytic_expansion_max_length: 3.0 minimum_turning_radius: 0.40 reverse_penalty: 1.3 change_penalty: 0.0 non_straight_penalty: 1.2 cost_penalty: 2.0 retrospective_penalty: 0.015 # 5 m covers the rolling planning horizon without the startup and memory # cost of the previous 20 m (401-cell) Hybrid-A* lookup table. lookup_table_size: 5.0 cache_obstacle_heuristic: false viz_expansions: false smooth_path: True smoother: max_iterations: 1000 w_smooth: 0.3 w_data: 0.2 tolerance: 1.0e-10 do_refinement: true refinement_num: 2 planner_server_rclcpp_node: ros__parameters: use_sim_time: False smoother_server: ros__parameters: use_sim_time: False smoother_plugins: ["simple_smoother"] simple_smoother: plugin: "nav2_smoother::SimpleSmoother" tolerance: 1.0e-10 max_its: 1000 do_refinement: True behavior_server: ros__parameters: costmap_topic: local_costmap/costmap_raw footprint_topic: local_costmap/published_footprint cycle_frequency: 10.0 behavior_plugins: ["spin", "backup", "wait"] spin: plugin: "nav2_behaviors/Spin" backup: plugin: "nav2_behaviors/BackUp" backup_dist: 0.8 backup_speed: 0.18 wait: plugin: "nav2_behaviors/Wait" wait_duration: 0.5 global_frame: odom robot_base_frame: base_footprint transform_tolerance: 0.5 use_sim_time: False simulate_ahead_time: 2.0 max_rotational_vel: 1.0 min_rotational_vel: 0.4 rotational_acc_lim: 3.2 robot_state_publisher: ros__parameters: use_sim_time: False waypoint_follower: ros__parameters: loop_rate: 20 use_sim_time: False 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