Skip to main content

Robotics SDK for prototyping and development (Beta)

Project description

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.

PyPI CI Python License Status

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-infra for LLM-controlled robots
  • API-Ready - Seamless integration with svc-infra for 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.

Project details


Download files

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

Source Distribution

robo_infra-0.4.0.tar.gz (505.6 kB view details)

Uploaded Source

Built Distribution

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

robo_infra-0.4.0-py3-none-any.whl (587.0 kB view details)

Uploaded Python 3

File details

Details for the file robo_infra-0.4.0.tar.gz.

File metadata

  • Download URL: robo_infra-0.4.0.tar.gz
  • Upload date:
  • Size: 505.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for robo_infra-0.4.0.tar.gz
Algorithm Hash digest
SHA256 d1767e494c658f19aa2249f6590cd5f0c42933e054f2c9c895ab55c9191610fe
MD5 7c3ca43d43eae6a31ae2c13552e6a140
BLAKE2b-256 939809504f004e32cbf2fff71aba9e9778ce3292c41d51a145a95721637daa7b

See more details on using hashes here.

File details

Details for the file robo_infra-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: robo_infra-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 587.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for robo_infra-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 012b6878ed62c7d61211340895655fc90139d3f4c3131e0e300f0395286b7d91
MD5 1fb7ff55c28035959ea621792b650c62
BLAKE2b-256 e13a08c903405b423a51869960ed0e3326b5e786557de27aee92925119d1a9c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page