Skip to main content

bonicos

The Python SDK for BonicBot robots. Drive the base, move the arms, run navigation and mapping, and read live sensor telemetry — from your own laptop or from a program running on the robot itself, with the same code either way.

pip install bonicos
from bonicos import BonicBot

with BonicBot("192.168.1.50") as robot:
    robot.move_forward(speed=0.3, duration=2)
    robot.move_left_arm(shoulder=45, elbow=30)
    print(robot.get_battery(), "V")
# motors stopped and the connection closed, even on an exception

Requires Python 3.10+. Pure Python — the same wheel runs on a laptop, a Raspberry Pi, or a Jetson.


Connecting

bonicos talks to the robot over your local network. You need the robot's address:

robot = BonicBot("192.168.1.50")

If the environment already knows which robot you mean, a bare BonicBot() works. That's the case when your program runs on the robot, where BONICOS_HOST is set for you — so a script you developed on your laptop needs no edits to run on the robot. You can also set that variable yourself, or install bonicos[discovery] to find a robot by mDNS.

On a classroom LAN with several robots, robot_id is optional but useful: pin it and the connection only succeeds against that specific robot —

robot = BonicBot("192.168.1.50", robot_id="M1_001")

— and it doubles as the filter for bonicos[discovery] when you don't know the address either (BonicBot(robot_id="M1_001")). Leave it off for the common case of one robot, or a host you already trust.

Anyone on the same network can connect. There is no authentication yet — robot_id is a wrong-robot guard, not a password. Run robots on a network you trust.

No robot handy? BonicBot.simulated() connects to a fake one instead — driving, arms, and telemetry all behave for real, with no network and no hardware required.


What you can do

Area Examples
Motion move_forward, move_backward, turn_left, turn_right, stop, raw drive
Precise motion drive_distance, rotate_angle, drive_and_rotate, draw_square, queued routines
Navigation go_to(x, y), navigate_waypoints, cancel_goal, wait_for_goal, get_plan
Mapping enter_mapping_mode, start_mapping, save_map, list_maps, enter_navigation_mode
Arms & grippers move_left_arm, move_right_arm, set_servos, set_gripper, set_neck, get_servo_angles
Sensors get_position, get_battery, get_imu, get_servo_angles, wait_for_update
Camera get_camera_frame() → BGR numpy arrays (needs pip install bonicos[camera])
System speak, health, session status and recovery

Full reference with every signature: API.md.

Movement calls block until the robot actually gets there — move_left_arm(...) returns when the joint has converged on its target, not when the command was merely acknowledged.

Not yet working on the robot

Some commands are accepted and silently do nothing on current robot firmware. Your code runs; that actuator just doesn't move. They are marked 🔌 stub in API.md:

  • Nav2 lifecycle — start_navigation, stop_navigation
  • servo_single

Head expression and the LED matrix (set_expression, look, display_*) are live on A series as of robot_app's face-matrix path. They need the base stack up, and a series with no matrix answers with an error rather than pretending. Two expressions — surprised and confused — have no face in firmware and show a heart and a colour effect; set_expression warns when it substitutes one.

Everything else in the table above is live. Vision pipelines (face/pose/object detection), autonomous exploration, and recorded sequences are not in this release.

On Lite robots (s1-lite, a2-lite) navigation and mapping are not stubs — they are absent, and raise CommandError rather than silently doing nothing. Motion, arms, display, speech, sensors and camera all work. The SDK does not check capability at runtime and the robot does not advertise it: API.md is the reference for what each model supports — every section carries an On Lite line.


Safety

  • Use the context-manager form (with BonicBot(...) as robot:) or call robot.close() in a finally. Both stop the robot on the way out.
  • The robot stops its own motors if it stops hearing from you (roughly 400 ms), so a crashed script or a dropped connection will not leave it driving. That backstop covers driving only — a navigation goal keeps running, so cancel it explicitly if you're bailing out.

Installing extras

pip install bonicos              # driving, arms, navigation, telemetry
pip install bonicos[camera]      # + camera frames (aiortc, numpy)
pip install bonicos[discovery]   # + find a robot by mDNS

Each extra reports what's missing if you use a feature without it, rather than failing with an import error.


Documentation

  • API.md — every class and method, with blocking behaviour and worked examples. Also the capability reference: each section's On Lite line says what that model supports.
  • PROTOCOL.md — the wire protocol, if you're writing your own client or working on the robot side.
  • examples/ — eleven runnable scripts, laptop or robot.
  • CHANGELOG.md — what changed between releases, including breaking changes and how to migrate.

License

MIT — see LICENSE. © Autobonics Pvt Ltd.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bonicos-0.7.0.tar.gz (149.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bonicos-0.7.0-py3-none-any.whl (83.2 kB view details)

Uploaded Python 3

File details

Details for the file bonicos-0.7.0.tar.gz.

File metadata

  • Download URL: bonicos-0.7.0.tar.gz
  • Upload date:
  • Size: 149.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for bonicos-0.7.0.tar.gz
Algorithm Hash digest
SHA256 bc97fe87e37ce27f9ef2885706d15ae1e756906d168a93a66353c5108aa50309
MD5 2e1716cdd426557826f5e46777059892
BLAKE2b-256 a934960d5c71033715a1fd268c7a8529ce743feab1f28b274ad4572132f77625

See more details on using hashes here.

File details

Details for the file bonicos-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: bonicos-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 83.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for bonicos-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 83dd8922545cb239f55bfa2490ca4c7f920082dabee3d8addcbe5a1349b567fa
MD5 1fc37dbe7b6a772f4b4d20018eb0984d
BLAKE2b-256 61f0ebcab1d1a01c4264410b07dbc3304f9005cbc2c3cc3be920263f5d0e6321

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 files

0.5.2

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page