-
Notifications
You must be signed in to change notification settings - Fork 2
Java node
Mickael Gaillard edited this page Jun 11, 2017
·
6 revisions
How to write your first Java Node.
make a folder in ROS2 workspace
mkdir -p src/my_workspace/my_package
cd src/my_workspace/my_package
create package descriptor
package.xml
with
<?xml version="1.0"?>
<package format="2">
<name>my_package</name>
<version>0.1.0</version>
<description>Description of your Java package.</description>
<maintainer email="you@domaine.tld">Firstname Lastname</maintainer>
<license>Your license</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<buildtool_depend>ament_cmake_export_jars</buildtool_depend>
<buildtool_depend>ament_build_type_gradle</buildtool_depend>
<buildtool_depend>rosidl_default_generators</buildtool_depend>
<buildtool_depend>rosidl_generator_java</buildtool_depend>
<build_depend>rcljava</build_depend>
<build_depend>std_msgs</build_depend>
<exec_depend>rcljava</exec_depend>
<exec_depend>std_msgs</exec_depend>
<export>
<build_type>ament_gradle</build_type>
</export>
</package>
create Gradle build.gradle with
plugins {
id "org.ros2.rcljava" version "0.4.10"
}
apply plugin: 'org.ros2.rcljava'
repositories {
jcenter()
}
dependencies {
testCompile 'junit:junit:4.12'
}
ament {
generateEclipse = true
scripts {
my_package_java {
mainClassName = 'tld.domain.MyNode'
}
}
}
mkdir -p src/main/java/tld/domain
cd src/main/java/tld/domain
and add your node source code MyNode.java
package tld.domain;
import org.ros2.rcljava.RCLJava;
import org.ros2.rcljava.node.Node;
import org.ros2.rcljava.node.topic.Publisher;
import std_msgs.msg.String;
public class MyNode {
public static void main(String args[]) {
// Initialize RCL
RCLJava.rclJavaInit(args);
// Let's create a Node
Node node = RCLJava.createNode("my_package");
String msg = new String();
Publisher<String> publisher = node.<String>createPublisher(String.class, "my_topic");
while(RCLJava.ok()) {
msg.setData("Hello World");
System.out.println("Publishing: \"" + msg.getData() + "\"");
publisher.publish(msg);
// Sleep a little bit between each message
Thread.sleep(500);
}
publisher.dispose();
node.dispose();
RCLJava.shutdown();
}
}
from root workspace !
ament build --symlink-install --isolated --only-package my_package
from root workspace !
. ./install_isolated/local_setup.sh
my_package_java
Et voila !