Repository navigation
dotbot/cli: flash calibrate-spin onto the robots collect --spin finds on another app - #341
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #341 +/- ##
==========================================
+ Coverage 88.17% 88.26% +0.08%
==========================================
Files 227 228 +1
Lines 36028 36397 +369
Branches 2323 2324 +1
==========================================
+ Hits 31769 32125 +356
- Misses 4255 4268 +13
Partials 4 4
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
HIL on the bench (2026-10-15), DotBot v3 on swarm A001, bootloader/netcore Auto-flash, then re-read device info:
The guard on the spin path.
The "before driving them" hint names the wrong set. After run C it printed Spinning moves the robots: each spin moved them 40-90 mm on this floor. Afterwards all five robots were flashed back to their original app with |
7c9d7ca to
4e73485
Compare
AI-assisted: Claude Opus 5.5
…another app AI-assisted: Claude Opus 5.5
4e73485 to
aa097ec
Compare
Stacked on #340. It no longer uses any code from #340, but the branch sits on top of it; merge #340 first, and this PR's diff against
mainshrinks to its own commit once it lands. Independent of the open LH2 calibration PRs (#322-#325, #331).dotbot swarm -d <robots> calibrate-lh2 collect --spinneeds the calibrate-spin app on every robot it spins, and until now refused any robot running something else, leaving the operator to work out which set to flash and to runswarm flashby hand before retrying. It now flashes calibrate-spin itself onto the-drobots found on another app, then re-reads their device info and carries on with the spin.Which image each robot gets: by default, calibrate-spin from the same dotbot-firmware set the robot's current app came from (matched by the image digest the robot reports against the
.binfiles in the local sets), so a robot running a locally built app gets a calibrate-spin built from the same checkout, and so against the same bootloader table. A robot whose set is unknown, or whose set has no calibrate-spin, falls back to the release pydotbot pins. A newcollect --spin -f <set>picks the set explicitly (release tag,latest, adotbot fw buildset, or a directory), and-fwithout--spinis a usage error.Robots still in their app are stopped first, and any robot the OTA flash did not reach is named in the error. The closing hint to put remote-control back now carries the
-f <set>the robots' images came from, so the operator flashes back from the same set.An earlier version also ran each image through #340's NSC interface check before flashing. That check was split out of #340 and moves to swarmit, so it is gone from here too: picking the set the robot's app came from is what keeps the tables in step, and
-foverrides it with no compatibility check.dotbot/cli/_spin_flash.py(new)dotbot/tests/test_calibration_spin.pydotbot/cli/swarm_lh2.pyValidation: unit tests only, not run against robots.
test_calibration_spin.pyand the #340 test modules pass (193 passed acrosstest_calibration_spin.py,test_fw_sources.py,test_fw.py,test_swarm_flash.py). The full suite gives 1733 passed, 2 failed; both failures (test_camera_service.py::test_a_registration_without_controls_warns_about_nothing,test_controller.py::test_controller_dotbot_simulator) fail identically on the base commit and are unrelated. The OTA flash and the device-info re-read need a swarm; one bench run ofcollect --spinwith a robot on remote-control would cover them.