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.5.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.5.0-py3-none-any.whl (587.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: robo_infra-0.5.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.5.0.tar.gz
Algorithm Hash digest
SHA256 f9f51c58d51591c912e17ddaececed7605137522bd346cbf6bf13e6143cac5e1
MD5 bb7c9fdc0a239f0ec0aea01b1a9562bc
BLAKE2b-256 018077cdc2b58e6d9d49f6e2090dbc5819c97625580704036ccc638f58ed1ec5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: robo_infra-0.5.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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 848b08f5ee7bee4acc9cdd4c4a0c5546ed046f32f80ad1475c2febdcb89e9a5f
MD5 a2a1eb072898ec13ce767498d3d7d499
BLAKE2b-256 eb1f87bea2bf98809d962d4aa552cb799b80b87c2a49795ba12df2df06a971a7

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