Building Android Robots - ROS.org

103 downloads 235 Views 966KB Size Report
7x faster processor. ✓ 20x memory size. ✓ 140x faster networking bitrate. ✓ 100x video resolution. ✓ More integr
Building Android Robots Juan Ignacio Ubeira Julian Cerruti

Kickstart

Tools and libraries

Why?

Advantages

Cost?

Required effort

How?

Why? Technological evolution (2008 – 2017) Samsung Galaxy S8

T-Mobile G1

✓ ✓ ✓ ✓ ✓

7x faster processor 20x memory size 140x faster networking bitrate 100x video resolution More integrated sensors

Why? Popularity pushes innovation forward Source: gs.statcounter.com

How? Tools and libraries

Infrastructure

ROSJava

• ROS implementation in pure Java • http://wiki.ros.org/rosjava

How? Tools and libraries

Infrastructure

ROSJava

• ROS implementation in pure Java • http://wiki.ros.org/rosjava

Native Libraries

Android NDK (roscpp_android)

• Cross compiled ROS packages – JNI with native node wrapper • http://wiki.ros.org/android_ndk

How? Tools and libraries

Infrastructure

ROSJava

• ROS implementation in pure Java • http://wiki.ros.org/rosjava

Native Libraries

Android NDK (roscpp_android)

• Cross compiled ROS packages – JNI with native node wrapper • http://wiki.ros.org/android_ndk

Java libraries

ROSJava Maven repository

• Place to share compiled Java artifacts • https://github.com/rosjava/rosjava_mvn_repo

Building a robot Tangobot: A Turtlebot spinoff

Autonomous Android Powered Research platform Open source Tangobot’s wiki page: http://wiki.ros.org/Robots/Tangobot

Building a robot

Building a robot Generic autonomous robot: Hardware components

Perception devices • Lasers, IMU, cameras, etc.

Processing unit • CPU & Memory

Actuators • Mobile base

Building a robot Tangobot: Hardware components Turtlebot

Tangobot Android phone (Tango-enabled)

Laser

Laptop Robot base (IMU)

Robot base

Building a robot Tangobot: Software components

Application

User Interface Node launcher

Navigation stack Sensor drivers Mobile base drivers

Building a robot Generic Navigation stack workflow

• Sensors • Goals

Inputs

Navstack • Costmaps • Planners • Recovery

• Velocity commands

Outputs

Building a robot Tangobot: Cross compiled navigation stack Cross compiled Navstack (ROSCpp) JNI wrapper: execute & shutdown (C) ROSJava Native node (Java) Executed by Tangobot app

Tutorial: http://wiki.ros.org/android_ndk/Tutorials/WrappingNativeRosjavaNode

Building a robot Tangobot: Perception Motion Tracking

Area Learning

Google Tango

Depth Perception

Building a robot Tangobot: Tango and ROS interfacing Tango ROS node

Raw data

ROS data

Native node (Maven) Tango ROS Streamer wiki: http://wiki.ros.org/tango_ros_streamer

Navstack

• Pose • Pointclouds • Cameras

Building a robot Tangobot: Robot base driver

Twist commands

Base Serial controller commands

Robot Base

Java node (Maven) Node source: https://github.com/ekumenlabs/base_controller

Next steps Tangobot roadmap

Maps Global costmap • Build • Navigate • Share

Bases New platforms • TurtleBot 3 • iRobot Create App source: https://github.com/ekumenlabs/tangobot

GMapping Tango ADF

Closing thoughts

Challenges

Advantages

Tools

Multiple technologies

Popular devices

ROSJava

Package availability

Evolving devices

ROSCpp Android

Thanks!

Q&A Useful links: • http://ekumenlabs.com • http://wiki.ros.org/Robots/Tangobot • http://wiki.ros.org/rosjava • http://wiki.ros.org/android_ndk • http://wiki.ros.org/tango_ros_streamer