Simple & intuitive Python API for HORUS robotics framework - ultra-low latency IPC and real-time scheduling
Project description
HORUS Robotics - Python Bindings
Ultra-low latency robotics framework with Python bindings - 100x faster than ROS2.
HORUS is a production-grade robotics framework built in Rust, delivering 87ns IPC latency and 12M+ messages/second throughput. This package provides native Python bindings via PyO3.
Installation
pip install horus-robotics
Quick Start
import horus
# Create a publisher
pub = horus.Publisher("sensor.data")
# Create a subscriber
sub = horus.Subscriber("sensor.data")
# Publish data
pub.publish({"temperature": 25.5, "humidity": 60})
# Receive data
data = sub.receive()
print(data)
Features
- Ultra-Low Latency: 87ns IPC latency (100x faster than ROS2)
- High Throughput: 12M+ messages/second
- Zero-Copy: Shared memory transport for maximum performance
- Type-Safe: Strong typing with Pydantic-like validation
- Cross-Language: Seamless interop with Rust and C++ nodes
- Real-Time Ready: Priority-based scheduling with deadline guarantees
Core Components
Publisher/Subscriber (Hub)
Multi-producer multi-consumer pub/sub with ~481ns round-trip latency:
import horus
# Publisher
pub = horus.Publisher("robot.commands")
pub.publish({"velocity": [1.0, 0.0, 0.0]})
# Subscriber
sub = horus.Subscriber("robot.commands")
msg = sub.receive(timeout_ms=100)
Point-to-Point (Link)
Single-producer single-consumer for lowest latency (~248ns):
sender = horus.LinkSender("fast.channel")
receiver = horus.LinkReceiver("fast.channel")
sender.send(data)
data = receiver.recv()
Nodes
Create custom processing nodes:
import horus
class SensorNode(horus.Node):
def __init__(self):
super().__init__("sensor_node")
self.pub = horus.Publisher("sensor.data")
def tick(self):
reading = self.read_sensor()
self.pub.publish(reading)
# Run the node
node = SensorNode()
horus.run(node, rate_hz=100)
Message Types
HORUS provides standard robotics message types:
from horus.messages import (
Twist, # Velocity commands
Pose, # Position + orientation
Image, # Camera images
PointCloud, # 3D point clouds
JointState, # Robot joint positions
LaserScan, # LIDAR data
Imu, # IMU readings
NavSatFix, # GPS coordinates
WrenchStamped, # Force/torque sensor
)
Performance Comparison
| Framework | IPC Latency | Throughput |
|---|---|---|
| HORUS | 87ns | 12M+ msg/s |
| ROS2 (FastDDS) | 50-100us | ~100K msg/s |
| ZeroMQ | 10-30us | ~1M msg/s |
Documentation
- Full Documentation: docs.horus-registry.dev
- Getting Started: Installation Guide
- API Reference: Python API
- Examples: GitHub Examples
Requirements
- Python 3.9+
- Linux (x86_64)
- glibc 2.39+
Related Packages
horus- Full HORUS framework (Rust CLI + runtime)horus-library- Standard message types and nodes
License
Apache-2.0 - see LICENSE
Links
- GitHub: github.com/softmata/horus
- Discord: Join Community
- Documentation: docs.horus-registry.dev
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file horus_robotics-0.1.7.tar.gz.
File metadata
- Download URL: horus_robotics-0.1.7.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29ee65dc4b4ce43ddf1dbafc25bc6c07c122a2f765df6356335cd14e4459acee
|
|
| MD5 |
4b7aeb1013659972e8c106961b4d54ac
|
|
| BLAKE2b-256 |
35645ce4de5681d0bc65b2581472bd6f15c71bc04dd02bc38ba753807c0a664a
|
File details
Details for the file horus_robotics-0.1.7-cp39-abi3-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: horus_robotics-0.1.7-cp39-abi3-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 26.3 MB
- Tags: CPython 3.9+, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dd906a12fc1f5a5a5baed25042ba4f5a5ef107fa6554cfc9715c63a54a89f6d
|
|
| MD5 |
c127015d1c5f366afd053e9f8f7ff349
|
|
| BLAKE2b-256 |
c3fd7d5d89b12ef319eee22677e9cffd4d4da6785f773cbc2023761fa2779bf8
|