apps-sandbox/dotbot: drive the robot through drv/dotbot_control - #430
Merged
Merged
Conversation
The pinned commit is on the unmerged control-core branch of a fork, not yet on DotBot-libs main; rebump to the merge once DotBots#38 lands. AI-assisted: Claude Opus 5.5
The command deadman now counts 10 ms scheduler ticks from when the mailbox hands a command to the core, not RTC time from its receipt in the IPC interrupt. AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…tBots#38) AI-assisted: Claude Opus 5.5
geonnave
marked this pull request as ready for review
September 29, 2026 06:37
…ots#38) AI-assisted: Claude Opus 5.5
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.
The sandbox app's control glue now lives in DotBot-libs' hardware-free control
core (
drv/dotbot_control) instead of being reimplemented inline inapps-sandbox/dotbot/main.c.main.cdrops from 1083 to 554 lines. The appkeeps its own mailbox, qdec, and localization polling via
db_control_fix_due, writes motors throughout.write, sends advertisementsthrough
out.advertise, and keeps the RGB LED command and bench hooks.Behaviour differences from the previous inline implementation:
command, rather than from when the command was received.
during it.
Submodule
The
dotbot-libssubmodule points at the merge commit ofDotBots/DotBot-libs#38 on
main.Bench status
Validated on 3 real robots running this build against a 1.24.0 control
baseline running on a 4th. Matching 1.24.0 behaviour: single- and
multi-point waypoints with final heading, max speed, stop/abort, deadman,
advertisements, and LED.
Not yet passing on the previous build: the LOST re-anchor step (lifting a
robot mid-batch) did not recover. The robot reseeded while still in the hand
(its braked wheels passed the "wheels still" test during a slow carry), spun
in the air, and failed with NO_HEADING. The
dotbot-libspointer now carriesthree fixes from DotBot-libs #38: a LOST robot reseeds only once its fixes
hold still for 0.5 s; wheels that turn while the fixes stay put drop the pose
back to LOST, so steering brakes instead of spinning in the air; and a
NO_HEADING spin that ends without a heading rests in HOLD and retries (up to
3 times) before failing.
A second lift test on that build showed the retries spinning the wheels 3-5
times in the hand. The pointer now also carries the follow-up: a pose lost on
a free spin (wheels turning while the fix stays put) fails the batch at once,
braked, with no retry, so a held robot gives one short spin burst and stops.
The retries remain for spins that moved the fix. Before the change, the same
robot on the previous build ran 180 s of untouched laps at 150 mm/s with no
loss of tracking, which rules out a false free-spin trigger on the floor.
This build, flashed on that robot, ran 180 s of untouched laps just as
cleanly: 4 batches ARRIVED, no loss of tracking after the initial heading
spin. The lift mid-batch step itself still needs re-running at the bench.
Build: SES 7.22,
sandbox-dotbot-v3Release, 0 warnings.apps-sandbox/dotbot/main.capps-sandbox/applications.emProject,dotbot-libs