@h2loop/uav 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.hydron-plugin/plugin.json +3 -0
- package/README.md +281 -0
- package/USAGE.md +172 -0
- package/agents/uav-compare.md +36 -0
- package/agents/uav-investigate.md +60 -0
- package/agents/uav-verify.md +45 -0
- package/bridge/README.md +163 -0
- package/bridge/requirements.txt +2 -0
- package/bridge/test_bridge.py +153 -0
- package/bridge/uav_mavlink_bridge.py +799 -0
- package/commands/uav-batch-report.md +20 -0
- package/commands/uav-compare.md +14 -0
- package/commands/uav-preflight.md +12 -0
- package/commands/uav-save-finding.md +25 -0
- package/commands/uav-tune.md +12 -0
- package/data/apm-params.json +1 -0
- package/data/uav-format-converters.example.json +17 -0
- package/mcp.json +15 -0
- package/package.json +43 -0
- package/plugins/index.js +46 -0
- package/plugins/worker/worker-entry.js +11 -0
- package/skills/uav/SKILL.md +101 -0
- package/skills/uav/references/checks.md +174 -0
- package/skills/uav/references/compare.md +49 -0
- package/skills/uav/references/grounding.md +94 -0
- package/skills/uav/references/project-config.md +27 -0
- package/skills/uav/references/signals.md +60 -0
- package/skills/uav/references/tuning-methodology.md +79 -0
- package/skills/uav/references/tuning.md +72 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Analyze a directory of flights and produce one ranked anomaly report.
|
|
3
|
+
subtask: true
|
|
4
|
+
---
|
|
5
|
+
Analyze every .bin under $1 (include .tlog/.ulog if present). For each log, call
|
|
6
|
+
`uav_analyze` directly — the tool already keeps the decode, the ~1,117-param load, and the
|
|
7
|
+
per-table SQL out of this window and returns only the rendered report, so no per-log subagent
|
|
8
|
+
is needed. Run the logs as a fan-out (independent per file) and collect each report. One log
|
|
9
|
+
that fails to decode (e.g. pymavlink missing for a .ulog) becomes a decode-error row; never
|
|
10
|
+
abort the batch on one bad file. Only spawn `uav-investigate` for a specific log if a finding
|
|
11
|
+
needs an open-ended drill-down beyond the standard checks.
|
|
12
|
+
|
|
13
|
+
Collect the FAIL findings from each flight. Produce ONE report, sorties ranked
|
|
14
|
+
worst-severity-first (CRITICAL > HIGH > clean). For every FAIL, list its check, measured
|
|
15
|
+
value, the `threshold_used` it breached, and the guardrail source it cites (datasheet /
|
|
16
|
+
rule-of-thumb / tuned / customer-stated) — the deterministic checks decide the verdict,
|
|
17
|
+
you only rank and narrate. Collapse clean sorties to a count.
|
|
18
|
+
|
|
19
|
+
End with a fleet summary line: `N sorties · X CRITICAL · Y HIGH · Z clean · E errored`.
|
|
20
|
+
If a `.docx` deliverable is requested, the harness exports the Markdown via Pandoc.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Compare two flights of one airframe and narrate the regression.
|
|
3
|
+
agent: uav-compare
|
|
4
|
+
subtask: true
|
|
5
|
+
---
|
|
6
|
+
Compare $1 and $2 (same airframe): fetch the server-side param + finding diff and narrate
|
|
7
|
+
what changed and why.
|
|
8
|
+
|
|
9
|
+
For each shifted finding, give its measured value on both flights, the direction and
|
|
10
|
+
magnitude of the change, and the guardrail it relates to (citing the bound's source).
|
|
11
|
+
Note the regime of each flight; if it is ambiguous, ask before attributing a shift to it.
|
|
12
|
+
In the tuning phase the reference is the last flight; for a production vehicle it is the
|
|
13
|
+
fixed guardrail — state which you are using. Rank the shifts by significance and leave the
|
|
14
|
+
verdict to the engineer. See the `uav` skill's compare reference for the narration shape.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Decode a flight and produce the ranked anomaly report.
|
|
3
|
+
---
|
|
4
|
+
Analyze $1 with uav_analyze, then summarize the ranked anomalies and any param changes
|
|
5
|
+
vs the prior flight for this airframe.
|
|
6
|
+
|
|
7
|
+
For each anomaly, cite the guardrail bound it breached and that bound's source
|
|
8
|
+
(OEM datasheet / rule-of-thumb / per-airframe tuned). If the log decoded only partially,
|
|
9
|
+
say so at the top and caveat every check whose data window was cut. Surface and rank the
|
|
10
|
+
anomalies; leave the final verdict to the engineer. uav_analyze already keeps the decode and
|
|
11
|
+
per-table SQL out of this thread, so call it directly; only spawn uav-investigate if an
|
|
12
|
+
anomaly needs an open-ended drill-down.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Persist the grounded finding(s) from this investigation to the flight (calls uav_finding op:add).
|
|
3
|
+
---
|
|
4
|
+
Persist the confirmed finding(s) established in THIS conversation to the flight's record now.
|
|
5
|
+
Optional arguments: $ARGUMENTS may name the flight_id and/or which finding to save; if absent,
|
|
6
|
+
use the flight currently under analysis and the grounded conclusions you just reached.
|
|
7
|
+
|
|
8
|
+
This is an explicit SAVE action — do NOT re-investigate, do NOT merely summarise. Do exactly:
|
|
9
|
+
|
|
10
|
+
1. Identify the flight_id (from $ARGUMENTS or the flight you just analysed). If you cannot tell
|
|
11
|
+
which flight, ask for the flight_id and stop.
|
|
12
|
+
2. Call `uav_finding op:"list" flight_id:<id>` to see what is already stored.
|
|
13
|
+
3. For EACH conclusion from this investigation that (a) cleared an ABSOLUTE grounded bound —
|
|
14
|
+
not "N× the others" / relative-to-peers — and (b) is NOT already represented above (same
|
|
15
|
+
root cause, even if worded differently), call `uav_finding op:"add"` with:
|
|
16
|
+
- title: a short label
|
|
17
|
+
- severity: OK | HIGH | CRITICAL
|
|
18
|
+
- value + threshold_used: the measured metric and the absolute bound it breached
|
|
19
|
+
- detail: the evidence + the bound's source (datasheet / rule-of-thumb / tuned / customer)
|
|
20
|
+
If a conclusion supersedes a stored agent finding, pass supersedes_id.
|
|
21
|
+
4. Report back the id of every finding you stored, plus any you skipped — for each skip say WHY
|
|
22
|
+
(already stored, or relative-only/within absolute tolerance).
|
|
23
|
+
|
|
24
|
+
If there is no grounded, absolute-bound-clearing finding to save, say so plainly and store
|
|
25
|
+
nothing — never invent a finding, and never persist a relative-only observation as a fault.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Recommend harmonic-notch params (INS_HNTCH_*) from one flight's gyro/VIBE spectrum.
|
|
3
|
+
---
|
|
4
|
+
Run `uav_tune` on $1 to get the dominant gyro/VIBE peak and the recommended
|
|
5
|
+
`INS_HNTCH_ENABLE/FREQ/BW/REF/HMNCS`. Consult the `uav` skill's tuning reference for how to
|
|
6
|
+
read the spectrum.
|
|
7
|
+
|
|
8
|
+
Return: the recommended param deltas, the spectral evidence (dominant peak Hz, sample rate,
|
|
9
|
+
axis), and each param's verified range from apm.pdef.xml — never raw FFT bins, never a param
|
|
10
|
+
or value out of range. Recommend only; pushing params over MAVLink and tagging the retest is
|
|
11
|
+
a separate gated action (the param link with `--allow-param-write`) — never imply you applied
|
|
12
|
+
them.
|