Python-native robotics framework built on ROS2
Project description
ReachPy 🚀
ReachPy is a modern Python framework built to dramatically improve the Developer Experience (DX) for robotics engineers using ROS 2.
Building robotics applications in ROS 2 shouldn't mean wrestling with boilerplate, complex build pipelines, or rigid message compilation. ReachPy aims to provide a more Pythonic, intuitive, and dynamic interface to the ROS 2 ecosystem, letting you focus on writing robot logic rather than fighting the middleware.
✨ Why ReachPy?
While rclpy provides the standard bindings for ROS 2, the workflow often requires dropping down to C++ build tools (colcon, CMake) just to define custom data structures. ReachPy is being built to bridge this gap, offering dynamic runtime features powered by a high-performance Rust backend.
📦 Core Components
Dynamic Messaging (reachpy_messages)
At the core of ReachPy is our custom message serialization engine, written in Rust (via PyO3).
Instead of writing .msg files, recompiling your workspace, and sourcing environments just to add a new field to a message, reachpy_messages allows you to define, serialize, and deserialize native ROS 2 Common Data Representation (CDR) bytes on the fly.
- Dynamic Schema Registry: Register complex nested types, arrays, and primitives entirely at runtime.
- Native CDR Support: Outputs perfectly aligned Little-Endian bytes that are 100% compatible with standard ROS 2 nodes.
- Blazing Fast: Offloads the heavy lifting of byte-packing to Rust, ensuring your Python nodes stay performant.
🚀 Quick Start (Preview)
Note: ReachPy is currently in active development.
import reachpy
from reachpy.messages import MessageSchema, FieldSchema, FieldType
# 1. Define a ROS 2 compatible message entirely in Python
schema = MessageSchema(
name="RobotWaypoint",
fields=[
FieldSchema("x", FieldType.Float64),
FieldSchema("y", FieldType.Float64),
FieldSchema("is_active", FieldType.Bool)
]
)
# 2. Register it dynamically (no CMake or colcon build required!)
reachpy.messages.register_schema("RobotWaypoint", schema)
# 3. Serialize directly to ROS 2 CDR bytes to send over the wire
cdr_payload = reachpy.messages.serialize("RobotWaypoint", [15.2, -7.8, True])
🛠️ Building from Source
ReachPy uses Rust for its performance-critical extensions. You will need Rust and Python 3.8+ installed.
# Build and install the Rust extension locally
maturin develop --release
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 reachpy-0.1.0.tar.gz.
File metadata
- Download URL: reachpy-0.1.0.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ab32e695fe4a6917648fd809e475051fe7d3b7efd118c395f66efdc40268a1f
|
|
| MD5 |
1e1881b2144a7cf6b67c9853f48b6795
|
|
| BLAKE2b-256 |
bb1402074298ff7ca5b6a81a017a46db17c43e07672f6f6fd0cdf9b971273cc4
|
File details
Details for the file reachpy-0.1.0-cp311-cp311-manylinux_2_31_x86_64.whl.
File metadata
- Download URL: reachpy-0.1.0-cp311-cp311-manylinux_2_31_x86_64.whl
- Upload date:
- Size: 280.8 kB
- Tags: CPython 3.11, manylinux: glibc 2.31+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c49c0eb578635b117e7249120731f747bd0680eb1681bed5ebcf668a53d93961
|
|
| MD5 |
2f45636c0150ac3fceb253a7f17ab89d
|
|
| BLAKE2b-256 |
9bbcdc17cd8fbfb4e59a6929f77146a6282ebc030839f44ddb6b3e5f9f01fa9f
|