feat(a1z): add real hardware adapter - #3303
Conversation
Co-authored-by: Jetson Wu <64779050+jetsonearth@users.noreply.github.com> Co-authored-by: Pim Van den Bosch <49974392+Nabla7@users.noreply.github.com>
76d12a8 to
6332017
Compare
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #3303 +/- ##
==========================================
+ Coverage 75.47% 75.52% +0.04%
==========================================
Files 1157 1166 +9
Lines 111292 112602 +1310
Branches 10073 10190 +117
==========================================
+ Hits 83998 85040 +1042
- Misses 24404 24624 +220
- Partials 2890 2938 +48
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 4 files with indirect coverage changes 🚀 New features to boost your workflow:
|
Use runtime-aware hardware in A1Z blueprints and give the joint trajectory task priority over the always-active keyboard hold.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Greptile SummaryAdds a real-hardware Galaxea A1Z integration.
Confidence Score: 5/5The PR appears safe to merge with respect to the previously reported issue. The gripper command path now rejects requests while the robot's soft E-stop is latched, so no blocking failure remains from the prior review thread. Important Files Changed
Sequence DiagramsequenceDiagram
participant Runtime as DimOS Runtime
participant Adapter as GalaxeaA1ZAdapter
participant Transport as SocketCAN / gs_usb
participant SDK as A1Z SDK
participant Arm as A1Z + G1Z Hardware
Runtime->>Adapter: connect()
Adapter->>Transport: open selected CAN transport
Adapter->>SDK: construct robot
SDK->>Arm: open CAN communication
Runtime->>Adapter: activate()
Adapter->>SDK: staged safe startup / teaching startup
SDK->>Arm: enable motors and control loop
Runtime->>Adapter: joint or gripper command
Adapter->>SDK: validated actuation command
SDK->>Arm: CAN command
Arm-->>SDK: motor feedback
SDK-->>Adapter: joint and gripper state
Runtime->>Adapter: write_stop()
Adapter->>SDK: latch soft E-stop
Adapter-->>Runtime: reject subsequent actuation
Runtime->>Adapter: deactivate() / disconnect()
Adapter->>SDK: stop and disable motors
SDK->>Transport: close CAN bus
Reviews (8): Last reviewed commit: "fix(cli): keep hardware commands in name..." | Re-trigger Greptile |
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Problem
DimOS already has the Galaxea A1Z planning model and mock blueprints, but current
mainhas no real-hardware adapter or reproducible host bring-up path.Solution
galaxea_a1zadapter with staged safe startup, feedback validation, E-stop handling, position/servo-position modes, teaching/free-drive behavior, and G1Z gripper supportA1ZConfig,A1ZGripperConfig, andA1ZTeachingConfigobjects instead of a broad adapter constructorgs_usb, with transport mechanics isolated ings_usb_bus.pydimos a1z setupanddimos a1z can-setup, requesting sudo only for privileged Linux operationsHow to test
Validation completed:
dimos a1z setup --sdk-onlydeno fmtcould not run becausedenois not installed locallyHardware acceptance still required
The PR remains a draft until physical acceptance is rerun after the cleanup.
AI assistance
Codex with GPT-5 performed the extraction, current-main adaptation, cleanup, tests, and validation. The implementation was ported from the existing Adventure X branch and narrowed to A1Z hardware support only.
Checklist