Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
36e0426
Add Javadoc
Theosakamg Aug 28, 2016
bbe8d3a
Add QOS profile
Theosakamg Aug 29, 2016
3d92ae0
Refactor code
Theosakamg Aug 29, 2016
bd91f71
Add Test and Service
Theosakamg Aug 29, 2016
3bb686a
Add Service and Client Java class
Theosakamg Aug 30, 2016
6a5934d
Add Service consumer
Theosakamg Aug 31, 2016
c48c097
Moved class to service package
Theosakamg Sep 1, 2016
40a11a7
Added Parameters
Theosakamg Sep 1, 2016
4b97081
Updated CMakeLists.txt
Theosakamg Sep 1, 2016
8b9afa1
Disabled parameter stack
Theosakamg Sep 1, 2016
3c585c0
Enabled service rosidl_generator_java
Theosakamg Sep 1, 2016
6eb60d6
Cleaned code
Theosakamg Sep 3, 2016
4ce5c2c
Move/refactor loadLibrary and added logger.
Theosakamg Sep 4, 2016
8039e0a
Added log native library and Fix
Theosakamg Sep 4, 2016
352fc6b
Merge branch 'master' of github.com:Theosakamg/ros2_java into ros2_al…
Theosakamg Sep 4, 2016
e1fb64a
Merge branch 'master' of https://github.com/esteve/ros2_java
Theosakamg Sep 4, 2016
f98b0c2
Add Test and Service
Theosakamg Aug 29, 2016
0ec8a29
Disabled console logger.
Theosakamg Sep 4, 2016
e512efb
Add Testing stack rcljava
Theosakamg Sep 10, 2016
c33bc17
Merge branch 'enableTest' of github.com:Theosakamg/ros2_java into ros…
Theosakamg Sep 10, 2016
346e89d
Fixed test build
Theosakamg Sep 10, 2016
96316ca
Added JNI call
Theosakamg Sep 11, 2016
aad7432
Splited jar test
Theosakamg Sep 11, 2016
0e4add8
Fix test compile
Theosakamg Sep 11, 2016
c0c90b0
Add Header and Tests
Theosakamg Sep 11, 2016
8745671
Fixed bad type object
Theosakamg Sep 12, 2016
da69b5b
Rebase from master
Theosakamg Sep 12, 2016
67bcfdf
Merge branch 'master' of https://github.com/esteve/ros2_java
Theosakamg Sep 12, 2016
0b33987
Cleaned JNI
Theosakamg Sep 18, 2016
ccbf70d
Added GetName and Dispose of Node
Theosakamg Sep 18, 2016
96e48e3
Added RclJavaInit with arg and Publisher dispose
Theosakamg Sep 18, 2016
ded8b50
Added JNI count (Pub&Sub) and get topics
Theosakamg Sep 19, 2016
0bd21ee
Added Message interface
Theosakamg Sep 24, 2016
a6616bb
Restructured project
Theosakamg Sep 25, 2016
89452db
Added doc generate message
Theosakamg Sep 25, 2016
1266814
Fixed rosidl generator java
Theosakamg Sep 25, 2016
64827dd
Fixed include path
Theosakamg Sep 26, 2016
21b6fdd
Added Logger
Theosakamg Sep 28, 2016
2485772
Merge remote-tracking branch 'origin/master' into ros2_alpha7
Theosakamg Sep 29, 2016
fc3cf26
Add getNodeNames
Theosakamg Sep 29, 2016
f0889cf
Added Package javadoc
Theosakamg Sep 29, 2016
71a091c
fix classpath
Theosakamg Oct 2, 2016
6c6d6d2
Updated gitignore
Theosakamg Oct 2, 2016
85efa54
Fix merge error on convertFromJava and make unique Message class
Theosakamg Oct 2, 2016
8870f2b
Removed internal message (add only on rosidl_generator_java)
Theosakamg Oct 3, 2016
64123b2
Add start script with parameters
Theosakamg Oct 3, 2016
654ace2
Clean code
Theosakamg Oct 3, 2016
a528b9c
Merge branch 'master' of https://github.com/esteve/ros2_java into ros…
Theosakamg Oct 3, 2016
e4d6836
Use Build folder for find lib
Theosakamg Oct 4, 2016
994d7fd
Merge branch 'master' of https://github.com/esteve/ros2_java into ros…
Theosakamg Oct 7, 2016
ec402f5
Fixed #1 Bad array converter
Theosakamg Oct 15, 2016
ece225e
Message new design
Theosakamg Oct 17, 2016
0bcfbc3
Clean generate message
Theosakamg Oct 19, 2016
e20db9c
Add protection on wait
Theosakamg Oct 21, 2016
dfd7600
Fixed bad control for wait
Theosakamg Oct 21, 2016
3ad80c2
Added Parameters support
Theosakamg Oct 23, 2016
efc7cab
added git ignore new extention
Theosakamg Oct 23, 2016
41d4350
Fix ROS logger
Theosakamg Oct 23, 2016
06a4a13
Fixed Bad JNI onload
Theosakamg Oct 23, 2016
6941299
Merge branch 'ros2_alpha7' to master
Theosakamg Oct 24, 2016
8a1a802
Merge branch 'master' of https://github.com/esteve/ros2_java
Theosakamg Oct 25, 2016
c7e9bac
Fix error new Qos
Theosakamg Oct 25, 2016
cee17d6
Clean logger call
Theosakamg Oct 25, 2016
76e1a62
Clean log and update parameter stack
Theosakamg Oct 30, 2016
c642029
Disabled warning (managed)
Theosakamg Oct 30, 2016
bb8ef7e
Clean API
Theosakamg Oct 30, 2016
835fb07
Upgrade life cycle
Theosakamg Oct 31, 2016
72adac9
Custom repo
Theosakamg Nov 1, 2016
2d38700
Fixed link to wiki
Theosakamg Nov 1, 2016
d821671
Merge branch 'master' of https://github.com/esteve/ros2_java
Theosakamg Nov 1, 2016
58b4bd8
update repo
Theosakamg Nov 1, 2016
ea538ad
fix bad path
Theosakamg Nov 1, 2016
a5ef56e
Add Travis badge
Theosakamg Nov 1, 2016
07a7558
Prepare for merge
Theosakamg Nov 1, 2016
1d284c7
Merge branch 'master' of github.com:Theosakamg/ros2_java
Theosakamg Nov 1, 2016
bb3581b
Fix move of RMWRequestId
Theosakamg Nov 1, 2016
983f0e9
Fixed RMWRequestID new namespace
Theosakamg Nov 1, 2016
9d2dd7e
Fix lint
Theosakamg Nov 5, 2016
2e0b89b
fixed twice dispose node
Theosakamg Nov 5, 2016
207949e
Add Interfaces RCL
Theosakamg Nov 6, 2016
28424bc
Added event parameter
Theosakamg Nov 8, 2016
cbc12e6
Fixed deleted event parameter
Theosakamg Nov 8, 2016
588f1d6
Fixed Test and Lint
Theosakamg Nov 9, 2016
6c76b20
Add topics and service name
Theosakamg Nov 11, 2016
3702c06
Use GraphName
Theosakamg Nov 12, 2016
9936e1c
Fixed Test
Theosakamg Nov 13, 2016
2877867
Update repository name
Theosakamg Nov 13, 2016
0f9270a
Update Travis build
Theosakamg Nov 13, 2016
da15122
Rename variation
Theosakamg Nov 13, 2016
979eb54
Switch to travis ros2java-alfred
Theosakamg Nov 13, 2016
1f39ee4
Merge branch 'master' of https://github.com/esteve/ros2_java
Theosakamg Nov 13, 2016
aad11cc
Added badges
Theosakamg Nov 15, 2016
fc1ae07
Add new docker image and extra badge
Theosakamg Nov 17, 2016
6804c3c
Disable docker login (temporal)
Theosakamg Nov 17, 2016
45fcfa2
Fixed patch path
Theosakamg Nov 17, 2016
62c714f
Added coveralls
Theosakamg Nov 18, 2016
120ad72
Enable all tests
Theosakamg Nov 19, 2016
4619fd1
Added Fix from esteve
Theosakamg Nov 19, 2016
9d4e13a
Fixed all tests
Theosakamg Nov 19, 2016
fa4a152
Merge branch 'master' of github.com:ros2java-alfred/ros2_java
Theosakamg Nov 19, 2016
0dca2ae
Attached lastest repo
Theosakamg Nov 19, 2016
501b9c2
Fixed patch android
Theosakamg Nov 20, 2016
86df4ba
Add javapath template for messages generation
Nov 20, 2016
62120ca
Add full sensor_msgs
Theosakamg Nov 21, 2016
41670fb
Merge branch 'master' of https://github.com/esteve/ros2_java
Theosakamg Nov 27, 2016
d698197
clean code
Theosakamg Nov 27, 2016
9b3f7b6
Clean code
Theosakamg Nov 27, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ coverage.xml

