ROS2 messaging for Java. Implements a ROS 2 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
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.
Create ROS2Node and RealtimeROS2Node with ROS2NodeBuilder:
ROS2Node ros2Node = new ROS2NodeBuilder().build("test_node");
RealtimeROS2Node realtimeROS2Node = new ROS2NodeBuilder().buildRealtime("realtime_test_node");
dependencies {
implementation("us.ihmc:ros2-library:1.0.0")
}
See ROS2TalkerExample.java
and ROS2PublishSubscribeExample.java
.
Environment Variable | Description |
---|---|
ROS_DOMAIN_ID | Set the ROS 2 domain ID to use (integer, 0-101) |
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.