You are on page 1of 66

Friday, May 13, 2011

Cloud Robotics
Damon Kohler, Ryan Hickman (Google) Ken Conley, Brian Gerkey (Willow Garage) May 11, 2011

Friday, May 13, 2011

Overview
Introduction (Ryan) ROS (Ken and Brian) ROS on Android (Damon) Closing Remarks (Ryan) Q&A

Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk


Friday, May 13, 2011 3

Cloud-connected robots can...

perceive, understand, share, and react.

Friday, May 13, 2011

Connect hardware to the cloud.


Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 5

Android Open Accessory API

Friday, May 13, 2011

Object Recognition

Friday, May 13, 2011

Mapping and Navigation

Friday, May 13, 2011

Voice and Text Services


Voice recognition Optical character recognition Language translation Text to speech

Friday, May 13, 2011

The cloud enables smarter robots.


Off the shelf hardware means affordable robots Lower the barrier to entry for robotics Scalable CPU, memory, and storage

10

Friday, May 13, 2011

10

ROS
Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 11

ROS Code Repositories


November 2007 - March 2011

12

Friday, May 13, 2011

12

ROS Code Packages


November 2007 - March 2011

13

Friday, May 13, 2011

13

Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk


Friday, May 13, 2011 14

Nodes
Anonymous Publish and Subscribe

ROSCore (DNS-like) Publisher Subscriber

/topic

Publisher

Subscriber

15

Friday, May 13, 2011

15

ROS Publish and Subscribe Example

$ rostopic pub /chatter std_msgs/String 'Hello World' -r 10 ... $ rostopic echo /chatter data: Hello World --data: Hello World --data: Hello World ---

16

Friday, May 13, 2011

16

Functionality

Mobility

Perception

Manipulation

17

Friday, May 13, 2011

17

PR2
Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 18

Specifications
Costs $400,000 2x Servers (8 core i7) 2x 24GB RAM 7x Cameras (2x Stereo) 2x Laser rangefinders 2x 4 DOF Arm, 3 DOF Wrist Omnidirectional base

19

Friday, May 13, 2011

19

Robots in the Home

20

Friday, May 13, 2011

20

RViz
Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 21

The message is the medium.


Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 22

Head Tracking

# create goal message: 1 meter in front of base target = PointStamped(x=1.0, frame_id='base_link') goal = msg.pr2_controllers_msgs.PointHeadGoal( target=target, min_duration=Duration(1.0)) # publish topics.head_traj_controller.point_head_action.goal(goal=goal)

23

Friday, May 13, 2011

23

Head Tracking

# create goal message: left gripper target = PointStamped(frame_id='l_gripper_tool_frame') goal = msg.pr2_controllers_msgs.PointHeadGoal( target=target, min_duration=Duration(0.2)) # publish loop r = Rate(10) while ok(): topics.head_traj_controller.point_head_action.goal(goal=goal) r.sleep()

24

Friday, May 13, 2011

24

Hello World Redux


import math, time # create pose message: 1 meter in front of shoulder p = PoseStamped(frame_id='l_torso_lift_side_plate_link') p.pose.orientation.y = -math.sqrt(2)/2.0 p.pose.orientation.w = math.sqrt(2)/2.0 p.pose.position.x = 0.5 # meters # publish loop r = Rate(10) while ok(): p.pose.position.y = math.sin(1.5*time.time())*0.3 topics.r_cart.command_pose(p) r.sleep()

25

Friday, May 13, 2011

25

+
ROS in the Cloud
Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 26

ROS in the Cloud

27

Friday, May 13, 2011

27

ROS in the Cloud

28

Friday, May 13, 2011

28

Personal robots need to be inexpensive.


Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 29

PR2 Power Consumption


Max Load (watts)

30

Friday, May 13, 2011

30

LIDAR: >$!000
(Robot not included)

31

Friday, May 13, 2011

31

ROS 3D Contest

32

Friday, May 13, 2011

32

ROS 3D Contest

33

Friday, May 13, 2011

33

Turtlebot Kit

34

Friday, May 13, 2011

34

Google StreetView Robot

Image Source: Wikipedia, Public Domain

35

Friday, May 13, 2011

35

Mapping

36

Friday, May 13, 2011

36

Home Search Engine

37

Friday, May 13, 2011

37

Personal Replicators

+
Image Source: Makerbot Industries

38

Friday, May 13, 2011

38

ROS and Android

39

Friday, May 13, 2011

39

+
ROS on Android
Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 40

What is rosjava?
ROS framework written in pure Java Android compatible Open source Early release

41

Friday, May 13, 2011

41

Nodes

public class Talker implements NodeMain { @Override public void main(NodeConfiguration config) { ... } }

