|Note: This tutorial assumes that you have completed the previous tutorials: Turtlebot-Developer Habitats.|
|Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.|
Interacting with your TurtlebotDescription: The many ways you can provoke/inspire your turtlebot to action!
Tutorial Level: BEGINNER
Indigo officially introduces a couple of news ways for both developers and users to interact with your robot whilst at the same time keeping the old 'ssh-roslaunch' style available.
This tutorial provides a simple introduction that describes how software on the turtlebot and its peripherals (PCs and Androids) is launched and how it interacts. It doesn't go into detailed instructions - this is reserved for specific tutorials later in the documentation. The purpose here is just to paint a picture!
Bootstrapping the Turtle
In most situations the turtlebot runs its software on a computationally challenged notebook or embedded board. This is not enough to run all possible nodes at once and even if it were possible, many of the programs would conflict. The basic principle then is to bootstrap the robot with the ros environment, core components and any software that assists in the launching/tearing down of any task related software that will run on top of the bootstrap level.
Bootstrapping the turtlebot is via minimal.launch. This is also sometimes referred to as bringing up the turtle.
In previous ros releases, task launch/tear down operations have primarily been managed via ssh, rosrun and roslaunch. This is still possible in indigo and in this way it is possible to launch a robot task in an ssh terminal, e.g. make a map, and in another terminal, launch the rviz monitoring program on the pc side.
No longer experimental, the application manager is simply a means of putting the robot roslaunchers under a manager and exposing them in one view to the user. This provides a quick and easy way via the rqt_app_manager to see what is available and launch/tear down the relevant task on the robot.
Aside from being an easy way to see what is available to run, it also ensures that maintenance of the running task is done on the robot - you do not need to maintain a ssh connection to the robot over the wireless, nor does the rqt_app_manager need to be continually running.
It is however, limited to one-sided interactions (i.e. won't manage the rviz launch on the pc side).
Interactions extend the application management to two sided interactions as well as providing the ability to interact from devices that do not include your pc, e.g. android phones and tablets. The available interactions, the devices they are permitted to run on and synchronisation of launch/tear down of two sided interactions is maintained by the interactions manager which sits between the application manager and the remocons.
It is also possible to do alot more than roslaunching with the remocons. The interactions manager on the robot can deliver the appropriate information to the remocon so that the remocon can trigger the pc's browser and point you to the turtlebot documentation. Roslaunches, web apps and even non-ros apps can be run on the pc/android side. 1-sided and 2-sided interactions can be managed.
With interactions, the robot talks to you and lets you know everything it can do - pointers to documentation, a list of ways you can task/interact with the robot and a means of executing these.
Note: in the preceding diagram, everything is running from the ros master on the robot. It is also possible to use the interactions in a configuration from which the pc/android is running on a completely separate master - this is an advanced use case and dealt with much later in the documentation.