robo-infra
Robotics infrastructure SDK for prototyping and development.
Beta Software: This library is under active development. APIs may change. Not yet validated on real hardware in production environments.
Overview
robo-infra is a hardware-agnostic robotics SDK designed for prototyping, development, and educational projects. It provides simulation-first development with optional real hardware support.
Key Features
- Hardware Abstraction - Common interface for servos, motors, sensors, and controllers
- Simulation-First - Everything works without hardware by default
- AI-Native - Built-in integration with
ai-infrafor LLM-controlled robots - API-Ready - Seamless integration with
svc-infrafor REST/WebSocket APIs - Safety-First - Comprehensive limits, emergency stops, and collision detection
- ** Observable** - Full telemetry, logging, and monitoring built-in
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Your Application │
├─────────────────────────────────────────────────────────────┤
│ Controllers │ Motion Planning │ Safety Systems │
├─────────────────────────────────────────────────────────────┤
│ Actuators (Servos, Motors) │ Sensors (IMU, Distance) │
├─────────────────────────────────────────────────────────────┤
│ Hardware Drivers │
├─────────────────────────────────────────────────────────────┤
│ Buses (I2C, SPI, UART) │ Pins (GPIO, PWM, ADC) │
├─────────────────────────────────────────────────────────────┤
│ Platforms: Raspberry Pi │ Arduino │ Jetson │ Simulation │
└─────────────────────────────────────────────────────────────┘
Installation
Core Only (Minimal)
For embedded systems or when you just need robotics abstractions:
pip install robo-infra
With AI Integration
For LLM-controlled robots using ai-infra:
pip install robo-infra[ai]
With API Integration
For REST/WebSocket APIs using svc-infra:
pip install robo-infra[api]
With Hardware Support
For real hardware buses (I2C, SPI, Serial, CAN):
pip install robo-infra[hardware]
Full Installation
Install everything:
pip install robo-infra[full]
Platform-Specific Bundles
| Platform | Command |
|---|---|
| Raspberry Pi | pip install robo-infra[raspberry-pi] |
| NVIDIA Jetson | pip install robo-infra[jetson] |
| Generic Linux | pip install robo-infra[hardware] |
Granular Hardware Extras
| Feature | Extra | Command |
|---|---|---|
| I2C sensors | [i2c] |
pip install robo-infra[i2c] |
| SPI devices | [spi] |
pip install robo-infra[spi] |
| Serial/UART | [serial] |
pip install robo-infra[serial] |
| CAN bus | [can] |
pip install robo-infra[can] |
| GPIO | [gpio] |
pip install robo-infra[gpio] |
Vision & Camera Extras
| Feature | Extra | Command |
|---|---|---|
| OpenCV | [vision] |
pip install robo-infra[vision] |
| Intel RealSense | [realsense] |
pip install robo-infra[realsense] |
| Luxonis OAK | [oak] |
pip install robo-infra[oak] |
| Raspberry Pi Camera | [picamera] |
pip install robo-infra[picamera] |
| All cameras | [cameras] |
pip install robo-infra[cameras] |
Quick Start
from robo_infra.actuators import Servo
from robo_infra.core.types import Limits
# Create a servo (works in simulation by default)
servo = Servo(
name="gripper",
channel=0,
limits=Limits(min_value=0, max_value=180),
)
# Move to position
await servo.move_to(90)
# Get current position
print(f"Position: {servo.position}°")
With Real Hardware
from robo_infra.drivers import PCA9685Driver
from robo_infra.actuators import Servo
# Initialize hardware driver
driver = PCA9685Driver(i2c_address=0x40)
# Attach servo to driver
servo = Servo(
name="gripper",
driver=driver,
channel=0,
)
await servo.move_to(90)
AI Integration
from ai_infra import Agent
from robo_infra.actuators import Servo
from robo_infra.integrations import RobotTools
# Create robot components
servo = Servo(name="arm", channel=0)
# Export as AI tools
tools = RobotTools([servo])
# Use with AI agent
agent = Agent(tools=tools.as_tools())
await agent.run("Move the arm to 45 degrees")
API Integration
from svc_infra import create_app
from robo_infra.actuators import Servo
from robo_infra.integrations import RobotRouter
# Create robot components
servo = Servo(name="arm", channel=0)
# Export as API router
router = RobotRouter([servo])
# Add to app
app = create_app()
app.include_router(router.as_router(), prefix="/robot")
Core Concepts
Actuators
Physical components that create movement:
- Servo - Position-controlled rotational actuators
- Motor - Speed-controlled rotational actuators
- Stepper - Precise step-based motors
- LinearActuator - Linear motion actuators
Sensors
Components that measure the environment:
- IMU - Inertial measurement (accelerometer, gyroscope)
- Distance - Distance measurement (ultrasonic, ToF, IR)
- Temperature - Temperature sensors
- Current - Current sensing for motor feedback
Drivers
Hardware interfaces:
- PCA9685 - 16-channel PWM driver
- ADS1115 - 4-channel ADC
- MCP23017 - 16-bit I/O expander
Controllers
High-level control systems:
- ArmController - Robotic arm coordination
- DriveController - Differential/holonomic drive
- FlightController - Quadcopter/drone control
Documentation
Part of the nfrax Ecosystem
robo-infra is designed to work seamlessly with:
- svc-infra - Backend infrastructure (API, auth, database)
- ai-infra - AI/LLM infrastructure (agents, tools, embeddings)
License
MIT License - see LICENSE for details.
Metadata
Release files for robo-infra 0.5.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| robo_infra-0.5.3.tar.gz | 505.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| robo_infra-0.5.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / robo_infra-0.5.3.tar.gz
| Download URL | robo_infra-0.5.3.tar.gz |
|---|---|
| Size | 505.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c897a556ceb000332e35f24242c2ec96821083b08af67e24c95704f96b96e66a
|
|
BLAKE2b-256 checksum How to use checksums |
64490bc2cbd0b92970a61455ba20507bd1b5eb3bbba3ba720da2af2afbf7f783
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / robo_infra-0.5.3-py3-none-any.whl
| Download URL | robo_infra-0.5.3-py3-none-any.whl |
|---|---|
| Size | 587.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
93117780d47c03a1fdf04c22fbfd1f5870d4609765ccf6b796463344302221f9
|
|
BLAKE2b-256 checksum How to use checksums |
a1db8dfca97cb89ca1f921afc457a6fafcc9aa4b6482f418df93bd6736455fd2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for robo-infra 0.5.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.