Fuse chassis MegaTag2 while enabled once the disabled seed is confirmed - #156
Merged
allengregoryiv merged 1 commit intoSep 19, 2026
Merged
Conversation
Contributor
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Project516
added this pull request to stack #160
September 16, 2026 12:46
Project516
force-pushed
the
feat/vision-chassis-mt2-after-seed
branch
from
September 16, 2026 13:33
8ec01af to
651fe67
Compare
Base automatically changed from
fix/vision-gates-measured-turret-omega
to
2026-offseason-bot
September 19, 2026 01:47
The chassis cameras fused MegaTag1 translation while enabled. MT1 solves heading from tag geometry and its translation moves with that heading; at two tags the heading has a 15 deg tail, which at three metres is a quarter metre sideways. MegaTag2 pins heading to the one the robot pushes and solves translation alone, so it is far steadier on the move, but it is only as good as the pushed heading, and before the disabled seeding has run that heading is whatever the robot powered on with. So: while disabled, the MT1 seed runs as before, and Vision now watches for it to hold. seedConfirmLoops consecutive seeded loops from two or more tags, with the camera's heading inside seedConfirmSpreadDeg peak to peak, sets poseSeedConfirmed. From then on the chassis cameras fuse MT2 translation while enabled; until then they fuse MT1 as before. The gross heading correction also confirms the seed. Heading is still never fused from either while enabled. Vision/ChassisUseMT2 on the dashboard turns the switch off without a deploy, so the two sources can be compared at an event, and Vision/ChassisSource logs which one every estimate came from. The MT2 path now applies the same tilt and height gates as the MT1 path, read from the same frame's MegaTag1 3-D solve, since MT2 only publishes a 2-D pose. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
allengregoryiv
force-pushed
the
feat/vision-chassis-mt2-after-seed
branch
from
September 19, 2026 01:47
651fe67 to
34630f3
Compare
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
Stacked on #155; merge that first.
The chassis cameras fused MegaTag1 translation while enabled. MT1's translation moves with its own heading solve, and our own logs show two-tag MT1 heading has a 15 deg tail, which at three metres is a quarter metre sideways. MegaTag2 pins heading to the one we push and solves translation alone, so it is far steadier on the move. More than half the repos in the vision teardown fuse MT2. The catch is that MT2 is worthless if the pushed heading is wrong, which is exactly the situation before the disabled seeding has run.
Visionnow also watches for the seed to hold: 50 consecutive seeded loops (about 1 s) from two or more tags, with the camera's heading inside 3 deg peak to peak. ThenVision/PoseSeedConfirmedgoes true. Progress is atVision/SeedConfirmProgress. The gross heading correction also confirms the seed.Vision/ChassisUseMT2dashboard boolean (default true) turns the switch off without a deploy so the two sources can be A/B'd Friday.Vision/ChassisSourcein the log says which one each estimate came from.maxZErrorMetersheight gate as MT1, read from the same frame's MT1 3-D solve, since MT2 only publishes a 2-D pose.docs/tools/vision.mdupdated.Test plan (Friday night)
./gradlew buildpasses (done locally).Vision/SeedConfirmProgressshould climb to 50 andVision/PoseSeedConfirmedgo true within a couple of seconds of a chassis camera seeing two tags. If it never confirms, checkVision/<cam>/TagCount(needs 2+) and whether the MT1 heading is wandering more than 3 deg.Vision/ChassisSourceshould readMT2. Drive around and compareVision/BackLeftLL/MT1PosevsMT2Poseagainst the odometry pose on the field widget; MT2 should be the calmer one.Vision/ChassisUseMT2off on the dashboard mid-session:Vision/ChassisSourceshould readMT1next loop. Flip it back.Vision/ChassisSourcemust readMT1, and the not-seeded alert should show while disabled.Vision/SecondsSinceAcceptedEstimateshould stay small while driving, and shots should land at least as well as before. If they land worse with MT2 on and better with it off, leave it off and bring the logs home.🤖 Generated with Claude Code