fix(simulation): tolerate cold ROS publisher startup

This commit is contained in:
DCCONSTRUCTIONS 2026-07-24 22:51:21 +03:00
parent 0fb2782f2d
commit 49b0f47fea
1 changed files with 2 additions and 1 deletions

View File

@ -12,6 +12,7 @@ from k1link.simulation.contracts import AckermannControlSetpoint
OFFBOARD_HEARTBEAT_SECONDS: Final = 0.1 OFFBOARD_HEARTBEAT_SECONDS: Final = 0.1
OFFBOARD_WARMUP_HEARTBEATS: Final = 12 OFFBOARD_WARMUP_HEARTBEATS: Final = 12
ROS_PUBLISHER_STARTUP_TIMEOUT_SECONDS: Final = 15.0
OFFBOARD_ADMISSION_TIMEOUT_SECONDS: Final = 60.0 OFFBOARD_ADMISSION_TIMEOUT_SECONDS: Final = 60.0
STOCK_ROVER_MAX_THROTTLE_SPEED_MPS: Final = 3.1 STOCK_ROVER_MAX_THROTTLE_SPEED_MPS: Final = 3.1
VEHICLE_COMMAND_DO_SET_MODE: Final = 176 VEHICLE_COMMAND_DO_SET_MODE: Final = 176
@ -83,7 +84,7 @@ class Ros2Px4AckermannControl:
daemon=True, daemon=True,
) )
self._thread.start() self._thread.start()
if not self._started.wait(timeout=3): if not self._started.wait(timeout=ROS_PUBLISHER_STARTUP_TIMEOUT_SECONDS):
self._abort_thread() self._abort_thread()
raise Px4RoverControlError("PX4 ROS 2 command publisher did not start") raise Px4RoverControlError("PX4 ROS 2 command publisher did not start")
self._raise_failure() self._raise_failure()