/**: ros__parameters: # Control loop rate (Hz) control_rate: 20.0 # Topic names image_topic: "/camera/image_raw" camera_info_topic: "/camera/camera_info" ir_topic: "/saltybot/ir_beacon" battery_topic: "/saltybot/battery_state" # ── ArUco detection ──────────────────────────────────────────────────────── aruco_marker_id: 42 # marker ID on the dock face aruco_marker_size_m: 0.10 # printed marker side length (m) # ── IR beacon ───────────────────────────────────────────────────────────── ir_threshold: 0.50 # amplitude threshold for beacon detection # ── Battery thresholds ──────────────────────────────────────────────────── battery_low_pct: 15.0 # SOC triggering auto-dock (%) battery_high_pct: 80.0 # SOC declaring charge complete (%) # ── Visual servo ────────────────────────────────────────────────────────── servo_range_m: 1.00 # switch from Nav2 to IBVS at this distance (m) k_linear: 0.30 # distance P-gain k_angular: 0.80 # yaw P-gain lateral_tol_m: 0.005 # ±5 mm alignment tolerance contact_distance_m: 0.05 # distance below which contact is assumed (m) max_linear_ms: 0.10 # forward speed ceiling during servo (m/s) max_angular_rads: 0.30 # yaw rate ceiling (rad/s) # ── Undocking maneuver ──────────────────────────────────────────────────── undock_speed_ms: -0.20 # reverse speed (m/s; must be negative) undock_ticks_max: 50 # ticks at undock speed (2.5 s at 20 Hz) # ── FSM timeouts ────────────────────────────────────────────────────────── lost_ticks_max: 40 # ticks of lost detection before retry (2 s) contact_timeout_ticks: 20 # ticks at CONTACT without charging before retry # ── Nav2 waypoints [x, y, z, qx, qy, qz, qw] in map frame ─────────────── # Set these to the actual dock and pre-dock poses in your environment. dock_pose: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0] pre_dock_pose: [0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0] # 1 m in front of dock