You’re Ready to Deliver Coffee

Final Demo

On TurtleBot, open a terminal and run:

roslaunch turtlebot_bringup minimal.launch
roslaunch turtlebot_navigation amcl_demo.launch map_file:=/tmp/my_map.yaml

TIP: How do I create a map?

On the workstation, open a terminal and run:

roslaunch kobuki_auto_docking coffeebot.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch --screen

TIP: coffebot.launch was created in a previous tutorial.

Set TurtleBot’s Initial Pose

RViz should open showing your map. TurtleBot isn’t reliably capable of estimating its pose on startup (though it can estimate it after you initialize its pose).

Select “2D Pose Estimate”

Click and hold on the location where the TurtleBot is on the map. An arrow will appear while you are holding. Use this to estimate its orientation.

Run the final script on your workstation

By now you’ve cloned the repository and updated settings.

cd ~/helloworld

Initial Results

After TurtleBot checks five times if anyone needs coffee, it will return to the docking station to charge while waiting for another request.

NOTE: Once it starts the docking procedure, TurtleBot will complete it prior to checking for coffee again.

Open the Web App

You’ve already installed the web app and/or browser extension and specified valid X and Y coordinates. Go ahead and open one of them. Press “order”. After a couple of seconds, TurtleBot should head towards the coordinates you specified in the app/extension!

CoffeeBot Results

After TurtleBot arrives it will wait until the customer presses B0. Since there isn’t a way (yet!) for TurtleBot to know when the customer is finished brewing coffee, B0 is a way for the customer to say “I’m finished, you can go elsewhere”.

After B0 is pressed, TurtleBot will check if there are other pending coffee requests. If no additional requests exist, it will return to the docking station.


To view a dump of the last 100 coffee requests go to:


TIP: A “status” value of 0 is pending, 1 is success and 2 is failed.

If you specified an invalid X and Y coordinate (i.e. a pose that TurtleBot could never reach), you can manually remove it by finding its ID in the printqueue (above) and then passing that value to the update call:


TIP: If you load a new map file you’ll very likely need to update everyone’s coordinates.