Skip to main content

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


Download files

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

Source Distribution

reachpy-0.1.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

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

reachpy-0.1.0-cp311-cp311-manylinux_2_31_x86_64.whl (280.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.31+ x86-64

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

Hashes for reachpy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4ab32e695fe4a6917648fd809e475051fe7d3b7efd118c395f66efdc40268a1f
MD5 1e1881b2144a7cf6b67c9853f48b6795
BLAKE2b-256 bb1402074298ff7ca5b6a81a017a46db17c43e07672f6f6fd0cdf9b971273cc4

See more details on using hashes here.

File details

Details for the file reachpy-0.1.0-cp311-cp311-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.0-cp311-cp311-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 c49c0eb578635b117e7249120731f747bd0680eb1681bed5ebcf668a53d93961
MD5 2f45636c0150ac3fceb253a7f17ab89d
BLAKE2b-256 9bbcdc17cd8fbfb4e59a6929f77146a6282ebc030839f44ddb6b3e5f9f01fa9f

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