|
|
před 1 měsícem | |
|---|---|---|
| .. | ||
| config | před 1 měsícem | |
| launch | před 1 měsícem | |
| scripts | před 1 měsícem | |
| srv | před 1 měsícem | |
| .gitignore | před 1 měsícem | |
| CMakeLists.txt | před 1 měsícem | |
| README.md | před 1 měsícem | |
| package.xml | před 1 měsícem | |
This package owns the competition phase that starts after navigation has stopped at the LED sign point. It does not start a camera or base driver.
Route policy:
STOP and NONE: remain stationary and keep recognising.LEFT or RIGHT: execute the calibrated first junction maneuver, reacquire
the lane, then finish after the final lane has continuously disappeared.STRAIGHT: enter the centre route, use odometry only to arm the expected
second-junction region, drive straight for a configured duration after
confirmed lane loss, trigger its fixed right maneuver, then continue
following until the final lane has continuously disappeared.With use_finish_distance_limits: false, odometry does not terminate either
finish segment. Final lane loss stops the vehicle immediately and is confirmed
for finish_lane_loss_confirm_time before entering FINISHED. A stable lane
that returns during confirmation resumes the same segment. Junction maneuvers
still retain their calibrated odometry limits and safety checks.
On FINISHED, the state machine publishes 任务完成 exactly once on
/speech_command/announce. The separately started speech_command node owns
the actual TTS playback; this package never starts a second speech node.
For endpoint inspection, stop_after_second_maneuver: true makes the state
machine enter FINISHED immediately after that fixed right maneuver and keeps
line following disabled. Set it back to false after the turn endpoint has
been verified.
Route distances live in config/traffic_line_task.yaml. The state machine
reports CONFIG_INVALID and cannot move if any required value is zero or
negative.
The calibration node only reads /odom; it never opens the camera, starts the
base driver, or publishes /cmd_vel. Start it beside the already-running base:
source ~/ucar_ws/devel/setup.bash
roslaunch traffic_line_task route_distance_calibration.launch
At the beginning of one segment, reset the measurement, move the vehicle with the same low-speed maneuver or line-follow controller that will be used in the task, and then mark the endpoint. For example:
rosservice call /route_distance_calibrator/reset "{}"
rosservice call /route_distance_calibrator/mark \
"label: 'first_left_turn_distance_m'"
The response contains path distance and accumulated yaw. Repeat the segment at
least three times and put a conservative repeatable value in
config/traffic_line_task.yaml. Valid labels are exactly the seven distance
keys in that file.
The single-boundary fallback remains implemented by line_follow_debug.py.
If no valid lane target remains, this state machine disables line control,
stops in place, and waits up to two seconds for a stable target before entering
FAULT.
After calibration, start the already-shared camera and base driver, stop every
other /cmd_vel source, and run:
source ~/ucar_ws/devel/setup.bash
roslaunch traffic_line_task traffic_line_task.launch
Monitor:
rostopic echo /traffic_line_task/state
rostopic echo /traffic_line_task/segment_distance
Abort or reset:
rosservice call /traffic_line_task/abort "{}"
rosservice call /traffic_line_task/reset "{}"