An implementation of ROS in pure Java with Android support.
Java Python Other
Clone or download
drigz Avoid a race condition in RetryingExecutorService (#278)
This fixes #274, which occurs when the task completes before the
`Future` is added to the `callables` map (because the corresponding
submit() is still executing). In that case, `callable` is null, which
causes latches.get(callable) to throw an NPE.

The bug can be reproduced with the added test by adding
`Thread.sleep(1000)` below the `completionService.submit` call.
Latest commit f2134b2 May 18, 2018
Permalink
Failed to load latest commit information.
3rdparty Allow running rosjava tests from Bazel (#277) May 18, 2018
apache_xmlrpc_client Add Bazel build files for the tutorial (#269) Mar 1, 2018
apache_xmlrpc_common Add Bazel build files for the tutorial (#269) Mar 1, 2018
apache_xmlrpc_server Merge pull request #273 from wmlynar/kinetic Mar 29, 2018
bazel Allow running rosjava tests from Bazel (#277) May 18, 2018
docs Using 'doLast' instead of '<<' for clean task in docs. Apr 25, 2018
gradle/wrapper Gradle upgrade: 3.5.1 Feb 22, 2018
misc Added rospack_nosubdirs file to rosjava_core/misc Nov 2, 2011
rosjava Avoid a race condition in RetryingExecutorService (#278) May 18, 2018
rosjava_benchmarks Changes FrameTransformTree to use GraphName instead of FrameName but … Jun 27, 2014
rosjava_geometry Changes FrameTransformTree to use GraphName instead of FrameName but … Jun 27, 2014
rosjava_helpers Fix to avoid spurious exceptions on node shutdown if there's an activ… May 29, 2017
rosjava_test test_ros -> rosjava_test_msgs Sep 12, 2013
rosjava_tutorial_pubsub Merge pull request #265 from jubeira/gradle-3-5-1 Apr 25, 2018
rosjava_tutorial_right_hand_rule Updating more versions Dec 18, 2016
rosjava_tutorial_services test_ros -> rosjava_test_msgs Sep 12, 2013
.classpath eclipse files Sep 17, 2013
.gitignore Add Bazel build files for the tutorial (#269) Mar 1, 2018
.hgignore Remove unnecessary ignored file. Apr 4, 2012
.rosinstall Update .rosinstall for hydro-devel version. Aug 20, 2013
CHANGELOG.rst 0.3.5 Jul 17, 2017
CMakeLists.txt Gradle upgrade: 3.5.1 Feb 22, 2018
README.md Add Bazel build files for the tutorial (#269) Mar 1, 2018
WORKSPACE Add Bazel build files for the tutorial (#269) Mar 1, 2018
build.gradle Gradle upgrade: 3.5.1 Feb 22, 2018
dependencies.yaml Allow running rosjava tests from Bazel (#277) May 18, 2018
gradle.properties Add a comment explaining the disabling of SNI. Jun 27, 2014
gradlew gradle wrapper 1.7 Sep 16, 2013
gradlew.bat Add gradle wrapper. Mar 8, 2012
package.xml 0.3.5 Jul 17, 2017
settings.gradle Parameter Node added to new Helper module. Feb 20, 2017

README.md

rosjava is the first pure Java implementation of ROS.

From ROS.org: ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management.

Developed at Google in cooperation with Willow Garage, rosjava enables integration of Android and ROS compatible robots. This project is under active development and currently alpha quality software. Please report bugs and feature requests on the issues list.

To get started, visit the rosjava_core and android_core pages for documentation concerning the core libraries and examples. Also visit the roswiki rosjava and android pages for more general rosjava-android information.

Still have questions? Check out the ros-users discussion list, post questions to ROS Answers with the tag "rosjava," or join #ROS on irc.oftc.net.

rosjava was announced publicly during the Cloud Robotics tech talk at Google I/O 2011.

Looking for a robot platform to experiment with ROS, Android, and cloud robotics? The OSRF TurtleBot is a great mobile perception platform for getting started with robotics development.

Branches

The master branch reflects the latest version of rosjava. All development happens on the master branch in the form of pull requests from developers. Unless you are developing rosjava itself, you should not use the master branch.

Named branches are created whenever a new version of ROS is released. These branches are considered stable. No new features will be added to these branches, however, bug fixes may be cherry picked from master.

Pull Requests

You must sign a Contributor License Agreement (CLA) before we can accept any code. The CLA protects you and us.

  • If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an individual CLA.
  • If you work for a company that wants to allow you to contribute your work to SL4A, then you'll need to sign a corporate CLA.

Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Damon will respond on either github or email to confirm.

Building with Bazel

To build this project with Bazel, simply run:

bazel build //...

To depend on rosjava_core from another project, you'll need to use bazel-deps.

  1. Start by copying (or merging) [dependencies.yaml][dependencies.yaml] in to your project.
  2. Follow the instructions in that file to generate the BUILD files inside your project.
  3. Add the following lines to your WORKSPACE file:
load("//3rdparty:workspace.bzl", "maven_dependencies")

maven_dependencies()

git_repository(
    name = "com_github_rosjava_rosjava_core",
    commit = "{insert commit SHA for HEAD}",
    remote = "https://github.com/rosjava/rosjava_core.git",
)

load("@com_github_rosjava_rosjava_core//bazel:repositories.bzl", "rosjava_repositories")

rosjava_repositories()

You may want to use http_archive instead of git_repository for the reasons described in the Bazel docs.

You can now depend on rosjava targets (eg @com_github_rosjava_rosjava_core//rosjava) as required by your application.