feat(manip): GraspGenX provider on the grasping stack - #3874
Conversation
❌ 7 Tests Failed:
View the full list of 7 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
Greptile SummaryThis change adds GraspGenX-backed xArm grasping blueprints, agent-enabled variants, xArm-specific gripper/TCP configuration, and bounded retry behavior for ranked grasps after planning failures. The ranked-grasp fallback concern was disproved by execution. A focused harness exercised a successful pregrasp followed by a failed grasp plan for the first pose, then verified that the second pose was selected, executed, retracted, and recorded as the successful grasp. The same harness confirmed that No defects were found. Confidence Score: 5/5The reviewed ranked fallback behavior correctly advances only after a planning failure and preserves an unselected state when its attempt limit is reached. The executed failure path contradicted the identified fallback concern, and no findings remain. Files Needing Attention: No files require follow-up based on the validated behavior.
What T-Rex did
Important Files Changed
Reviews (1): Last reviewed commit: "feat(manip): GraspGenX provider on the g..." | Re-trigger Greptile |
d555f73 to
f20d694
Compare
035714d to
4ec6b7b
Compare
f20d694 to
ca351f9
Compare
4ec6b7b to
ab59259
Compare
ab59259 to
b642386
Compare
ca351f9 to
9f74c18
Compare
b642386 to
2efc41a
Compare
9f74c18 to
1f6b7ef
Compare
|
might be better to make all grasp methods a module config which can be modified from cli instead of brand new blueprint, here's the PR: #4032 |
xarm-grasp-graspgenx swaps HeuristicGraspModule for GraspGenXModule and changes nothing else; the two share every other module. GraspGenXModule already existed and had no caller. Two constants make the swap work. XARM_GRIPPER_SWEEP_VOLUME is the jaw geometry the network reasons about, measured off data/xarm_grasp_sim at the driver joint limits and expressed in GraspGenX's own convention. XARM_GRASP_FRAME_TO_TCP maps what GraspGenX predicts -- a pose on xarm_gripper_base_link, approach along +Z, jaws closing along X -- onto the planning tip frame: the 0.172 m offset is joint_tcp straight out of xarm_gripper.urdf.xacro, and the quarter turn puts the closing axis on the xArm gripper's Y. Ranked candidates also needed pick_object to stop assuming there is only one. It took candidates[0] and gave up if that pose would not plan, which is correct for a single-candidate heuristic and wrong for a spread of a hundred where the best-scoring pose is often the one the arm cannot reach. It now walks up to max_grasp_attempts candidates, demoting only on a planning failure -- a drive or execution fault would repeat identically for every candidate -- and reports the rank it won on.
1f6b7ef to
50f781e
Compare
2efc41a to
551063e
Compare
Add GraspGenX to the pick and place stack.
Ranked candidates also needed
pick_objectto stop assuming there is only one. It tookcandidates[0]and gave up if that pose would not plan.It now walks up to
max_grasp_attemptscandidates, demoting only on a planning failure, because a drive or execution fault would repeat identically for every one of them, and reports the rank it won on.Verified in the grasp sim: 100 ranked proposals in the planning frame, scores 0.84 down, and a pick that completes on rank 0 with score 0.966.
Seventh of nine in the xArm grasping re-landing stack.