Note: This tutorial assumes that you have completed the previous tutorials: Chatter Concert. |
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. |
Turtle Concert
Description: An example concert demonstration, turtlesim style.Keywords: concert
Tutorial Level: BEGINNER
Installation
Follow the rocon installation instructions.
Demo
Bootstrapping
Let's bootstrap all the robots as well as the centralised concert master. Source your setup.bash and rocon_launch the concert, e.g. for a source install:
> cd ~/concert/devel > source setup.bash > rocon_launch turtle_concert turtle.concert
rocon_launch is a utility used to multi-launch and manage several launchers running under independant ros masters. It has the same effect as running the following in four new setup.bash'd terminals:
# The concert master > roslaunch --port=11311 turtle_concert concert.launch # Two pseudo-turtle concert clients > roslaunch --port=11312 turtle_concert kobuki.launch > roslaunch --port=11313 turtle_concert guimul.launch # A pc software client > roslaunch --port=11314 turtle_concert turtlesim.launch
At this point, the concert master recognises all the concert clients have been loaded (it is pre-configured via the orchestra node) and is ready to run, but first, let's look around.
Looking Around
The concert system is essentially a centralised workspace. You can find all the topics and services landing there, allowing you to introspect and interact with the concert without having to delve into each robot (concert client). A quick look at the concert workspace (selectively filtering a bit here):
> rosservice list /concert/conductor/invite_concert_clients /concert/gateway/advertise /concert/gateway/advertise_all /concert/gateway/connect_hub /concert/gateway/flip /concert/gateway/flip_all /concert/gateway/gateway_info /concert/gateway/pull /concert/gateway/pull_all /concert/gateway/remote_gateway_info /concert/start_solution /concert/stop_solution /concert/zeroconf/add_listener /concert/zeroconf/add_service /concert/zeroconf/list_discovered_services /concert/zeroconf/list_published_services /concert/zeroconf/remove_listener /concert/zeroconf/remove_service /guimul/invitation /guimul/list_apps /guimul/platform_info /guimul/start_app /guimul/status /guimul/stop_app /kobuki/invitation /kobuki/list_apps /kobuki/platform_info /kobuki/start_app /kobuki/status /kobuki/stop_app /turtlesim/invitation /turtlesim/list_apps /turtlesim/platform_info /turtlesim/start_app /turtlesim/status /turtlesim/stop_app
Starting the Solution
The orchestration component of the concert master is pre-loaded with a solution. Think of this as a multimaster launch file which launches apps (launchers) on each robot instead of nodes.
From the concert workspace (ROS_MASTER_URI=http://localhost:11311)
> rosservice call /concert/start_solution
Viewing the Gateway Graph
Have a gander and see what topics and services are getting the love (i.e. shared around):
> rosrun rocon_gateway_graph rqt_gateway_graph
Wrapping Up
Put the turtles to sleep. Again, from the concert workspace (ROS_MASTER_URI=http://localhost:11311)
> rosservice call /concert/stop_solution
Screenshot