Skip to main content

pamoja-ros2

ROS 2 names, RIHS01 type hashes, CDR encoding, and rmw_zenoh key assembly, with no ROS 2 installed. One capability of pamoja, one memory-safe Rust core with bindings for TypeScript, Python, and C#.

read the guide documentation API reference

Install

pip install pamoja-ros2
from pamoja import ros2

This pulls in pamoja-native, the compiled engine. pip install pamoja is the whole framework in one package.

Example

The script the test suite runs, spliced here as it ran.

From bindings/python/guides/ros2.py:

from pamoja.ros2 import EntityKind, dds_topic, dds_type_name, is_fully_qualified, is_valid_name

# A name is slash-separated tokens. A token may hold letters, digits, and underscores, and
# may not begin with a digit, which is the rule that catches most generated names.
for name in ("/robot1/camera_left/image_raw", "/2foo"):
    print(f"{name} is a valid name: {is_valid_name(name)}")
print(f"chatter is fully qualified: {is_fully_qualified('chatter')}")
print(f"/chatter is fully qualified: {is_fully_qualified('/chatter')}")

# On the wire a topic carries a prefix that says what kind of endpoint it is, so a
# subscription and a service request never collide in the same DDS partition.
published = dds_topic("/robot1/cmd_vel", EntityKind.TOPIC)
asked = dds_topic("/robot1/add", EntityKind.SERVICE_REQUEST)
answered = dds_topic("/robot1/add", EntityKind.SERVICE_RESPONSE)
print(f"a topic    becomes {published}")
print(f"a request  becomes {asked}")
print(f"a response becomes {answered}")

# A message type maps to a DDS type name the same way, so both ends agree on what is being
# carried before a byte is exchanged.
print(f"std_msgs/msg/String becomes {dds_type_name('std_msgs/msg/String')}")
print(f"a malformed type name becomes {dds_type_name('not a type')}")

The same capability in every language

Language Package Reference
Rust pamoja-ros2 reference, docs.rs, install
TypeScript @pamoja/ros2 reference, install
Python pamoja-ros2 reference, install
C# Pamoja.Ros2 reference, install

Documentation

License

MIT

Release files for pamoja-ros2 0.1.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pamoja-ros2 0.1.18
File Size Uploaded
pamoja_ros2-0.1.18.tar.gz 3.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pamoja-ros2 0.1.18
File Interpreter ABI Platform
pamoja_ros2-0.1.18-py3-none-any.whl Python 3 none any Details

Total release size: 8.0 kB

Release files / pamoja_ros2-0.1.18.tar.gz

Download URL pamoja_ros2-0.1.18.tar.gz
Size 3.6 kB
Tags Source
SHA-256 checksum
How to use checksums
14664cfaaa43a120cf10503a242b67c085f4d801d1966052b4daa0ca08edd5f6
BLAKE2b-256 checksum
How to use checksums
a5a2cd1fbb942964954068dc7a2538bb55abf54bc453f730293fecffbc5d3f82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / pamoja_ros2-0.1.18-py3-none-any.whl

Download URL pamoja_ros2-0.1.18-py3-none-any.whl
Size 4.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
31f4645c648423b12e24638c4c82225262a1a3214108e75e8efa4753d13b1443
BLAKE2b-256 checksum
How to use checksums
f9edf027d3c2e3f11407426f6da1a175cd8d5156ee77e5ef1d88e344ff942168
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.18 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page