Skip to content

Commit dcbe98c

Browse files
committed
add clear path before pick example
1 parent 929153f commit dcbe98c

10 files changed

Lines changed: 525 additions & 16 deletions

File tree

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ robotics loops rather than standalone algorithms.
1111

1212
## Current Status
1313

14-
- 29 runnable examples
14+
- 30 runnable examples
1515
- 20 learning-path roadmap examples
16-
- 28 README GIFs generated from runnable examples
17-
- 72 smoke and regression tests
16+
- 29 README GIFs generated from runnable examples
17+
- 73 smoke and regression tests
1818
- Core dependencies only: `numpy` and `matplotlib`
1919

2020
See `docs/status.md` for the implementation snapshot and `docs/plan.md` for
@@ -104,6 +104,10 @@ These GIFs are generated from the runnable examples, not separate animations.
104104
| --- | --- |
105105
| ![A grasp agent keeps a belief over three pose hypotheses, picks the grasp with highest expected success, misses, runs a Bayes update, and tries a different grasp.](docs/assets/gifs/belief_grasp_selection.gif) | ![A grasp agent looks from the viewpoint that maximally reduces occlusion under its pose belief, updates the belief from each observation, then grasps with the type that maximizes expected success.](docs/assets/gifs/active_viewpoint_for_grasp.gif) |
106106

107+
| Clear path before pick |
108+
| --- |
109+
| ![A tabletop agent tries to pick the target, gets a precondition failure because an obstacle blocks the gripper path, picks the obstacle, places it in the clear zone, and retries the original pick.](docs/assets/gifs/clear_path_before_pick.gif) |
110+
107111
### Navigation and recovery
108112

109113
| Reactive obstacle avoidance | Dynamic obstacle avoidance |
40.9 KB
Loading

docs/learning_paths.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
7. `examples/manipulation/07_probabilistic_suction_sorting.py`
3131
8. `examples/manipulation/08_belief_grasp_selection.py`
3232
9. `examples/manipulation/09_active_viewpoint_for_grasp.py`
33+
10. `examples/manipulation/25_clear_path_before_pick.py`
3334

3435
## Embodied AI
3536

docs/plan.md

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ first-run experience small, fast, and failure-aware.
88

99
The repository currently has:
1010

11-
- 29 runnable examples
11+
- 30 runnable examples
1212
- 20 numbered learning-path examples
13-
- 9 extra examples outside the original learning-path roadmap
14-
- 28 generated README GIFs
15-
- 72 smoke and regression tests
13+
- 10 extra examples outside the original learning-path roadmap
14+
- 29 generated README GIFs
15+
- 73 smoke and regression tests
1616
- GitHub Actions CI for Python 3.10, 3.11, and 3.12
1717
- core dependencies limited to `numpy` and `matplotlib`
1818
- optional Gymnasium-style adapters for `GridWorld2D`,
@@ -112,6 +112,10 @@ Recent completed work:
112112
then runs A* with full information to either a short route through the
113113
gate or a longer detour through the bottom opening. GIF and two smoke
114114
tests (open and closed gate) cover the loop.
115+
- `examples/manipulation/25_clear_path_before_pick.py` was added. The
116+
agent tries to pick the target, hits a `precondition_blocked` failure,
117+
picks the obstacle, places it in a known clear zone, and retries the
118+
original pick. GIF and smoke test cover the loop.
115119

116120
The next agent should not redo those items. If any of them seem missing, first
117121
check the current branch and latest pulled commit.
@@ -276,13 +280,14 @@ Already done from the previous tier:
276280
detection -> system_id probe -> model update -> resume.
277281
- `examples/navigation/24_information_gain_navigation.py` — scout the
278282
gate -> reveal candidate state -> A* with full information.
283+
- `examples/manipulation/25_clear_path_before_pick.py` — try target ->
284+
precondition fails -> pick obstacle -> place in clear zone -> retry.
279285

280286
Recommended next examples:
281287

282288
| Priority | Example | Area | Loop |
283289
| --- | --- | --- | --- |
284-
| 1 | `examples/manipulation/25_clear_path_before_pick.py` | manipulation | precondition failure -> clear obstacle -> pick |
285-
| 2 | `examples/navigation/27_multi_agent_avoidance.py` | navigation | observe agents -> avoid -> replan |
290+
| 1 | `examples/navigation/27_multi_agent_avoidance.py` | navigation | observe agents -> avoid -> replan |
286291

287292
Selection rule:
288293

docs/status.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ see what exists, what is verified, and what should come next.
55

66
## Snapshot
77

8-
- Runnable examples: 29
8+
- Runnable examples: 30
99
- Learning-path roadmap examples: 20
10-
- README GIFs: 28
11-
- Smoke and regression tests: 72
10+
- README GIFs: 29
11+
- Smoke and regression tests: 73
1212
- Core dependencies: `numpy`, `matplotlib`
1313
- Contributor extra: `pip install -e ".[dev]"`
1414
- CI: Python 3.10, 3.11, 3.12
@@ -30,7 +30,7 @@ goal-command example. The numbered 20-example roadmap is tracked in
3030
| --- | ---: | --- |
3131
| Runtime | 2 | smallest observe-act-observe loop, trace replay |
3232
| Navigation | 10 | reactive avoidance, dynamic obstacles, replanning, exploration, belief, active SLAM, MPC, recovery, localization recovery, information-gain detour |
33-
| Manipulation | 9 | retry, reactive grasping, IK servo, moving target reaching, search, push recovery, suction sorting, belief grasp selection, active viewpoint grasp |
33+
| Manipulation | 10 | retry, reactive grasping, IK servo, moving target reaching, search, push recovery, suction sorting, belief grasp selection, active viewpoint grasp, clear path before pick |
3434
| Embodied AI | 6 | controlled goals, memory, POMDP search, tiny VLA loop, object permanence, memory query revisit |
3535
| World models | 2 | action-conditioned dynamics, prediction error, model update, replanning, regime-shift detection, system identification |
3636

examples/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Run any example headless with its `--no-render` flag when available.
4040
| `manipulation/07_probabilistic_suction_sorting.py` | `python examples/manipulation/07_probabilistic_suction_sorting.py` | suction miss -> update probability -> prepare -> sort |
4141
| `manipulation/08_belief_grasp_selection.py` | `python examples/manipulation/08_belief_grasp_selection.py` | pose belief -> grasp choice -> miss -> update -> retry |
4242
| `manipulation/09_active_viewpoint_for_grasp.py` | `python examples/manipulation/09_active_viewpoint_for_grasp.py` | choose view -> reduce occlusion -> grasp |
43+
| `manipulation/25_clear_path_before_pick.py` | `python examples/manipulation/25_clear_path_before_pick.py` | try pick -> precondition fails -> clear obstacle -> retry |
4344

4445
## Embodied AI
4546

0 commit comments

Comments
 (0)