File size: 3,242 Bytes
12acba0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | ---
language:
- en
license: apache-2.0
pipeline_tag: robotics
tags:
- OpenRAL
- rskill
- any
inference: false
---
# rskill-playbook-find_object
A `kind: playbook` rSkill: a symbolic S2 **decision procedure** the
Reasoner reads, not a neural policy. It carries no weights β the authored
[`PLAYBOOK.md`](./PLAYBOOK.md) *is* its runtime.
## What this skill does
Locates a named object the request didn't give a pose for. It recalls the object
from spatial memory; on a miss it runs a **bounded commonsense active search**
(rank likely rooms/containers β navigate β open β look) and, if the search
budget is exhausted, escalates to a human. Concrete walkthrough: the water-bottle
example in [`PLAYBOOK.md`](./PLAYBOOK.md).
## How it works
This playbook is **content, not code**. When installed, the reasoner injects
`PLAYBOOK.md` into its system prompt and follows the SOP, composing tools it
already has (`recall_object`, `resolve_place`, `locate_in_view`,
`execute_rskill`, `memory_search`). It is `role: s2` and is **never** dispatched
through `ExecuteSkill`. Every motion it triggers is an `execute_rskill` β Action
chunk β C++ safety kernel β the playbook holds no actuation authority (CLAUDE.md
Β§1.1).
### Observation β action contract
None. A playbook emits no `Action` chunks and requires no actuators
(`actuators_required: []`, `chunk_size: 1`). Its "output" is the sequence of
tool calls the reasoner makes while following the SOP, bounded by
`playbook.max_steps`.
## How it was authored / Upstream provenance
N/A β a playbook is **hand-authored**, not trained: it has no weights and no
upstream model. Its provenance is the authoring decision record
(also linked via `paper_url`). To change behaviour, edit `PLAYBOOK.md` and bump
`version`.
## Supported robots
Embodiment-agnostic β declares the explicit wildcard `embodiment_tags: ["any"]`
(never an empty list). Gated by `capabilities_required`
(`has_vision: true` β a real `RobotCapabilities` flag): the loader filters it out
on robots without a camera. Navigation / container-opening are gated at runtime by
the composed tools, not by this playbook's flags.
## Sensors required
None directly. The tools it composes declare their own sensor needs.
## Manifest summary
- `kind: playbook`, `role: s2`, `actions: [plan]`, `chunk_size: 1`.
- `playbook.trigger`: the goal names an object whose location is not given.
- `playbook.done_predicate`: the target object is confirmed in view at a known pose.
- `playbook.max_steps`: 12.
## Quick start
```python
from openral_core.schemas import RSkillManifest
m = RSkillManifest.from_yaml("rskills/find-object/rskill.yaml")
assert m.kind == "playbook" and m.playbook is not None
print(m.playbook.trigger)
```
## Reproduction
Packaging-only: the manifest + SOP are validated by
`tests/unit/test_playbook_rskill_manifest.py`. There is no benchmark number to
reproduce; the playbook's behaviour is exercised by the reasoner integration
tests in later phases.
## Evaluation
N/A β no `eval/*.json`; a playbook produces no benchmarkable policy output.
## License
- **Code / content:** Apache-2.0.
- **Weights:** none.
## See also
- [`PLAYBOOK.md`](./PLAYBOOK.md) β the decision procedure itself.
|