42

Friday, May 13, 2011

42

Publishers
@Override public void main(NodeConfiguration config) { Node node = new Node(talker, config); Publisher<std_msgs.String> publisher = node.createPublisher(/chatter); while (true) { std_msgs.String msg = new std_msgs.String(); msg.data = Hello world!; publisher.publish(msg); Thread.sleep(1000); } }

43

Friday, May 13, 2011

43

Subscribers
@Override public void main(NodeConfiguration config) { Node node = new Node(listener, config); node.createSubscriber(/chatter, new MessageListener<std_msgs.String>() { @Override public void onNewMessage(std_msgs.String msg) { System.out.println(msg.data); } }); }

44

Friday, May 13, 2011

44

Starting rosjava Nodes

$ rosrun rosjava run org.ros.Talker ... $ rosrun rosjava run org.ros.Listener Hello, world! Hello, world! ...

45

Friday, May 13, 2011

45

Hello, World!

46

Friday, May 13, 2011

46

Running Nodes
public class MainActivity extends Activity { private final NodeRunner nodeRunner; public MainActivity() { super(); nodeRunner = NodeRunner.createDefault(); } ... }

47

Friday, May 13, 2011

47

ROS Views
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RosTextView<std_msgs.String> txt = findViewById(R.id.txt); txt.setTopicName(/chatter) nodeRunner.run(new Talker()); nodeRunner.run(txt); }

48

Friday, May 13, 2011

48

RosTextView
public class RosTextView<T> extends TextView implements NodeMain { private String topicName; private Node node; @Override public void main(NodeConfiguration config) { ... } ... }

49

Friday, May 13, 2011

49

ROS Views are Nodes


@Override public void main(NodeConfiguration config) { node.createSubscriber(topicName, new MessageListener<T>() { @Override public void onNewMessage(final T message) { post(new Runnable() { @Override public void run() { setText(message.toString()); }); } }); }

50

Friday, May 13, 2011

50

Visualizing Orientation Readings

51

Friday, May 13, 2011

51

Integration with Sensors


@Override public void main(NodeConfiguration config) { SensorManager mgr = getSystemService(SENSOR_SERVICE); Sensor s = mgr.getDefaultSensor( Sensor.TYPE_ROTATION_VECTOR) mgr.registerListener(new SensorEventListener() { ... }, s, SensorManager.SENSOR_DELAY_FASTEST); }

52

Friday, May 13, 2011

52

Publishing Orientation Readings


@Override public void onSensorChanged(SensorEvent e) { float[] vec = new float[4]; SensorManager.getQuaternionFromVector(vec, e.values); Quaternion orientation = new Quaternion(); orientation.w = vec[0]; ... PoseStamped pose = new PoseStamped(); pose.position = new Point(0, 0, 0); pose.orientation = orientation; publisher.publish(pose); }

53

Friday, May 13, 2011

53

Image Transport: Subscribers

54

Friday, May 13, 2011

54

RosImageView

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RosImageView<CompressedImage> image = findViewById(R.id.image); image.setTopicName(/camera) nodeRunner.run(image); }

55

Friday, May 13, 2011

55

Image Transport: Publishers

56

Friday, May 13, 2011

56

Camera Publisher

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RosCameraPreviewView camera = findViewById(R.id.camera); camera.setTopicName(/camera) nodeRunner.run(camera); }

57

Friday, May 13, 2011

57

PR2 and Android Demo


Tablet subscribes to PR2 camera images PR2 subscribes to tablet orientation

58

Friday, May 13, 2011

58

Android Possibilities
Open Accessory API Accelerometer Gyroscope Compass GPS Camera Touch screen Wireless network

59

Friday, May 13, 2011

59

Closing Remarks
Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 60

Object Recognition Demo


Train a custom corpus of objects Store the knowledge in the cloud Any robot can access the shared objects

61

Friday, May 13, 2011

61

Object Recognition Demo

62

Friday, May 13, 2011

62

Project Phndox

63

Friday, May 13, 2011

63

What robotics problems can you tackle?


Process large amounts of data Share knowledge among multiple devices Create new forms of user interaction

64

Friday, May 13, 2011

64

Enable your apps for cloud-connected robots!


ROS-enable web services and applications ROS-enable Android apps Connect hardware to Android devices Connect the physical world to the cloud

65

Friday, May 13, 2011

65

Visit http://www.cloudrobotics.com/ See us in the Android Interactive Zone on the 3rd floor See us at Maker Faire on the 21st and 22nd

Q&A
Feedback: http://goo.gl/tTQmW Hashtags: #io2011 #TechTalk
Friday, May 13, 2011 66

You might also like