ROS2 messaging for Java. Implements a ROS2 compatible layer with a Java JNI layer on top of Fast-DDS.
- Easy-to-use API for publishing and subscribing to ROS 2 topics
- Allocation free modules for realtime support
- Carries documentation from .msg files into Javadoc
- Gradle task for .msg -> .java generation
- Provided Java library for ROS common_interfaces, rcl_interfaces, and geometry2
- ROS 2 .msg to ROS 1 .msg generation
- Official ROS 2 compatibility when used with Fast-DDS middleware
In your build.gradle.kts
:
Publish/subscribe API:
api("us.ihmc:ros2-library:<version>")
Latest:
Generator for .msg
-> .java
:
api("us.ihmc:ros2-msg-to-pubsub-generator:<version>")
Latest:
This library provides a minimal implementation of a ROS 2 node in Java. Two versions are available:
- ROS2Node: Publishes in the same thread and uses direct callbacks for incoming messages.
- RealtimeROS2Node: Stores outgoing and incoming messages in a queue and uses non-blocking calls to publish messages and allows polling for new messages.
See NonRealtimeROS2PublishSubscribeExample.java
and RealtimeROS2PublishSubscribeExample.java
.
Environment Variable | Description |
---|---|
ROS_DOMAIN_ID | Set the ROS 2 domain ID to use (integer, 0-101) |
ROS_DISABLE_SHARED_MEMORY_TRANSPORT | Disable shared memory transport if set to true |
ROS_DEFAULT_QOS | QoS for topics that don't specify it (RELIABLE or BEST_EFFORT ) |
The intermediate .idl files generated by this library are not valid to be used outside IHMC Pub/Sub.
Apache 2.0