mirror of
https://github.com/azaion/autopilot.git
synced 2026-06-21 08:11:09 +00:00
b5cc0c321c5e7d482616b68bdb940fc7af61e2f2
ci/woodpecker/push/build-arm Pipeline failed
AZ-666 mapobjects_store: - internal/ignored.rs (HashSet<(mgrs, class_group)> for O(1) suppression) - internal/passes.rs (per-region PassTracker with observed-id set and end-of-pass removed-candidate sweep) - Classification::Ignored wired into classify; apply_decline + is_ignored + pass_start + end_of_pass on MapObjectsStoreHandle - new tests/ignored_and_sweep.rs (3 AC + 2 supplementary) AZ-673 vlm_client: - internal/peer_cred.rs (Linux SO_PEERCRED via libc getsockopt; PeerCredOutcome::SkippedNonLinux on macOS dev hosts per description.md §8) - internal/prompt.rs (pre-send ROI size + format + prompt non-emptiness validation) - internal/wire.rs (length-prefixed JSON envelope with base64 ROI) - internal/uds_client.rs (tokio UnixStream client; bounded reconnect; hard-stop on peer-cred mismatch; per-request deadline) - VlmClient with both eager (open/connect) and lazy (new) ctor - workspace Cargo.toml: base64 + libc as workspace deps AZ-648 mission_executor: - internal/types.rs (Variant, MissionState, TransitionKey, Telemetry, TransitionEvent, StepOutcome) - internal/driver.rs (MissionDriver trait + DriverError + DriverAction) - internal/fsm.rs (variant-agnostic Transition + FsmCore + step_one with per-transition retry budget keyed by TransitionKey) - internal/multirotor.rs + internal/fixed_wing.rs (typed transition tables; multirotor has Armed/TakeOff, fixed-wing parks in WaitAuto for operator AUTO) - public API: MissionExecutor::run spawns the FSM task and returns a clone-safe MissionExecutorHandle (state, health, subscribe, paused_reason, retry_count) - new tests/state_machine.rs (AC-1..AC-4 via ScriptedDriver fake; SITL conformance lands with AZ-649 telemetry forwarding) Workspace: cargo fmt + clippy -D warnings clean; full cargo test --workspace --all-features green (1 ignored = AZ-665 perf gate). Tasks moved todo/ → done/, autodev state set to batch 6 selection. Refs: _docs/03_implementation/batch_05_cycle1_report.md Co-authored-by: Cursor <cursoragent@cursor.com>
autopilot
Onboard mission executor for the AZAION reconnaissance UAV. Single Rust binary; runs on
NVIDIA Jetson Orin Nano Super (aarch64). See _docs/02_document/architecture.md for the
authoritative system design.
Layout
crates/
shared/ # canonical DTOs, config, error, health, observability, clock, contracts
autopilot/ # binary crate — runtime composition root + /health endpoint
mavlink_layer/ # hand-rolled MAVLink v2 transport
mission_client/ # missions API REST client + MapObjects sync
frame_ingest/ # RTSP pull + decode
detection_client/ # bi-directional gRPC to ../detections
movement_detector/ # ego-motion-compensated residual-motion clustering
semantic_analyzer/ # Tier 2 — primitive graph + ROI CNN
vlm_client/ # Tier 3 — optional NanoLLM/VILA local IPC
mapobjects_store/ # H3-indexed on-device map + ignored items
gimbal_controller/ # ViewPro A40 UDP control
scan_controller/ # central typed state machine (ZoomedOut/ZoomedIn/TargetFollow)
operator_bridge/ # POI surface + operator command authentication
mission_executor/ # multirotor + fixed-wing FSMs + geofence + failsafe
telemetry_stream/ # always-on uplink to Ground Station
config/ # TOML config per environment (dev / staging / prod)
deploy/systemd/ # on-airframe native systemd unit (Option A)
fixtures/ # replay clips (RTSP, MAVLink, missions, detections)
tests/e2e/ # workspace-level blackbox scenarios
benches/ # NFR benchmark-gate harness
Build
# Host-arch build + tests
cargo build --workspace
cargo test --workspace --locked
# Optional VLM feature path
cargo build --workspace --features vlm
# No-default-features path (enforces the VLM optionality contract)
cargo build --workspace --no-default-features
cargo test --workspace --no-default-features
# aarch64 cross-build (CI uses cargo-zigbuild; locally `cross` also works)
cargo install --locked cargo-zigbuild
rustup target add aarch64-unknown-linux-gnu
cargo zigbuild --release --target aarch64-unknown-linux-gnu --workspace
Run (dev)
cp .env.example .env
docker compose up -d
# Then inspect:
curl -s http://127.0.0.1:8080/health | jq
Documentation
The full document tree lives under _docs/. Start with:
_docs/00_problem/problem.md— the problem statement_docs/02_document/architecture.md— system architecture_docs/02_document/system-flows.md— sequence diagrams_docs/02_document/components/<name>/description.md— per-component specs_docs/02_document/deployment/{containerization,ci_cd_pipeline,observability}.md
CI
.woodpecker.yml drives the pipeline. Stages: fetch → lint → unit-test → build-arm64 → build-no-vlm → integration-test → sitl-conformance → security-scan → package → sign → publish → benchmark-gate (opt-in).
Description
Languages
C
58.6%
C++
40%
QMake
1%
CMake
0.3%