# Sphinx documentation
docs/_build/
doc/

# PyBuilder
target/
Expand Down Expand Up @@ -83,3 +84,9 @@ gradle-app.setting

# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties

# Eclipse
*.launch
.project
.cproject
.pydevproject
32 changes: 23 additions & 9 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,36 @@ services:

before_install:
- docker login -e="$DOCKER_EMAIL" -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
- docker pull esteve/ros2-ubuntu-xenial-travisci:java
- docker pull theosakamg7/ros2java:latest
- cd /home/travis/build
- mkdir -p ament_ws/src
- cd /home/travis/build/ament_ws
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` esteve/ros2-ubuntu-xenial-travisci:java sh -c "/usr/bin/wget https://raw.githubusercontent.com/esteve/ament_java/master/ament_java.repos"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` esteve/ros2-ubuntu-xenial-travisci:java sh -c "/usr/bin/vcs import src < ament_java.repos"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` esteve/ros2-ubuntu-xenial-travisci:java sh -c "src/ament/ament_tools/scripts/ament.py build --symlink-install --isolated"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` theosakamg7/ros2java:latest sh -c "/usr/bin/wget https://gist.githubusercontent.com/Theosakamg/e6084cfafa6b7ea690104424cef970a2/raw/ament_java.repos"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` theosakamg7/ros2java:latest sh -c "/usr/bin/vcs import src < ament_java.repos"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` theosakamg7/ros2java:latest sh -c "src/ament/ament_tools/scripts/ament.py build --symlink-install --isolated"
- cd /home/travis/build
- mkdir -p ros2_java_ws/src
- cd /home/travis/build/ros2_java_ws
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` esteve/ros2-ubuntu-xenial-travisci:java sh -c "/usr/bin/wget https://raw.githubusercontent.com/esteve/ros2_java/master/ros2_java_desktop.repos"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` esteve/ros2-ubuntu-xenial-travisci:java sh -c "/usr/bin/vcs import src < ros2_java_desktop.repos"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` theosakamg7/ros2java:latest sh -c "/usr/bin/wget https://gist.githubusercontent.com/Theosakamg/d9259bbc708c5145255fbdeb25e65e19/raw/ros2_java_desktop.repos"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` theosakamg7/ros2java:latest sh -c "/usr/bin/vcs import src < ros2_java_desktop.repos"
- rm -rf /home/travis/build/ros2_java_ws/src/ros2_java/ros2_java
- ln -s /home/travis/build/esteve/ros2_java /home/travis/build/ros2_java_ws/src/ros2_java/ros2_java
- ln -s /home/travis/build/ros2java-alfred/ros2_java
/home/travis/build/ros2_java_ws/src/ros2_java/ros2_java
- cd /home/travis/build/ros2_java_ws/src/ros2/rosidl_typesupport
- patch -p1 < ../../ros2_java/ros2_java/rosidl_ros2_java.diff
- cd /home/travis/build
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` esteve/ros2-ubuntu-xenial-travisci:java sh -c ". ament_ws/install_isolated/local_setup.sh && cd /home/travis/build/ros2_java_ws && ament build --symlink-install --isolated"
- docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` theosakamg7/ros2java:latest sh -c ". ament_ws/install_isolated/local_setup.sh && cd /home/travis/build/ros2_java_ws && ament build --symlink-install --isolated"

