Skip to main content
The Mobility interface gives you direct control over the robot base—rotation, velocity commands, and movement. Use it for custom navigation behaviors that complement the built-in navigation.

Core Navigation (Built-in)

The robot comes with built-in navigation that the agent calls innately. You don’t need to implement this—it works out of the box. Do not modify the core navigate_to_position skill. It’s a system-level skill that the agent uses automatically. Modifying it could break navigation behavior. When you tell the robot “go to the kitchen,” the agent automatically:
  1. Translates “kitchen” to map coordinates (if the location is saved)
  2. Calls the built-in navigation skill
  3. Monitors progress and handles obstacles

Mobility

Declare the interface with a class-level type annotation. Declaring is requiring — the run fails up front if the base is unavailable, so self.mobility is guaranteed inside execute():

Methods

Examples

Closed-loop moves

send_cmd_vel is open loop — it commands a speed and hopes. When you need the robot to actually arrive, drive() and rotate_by() watch odometry and correct until they get there:
odom_xyt() turns the odometry feed into the plain (x, y, theta) tuple these take. Both return True on arrival and False on timeout or lost odometry — they never raise. They stop the base on the way out, whatever happened.

When to Use

Example: LookAround

A skill that rotates to survey the environment, written with every agent-facing method explicit:
Cancellation needs no plumbing: self.sleep() raises the moment the user or agent interrupts, the base is braked for you, and the run reports CANCELLED.