Quickstart
Connect to OmniBot, drive it, and hand it a goal. The Python package is not on PyPI, so the snippets below are the intended API, not a command that runs today.
New here? Start with the Setup Guide for a complete walkthrough with illustrations.
1. Connect
from ohho import Robot
# Auto-detect the best runtime, or name a transport explicitly.
bot = Robot.connect("omnibot") # auto — sim fallback
dog = Robot.connect("unitree-go2", "dds://192.168.1.10")
arm_bot = Robot.connect("omnibot", "serial:///dev/ttyUSB0,/dev/ttyACM0")
ros_bot = Robot.connect("omnibot", "ros2://", runtime="ros2")
No hardware? Use the simulator — always available, no setup:
bot = Robot.connect("omnibot", transport="sim://")
2. Drive and read telemetry
Every robot exposes the same surface; capabilities a robot lacks are no-ops.
bot.drive(vx=0.2, vy=0.0, w=0.3) # holonomic where supported
print(bot.telemetry().odom) # x, y, theta, vx, vy, omega
if bot.has("manipulation"):
bot.move_joints([0.0, -0.5, 0.5, 0.0, 0.0, 0.2])
bot.emergency_stop() # halt everything immediately
bot.release_stop() # resume
3. Hand it a goal (the agent)
from ohho.agent import Agent
agent = Agent(bot) # pluggable brain: cloud or on-device
log = agent.run("find the red cup and bring it to the kitchen")
for line in log:
print(line)
The agent runs a continuous perceive → reason → act → reflect loop. With
the [agent] extra + ANTHROPIC_API_KEY, it uses a Claude tool-calling
reasoner that builds tools from the robot's capabilities. Without it, a
ScriptedBrain fallback exercises the robot deterministically.
4. Record data and train
from ohho.data import Recorder
rec = Recorder(bot, repo_id="local/demo", fps=10.0)
rec.start_episode(task="pick up the cup")
for _ in range(50):
bot.drive(vx=0.1)
rec.capture_frame()
rec.stop_episode()
rec.save("~/datasets/demo")
from ohho.train import finetune
ckpt = finetune(dataset="~/datasets/demo", policy="smolvla", device="auto")
5. Serve the trained policy
Coming soon. This command is not published and does not run today.
ohho serve --checkpoint ./checkpoints/smolvla --port 8000
6. Run a skill
Coming soon. This command is not published and does not run today.
ohho market list ohho market run omnibot patrol
CLI shortcuts
Coming soon. This command is not published and does not run today.
ohho doctor # check your environment ohho list # list built-in robots ohho connect omnibot # connect + print status + telemetry ohho sim --robot omnibot # launch the built-in simulator ohho drive omnibot --vx 0.15 # drive forward ohho agent omnibot "tidy the desk" # hand the agent a goal ohho serve --port 8000 # serve a policy over REST ohho market list # list registered skills ohho profile detect # detect your hardware profile
The same loop on a different robot
Because behavior is written against capabilities, not a specific robot, the exact agent code above runs unchanged on the quadruped or the arm:
Agent(dog).run("patrol the warehouse and report obstacles")
Next
- Setup Guide — complete walkthrough with illustrations
- Runtimes: ROS vs no-ROS
- Supported robots
- Training pipelines
- Skills & Market