| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- # The task launch is started only after navigation has stopped at the sign
- # recognition point and every other /cmd_vel source has released control.
- autostart: true
- control_rate: 20.0
- cmd_vel_topic: /cmd_vel
- odom_topic: /odom
- lane_valid_topic: /line_follow_debug/lane_valid
- lookahead_target_topic: /line_follow_debug/lookahead_target
- sign_direction_topic: /traffic_sign/direction
- sign_confidence_topic: /traffic_sign/confidence
- sign_enable_service: /traffic_sign_recognition/set_enabled
- line_enable_service: /line_follow_control/set_enabled
- # A stable result from the recognition node is confirmed twice here before it
- # is locked for the rest of the task. STOP/NONE keep the vehicle stationary.
- sign_confirmations: 2
- sign_topic_timeout: 3.0
- minimum_sign_confidence: 0.25
- camera_settle_time: 2.0
- # Odometry and action safety.
- odom_timeout: 0.5
- odom_jump_limit_m: 0.25
- # Deliberately above a nominal 90-degree turn: yaw is only an over-turn guard;
- # calibrated odometry path length remains the maneuver completion condition.
- maximum_turn_yaw_rad: 2.20
- wrong_way_yaw_tolerance_rad: 0.10
- straight_yaw_limit_rad: 0.35
- maneuver_timeout_scale: 2.0
- maneuver_timeout_min: 3.0
- transition_stop_time: 0.30
- # Real-vehicle junction maneuver values. 0.10 m/s forward with 0.20 rad/s
- # turning was verified to keep both sides of the drivetrain moving.
- maneuver_linear_speed: 0.10
- first_turn_angular_speed: 0.20
- second_turn_angular_speed: 0.20
- # REQUIRED CALIBRATION VALUES. The state machine refuses to move while any
- # value is zero or negative. Fill these using route_distance_calibrator.py.
- first_left_turn_distance_m: 0.5149
- first_right_turn_distance_m: 0.5274
- first_straight_entry_distance_m: 0.3584
- direct_finish_distance_m: 2.5997
- straight_to_second_distance_m: 0.6053
- second_right_turn_distance_m: 0.35
- after_second_finish_distance_m: 2.1104
- # The finish segments do not use their old odometry distances. Once LEFT/RIGHT
- # has entered FOLLOW_DIRECT_FINISH, or STRAIGHT has completed the second fixed
- # right turn and entered FOLLOW_AFTER_SECOND, a continuous total loss of lane
- # boundaries is treated as the endpoint. The controller stops immediately and
- # confirms the loss before publishing FINISHED.
- use_finish_distance_limits: false
- finish_lane_loss_confirm_time: 1.0
- # Reuse the speech_command node that is already running for task 1. This task
- # never launches a second speech node and sends this phrase exactly once.
- completion_announcement_topic: /speech_command/announce
- completion_announcement_text: "任务完成"
- # On the straight route, odometry no longer directly starts the second turn.
- # It only arms a lane-loss trigger near the measured 0.6053 m junction. Three
- # consecutive invalid-lane control cycles then start the fixed right maneuver.
- # Early lane loss uses ordinary recovery; passing the maximum without lane
- # loss stops in FAULT instead of driving indefinitely.
- second_junction_arm_distance_m: 0.45
- second_junction_max_distance_m: 0.85
- second_junction_lost_frames: 3
- # After confirmed lane loss at the second junction, move farther into the
- # junction before starting the fixed right turn.
- second_junction_forward_speed: 0.10
- second_junction_forward_duration: 3.0
- # Keep false for the complete route: reacquire the lane after the calibrated
- # second right maneuver and continue with FOLLOW_AFTER_SECOND.
- stop_after_second_maneuver: false
- # line_follow_debug.py keeps lane_valid=true for up to 8.0 s while continuously
- # inferring the centre from one remaining boundary. If it finally publishes
- # false, stop and wait in place for a fresh target; never reverse or scan.
- lane_reacquire_timeout: 2.0
- lane_stable_frames: 5
- target_fresh_timeout: 0.5
|