The Robotics Primer Workbook
Developed by  USC, iRobot® and Microsoft® Robotics Studio
Categories: Software | Stage | Player

Group:Group Howto

Contents

Intro

Group robotics typically require a number of physical robots to conduct an exercise. However, given the fact that you may not have a dozen Roomba/Creates lying around, you can make use of a simulator to create a series of robots.

Stage

Using the stage simulator, a great number of robots can be created. Here is an example stage world file that uses 11 robots:


# Desc: Stage demo with lots of models. Works with everything.cfg.
# CVS: $Id: everything.world,v 1.85 2006/03/29 05:11:00 rtv Exp $

# the size of a pixel in Stage's underlying raytrace model in meters
resolution     0.02

interval_sim 100  # milliseconds per update step
interval_real 100 # real-time milliseconds per update step

# defines Pioneer-like robots
include "pioneer.inc"

# defines 'map' object used for floorplans
include "map.inc"

# defines the laser model `sick_laser' configured like a Sick LMS-200
include "sick.inc"

size [20 20 ]

gui_disable 0
gui_interval 100
gui_menu_interval 20

window( 
  size [ 800 800.000 ] 
  center [0 0 ] 
  scale 0.025 
)

map( 
  bitmap "blank-room.png" 
  map_resolution 0.02
  size [20 20] 
  name "hospital"
)

# extend the pioneer2dx definition from pioneer.inc
#
define trickedoutpioneer pioneer2dx
(
  sick_laser(  
    pose [0.030 0.000 0.000 ]
    fiducialfinder( range_max 8 range_max_id 5 ) 

    ptz(
      blobfinder( 
        channel_count 6 
        channels [ "red" "blue" "green" "cyan" "yellow" "magenta" ]  
      )
    )
  )

  fiducial_return 1
  gripper_return 0

  localization "gps"
  localization_origin [ 0 0 0 ]

  bumper( bcount 3  
	  blength 0.2
          bpose[0] [0 -0.165  90]
          bpose[1] [0  0.165 -90] 
          bpose[2] [-0.26  0 0] 

	  blength[2] 0.1 # set the length of a single bumper
        )
)


trickedoutpioneer ( name "robot1" pose [ 0 0 0 ] )
trickedoutpioneer ( name "robot2" pose [ 0 5 0 ] )
trickedoutpioneer ( name "robot3" pose [ 0 6 0 ] )
trickedoutpioneer ( name "robot4" pose [ 0 3 0 ] )
trickedoutpioneer ( name "robot5" pose [ 3 5 0 ] )
trickedoutpioneer ( name "robot6" pose [ 4 5 0 ] )
trickedoutpioneer ( name "robot7" pose [ 5 5 0 ] )
trickedoutpioneer ( name "robot8" pose [ -4 -5 0 ] )
trickedoutpioneer ( name "robot9" pose [ -3 -5 0 ] )
trickedoutpioneer ( name "robot10" pose [ -2 -5 0 ] )
trickedoutpioneer ( name "robot11" pose [ -5 5 0 ] )

Save this file as everything.world. In addition to this file, a .png file is used as a model for the room:

Image:Blank-room.png

Save this file as blank-room.png

Player

To control all of these robots, the following player file can be used:


# Desc: Player sample configuration file for controlling Stage devices
# Date: 18 Apr 2003
# CVS: $Id: everything.cfg,v 1.33 2006/03/29 05:11:00 rtv Exp $


driver
(		
  name "stage"
  provides ["simulation:0"]
  plugin "libstageplugin"
  worldfile "everything.world"	
)

driver( name "stage" provides ["map:0" ] model "hospital" )


# robot 0
driver( name "stage"  provides [ "position2d:0" "sonar:0" "laser:0" "ptz:0" "blobfinder:0" "fiducial:0" "graphics2d:0"  "bumper:0" ]  model "robot1" )

# robot 1
driver(  name "stage" provides [ "position2d:1" "sonar:1" "laser:1" "ptz:1" "blobfinder:1" "fiducial:1" "graphics2d:1"  "bumper:1" ]  model "robot2" )
driver(  name "stage" provides [ "position2d:2" "sonar:2" "laser:2" "ptz:2" "blobfinder:2" "fiducial:2" "graphics2d:2"  "bumper:2" ]  model "robot3" )
driver(  name "stage" provides [ "position2d:3" "sonar:3" "laser:3" "ptz:3" "blobfinder:3" "fiducial:3" "graphics2d:3"  "bumper:3" ]  model "robot4" )
driver(  name "stage" provides [ "position2d:4" "sonar:4" "laser:4" "ptz:4" "blobfinder:4" "fiducial:4" "graphics2d:4"  "bumper:4" ]  model "robot5" )
driver(  name "stage" provides [ "position2d:5" "sonar:5" "laser:5" "ptz:5" "blobfinder:5" "fiducial:5" "graphics2d:5"  "bumper:5" ]  model "robot6" )
driver(  name "stage" provides [ "position2d:6" "sonar:6" "laser:6" "ptz:6" "blobfinder:6" "fiducial:6" "graphics2d:6"  "bumper:6" ]  model "robot7" )
driver(  name "stage" provides [ "position2d:7" "sonar:7" "laser:7" "ptz:7" "blobfinder:7" "fiducial:7" "graphics2d:7"  "bumper:7" ]  model "robot8" )
driver(  name "stage" provides [ "position2d:8" "sonar:8" "laser:8" "ptz:8" "blobfinder:8" "fiducial:8" "graphics2d:8"  "bumper:8" ]  model "robot9" )
driver(  name "stage" provides [ "position2d:9" "sonar:9" "laser:9" "ptz:9" "blobfinder:9" "fiducial:9" "graphics2d:9"  "bumper:9" ]  model "robot10" )
driver(  name "stage" provides [ "position2d:10" "sonar:10" "laser:10" "ptz:10" "blobfinder:10" "fiducial:10"  "graphics2d:10" "bumper:10" ]  model "robot11" )


Save that file as everything.cfg. The simulator and player can be run with the command:

player everything.cfg

When that is done, a window such as this should appear:

Image:Before.jpg

Exercise Code

In the client.xml file, the following change should be made:

<?xml version='1.0'?>

<client xmlns:player='http://www.roombadev.com/xmlschema/psg/#player'
        xmlns:roomba='http://www.roombadev.com/xmlschema/psg/#roomba'>

  <player:params>
    <host>localhost</host>
    <port>6665</port>

    <num_clients>11</num_clients>
  </player:params>



</client>

Then when editing the exercise.cc file, robot client functions such as:

client->SetSpeed( 0.5, 0.0 );

become:

clients[i]->SetSpeed( 0.5, 0.0 );

where i is the robot number from 0..n-1

Notice the line:

    <num_clients>11</num_clients>

This tells the program to instantiate 11 robots using the player config file. This number defaults to 1.

client->SetSpeed, etc. still works, which defaults to clients[0].

Retrieved from "http://roboticsprimer.sourceforge.net/workbook/Group:Group_Howto"

This page has been accessed 3,568 times. This page was last modified 00:29, 4 April 2007. Content is available under GNU Free Documentation License 1.2.


Browse
Main Page
Glossary
Sections
Prerequisites
Introduction
Robot Components
Locomotion
Sensors
Feedback Control
Deliberative Control
Reactive Control
Hybrid Control
Behavior-based Control
Emergent Behavior
Navigation
Group Robotics
Learning


Log in / create account