claudeDroneteam-docs
documentation · reference
Docs reference

Structured knowledge from collected_doc_media/claudedrone_docs/. Browse the tree on the left; the source of truth is markdown in the repo.

Raw agent reports — simulation

Append-only buffer of simulation-agent entries (ROS 2 + Gazebo + ArduPilot SITL) — pike reports feeding the weekly digests.

stablesimulationupdated 2026-05-11T00:00:00.000ZClaudeDroneSimulationAgentReports

March–April 2026 — ArduPilot SITL bring-up + ROS 2 Jazzy workspace

The bootstrap dev-log entries 01–02 are nearly identical to Aleks’s own simulation/notes_*.txt notes — those have been broken out separately under Aleks’s notes. What follows below are the agent’s unique findings.

2026-04-15 → 2026-05-06 — takeoff_node v1–v5: iterative debugging walkthrough

Five versions of the takeoff-control node, debugged through observing failures, not by reading documentation. Full breakdown:

2026-05-07 → 2026-05-08 — TASK-021 21a: “Waiting for heartbeat” — layered debug

Three overlapping causes of the same MAVProxy symptom “Waiting for heartbeat”:

  1. Orphan UDP 9002 race (dev-log/04) — two gz sim processes bound to the same port after an incomplete daemon.sh stop.
  2. Cyrillic comments in indoor.parm (dev-log/05) — fgets 100-byte buffer in AP_Param.cpp; UTF-8 splits comment lines across the boundary → unknown-parameter → infinite reload loop.
  3. --console flag (dev-log/06) — sim_vehicle.py --console launches matplotlib through MAVProxy, which hangs on an import warning.

Full writeup: SITL “Waiting for heartbeat” — three causes.

Additional parameter breakdown: ArduCopter indoor.parm — line by line.

2026-05-09 — TASK-021 21a closed: takeoff_node v7 event-driven FSM

After the heartbeat fix, the old tick-based FSM broke under --mavros: the tick incremented before state.connected settled, accumulating 60+ ticks during the ~6 s MAVROS bring-up, so every state transition fired back-to-back without confirmation. v7 is event-driven: every phase waits for confirmed state.mode == 'GUIDED', state.armed == True, and retries with a 2 s throttle.

Details: Takeoff node — final v7 event-driven.

2026-05-09 — TASK-033 parallel smoke

Isolation (MAVLink port / GZ_PARTITION / ROS_DOMAIN_ID / SITL -I N) works. What doesn’t work: the iris SDF plugin hard-codes <fdm_port_in>9002</fdm_port_in>, so two Gazebo instances compete for the same UDP port via SO_REUSEADDR. Acceptance criteria closed on the infra side; FDM-port templating split out into a separate follow-up ticket.

Details: Parallel SITL instances + SDF FDM port.

Media sources

  • ~/drone_media/sim/TASK-021/{21a_mavros.log, 21a_sitl.log, 21a_smoke_topics.txt, 21a_takeoff_node.log} — evidence for takeoff_node v7 and the heartbeat fix.
  • ~/drone_media/sim/TASK-033/{parallel_smoke_evidence.txt, sim{0,1}_{gz,sitl}.log} — two parallel SITL instances.
  • Orphan screenshots Screenshot_2026{0413,0425,0426}_*.png — candidates for 07_media_assets/images/architecture/ after manual review by Aleks.
© 2026 claudeDrone Team · auto-pipeline · Nuxt 3 SSR