Quaternion deviation logging, MAVLink query tooling, IC-capture fix, venv centralization#17
Merged
Conversation
…venv centralization - calibrate/run.py: log actual vs target attitude quaternion (mav_att_q_*, mav_att_target_q_*, mav_att_qerr_*) and show qerr/qyaw in the live table. - groundstation/gcs.py: fix ATTITUDE_TARGET (#83) decode registration bug (was only registered under SET_ATTITUDE_TARGET); explicitly request ATTITUDE_QUATERNION/ATTITUDE_TARGET via MAV_CMD_SET_MESSAGE_INTERVAL since neither rides the legacy EXTRA1 stream group. - scripts/rawes.lua: fix MODE_PASSIVE --hold (RAWES_YIC sentinel) IC capture staleness bug -- _ic_seeded persists across RAWES_MODE transitions for the whole FC boot, so a second --hold capture in the same boot only updated the pending fields and never reached the committed GUIDED target. Now commits directly to _ic_roll_deg/_ic_pitch_deg in the capture branch. - analysis/mavlink_jsonl_query.py: reassemble multi-chunk STATUSTEXT messages (ArduPilot splits >50-byte gcs:send_text() calls across messages sharing an id/chunk_seq) instead of printing raw ~50-byte fragments. - analysis/mavlink_jsonl_query.md: new canonical usage doc for the tool. - setup.cmd/setup.sh: always perform the editable `pip install -e .` install (was previously missing entirely, causing ModuleNotFoundError in fresh venvs), now hash-gated on pyproject.toml like the requirements.txt install so it's a no-op after the first run. - calibrate.cmd/pump_lua.cmd/visualize.cmd: centralize venv setup by delegating to setup.cmd instead of duplicating setup logic. - design/flight_stack.md, design/calibration.md, design/sitl_testing.md, AGENTS.md: document the above (RAWES_YIC capture path + gotcha, quaternion columns, mavlink_jsonl_query.py as first-line diagnostic tool). - .gitignore: fix tests/oneoff/ rule to **/tests/oneoff/ so it also matches the stray simulation/tests/oneoff/ legacy directory.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
mav_att_q_*,mav_att_target_q_*,mav_att_qerr_*) and showqerr(d)/qyaw(d)in the live console table instead of V/A.ATTITUDE_TARGET(#83) decode-registration bug (was only registered underSET_ATTITUDE_TARGET); explicitly requestATTITUDE_QUATERNION/ATTITUDE_TARGETviaMAV_CMD_SET_MESSAGE_INTERVALsince neither rides the legacyEXTRA1stream group.--hold(RAWES_YICsentinel) IC-capture bug —_ic_seededpersists acrossRAWES_MODEtransitions for the whole FC boot, so a second--holdcapture in the same boot only updated the pending fields and never reached the committed GUIDED target, leaving the attitude target frozen at a stale prior value (large non-decaying quaternion error). Now commits directly to_ic_roll_deg/_ic_pitch_degin the capture branch.gcs:send_text()calls across messages sharing anid/chunk_seq) instead of printing raw ~50-byte fragments.pip install -e .install (previously missing entirely, causingModuleNotFoundErrorin fresh venvs); now hash-gated onpyproject.tomllike therequirements.txtinstall so it's a no-op after the first run.setup.cmdinstead of duplicating setup logic.design/flight_stack.md,design/calibration.md,design/sitl_testing.md,AGENTS.mdupdated to document the above (RAWES_YIC capture path + gotcha, quaternion columns,mavlink_jsonl_query.pyas first-line diagnostic tool).tests/oneoff/rule to**/tests/oneoff/so it also matches the straysimulation/tests/oneoff/legacy directory (was leaving 46 untracked scratch files visible togit status).Testing
pip install -e . --no-depsidempotency and hash-gating viabash setup.sh(first run installs + stamps, second run skips both installs).analysis/mavlink_jsonl_query.py statustextreassembly againstrun_passive_20260722_121402.mavlink.jsonland an olderrun_passive_20260715_105728log.--holdstaleness bug end-to-end via the mavlink log (RAWES YIC capture: r=89.9 p=20.0vs. subsequentRAWES guided cmd: ... rpy=(0.0,0.0,...)never converging).