Skip to content

ihmcrobotics/ihmc-java-ros2-communication

Repository files navigation

IHMC Java ROS 2 Communication

Java CI with Gradle

ROS2 messaging for Java.

Introduction

This library builds on IHMC Pub Sub Group, an allocation free Java library for DDSI-RTPS messaging. It uses modified versions of rosidl utilities to convert .msg files into Java types.

Features

  • 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

Download

In your build.gradle.kts:

Publish/subscribe API:

api("us.ihmc:ihmc-ros2-library:<version>") Latest: ihmc-ros2-library

Generator for .msg -> .java:

api("us.ihmc:ros2-msg-to-pubsub-generator:<version>") Latest: ros2-msg-to-pubsub-generator

IHMC ROS 2 Library

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.

Examples

See NonRealtimeROS2PublishSubscribeExample.java and RealtimeROS2PublishSubscribeExample.java.

Environment Options

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)

Note

The intermediate .idl files generated by this library are not valid to be used outside IHMC Pub/Sub.

License

Apache 2.0

Maintainer Notes

See docs/Making a release.md