feat(#158): docking station auto-return — ArUco/IR detection, visual servo, charge monitoring #165
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-controls/issue-158-docking"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implements Issue #158 — autonomous docking station return.
Two new ROS2 packages:
saltybot_docking_msgs(ament_cmake)DockingStatus.msg: stamp, state, dock_detected, distance_m, lateral_error_m, battery_pct, charging, alignedDock.srv/Undock.srv: force-override and resume_mission flagssaltybot_docking(ament_python, 20 Hz)Pure modules (no ROS2 dep):
dock_detector.py:ArucoDetector(cv2.aruco PnP solve →DockPose: distance, yaw, lateral) +IRBeaconDetector(EMA envelope follower with amplitude threshold); both degrade gracefully if OpenCV/IR unavailablevisual_servo.py: IBVS proportional controller —v = k_lin × (d − target),ω = −k_ang × yaw; aligned when|lateral| < 5 mmANDd < contact_distancecharge_monitor.py: edge-triggered events:CHARGING_STARTED/STOPPED,THRESHOLD_LOW(15%),THRESHOLD_HIGH(80%)docking_state_machine.py: 7-state FSM:IDLE → DETECTING → NAV2_APPROACH → VISUAL_SERVO → CONTACT → CHARGING → UNDOCKING → IDLEmission_resumeon full charge cycleundock_requestedROS2 node:
docking_node.py: 20 Hz; Nav2NavigateToPoseaction client (optional, falls back gracefully);/saltybot/dock+/saltybot/undockservices; publishes/saltybot/docking_cmd_vel(servo + undock),/saltybot/resume_mission,/saltybot/docking_statusconfig/docking_params.yaml,launch/docking.launch.pyTest plan