script:
- cd /home/travis/build && docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` esteve/ros2-ubuntu-xenial-travisci:java sh -c ". ament_ws/install_isolated/local_setup.sh && cd /home/travis/build/ros2_java_ws && ament test --isolated --only-packages ament_cmake_export_jars rcljava rcljava_common rosidl_generator_java"
- cd /home/travis/build && docker run -u "$UID" -it --rm -v `pwd`:`pwd` -w `pwd` theosakamg7/ros2java:latest sh -c ". ament_ws/install_isolated/local_setup.sh && cd /home/travis/build/ros2_java_ws && ament test --isolated --only-packages ament_cmake_export_jars rcljava rcljava_common rosidl_generator_java"

after_success:
- coveralls

notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/4aac82b42245203edceb
on_success: change # options: [always|never|change] default: always
on_failure: always # options: [always|never|change] default: always
on_start: never # options: [always|never|change] default: always
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
Esteve Fernandez <[email protected]> https://github.com/esteve
Mickael Gaillard <[email protected]> https://github.com/Theosakamg
1 change: 1 addition & 0 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@
END OF TERMS AND CONDITIONS

Copyright 2016 Esteve Fernandez
Copyright 2016 Mickael Gaillard

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
185 changes: 6 additions & 179 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,191 +1,18 @@
ROS2 for Java
ROS2 for Java (Alfred variation)
[![Build Status](https://travis-ci.org/ros2java-alfred/ros2_java.svg?branch=master)](https://travis-ci.org/ros2java-alfred/ros2_java) [![Coverage Status](https://coveralls.io/repos/github/ros2java-alfred/ros2_java/badge.svg?branch=master)](https://coveralls.io/github/ros2java-alfred/ros2_java?branch=master) [![Join the chat at https://gitter.im/ros2java-alfred](https://badges.gitter.im/gitterHQ/gitterHQ.github.io.svg)](https://gitter.im/ros2java-alfred?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) <a href="https://scan.coverity.com/projects/ros2java-alfred-ros2_java"><img alt="Coverity Scan Build Status" src="https://img.shields.io/coverity/scan/10818.svg"/></a>
=============

Build status
------------

**JRE** [![Build Status](https://travis-ci.org/esteve/ros2_java.svg?branch=master)](https://travis-ci.org/esteve/ros2_java)
**JRE** [![Build Status](https://travis-ci.org/ros2java-alfred/ros2_java.svg?branch=master)](https://travis-ci.org/ros2java-alfred/ros2_java)

**Android** [![Build Status](https://travis-ci.org/esteve/ros2_android.svg?branch=master)](https://travis-ci.org/esteve/ros2_android)
**Android** [![Build Status](https://travis-ci.org/ros2java-alfred/ros2_android.svg?branch=master)](https://travis-ci.org/ros2java-alfred/ros2_android)

What is this?
-------------

This is a set of projects (bindings, code generator, examples and more) that enables developers to write ROS2
applications for the JVM and Android.
applications for the JVM and Android with design of rosjava (ROS1).

Besides this repository itself, there's also:
- https://github.com/esteve/ament_java, which adds support for Gradle to Ament
- https://github.com/esteve/ament_gradle_plugin, a Gradle plugin that makes it easier to use ROS2 in Java and Android project, and which can be found published at the Gradle Central at https://plugins.gradle.org/plugin/org.ros2.tools.gradle
- https://github.com/esteve/ros2_java_examples, examples for the Java Runtime Environment
- https://github.com/esteve/ros2_android_examples, examples for Android

Is this Java only?
------------------

No, any language that targets the JVM can be used to write ROS2 applications.

Including Android?
------------------

Yep! Make sure to use [this fork](https://github.com/eProsima/Fast-RTPS/pull/26) as your DDS vendor.

Features
--------

The current set of features include:
- Generation of all builtin and complex ROS types, including arrays, strings, nested types, constants, etc.
- Support for publishers and subscriptions
- Tunable Quality of Service (e.g. lossy networks, reliable delivery, etc.)
- Clients and services
- Support for Android

Sounds great, how can I try this out?
-------------------------------------

First of all, download the ament repositories in a separate workspace:

```
mkdir -p ~/ament_ws/src
cd ~/ament_ws
wget https://raw.githubusercontent.com/esteve/ament_java/master/ament_java.repos
vcs import ~/ament_ws/src < ament_java.repos
src/ament/ament_tools/scripts/ament.py build --symlink-install --isolated
```

You may wonder why this is needed if the ROS2 instructions already fetch Ament on the same workspace as ROS2.

The reason is that this includes an additional build type for Gradle projects, and you'll need Ament to pick it up so it can build the examples, so this has to happen in a separate step.

The following sections deal with building the `ros2_java` codebase for the desktop Java runtime and for Android.

Desktop
-------

```
mkdir -p ~/ros2_java_ws/src
cd ~/ros2_java_ws
wget https://raw.githubusercontent.com/esteve/ros2_java/master/ros2_java_desktop.repos
vcs import ~/ros2_java_ws/src < ros2_java_desktop.repos
cd ~/ros2_java_ws
. ~/ament_ws/install_isolated/local_setup.sh
ament build --symlink-install --isolated
```

Now you can just run a couple of examples.

Talker and Listener
-------------------

Talker:

```
. ~/ament_ws/install_isolated/local_setup.sh
. ~/ros2_java_ws/install_isolated/local_setup.sh
cd ~/ros2_java_ws
java -cp install_isolated/rcljava_common/share/rcljava_common/java/slf4j-jdk14-1.7.21.jar:install_isolated/rcljava_common/share/rcljava_common/java/slf4j-api-1.7.21.jar:install_isolated/std_msgs/share/std_msgs/java/std_msgs.jar:install_isolated/rcljava/share/rcljava/java/rcljava.jar:install_isolated/rcljava_examples/share/rcljava_examples/java/rcljava_examples.jar:install_isolated/example_interfaces/share/example_interfaces/java/example_interfaces.jar:install_isolated/rcljava_common/share/rcljava_common/java/rcljava_common.jar org.ros2.rcljava.examples.Talker
```

Listener:

```
. ~/ament_ws/install_isolated/local_setup.sh
. ~/ros2_java_ws/install_isolated/local_setup.sh
cd ~/ros2_java_ws
java -cp install_isolated/rcljava_common/share/rcljava_common/java/slf4j-jdk14-1.7.21.jar:install_isolated/rcljava_common/share/rcljava_common/java/slf4j-api-1.7.21.jar:install_isolated/std_msgs/share/std_msgs/java/std_msgs.jar:install_isolated/rcljava/share/rcljava/java/rcljava.jar:install_isolated/rcljava_examples/share/rcljava_examples/java/rcljava_examples.jar:install_isolated/example_interfaces/share/example_interfaces/java/example_interfaces.jar:install_isolated/rcljava_common/share/rcljava_common/java/rcljava_common.jar org.ros2.rcljava.examples.Listener
```

Client and Service
------------------

Client:

```
. ~/ament_ws/install_isolated/local_setup.sh
. ~/ros2_java_ws/install_isolated/local_setup.sh
cd ~/ros2_java_ws
java -cp install_isolated/rcljava_common/share/rcljava_common/java/slf4j-jdk14-1.7.21.jar:install_isolated/rcljava_common/share/rcljava_common/java/slf4j-api-1.7.21.jar:install_isolated/std_msgs/share/std_msgs/java/std_msgs.jar:install_isolated/rcljava/share/rcljava/java/rcljava.jar:install_isolated/rcljava_examples/share/rcljava_examples/java/rcljava_examples.jar:install_isolated/example_interfaces/share/example_interfaces/java/example_interfaces.jar:install_isolated/rcljava_common/share/rcljava_common/java/rcljava_common.jar org.ros2.rcljava.examples.AddTwoIntsClient
```

Service:

```
. ~/ament_ws/install_isolated/local_setup.sh
. ~/ros2_java_ws/install_isolated/local_setup.sh
cd ~/ros2_java_ws
java -cp install_isolated/rcljava_common/share/rcljava_common/java/slf4j-jdk14-1.7.21.jar:install_isolated/rcljava_common/share/rcljava_common/java/slf4j-api-1.7.21.jar:install_isolated/std_msgs/share/std_msgs/java/std_msgs.jar:install_isolated/rcljava/share/rcljava/java/rcljava.jar:install_isolated/rcljava_examples/share/rcljava_examples/java/rcljava_examples.jar:install_isolated/example_interfaces/share/example_interfaces/java/example_interfaces.jar:install_isolated/rcljava_common/share/rcljava_common/java/rcljava_common.jar org.ros2.rcljava.examples.AddTwoIntsService
```

You can also combine any scenario where the talker/listener or client/service are written in Java, Python and C++ and they should talk to each other.

Android
-------

The Android setup is slightly more complex, you'll need the SDK and NDK installed, and an Android device where you can run the examples.

Make sure to download at least the SDK for Android Lollipop (or greater), the examples require the API level 21 at least.

You may download the Android NDK from [the official](https://developer.android.com/ndk/downloads/index.html) website, let's assume you unpack it to `~/android_ndk`

```
mkdir -p ~/ros2_android_ws/src
cd ~/ros2_android_ws
wget https://raw.githubusercontent.com/esteve/ros2_java/master/ros2_java_android.repos
vcs import ~/ros2_android_ws/src < ros2_java_android.repos
cd ~/ros2_android_ws/src/ros2/rosidl
touch python_cmake_module/AMENT_IGNORE
touch rosidl_generator_py/AMENT_IGNORE
cd ~/ros2_android_ws/src/eProsima/Fast-RTPS
git submodule init
git submodule update
cd ~/ros2_android_ws
. ~/ament_ws/install_isolated/local_setup.sh
ament build --isolated --cmake-args \
-DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_TOOLCHAIN_FILE=$HOME/android_ndk/android-ndk-r13b/build/cmake/android.toolchain.cmake \
-DANDROID_FUNCTION_LEVEL_LINKING=OFF -DANDROID_NATIVE_API_LEVEL=android-21 \
-DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang -DANDROID_STL=gnustl_shared \
-DANDROID_ABI=armeabi-v7a -DANDROID_NDK=$HOME/android_ndk/android-ndk-r13b -DTHIRDPARTY=ON -DCOMPILE_EXAMPLES=OFF -DCMAKE_FIND_ROOT_PATH="$HOME/ament_ws/install_isolated;$HOME/ros2_android_ws/install_isolated" \
-DANDROID_CPP_FEATURES="exceptions rtti" -- \
--ament-cmake-args \
-DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_TOOLCHAIN_FILE=$HOME/android_ndk/android-ndk-r13b/build/cmake/android.toolchain.cmake \
-DANDROID_FUNCTION_LEVEL_LINKING=OFF -DANDROID_NATIVE_API_LEVEL=android-21 \
-DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang -DANDROID_STL=gnustl_shared \
-DANDROID_ABI=armeabi-v7a -DANDROID_NDK=$HOME/android_ndk/android-ndk-r13b -DTHIRDPARTY=ON -DCOMPILE_EXAMPLES=OFF -DCMAKE_FIND_ROOT_PATH="$HOME/ament_ws/install_isolated;$HOME/ros2_android_ws/install_isolated" \
-DANDROID_CPP_FEATURES="exceptions rtti" -- \
--ament-gradle-args \
-Pament.android_stl=gnustl_shared -Pament.android_abi=armeabi-v7a -Pament.android_ndk=$HOME/android_ndk/android-ndk-r13b --
```

The talker and listener example Android apps can be installed via adb, plug your Android device to your computer with a USB cable and type the following:

Talker:

```
adb install ~/ros2_android_ws/install_isolated/ros2_talker_android/ros2_talker_android-debug.apk
```

Listener:

```
adb install ~/ros2_android_ws/install_isolated/ros2_listener_android/ros2_listener_android-debug.apk
```

You can try out running the talker on the desktop and the listener on your Android device or viceversa.

Enjoy!

Acknowledgements
----------------

Thanks all those who have contributed:

Mickael Gaillard (https://github.com/Theosakamg)

TODO
----

There's a bunch of features missing, including efficient intraprocess communication and DDS domain separation.

Large messages would benefit from Java's NIO.

And of course, this wouldn't be a proper opensource project if it didn't lack tests and documentation, so there's that too.
To start => [Wiki](https://github.com/ros2java-alfred/ros2_java/wiki)
35 changes: 35 additions & 0 deletions common_interfaces_full.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
diff --git a/sensor_msgs/CMakeLists.txt b/sensor_msgs/CMakeLists.txt
index 5d85e46..5ce78ba 100644
--- a/sensor_msgs/CMakeLists.txt
+++ b/sensor_msgs/CMakeLists.txt
@@ -20,8 +20,8 @@ set(msg_files
"msg/CameraInfo.msg"
"msg/ChannelFloat32.msg"
"msg/CompressedImage.msg"
- # "msg/FluidPressure.msg"
- # "msg/Illuminance.msg"
+ "msg/FluidPressure.msg"
+ "msg/Illuminance.msg"
"msg/Image.msg"
"msg/Imu.msg"
# "msg/JointState.msg"
@@ -30,7 +30,7 @@ set(msg_files
# "msg/JoyFeedbackArray.msg"
# "msg/LaserEcho.msg"
"msg/LaserScan.msg"
- # "msg/MagneticField.msg"
+ "msg/MagneticField.msg"
# "msg/MultiDOFJointState.msg"
# "msg/MultiEchoLaserScan.msg"
# "msg/NavSatFix.msg"
@@ -40,8 +40,8 @@ set(msg_files
"msg/PointField.msg"
# "msg/Range.msg"
"msg/RegionOfInterest.msg"
- # "msg/RelativeHumidity.msg"
- # "msg/Temperature.msg"
+ "msg/RelativeHumidity.msg"
+ "msg/Temperature.msg"
# "msg/TimeReference.msg"
)
set(srv_files
2 changes: 2 additions & 0 deletions rcljava/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/bin/
.classpath
Loading