Repository navigation
Conversation
There was a problem hiding this comment.
go2 replay realtime (arm64)
Details
| Benchmark suite | Current: 3920bf8 | Previous: 14c62ab | Ratio |
|---|---|---|---|
peak memory |
1741.602 MB |
1762.355 MB |
0.99 |
peak threads |
369 threads |
385 threads |
0.96 |
network (transport) |
2726.658 MB |
2731.013 MB |
1.00 |
disk write |
1.863 MB |
1.605 MB |
1.16 |
instructions |
139.571 G |
138.791 G |
1.01 |
This comment was automatically generated by workflow using github-action-benchmark.
❌ 18 Tests Failed:
View the top 3 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
511252d to
35bc7f9
Compare
| priority: int = 10 | ||
| hold_duration: float = 0.0 | ||
| open_at: OpenAt = "upper" | ||
| require_feedback: bool = False |
There was a problem hiding this comment.
should not need these addition. r1pro gripper handling should stay within connection module
[Medium impact] The PR adds independent jaw actuation to the R1Pro manipulation workflow. Fix the uncleared-fault command path and the test race before merging. FindingsSummaryAdds independent left and right R1Pro jaws through ordinary position joints and the existing manipulation API.
Other reviewed concerns were set aside:
Reviews (1) · Last reviewed commit: "refactor(r1pro): trim gripper channel st..." · Reviewed by Greptile |
| return ( | ||
| self.measured_m is not None | ||
| and now - self.feedback_at <= timeout_s | ||
| and all(now - at > timeout_s for at in self.faults.values()) |
There was a problem hiding this comment.
Uncleared faults stop blocking commands
If the status stream stalls after reporting a fault while jaw measurements continue, valid() becomes true after gripper_feedback_timeout_s—one second by default. A different opening then reaches the vendor controller despite the unresolved torso, arm, or jaw fault. Keep reported faults blocking until an explicit clear arrives.
| wait_until(lambda: bool(r.jaw_readings()), timeout=5.0) | ||
| assert list(r.jaw_readings()[-1].position) == pytest.approx([0.02, 0.04]) |
There was a problem hiding this comment.
feed_grippers() delivers the left and right callbacks separately. The publish thread can run between them and publish only the left jaw. That satisfies this wait, but the next assertion requires both positions.
Wait for a reading containing both expected joint names. This race violates the repository's requirement to avoid flaky tests and use proper synchronization, so it must be fixed before merging.
Rule Used: Do not introduce flaky behavior into the test suite. Both project code and test code must ensure proper cleanup of processes and other resources, and should avoid race conditions caused by timing-based sleeps when synchronization primitives such as l... (source)
Overview
Add independent R1Pro grippers through the existing manipulation API. Stacked on #5017.
Problem
Each manipulation group needs its own jaw without changing generic control policy.
Changes
Validation