Вы находитесь на странице: 1из 22

Building Android Robots

Juan Ignacio Ubeira


Julian Cerruti
Kickstart

Why? Advantages

Tools and
How?
libraries

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

✓ 7x faster processor
✓ 20x memory size
✓ 140x faster networking bitrate
✓ 100x video resolution
T-Mobile G1 ✓ 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 Robot base


(IMU)
Building a robot
Tangobot: Software components

User Interface
Application
Node launcher
Navigation stack

Sensor drivers

Mobile base drivers


Building a robot
Generic Navigation stack workflow

Navstack
• Sensors • Velocity
• Goals • Costmaps commands
• Planners
• Recovery
Inputs 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 Depth
Learning Google Perception
Tango
Building a robot
Tangobot: Tango and ROS interfacing

Tango ROS node

Raw ROS Navstack


data data

• Pose
• Pointclouds
Native node (Maven) • Cameras

Tango ROS Streamer wiki: http://wiki.ros.org/tango_ros_streamer


Building a robot
Tangobot: Robot base driver

Twist Base Serial Robot


commands controller commands Base

Java node (Maven)

Node source: https://github.com/ekumenlabs/base_controller


Next steps
Tangobot roadmap

Maps Global costmap


• Build
GMapping
• Navigate
• Share
Tango ADF
Bases New platforms
• TurtleBot 3
• iRobot Create

App source: https://github.com/ekumenlabs/tangobot


Closing thoughts

Challenges Advantages Tools

Multiple Popular
ROSJava
technologies devices

Package Evolving ROSCpp


availability devices 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

Вам также может понравиться