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.1a1.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.1a1-cp311-cp311-manylinux_2_31_x86_64.whl (280.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.31+ x86-64

File details

Details for the file reachpy-0.1.1a1.tar.gz.

File metadata

  • Download URL: reachpy-0.1.1a1.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.1a1.tar.gz
Algorithm Hash digest
SHA256 025b9e12ff9aae45b4a3e57b4c501ed7c175c8fa497663144cfbf50025b40fff
MD5 869d6903bc1edefa598d5e297d8bdd57
BLAKE2b-256 8d9829780467860c524cdbcd0fd362b428ecc2a306ee5db27a166a60b2784cac

See more details on using hashes here.

File details

Details for the file reachpy-0.1.1a1-cp311-cp311-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.1a1-cp311-cp311-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 9ea5efa66ca12960c1578013a0dd168235c0e9d1e1e40fadbc47bd5e3f802ad0
MD5 f464c72199051e0be17b16e8e853efc7
BLAKE2b-256 4dee8e3563ae7e62fbfa0253222de30070e6a640973348a438bf6061839a69b3

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