ORBIE/DOCS/INTERFACE
// 00 — THE INTERFACE
Anything that can read a JPEG can drive this robot.
Every route is a GET. No SDK, no account, no cloud in the middle — the robot runs its own web server and answers to a shell, a browser bar, or any language that can make an HTTP request. The heavy thinking happens wherever you send the frames.
GET /capture | A single still, as JPEG.The one to point a vision model at. No firmware changes needed.→ image/jpeg |
GET /stream | Live MJPEG.Drop it straight into an <img src>.→ multipart/x-mixed-replace |
GET /status | Every sensor, once.Distance in millimetres, temperatures in °C.→ {"distance":37,"temp_ambient":45.0,"temp_object":39.8,"laser":false,"drive":0,"turn":0} |
GET /motor?drive=&turn= | Drive and steer.Differential drive — the two wheels run against each other to turn.→ ok |
GET /laser | Toggles the laser.One call, no argument. The cat does not need an API key.→ LASER_ON / LASER_OFF |
GET /face?expr= | Puts an expression on the display.bliss · center · down · happy · heart · left · love · neutral · right · up→ ok / unknown expr |
GET /beep | Speaker test tone.→ ok |
GET /ota/update | Push new firmware over the air.With /ota/info, /ota/status and /ota/rollback. You can brick-proof your own experiments.→ {"state":"...","percent":0,"message":"..."} |
# the robot prints its IP on boot — no mDNS on this build yet
ORBIE=http://192.168.1.42
curl -s $ORBIE/capture -o frame.jpg # what does it see?
curl -s $ORBIE/status # what does it feel?
curl -s "$ORBIE/motor?drive=40&turn=0" # go and have a look
curl -s "$ORBIE/face?expr=happy" # and be pleased about itThat is the entire integration surface. Point /capture at whatever model you like, decide something, and call /motor. The robot only has to be honest about what it sees and reliable about what it does.
Routes are read from the published firmware, inFirmware/components/camera/camera_server.c— check them there rather than taking this page’s word for it. Not every route has been verified on hardware yet; the ones we have run are distance, the face and the camera. There is no mDNS name on this build, so you reach it by IP.