Skip to content

Latest commit

 

History

History
126 lines (92 loc) · 5.6 KB

README.md

File metadata and controls

126 lines (92 loc) · 5.6 KB

rosjava

rosjava is the first pure Java implementation of ROS.

This fork has the following changes:

  1. Targets the JRE This version targets the JRE in Windows, Unix/Linux and Mac. Android compatibility has not been tested and has not been actively pursued.

  2. Reduced visibility of API elements Access modifiers have been added to reduce the visibility of all API elements (e.g. interfaces, classes and methods). This reduction aims to minimize the number of classes/methods accessible outside the projects packages. This simplifies usage inside an IDE since developers are presented with less autocomplete options, reducing the breadth of API elements that developers/users needs to consider.

  3. More programmer friendly API The API is stricter, improving the developer experience and the ease of use. For instance Service Servers, Publishers and Service Clients parameter types now extend org.ros.internal.message.Message indicating what the type parameters should be and benefit from the compiler during compile time.

  4. Reduce extensibility of classes & methods
    This fork is assumes usage as a library and reduces inheritance to the minimum. The goal is to allow for inheritance only where intended, simplifying both the usage of the fork and its development.

  5. Update dependencies

    1. Update dependency versions
    2. Replace Apache Commons Logging with SL4J
  6. Update Java and Gradle versions used

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.