Writing Your First Interaction
In this lesson we will write user side of rocon application. We will learn how to add follower application in application list.
Prerequisites
This lesson is a continuation of the previous lesson: “Multiple TurtleBots in Concert”. If you have not done this lesson, do it firstly.
Creating interaction
1. Create interactions folder in my_rapps.
cd ~/my_ws/src/my_rapps/
mkdir interactions
cd ineractions2. Create my.interactions file with following content:
- name: ""
role: My Interactions
compatibility: rocon:/pc/*/hydro|indigo/precise|quantal|raring|saucy|trusty
display_name: Follower
description: Take the TurtleBot for a stroll. TurtleBot will follow whatever is in front of it.
max: -1
icon:
resource_name: my_rapps/follower_bubble_icon.png
pairing:
rapp: my_rapps/follower
remappings: []Modifying concert_service_gazebo Package
1. Clone concert_services.
cd ~/my_ws/src/
git clone https://github.com/robotics-in-concert/concert_services.git2. Change directory.
cd ~/my_ws/src/concert_services/3. Change git branch.
git checkout indigo3. Edit robot.launch file.
cd concert_service_gazebo/launch/Add robot_interactions and robot_interactions_list arguments
below robot_concert_whitelist and above include tag.
<arg name="robot_interactions" default="false"/>
<arg name="robot_interactions_list" default="[]"/>Add interactions and interactions_list arguments below
concert_whitelist and inside include tag.
<arg name="interactions" value="$(arg robot_interactions)"/>
<arg name="interactions_list" value="$(arg robot_interactions_list)"/>4. Edit gazebo_robot_manager.py file.
cd ~/my_ws/src/concert_services/concert_service_gazebo/src/concert_service_gazebo/Add two strings in _prepare_rocon_launch_text function
launch_text += ' <arg name="robot_interactions" value="%s"/>\n' % robot['interactions']
launch_text += ' <arg name="robot_interactions_list" value="%s"/>\n' % str(robot['interactions_list'])above this string
launch_text += ' </launch>'We edit this file for using robot_interactions and robot_interactions_list
parameters.
Modifying gazebo_concert Package
1. Edit gazebo.parameters file.
cd ~/my_ws/src/rocon_tutorials/concert_tutorials/gazebo_concert/solutions/Add interactions and interactions_list for each robot.
interactions: true
interactions_list: [turtlebot_bringup/documentation.interactions, my_rapps/my.interactions]2. Build package.
source /opt/ros/indigo/setup.bash
cd ~/my_ws/
catkin_makeRunning Follower Application
1. Change the path.
source ~/my_ws/devel/setup.bash2. Launch gazebo_concert.
roslaunch gazebo_concert concert.launchYou will see these strings in each robot terminal.
[INFO] [WallTime: 1456371595.581037] [10.320000] Interactions : loading Follower [-My Interactions-/]3. Start rocon_remocon.
rocon_remocon4. Select Gazebo Concert->User->Gazebo Viewer.
You will see the familiar Gazebo world.
5. Select Concert Teleop in Interactions Chooser.
6. Select gamza1 in the resource list and capture it.
7. In a new terminal start rocon_remocon.
rocon_remocon8. Press Add. Edit MASTER_URI.
MASTER_URI = http://localhost:11412
Remocon Add Master
9. Press Add. You will see ros master gamza2.
Remocon Master List
10. Select gamza2.
11. Select My Interactions.
Remocon Role Chooser
12. Select Follower.
Remocon Interactions Chooser
13. Drive gamza1 using joystick to initiate following behavior.
14. Interrupt the processes. Close the windows.
You can watch these steps in the video:
Writing Your First Interaction