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. |
Chatter Concert
Description: An example concert demonstration, talker-listener style.Keywords: concert tutorials rocon
Tutorial Level: BEGINNER
Next Tutorial: Chatter Concert - Distributed
Contents
Overview
This tutorial is a glorified version of ros' simple chatter tutorials. We up the game here by launching each talker (dudette) and listener (dude) on its own master and co-ordinate them from a central concert service.
Preparation
Follow the rocon installation instructions.
Demo
Source your setup.bash and rocon_launch the chatter concert, e.g. for a source install:
> source ~/rocon/devel/setup.bash > rocon_launch chatter_concert chatter.concert --screen
This launches the concert solution, robot apps and immediately links everything once all the components are discovered.
Interacting
You're a human! Interact with it...
> source ~/rocon/devel/setup.bash > rocon_remocon
- Point it at your localhost ip, port 11311
Here you will find various roles in which you can interact with the concert. Feel free to explore the interactions provided for each role. A good example is the gateway graph introspection of the concert (inside the admin role):
You'll notice four masters in this system - the concert, dudette and two dudes. Dudette and the dudes flip your usual chatter pubs and subs (dudes of course have to listen to dudette, so they flip the subscribers and dudette flips the publisher).
Looking Around
Concert Info
Some basic information about this concert.
> concert_info
Human Interactions
You can also get a quick view of all the interactions from the command line on the concert master:
> rocon_interactions Admin Concert Info Name : concert_info Description : Generic information about this concert. Icon : rocon_bubble_icons/rocon.png Rocon URI : rocon:/pc/*/hydro|indigo/precise|quantal|raring|saucy|trusty Namespace : /services/admin Max : infinity Hash : -1521334899 Conductor Graph Name : concert_conductor_graph Description : Graph of all elements in a rocon conductor network. Icon : rocon_bubble_icons/rocon.png Rocon URI : rocon:/pc/*/hydro|indigo/precise|quantal|raring|saucy|trusty Namespace : /services/admin Max : infinity Hash : 738504379 Ros Graph Name : rqt_graph Description : Graph of all topics and services in the concert workspace. Icon : rocon_bubble_icons/rocon.png Rocon URI : rocon:/pc/*/hydro|indigo/precise|quantal|raring|saucy|trusty Namespace : /services/admin Max : infinity Hash : 844838261 Gateway Graph Name : rocon_gateway_graph Description : Graph of all elements in a rocon gateway network. Icon : rocon_bubble_icons/rocon.png Rocon URI : rocon:/pc/*/hydro|indigo/precise|quantal|raring|saucy|trusty Namespace : /services/admin Max : infinity Hash : 1296470224 Docs Ros Wiki - Chatter Concert Name : http://wiki.ros.org/chatter_concert Description : A ros chatter style introduction to the concert. Icon : rocon_bubble_icons/ros.png Rocon URI : rocon:/pc Namespace : /services/chatter Max : 1 Hash : -1295151295 Chatter Dude Name : chatter_concert/remocon_dude Description : For human dudes who have to listen to nagging dudettes. Icon : rocon_bubble_icons/rocon.png Rocon URI : rocon:/pc/*/hydro|indigo/precise|quantal|raring|saucy|trusty Namespace : /services/chatter Max : infinity Remappings : chatter->/conversation/chatter Hash : -2138897534 Android Listener Name : com.github.rosjava.android_remocons.listener.Listener Description : Android listener Icon : rocon_bubble_icons/rocon.png Rocon URI : rocon:/*/*/hydro/jellybean|ice_cream_sandwich|kitkat Namespace : /services/chatter Max : infinity Remappings : chatter->/conversation/chatter Hash : -965118903
The Clients (Retaskable Robots)
> rosservice list
In this list you can see all of the app manager handles provided by the dudes and dudette. Each client provides their handles in namespaces that are all postfixed with uuid strings. This is the default behaviour for naming and ensures that each member in the concert is unique.
The Services
Get some information about the services running inside the concert.
> concert_service_info Concert Service Information Resource : rocon_service_admin/admin Name : admin Description : Administrative services and tools Author : DanielStonier Priority : 1 Launcher Type : shadow Status : 0 Enabled : True Resource : chatter_concert/chatter Name : chatter Description : Dudes and dudettes chatting. Author : Daniel Stonier Priority : 2 Launcher Type : roslaunch Status : 0 Enabled : True
Scheduled Resources
> concert_scheduler_requests ############################################################################## # Scheduler Request Feedback # ############################################################################## Requester [2953da1f-a537-4bf3-92a6-bc931e1ac20e] Request Id : 2785ce60-5d98-4334-8804-e6baf7131467 Priority : 10 Status : granted Resources : 9004c2b8-f2b9-4064-bf2e-f8818c327afc-rocon:/pc/dudetteb3a53f75f8434aa4a6acba230772d3b2/indigo/saucy-rocon_apps/talker : 2467ecfa-339b-42e7-81d3-c02e2ce02aa9-rocon:/pc/dude61509a4d1b594cbfb3e211ef2d0d60fe/indigo/saucy-rocon_apps/listener : a7ebd33a-9c3d-487f-9cc2-4a3213ac87b0-rocon:/pc/dudebd55b785281d4da4b30b65861a9aab78/indigo/saucy-rocon_apps/listener Request Id : 77fb9997-7706-4fb1-a700-cb2c51e96d13 Priority : 0 Status : waiting Resources : d59657b0-3ab8-424a-9327-4cae688e9fed-rocon:/*/*#rocon_apps/listener-rocon_apps/listener
Here you can see dudette and the two dudes already having been allocated (granted) in the first request. You notice that the service has also lined up a further request for another dude (listener) that is yet waiting. The chatter service itself allows four dudettes to a dude (read what you will into that!). While the concert_scheduler_requests call is stil running, open new shells and try launching additional dudes:
> roslaunch -p 11315 chatter_concert dude.launch --screen > roslaunch -p 11316 chatter_concert dude.launch --screen
You should see requester-scheduler process interactively granting and creating new requests.