iAm.md: Robot Skill Self-Assessment through Agentic Introspection for Unknown Open-Vocabulary Domains
Sapienza University of RomeDepartment of Computer, Control and Management Engineering “Antonio Ruberti”
Accepted at AIRO 2026
13th Italian Workshop on Artificial Intelligence and Robotics
Held in conjunction with AI*IA 2026
Abstract
Language-model agents can generate plausible robot programs without establishing whether the deployed robot and the observed environment support the requested operation.
We present iAm.md, a structured Markdown self-description generated from robot deployment evidence.
Combined with open-vocabulary semantic memory and live ROS 2 observations, the representation supports agentic introspection: the agent inspects its embodiment and the scene, assesses the requested skill, and constructs executable task code.
Simulation experiments on TIAGo study navigation-and-manipulation tasks, tool construction, and reuse.
The TIAGo iAm.md
These excerpts cover identity and embodiment, physical structure, actuation, and sensing.
A coding agent resolves these facts against the URDF model, the live ROS 2 graph, and the deployment configuration.
Identity & embodiment
# iAm.md
## 1. Identity
- Robot Name: tiago (host `tiago-127c`; serial number 127)
- Manufacturer: PAL Robotics
- Model: TIAGo, single-arm configuration on PMB2 base
- Simulated: false
## 2. Embodiment Summary
- Embodiment description: Mobile service robot with a two-wheel differential base, vertically actuated torso, one 7-DOF arm mounted on the robot's right side, PAL two-finger parallel gripper, 2-DOF pan/tilt head, head-mounted Orbbec Astra RGB-D camera, base-mounted Hokuyo planar laser, IMU, three rear-facing sonars, four microphones, two 30-element LED devices, speaker, and MM11 service display. The URDF uses +X forward, +Y left, and +Z up.
- Mobility configuration: Untethered PMB2 differential-drive base with two independently driven wheels, four passive caster contact points represented by fixed URDF joints, per-wheel brakes, and a front charging connector at `base_dock_link`.
Identity, embodiment, and mobility configuration of the physical TIAGo instance.
Physical structure
## 3. Physical Structure
- Root link: `base_footprint`
- Modeled inertial mass: 84.31340184112 kg, summed from all URDF link inertial masses; eight frame-only links have no inertial element and contribute 0 kg to this model sum
### Planning Geometry
#### Navigation collision radius
- Scope: PMB2 base in the horizontal plane about `base_footprint`
- Reference condition: Configured navigation and laser-footprint-filter representation; independent of joint positions
- Geometry: Circular collision/inscribed radius 0.275 m
#### Gripper finger closing axes
- Scope: `gripper_left_finger_joint` and `gripper_right_finger_joint`
- Reference condition: Axes expressed in `gripper_link`; increasing joint position opens the gripper
- Geometry: Left finger opens along -X and closes along +X; right finger opens along +X and closes along -X. Each finger travels from 0 m closed to 0.045 m open.
URDF-derived structure, navigation geometry, and gripper closing axes.
Actuation
## 4. Actuation
### Differential-drive base control
- Actuated structure: `wheel_left_joint`, `wheel_right_joint`
- Command variables: Base linear velocity X and angular velocity Z
- Command reference: `base_footprint`; +X is forward and +Z angular velocity is counterclockwise
#### Command Limits
| Command variable | Limit | Value | Unit |
|---|---|---|---|
| Linear velocity X | minimum | -0.2 | m/s |
| Linear velocity X | maximum | 1.0 | m/s |
| Linear acceleration X | maximum | 0.5 | m/s² |
| Angular velocity Z | maximum | 1.05 | rad/s |
| Angular acceleration Z | maximum | 1.05 | rad/s² |
Differential-drive base control and the configured command limits.
Sensing
## 5. Sensing
### Head RGB-D camera
- Sensor type and model: Orbbec Astra-family structured-light RGB-D camera; USB product ID `2bc5:0402`; PAL udev maps this product ID to `/dev/astra_s` / Astra S, while the installed `astra_camera` device enumerator reports the generic device name `Astra`
- Robot-observed USB descriptor: Manufacturer `Orbbec(R)`, product `ORBBEC Depth Sensor`, USB 2.0 high-speed 480 Mb/s, bus-powered 500 mA, no serial string exposed
- Reference frame: `head_front_camera_color_optical_frame`, `head_front_camera_depth_optical_frame`
- Mounting reference frame: `head_2_link` for both reference frames
- Mounting pose: Color optical frame translation [0.076349159, 0.076202625, -0.032136465] m and quaternion [0.701411119, 0.007090825, 0.712705255, 0.004835527] [x, y, z, w]; depth optical frame translation [0.074106067, 0.075263811, -0.079235621] m and quaternion [0.703004662, 0.009294294, 0.711087914, 0.007213833] [x, y, z, w]
- Pose-dependent joints: `torso_lift_joint`, `head_1_joint`, `head_2_joint`
#### Measurement Properties
| Property | Value | Unit |
|---|---|---|
| Configured color width | 640 | pixel |
| Configured color height | 480 | pixel |
| Configured color rate | 30 | Hz |
| Configured depth width | 640 | pixel |
| Configured depth height | 480 | pixel |
| Configured depth rate | 30 | Hz |
| Configured infrared width | 640 | pixel |
| Configured infrared height | 480 | pixel |
| Configured infrared rate | 30 | Hz |
| Depth operating range | [0.4, 2.0] | m |
| Depth precision at 1 m | ±0.003 | m |
| Depth horizontal field of view | 58.4 | degree |
| Depth vertical field of view | 45.5 | degree |
| Color horizontal field of view | 63.1 | degree |
| Color vertical field of view | 49.4 | degree |
Camera identity, mounting geometry, pose-dependent joints, and configured measurement properties.
Selected passages from the physical TIAGo instance, distinct from the configuration used in the simulation experiments. Earlier project artifacts call the document ROBOT.md.
Simulation experiments
We used a simulated single-arm TIAGo to test whether iAm.md helps a coding agent write working robot-control code. The agent was given the same task in two runs: one with access to the robot description, and one without it.
Both runs used gpt-5.6-sol at medium reasoning effort through a custom harness based on DeepAgents.
Grasp a drink can and place it on a sofa.
With iAm.md, the agent built a tool that passed an independent test of the full task after 50.4 minutes. Without the description, the agent reached the 110-minute limit without passing that test.
The agent with iAm.md then adapted the same tool to move a cube to the other side of a table. In a separate evaluation, the semantic map located all twelve annotated scene objects, but recorded one object twice.
Preliminary real-robot deployment
In an initial deployment trial, TIAGo autonomously searches for and identifies a paper roll.
The subsequent grasp fails because of drift and calibration issues.