Update of /cvsroot/playerstage/code/stage/worlds/playerswarm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18271/playerswarm

Added Files:
        Makefile args.h many.sh multiple.cc pss.cfg pss.world 
        pss3d.cfg pss3d.world pss_large.cfg pss_large.world single.cc 
Log Message:
added 100-robot swarm demo. Useful for testing

--- NEW FILE: pss_large.cfg ---

# load the Stage plugin simulation driver
driver
(               
  name "stage"
  provides ["simulation:0" ]
  plugin "libstageplugin"

  # load the named file into the simulator
  worldfile "pss_large.world"   
)

# Create a Stage driver and attach position2d and laser interfaces 
# to the model "r1"
driver( name "stage" model "r00" provides ["position2d:00" "sonar:00" 
"graphics2d:00"] )
driver( name "stage" model "r01" provides ["position2d:01" "sonar:01" 
"graphics2d:01"] )
driver( name "stage" model "r02" provides ["position2d:02" "sonar:02" 
"graphics2d:02"] )
driver( name "stage" model "r03" provides ["position2d:03" "sonar:03" 
"graphics2d:03"] )
driver( name "stage" model "r04" provides ["position2d:04" "sonar:04" 
"graphics2d:04"] )
driver( name "stage" model "r05" provides ["position2d:05" "sonar:05" 
"graphics2d:05"] )
driver( name "stage" model "r06" provides ["position2d:06" "sonar:06" 
"graphics2d:06"] )
driver( name "stage" model "r07" provides ["position2d:07" "sonar:07" 
"graphics2d:07"] )
driver( name "stage" model "r08" provides ["position2d:08" "sonar:08" 
"graphics2d:08"] )
driver( name "stage" model "r09" provides ["position2d:09" "sonar:09" 
"graphics2d:09"] )

driver( name "stage" model "r10" provides ["position2d:10" "sonar:10" 
"graphics2d:10"] )
driver( name "stage" model "r11" provides ["position2d:11" "sonar:11" 
"graphics2d:11"] )
driver( name "stage" model "r12" provides ["position2d:12" "sonar:12" 
"graphics2d:12"] )
driver( name "stage" model "r13" provides ["position2d:13" "sonar:13" 
"graphics2d:13"] )
driver( name "stage" model "r14" provides ["position2d:14" "sonar:14" 
"graphics2d:14"] )
driver( name "stage" model "r15" provides ["position2d:15" "sonar:15" 
"graphics2d:15"] )
driver( name "stage" model "r16" provides ["position2d:16" "sonar:16" 
"graphics2d:16"] )
driver( name "stage" model "r17" provides ["position2d:17" "sonar:17" 
"graphics2d:17"] )
driver( name "stage" model "r18" provides ["position2d:18" "sonar:18" 
"graphics2d:18"] )
driver( name "stage" model "r19" provides ["position2d:19" "sonar:19" 
"graphics2d:19"] )

driver( name "stage" model "r20" provides ["position2d:20" "sonar:20" 
"graphics2d:20"] )
driver( name "stage" model "r21" provides ["position2d:21" "sonar:21" 
"graphics2d:21"] )
driver( name "stage" model "r22" provides ["position2d:22" "sonar:22" 
"graphics2d:22"] )
driver( name "stage" model "r23" provides ["position2d:23" "sonar:23" 
"graphics2d:23"] )
driver( name "stage" model "r24" provides ["position2d:24" "sonar:24" 
"graphics2d:24"] )
driver( name "stage" model "r25" provides ["position2d:25" "sonar:25" 
"graphics2d:25"] )
driver( name "stage" model "r26" provides ["position2d:26" "sonar:26" 
"graphics2d:26"] )
driver( name "stage" model "r27" provides ["position2d:27" "sonar:27" 
"graphics2d:27"] )
driver( name "stage" model "r28" provides ["position2d:28" "sonar:28" 
"graphics2d:28"] )
driver( name "stage" model "r29" provides ["position2d:29" "sonar:29" 
"graphics2d:29"] )     

driver( name "stage" model "r30" provides ["position2d:30" "sonar:30" 
"graphics2d:30"] )
driver( name "stage" model "r31" provides ["position2d:31" "sonar:31" 
"graphics2d:31"] )
driver( name "stage" model "r32" provides ["position2d:32" "sonar:32" 
"graphics2d:32"] )
driver( name "stage" model "r33" provides ["position2d:33" "sonar:33" 
"graphics2d:33"] )
driver( name "stage" model "r34" provides ["position2d:34" "sonar:34" 
"graphics2d:34"] )
driver( name "stage" model "r35" provides ["position2d:35" "sonar:35" 
"graphics2d:35"] )
driver( name "stage" model "r36" provides ["position2d:36" "sonar:36" 
"graphics2d:36"] )
driver( name "stage" model "r37" provides ["position2d:37" "sonar:37" 
"graphics2d:37"] )
driver( name "stage" model "r38" provides ["position2d:38" "sonar:38" 
"graphics2d:38"] )
driver( name "stage" model "r39" provides ["position2d:39" "sonar:39" 
"graphics2d:39"] )

driver( name "stage" model "r40" provides ["position2d:40" "sonar:40" 
"graphics2d:40"] )
driver( name "stage" model "r41" provides ["position2d:41" "sonar:41" 
"graphics2d:41"] )
driver( name "stage" model "r42" provides ["position2d:42" "sonar:42" 
"graphics2d:42"] )
driver( name "stage" model "r43" provides ["position2d:43" "sonar:43" 
"graphics2d:43"] )
driver( name "stage" model "r44" provides ["position2d:44" "sonar:44" 
"graphics2d:44"] )
driver( name "stage" model "r45" provides ["position2d:45" "sonar:45" 
"graphics2d:45"] )
driver( name "stage" model "r46" provides ["position2d:46" "sonar:46" 
"graphics2d:46"] )
driver( name "stage" model "r47" provides ["position2d:47" "sonar:47" 
"graphics2d:47"] )
driver( name "stage" model "r48" provides ["position2d:48" "sonar:48" 
"graphics2d:48"] )
driver( name "stage" model "r49" provides ["position2d:49" "sonar:49" 
"graphics2d:49"] )

driver( name "stage" model "r50" provides ["position2d:50" "sonar:50" 
"graphics2d:50"] )
driver( name "stage" model "r51" provides ["position2d:51" "sonar:51" 
"graphics2d:51"] )
driver( name "stage" model "r52" provides ["position2d:52" "sonar:52" 
"graphics2d:52"] )
driver( name "stage" model "r53" provides ["position2d:53" "sonar:53" 
"graphics2d:53"] )
driver( name "stage" model "r54" provides ["position2d:54" "sonar:54" 
"graphics2d:54"] )
driver( name "stage" model "r55" provides ["position2d:55" "sonar:55" 
"graphics2d:55"] )
driver( name "stage" model "r56" provides ["position2d:56" "sonar:56" 
"graphics2d:56"] )
driver( name "stage" model "r57" provides ["position2d:57" "sonar:57" 
"graphics2d:57"] )
driver( name "stage" model "r58" provides ["position2d:58" "sonar:58" 
"graphics2d:58"] )
driver( name "stage" model "r59" provides ["position2d:59" "sonar:59" 
"graphics2d:59"] )

driver( name "stage" model "r60" provides ["position2d:60" "sonar:60" 
"graphics2d:60"] )
driver( name "stage" model "r61" provides ["position2d:61" "sonar:61" 
"graphics2d:61"] )
driver( name "stage" model "r62" provides ["position2d:62" "sonar:62" 
"graphics2d:62"] )
driver( name "stage" model "r63" provides ["position2d:63" "sonar:63" 
"graphics2d:63"] )
driver( name "stage" model "r64" provides ["position2d:64" "sonar:64" 
"graphics2d:64"] )
driver( name "stage" model "r65" provides ["position2d:65" "sonar:65" 
"graphics2d:65"] )
driver( name "stage" model "r66" provides ["position2d:66" "sonar:66" 
"graphics2d:66"] )
driver( name "stage" model "r67" provides ["position2d:67" "sonar:67" 
"graphics2d:67"] )
driver( name "stage" model "r68" provides ["position2d:68" "sonar:68" 
"graphics2d:68"] )
driver( name "stage" model "r69" provides ["position2d:69" "sonar:69" 
"graphics2d:69"] )

driver( name "stage" model "r70" provides ["position2d:70" "sonar:70" 
"graphics2d:70"] )
driver( name "stage" model "r71" provides ["position2d:71" "sonar:71" 
"graphics2d:71"] )
driver( name "stage" model "r72" provides ["position2d:72" "sonar:72" 
"graphics2d:72"] )
driver( name "stage" model "r73" provides ["position2d:73" "sonar:73" 
"graphics2d:73"] )
driver( name "stage" model "r74" provides ["position2d:74" "sonar:74" 
"graphics2d:74"] )
driver( name "stage" model "r75" provides ["position2d:75" "sonar:75" 
"graphics2d:75"] )
driver( name "stage" model "r76" provides ["position2d:76" "sonar:76" 
"graphics2d:76"] )
driver( name "stage" model "r77" provides ["position2d:77" "sonar:77" 
"graphics2d:77"] )
driver( name "stage" model "r78" provides ["position2d:78" "sonar:78" 
"graphics2d:78"] )
driver( name "stage" model "r79" provides ["position2d:79" "sonar:79" 
"graphics2d:79"] )

driver( name "stage" model "r80" provides ["position2d:80" "sonar:80" 
"graphics2d:80"] )
driver( name "stage" model "r81" provides ["position2d:81" "sonar:81" 
"graphics2d:81"] )
driver( name "stage" model "r82" provides ["position2d:82" "sonar:82" 
"graphics2d:82"] )
driver( name "stage" model "r83" provides ["position2d:83" "sonar:83" 
"graphics2d:83"] )
driver( name "stage" model "r84" provides ["position2d:84" "sonar:84" 
"graphics2d:84"] )
driver( name "stage" model "r85" provides ["position2d:85" "sonar:85" 
"graphics2d:85"] )
driver( name "stage" model "r86" provides ["position2d:86" "sonar:86" 
"graphics2d:86"] )
driver( name "stage" model "r87" provides ["position2d:87" "sonar:87" 
"graphics2d:87"] )
driver( name "stage" model "r88" provides ["position2d:88" "sonar:88" 
"graphics2d:88"] )
driver( name "stage" model "r89" provides ["position2d:89" "sonar:89" 
"graphics2d:89"] )

driver( name "stage" model "r90" provides ["position2d:90" "sonar:90" 
"graphics2d:90"] )
driver( name "stage" model "r91" provides ["position2d:91" "sonar:91" 
"graphics2d:91"] )
driver( name "stage" model "r92" provides ["position2d:92" "sonar:92" 
"graphics2d:92"] )
driver( name "stage" model "r93" provides ["position2d:93" "sonar:93" 
"graphics2d:93"] )
driver( name "stage" model "r94" provides ["position2d:94" "sonar:94" 
"graphics2d:94"] )
driver( name "stage" model "r95" provides ["position2d:95" "sonar:95" 
"graphics2d:95"] )
driver( name "stage" model "r96" provides ["position2d:96" "sonar:96" 
"graphics2d:96"] )
driver( name "stage" model "r97" provides ["position2d:97" "sonar:97" 
"graphics2d:97"] )
driver( name "stage" model "r98" provides ["position2d:98" "sonar:98" 
"graphics2d:98"] )
driver( name "stage" model "r99" provides ["position2d:99" "sonar:99" 
"graphics2d:99"] )



--- NEW FILE: args.h ---
#include <libplayerc++/playerc++.h>
#include <iostream>
#include <unistd.h>

std::string  gHostname(PlayerCc::PLAYER_HOSTNAME);
uint         gPort(PlayerCc::PLAYER_PORTNUM);
uint         gIndex(0);
uint         gDebug(0);
uint         gFrequency(10); // Hz
uint         gDataMode(PLAYER_DATAMODE_PUSH);
bool         gUseLaser(false);
uint         gPop(1);

void print_usage(int argc, char** argv);

int parse_args(int argc, char** argv)
{
  // set the flags
  const char* optflags = "h:p:i:n:d:u:lm:";
  int ch;

  // use getopt to parse the flags
  while(-1 != (ch = getopt(argc, argv, optflags)))
  {
    switch(ch)
    {
      // case values must match long_options
      case 'h': // hostname
          gHostname = optarg;
          break;
      case 'n': // number of robots
          gPop = atoi(optarg);
          break;
      case 'p': // port
          gPort = atoi(optarg);
          break;
      case 'i': // index
          gIndex = atoi(optarg);
          break;
      case 'd': // debug
          gDebug = atoi(optarg);
          break;
      case 'u': // update rate
          gFrequency = atoi(optarg);
          break;
      case 'm': // datamode
          gDataMode = atoi(optarg);
          break;
      case 'l': // datamode
          gUseLaser = true;
          break;
      case '?': // help
      case ':':
      default:  // unknown
        print_usage(argc, argv);
        exit (-1);
    }
  }

  return (0);
} // end parse_args

void print_usage(int argc, char** argv)
{
  using namespace std;
  cerr << "USAGE:  " << *argv << " [options]" << endl << endl;
  cerr << "Where [options] can be:" << endl;
  cerr << "  -h <hostname>  : hostname to connect to (default: "
       << PlayerCc::PLAYER_HOSTNAME << ")" << endl;
  cerr << "  -p <port>      : port where Player will listen (default: "
       << PlayerCc::PLAYER_PORTNUM << ")" << endl;
  cerr << "  -i <index>     : device index (default: 0)"
       << endl;
  cerr << "  -n <number of robots>      : population size (default: "
       << 1 << ")" << endl;
  cerr << "  -d <level>     : debug message level (0 = none -- 9 = all)"
       << endl;
  cerr << "  -u <rate>      : set server update rate to <rate> in Hz"
       << endl;
  cerr << "  -l      : Use laser if applicable"
       << endl;
  cerr << "  -m <datamode>  : set server data delivery mode"
       << endl;
  cerr << "                      PLAYER_DATAMODE_PUSH = "
       << PLAYER_DATAMODE_PUSH << endl;
  cerr << "                      PLAYER_DATAMODE_PULL = "
       << PLAYER_DATAMODE_PULL << endl;
/*  cerr << "                      PLAYER_DATAMODE_PUSH_ALL = "
       << PLAYER_DATAMODE_PUSH_ALL << endl;
  cerr << "                      PLAYER_DATAMODE_PULL_ALL = "
       << PLAYER_DATAMODE_PULL_ALL << endl;
  cerr << "                      PLAYER_DATAMODE_PUSH_NEW = "
       << PLAYER_DATAMODE_PUSH_NEW << endl;
  cerr << "                      PLAYER_DATAMODE_PULL_NEW = "
       << PLAYER_DATAMODE_PULL_NEW << endl;
  cerr << "                      PLAYER_DATAMODE_ASYNC    = "
       << PLAYER_DATAMODE_ASYNC << endl;*/
} // end print_usage

--- NEW FILE: Makefile ---
CXX = g++
CXXFLAGS = -Wall `pkg-config --cflags playerc++`
LDFLAGS = `pkg-config --libs playerc++`

all: single multiple

single: single.cc args.h
        $(CXX) $(CXXFLAGS) -o $@ $< $(LDFLAGS)

multiple: multiple.cc args.h
        $(CXX) $(CXXFLAGS) -o $@ $< $(LDFLAGS)

clean:
        rm -f multiple single
--- NEW FILE: pss.cfg ---

# load the Stage plugin simulation driver
driver
(               
  name "stage"
  provides ["simulation:0" ]
  plugin "libstageplugin"

  # load the named file into the simulator
  worldfile "pss.world" 
)

# Create a Stage driver and attach position2d and laser interfaces 
# to the model "r1"
driver( name "stage" model "r00" provides ["position2d:00" "sonar:00" 
"graphics2d:00"] )
driver( name "stage" model "r01" provides ["position2d:01" "sonar:01" 
"graphics2d:01"] )
driver( name "stage" model "r02" provides ["position2d:02" "sonar:02" 
"graphics2d:02"] )
driver( name "stage" model "r03" provides ["position2d:03" "sonar:03" 
"graphics2d:03"] )
driver( name "stage" model "r04" provides ["position2d:04" "sonar:04" 
"graphics2d:04"] )
driver( name "stage" model "r05" provides ["position2d:05" "sonar:05" 
"graphics2d:05"] )
driver( name "stage" model "r06" provides ["position2d:06" "sonar:06" 
"graphics2d:06"] )
driver( name "stage" model "r07" provides ["position2d:07" "sonar:07" 
"graphics2d:07"] )
driver( name "stage" model "r08" provides ["position2d:08" "sonar:08" 
"graphics2d:08"] )
driver( name "stage" model "r09" provides ["position2d:09" "sonar:09" 
"graphics2d:09"] )

driver( name "stage" model "r10" provides ["position2d:10" "sonar:10" 
"graphics2d:10"] )
driver( name "stage" model "r11" provides ["position2d:11" "sonar:11" 
"graphics2d:11"] )
driver( name "stage" model "r12" provides ["position2d:12" "sonar:12" 
"graphics2d:12"] )
driver( name "stage" model "r13" provides ["position2d:13" "sonar:13" 
"graphics2d:13"] )
driver( name "stage" model "r14" provides ["position2d:14" "sonar:14" 
"graphics2d:14"] )
driver( name "stage" model "r15" provides ["position2d:15" "sonar:15" 
"graphics2d:15"] )
driver( name "stage" model "r16" provides ["position2d:16" "sonar:16" 
"graphics2d:16"] )
driver( name "stage" model "r17" provides ["position2d:17" "sonar:17" 
"graphics2d:17"] )
driver( name "stage" model "r18" provides ["position2d:18" "sonar:18" 
"graphics2d:18"] )
driver( name "stage" model "r19" provides ["position2d:19" "sonar:19" 
"graphics2d:19"] )

driver( name "stage" model "r20" provides ["position2d:20" "sonar:20" 
"graphics2d:20"] )
driver( name "stage" model "r21" provides ["position2d:21" "sonar:21" 
"graphics2d:21"] )
driver( name "stage" model "r22" provides ["position2d:22" "sonar:22" 
"graphics2d:22"] )
driver( name "stage" model "r23" provides ["position2d:23" "sonar:23" 
"graphics2d:23"] )
driver( name "stage" model "r24" provides ["position2d:24" "sonar:24" 
"graphics2d:24"] )
driver( name "stage" model "r25" provides ["position2d:25" "sonar:25" 
"graphics2d:25"] )
driver( name "stage" model "r26" provides ["position2d:26" "sonar:26" 
"graphics2d:26"] )
driver( name "stage" model "r27" provides ["position2d:27" "sonar:27" 
"graphics2d:27"] )
driver( name "stage" model "r28" provides ["position2d:28" "sonar:28" 
"graphics2d:28"] )
driver( name "stage" model "r29" provides ["position2d:29" "sonar:29" 
"graphics2d:29"] )     

driver( name "stage" model "r30" provides ["position2d:30" "sonar:30" 
"graphics2d:30"] )
driver( name "stage" model "r31" provides ["position2d:31" "sonar:31" 
"graphics2d:31"] )
driver( name "stage" model "r32" provides ["position2d:32" "sonar:32" 
"graphics2d:32"] )
driver( name "stage" model "r33" provides ["position2d:33" "sonar:33" 
"graphics2d:33"] )
driver( name "stage" model "r34" provides ["position2d:34" "sonar:34" 
"graphics2d:34"] )
driver( name "stage" model "r35" provides ["position2d:35" "sonar:35" 
"graphics2d:35"] )
driver( name "stage" model "r36" provides ["position2d:36" "sonar:36" 
"graphics2d:36"] )
driver( name "stage" model "r37" provides ["position2d:37" "sonar:37" 
"graphics2d:37"] )
driver( name "stage" model "r38" provides ["position2d:38" "sonar:38" 
"graphics2d:38"] )
driver( name "stage" model "r39" provides ["position2d:39" "sonar:39" 
"graphics2d:39"] )

driver( name "stage" model "r40" provides ["position2d:40" "sonar:40" 
"graphics2d:40"] )
driver( name "stage" model "r41" provides ["position2d:41" "sonar:41" 
"graphics2d:41"] )
driver( name "stage" model "r42" provides ["position2d:42" "sonar:42" 
"graphics2d:42"] )
driver( name "stage" model "r43" provides ["position2d:43" "sonar:43" 
"graphics2d:43"] )
driver( name "stage" model "r44" provides ["position2d:44" "sonar:44" 
"graphics2d:44"] )
driver( name "stage" model "r45" provides ["position2d:45" "sonar:45" 
"graphics2d:45"] )
driver( name "stage" model "r46" provides ["position2d:46" "sonar:46" 
"graphics2d:46"] )
driver( name "stage" model "r47" provides ["position2d:47" "sonar:47" 
"graphics2d:47"] )
driver( name "stage" model "r48" provides ["position2d:48" "sonar:48" 
"graphics2d:48"] )
driver( name "stage" model "r49" provides ["position2d:49" "sonar:49" 
"graphics2d:49"] )

driver( name "stage" model "r50" provides ["position2d:50" "sonar:50" 
"graphics2d:50"] )
driver( name "stage" model "r51" provides ["position2d:51" "sonar:51" 
"graphics2d:51"] )
driver( name "stage" model "r52" provides ["position2d:52" "sonar:52" 
"graphics2d:52"] )
driver( name "stage" model "r53" provides ["position2d:53" "sonar:53" 
"graphics2d:53"] )
driver( name "stage" model "r54" provides ["position2d:54" "sonar:54" 
"graphics2d:54"] )
driver( name "stage" model "r55" provides ["position2d:55" "sonar:55" 
"graphics2d:55"] )
driver( name "stage" model "r56" provides ["position2d:56" "sonar:56" 
"graphics2d:56"] )
driver( name "stage" model "r57" provides ["position2d:57" "sonar:57" 
"graphics2d:57"] )
driver( name "stage" model "r58" provides ["position2d:58" "sonar:58" 
"graphics2d:58"] )
driver( name "stage" model "r59" provides ["position2d:59" "sonar:59" 
"graphics2d:59"] )

driver( name "stage" model "r60" provides ["position2d:60" "sonar:60" 
"graphics2d:60"] )
driver( name "stage" model "r61" provides ["position2d:61" "sonar:61" 
"graphics2d:61"] )
driver( name "stage" model "r62" provides ["position2d:62" "sonar:62" 
"graphics2d:62"] )
driver( name "stage" model "r63" provides ["position2d:63" "sonar:63" 
"graphics2d:63"] )
driver( name "stage" model "r64" provides ["position2d:64" "sonar:64" 
"graphics2d:64"] )
driver( name "stage" model "r65" provides ["position2d:65" "sonar:65" 
"graphics2d:65"] )
driver( name "stage" model "r66" provides ["position2d:66" "sonar:66" 
"graphics2d:66"] )
driver( name "stage" model "r67" provides ["position2d:67" "sonar:67" 
"graphics2d:67"] )
driver( name "stage" model "r68" provides ["position2d:68" "sonar:68" 
"graphics2d:68"] )
driver( name "stage" model "r69" provides ["position2d:69" "sonar:69" 
"graphics2d:69"] )

driver( name "stage" model "r70" provides ["position2d:70" "sonar:70" 
"graphics2d:70"] )
driver( name "stage" model "r71" provides ["position2d:71" "sonar:71" 
"graphics2d:71"] )
driver( name "stage" model "r72" provides ["position2d:72" "sonar:72" 
"graphics2d:72"] )
driver( name "stage" model "r73" provides ["position2d:73" "sonar:73" 
"graphics2d:73"] )
driver( name "stage" model "r74" provides ["position2d:74" "sonar:74" 
"graphics2d:74"] )
driver( name "stage" model "r75" provides ["position2d:75" "sonar:75" 
"graphics2d:75"] )
driver( name "stage" model "r76" provides ["position2d:76" "sonar:76" 
"graphics2d:76"] )
driver( name "stage" model "r77" provides ["position2d:77" "sonar:77" 
"graphics2d:77"] )
driver( name "stage" model "r78" provides ["position2d:78" "sonar:78" 
"graphics2d:78"] )
driver( name "stage" model "r79" provides ["position2d:79" "sonar:79" 
"graphics2d:79"] )

driver( name "stage" model "r80" provides ["position2d:80" "sonar:80" 
"graphics2d:80"] )
driver( name "stage" model "r81" provides ["position2d:81" "sonar:81" 
"graphics2d:81"] )
driver( name "stage" model "r82" provides ["position2d:82" "sonar:82" 
"graphics2d:82"] )
driver( name "stage" model "r83" provides ["position2d:83" "sonar:83" 
"graphics2d:83"] )
driver( name "stage" model "r84" provides ["position2d:84" "sonar:84" 
"graphics2d:84"] )
driver( name "stage" model "r85" provides ["position2d:85" "sonar:85" 
"graphics2d:85"] )
driver( name "stage" model "r86" provides ["position2d:86" "sonar:86" 
"graphics2d:86"] )
driver( name "stage" model "r87" provides ["position2d:87" "sonar:87" 
"graphics2d:87"] )
driver( name "stage" model "r88" provides ["position2d:88" "sonar:88" 
"graphics2d:88"] )
driver( name "stage" model "r89" provides ["position2d:89" "sonar:89" 
"graphics2d:89"] )

driver( name "stage" model "r90" provides ["position2d:90" "sonar:90" 
"graphics2d:90"] )
driver( name "stage" model "r91" provides ["position2d:91" "sonar:91" 
"graphics2d:91"] )
driver( name "stage" model "r92" provides ["position2d:92" "sonar:92" 
"graphics2d:92"] )
driver( name "stage" model "r93" provides ["position2d:93" "sonar:93" 
"graphics2d:93"] )
driver( name "stage" model "r94" provides ["position2d:94" "sonar:94" 
"graphics2d:94"] )
driver( name "stage" model "r95" provides ["position2d:95" "sonar:95" 
"graphics2d:95"] )
driver( name "stage" model "r96" provides ["position2d:96" "sonar:96" 
"graphics2d:96"] )
driver( name "stage" model "r97" provides ["position2d:97" "sonar:97" 
"graphics2d:97"] )
driver( name "stage" model "r98" provides ["position2d:98" "sonar:98" 
"graphics2d:98"] )
driver( name "stage" model "r99" provides ["position2d:99" "sonar:99" 
"graphics2d:99"] )



--- NEW FILE: pss3d.cfg ---

# load the Stage plugin simulation driver
driver
(               
  name "stage"
  provides ["simulation:0" ]
  plugin "libstageplugin"

  # load the named file into the simulator
  #worldfile "pss.world"        
  worldfile "pss3d.world"
)

# Create a Stage driver and attach position2d and laser interfaces 
# to the model "r1"
driver( name "stage" model "r00" provides ["position2d:00" "sonar:00" ] )
driver( name "stage" model "r01" provides ["position2d:01" "sonar:01" ] )
driver( name "stage" model "r02" provides ["position2d:02" "sonar:02" ] )
driver( name "stage" model "r03" provides ["position2d:03" "sonar:03" ] )
driver( name "stage" model "r04" provides ["position2d:04" "sonar:04" ] )
driver( name "stage" model "r05" provides ["position2d:05" "sonar:05" ] )
driver( name "stage" model "r06" provides ["position2d:06" "sonar:06" ] )
driver( name "stage" model "r07" provides ["position2d:07" "sonar:07" ] )
driver( name "stage" model "r08" provides ["position2d:08" "sonar:08" ] )
driver( name "stage" model "r09" provides ["position2d:09" "sonar:09" ] )

driver( name "stage" model "r10" provides ["position2d:10" "sonar:10" ] )
driver( name "stage" model "r11" provides ["position2d:11" "sonar:11" ] )
driver( name "stage" model "r12" provides ["position2d:12" "sonar:12" ] )
driver( name "stage" model "r13" provides ["position2d:13" "sonar:13" ] )
driver( name "stage" model "r14" provides ["position2d:14" "sonar:14" ] )
driver( name "stage" model "r15" provides ["position2d:15" "sonar:15" ] )
driver( name "stage" model "r16" provides ["position2d:16" "sonar:16" ] )
driver( name "stage" model "r17" provides ["position2d:17" "sonar:17" ] )
driver( name "stage" model "r18" provides ["position2d:18" "sonar:18" ] )
driver( name "stage" model "r19" provides ["position2d:19" "sonar:19" ] )

driver( name "stage" model "r20" provides ["position2d:20" "sonar:20" ] )
driver( name "stage" model "r21" provides ["position2d:21" "sonar:21" ] )
driver( name "stage" model "r22" provides ["position2d:22" "sonar:22" ] )
driver( name "stage" model "r23" provides ["position2d:23" "sonar:23" ] )
driver( name "stage" model "r24" provides ["position2d:24" "sonar:24" ] )
driver( name "stage" model "r25" provides ["position2d:25" "sonar:25" ] )
driver( name "stage" model "r26" provides ["position2d:26" "sonar:26" ] )
driver( name "stage" model "r27" provides ["position2d:27" "sonar:27" ] )
driver( name "stage" model "r28" provides ["position2d:28" "sonar:28" ] )
driver( name "stage" model "r29" provides ["position2d:29" "sonar:29" ] )     

driver( name "stage" model "r30" provides ["position2d:30" "sonar:30" ] )
driver( name "stage" model "r31" provides ["position2d:31" "sonar:31" ] )
driver( name "stage" model "r32" provides ["position2d:32" "sonar:32" ] )
driver( name "stage" model "r33" provides ["position2d:33" "sonar:33" ] )
driver( name "stage" model "r34" provides ["position2d:34" "sonar:34" ] )
driver( name "stage" model "r35" provides ["position2d:35" "sonar:35" ] )
driver( name "stage" model "r36" provides ["position2d:36" "sonar:36" ] )
driver( name "stage" model "r37" provides ["position2d:37" "sonar:37" ] )
driver( name "stage" model "r38" provides ["position2d:38" "sonar:38" ] )
driver( name "stage" model "r39" provides ["position2d:39" "sonar:39" ] )

driver( name "stage" model "r40" provides ["position2d:40" "sonar:40" ] )
driver( name "stage" model "r41" provides ["position2d:41" "sonar:41" ] )
driver( name "stage" model "r42" provides ["position2d:42" "sonar:42" ] )
driver( name "stage" model "r43" provides ["position2d:43" "sonar:43" ] )
driver( name "stage" model "r44" provides ["position2d:44" "sonar:44" ] )
driver( name "stage" model "r45" provides ["position2d:45" "sonar:45" ] )
driver( name "stage" model "r46" provides ["position2d:46" "sonar:46" ] )
driver( name "stage" model "r47" provides ["position2d:47" "sonar:47" ] )
driver( name "stage" model "r48" provides ["position2d:48" "sonar:48" ] )
driver( name "stage" model "r49" provides ["position2d:49" "sonar:49" ] )

driver( name "stage" model "r50" provides ["position2d:50" "sonar:50" ] )
driver( name "stage" model "r51" provides ["position2d:51" "sonar:51" ] )
driver( name "stage" model "r52" provides ["position2d:52" "sonar:52" ] )
driver( name "stage" model "r53" provides ["position2d:53" "sonar:53" ] )
driver( name "stage" model "r54" provides ["position2d:54" "sonar:54" ] )
driver( name "stage" model "r55" provides ["position2d:55" "sonar:55" ] )
driver( name "stage" model "r56" provides ["position2d:56" "sonar:56" ] )
driver( name "stage" model "r57" provides ["position2d:57" "sonar:57" ] )
driver( name "stage" model "r58" provides ["position2d:58" "sonar:58" ] )
driver( name "stage" model "r59" provides ["position2d:59" "sonar:59" ] )

driver( name "stage" model "r60" provides ["position2d:60" "sonar:60" ] )
driver( name "stage" model "r61" provides ["position2d:61" "sonar:61" ] )
driver( name "stage" model "r62" provides ["position2d:62" "sonar:62" ] )
driver( name "stage" model "r63" provides ["position2d:63" "sonar:63" ] )
driver( name "stage" model "r64" provides ["position2d:64" "sonar:64" ] )
driver( name "stage" model "r65" provides ["position2d:65" "sonar:65" ] )
driver( name "stage" model "r66" provides ["position2d:66" "sonar:66" ] )
driver( name "stage" model "r67" provides ["position2d:67" "sonar:67" ] )
driver( name "stage" model "r68" provides ["position2d:68" "sonar:68" ] )
driver( name "stage" model "r69" provides ["position2d:69" "sonar:69" ] )

driver( name "stage" model "r70" provides ["position2d:70" "sonar:70" ] )
driver( name "stage" model "r71" provides ["position2d:71" "sonar:71" ] )
driver( name "stage" model "r72" provides ["position2d:72" "sonar:72" ] )
driver( name "stage" model "r73" provides ["position2d:73" "sonar:73" ] )
driver( name "stage" model "r74" provides ["position2d:74" "sonar:74" ] )
driver( name "stage" model "r75" provides ["position2d:75" "sonar:75" ] )
driver( name "stage" model "r76" provides ["position2d:76" "sonar:76" ] )
driver( name "stage" model "r77" provides ["position2d:77" "sonar:77" ] )
driver( name "stage" model "r78" provides ["position2d:78" "sonar:78" ] )
driver( name "stage" model "r79" provides ["position2d:79" "sonar:79" ] )

driver( name "stage" model "r80" provides ["position2d:80" "sonar:80" ] )
driver( name "stage" model "r81" provides ["position2d:81" "sonar:81" ] )
driver( name "stage" model "r82" provides ["position2d:82" "sonar:82" ] )
driver( name "stage" model "r83" provides ["position2d:83" "sonar:83" ] )
driver( name "stage" model "r84" provides ["position2d:84" "sonar:84" ] )
driver( name "stage" model "r85" provides ["position2d:85" "sonar:85" ] )
driver( name "stage" model "r86" provides ["position2d:86" "sonar:86" ] )
driver( name "stage" model "r87" provides ["position2d:87" "sonar:87" ] )
driver( name "stage" model "r88" provides ["position2d:88" "sonar:88" ] )
driver( name "stage" model "r89" provides ["position2d:89" "sonar:89" ] )

driver( name "stage" model "r90" provides ["position2d:90" "sonar:90" ] )
driver( name "stage" model "r91" provides ["position2d:91" "sonar:91" ] )
driver( name "stage" model "r92" provides ["position2d:92" "sonar:92" ] )
driver( name "stage" model "r93" provides ["position2d:93" "sonar:93" ] )
driver( name "stage" model "r94" provides ["position2d:94" "sonar:94" ] )
driver( name "stage" model "r95" provides ["position2d:95" "sonar:95" ] )
driver( name "stage" model "r96" provides ["position2d:96" "sonar:96" ] )
driver( name "stage" model "r97" provides ["position2d:97" "sonar:97" ] )
driver( name "stage" model "r98" provides ["position2d:98" "sonar:98" ] )
driver( name "stage" model "r99" provides ["position2d:99" "sonar:99" ] )



--- NEW FILE: pss_large.world ---

# Desc: 1 pioneer robot with laser      
# CVS: $Id: pss_large.world,v 1.1 2007/09/11 01:24:44 rtv Exp $

# size of the world in meters
#size [40 18]
size [120 60]

# set the resolution of the underlying raytrace model in meters
resolution 0.02

# set the ratio of simulation and real time
interval_sim 100  # milliseconds per update step
interval_real 100 # real-time milliseconds per update step


# configure the GUI window
window
( 
  size [ 1436.000 856.000 ] 
  center [-17.596 -10.652] 
  scale 0.008 

  rangerdata 1
  fill_polygons 1
)

# create some instances of our 'erratic' robot model
define swarmbot position
(
  gui_nose 1    
  gui_outline 0

  size [0.2 0.2]

  # this polygon approximates the shape of a pioneer
  polygons 1
  polygon[0].points 8
  polygon[0].point[0] [  0.23  0.05 ]
  polygon[0].point[1] [  0.15  0.15 ]
  polygon[0].point[2] [ -0.15  0.15 ]
  polygon[0].point[3] [ -0.23  0.05 ]
  polygon[0].point[4] [ -0.23 -0.05 ]
  polygon[0].point[5] [ -0.15 -0.15 ]
  polygon[0].point[6] [  0.15 -0.15 ]
  polygon[0].point[7] [  0.23 -0.05 ]
  polygon[0].fill 0

  ranger(
    scount 12

    # define the pose of each transducer [xpos ypos heading]
    spose[0] [ 0 0 -150 ]
    spose[1] [ 0 0 -120 ]
    spose[2] [ 0 0  -90 ]
    spose[3] [ 0 0  -60 ]
    spose[4] [ 0 0  -30 ]
    spose[5] [ 0 0   0 ]
    spose[6] [ 0 0  30 ]
    spose[7] [ 0 0  60 ]
    spose[8] [ 0 0  90 ]
    spose[9] [ 0 0  120 ]
    spose[10] [ 0 0  150 ]
    spose[11] [ 0 0  180 ]
                
    # define the field of view of each transducer [range_min range_max 
view_angle]
    sview [0 2.0 30]

    # define the size of each transducer [xsize ysize] in meters
    ssize [0.01 0.05]
  )

  #laser( size [0.1 0.1] samples 40 )
  #fiducialfinder( fov 360  range_max 8.0 range_max_id 8.0 )
  #fiducial_return 1
)

include "../map.inc"

map
( 
   bitmap "../bitmaps/hospital.png" 
  size [120 60] 
)

swarmbot(  name "r00" pose [-16.689 -12.823 396.507] )
swarmbot(  name "r01" pose [-17.275 -8.211 -189.465] )
swarmbot(  name "r02" pose [-18.186 -9.658 10.603] )
swarmbot(  name "r03" pose [-16.976 -9.499 392.529] )
swarmbot(  name "r04" pose [-16.340 -10.094 355.371] )
swarmbot(  name "r05" pose [-18.262 -10.725 101.390] )
swarmbot(  name "r06" pose [-17.253 -8.758 93.742] )
swarmbot(  name "r07" pose [-18.194 -12.108 131.222] )
swarmbot(  name "r08" pose [-16.367 -13.070 14.742] )
swarmbot(  name "r09" pose [-17.449 -12.541 164.495] )

swarmbot(  name "r10" pose [-16.854 -10.395 104.904] )
swarmbot(  name "r11" pose [-17.360 -9.048 95.884] )
swarmbot(  name "r12" pose [-18.221 -9.974 27.056] )
swarmbot(  name "r13" pose [-17.018 -12.559 52.390] )
swarmbot(  name "r14" pose [-16.396 -12.363 72.929] )
swarmbot(  name "r15" pose [-17.879 -12.202 78.861] )
swarmbot(  name "r16" pose [-18.168 -12.441 2.125] )
swarmbot(  name "r17" pose [-16.575 -8.714 52.524] )
swarmbot(  name "r18" pose [-16.694 -11.868 -8.573] )
swarmbot(  name "r19" pose [-17.385 -10.559 24.453] )

swarmbot(  name "r20" pose [-17.137  -9.270 -21.133] )
swarmbot(  name "r21" pose [-17.915  -10.517 21.433] )
swarmbot(  name "r22" pose [-17.967  -10.809 -30.765] )
swarmbot(  name "r23" pose [-17.986  -11.127 161.003] )
swarmbot(  name "r24" pose [-17.295  -11.960 61.576] )
swarmbot(  name "r25" pose [-16.766  -11.519 16.061] )
swarmbot(  name "r26" pose [-16.756  -8.903 147.188] )
swarmbot(  name "r27" pose [-17.611  -11.901 41.821] )
swarmbot(  name "r28" pose [-17.035  -12.848 46.680] )
swarmbot(  name "r29" pose [-17.401  -12.815 32.775] )

swarmbot(  name "r30" pose [-17.108 -10.625 -139.821] )
swarmbot(  name "r31" pose [-16.843 -9.272 99.504] )
swarmbot(  name "r32" pose [-17.535 -12.233 7.617] )
swarmbot(  name "r33" pose [-16.984 -11.748 -48.059] )
swarmbot(  name "r34" pose [-17.443 -9.364 -58.906] )
swarmbot(  name "r35" pose [-17.770 -9.063 48.652] )
swarmbot(  name "r36" pose [-16.342 -9.373 -18.437] )
swarmbot(  name "r37" pose [-16.437 -11.215 28.108] )
swarmbot(  name "r38" pose [-17.743 -8.434 -49.004] )
swarmbot(  name "r39" pose [-17.045 -9.021 47.120] )

swarmbot(  name "r40" pose [-17.502 -9.977 56.773] )
swarmbot(  name "r41" pose [-17.912 -9.351 -48.646] )
swarmbot(  name "r42" pose [-16.732 -11.054 46.130] )
swarmbot(  name "r43" pose [-18.208 -11.688 14.819] )
swarmbot(  name "r44" pose [-17.087 -8.500 48.111] )
swarmbot(  name "r45" pose [-17.074 -13.135 -31.137] )
swarmbot(  name "r46" pose [-17.855 -9.975 14.206] )
swarmbot(  name "r47" pose [-16.698 -12.524 -74.133] )
swarmbot(  name "r48" pose [-17.462 -11.105 171.925] )
swarmbot(  name "r49" pose [-16.444 -11.567 24.941] )

swarmbot(  name "r50" pose [-16.410 -11.960 325.793] )
swarmbot(  name "r51" pose [-17.006 -12.089 69.133] )
swarmbot(  name "r52" pose [-18.252 -11.076 0.000] )
swarmbot(  name "r53" pose [-18.235 -11.395 -123.231] )
swarmbot(  name "r54" pose [-17.406 -8.497 0.000] )
swarmbot(  name "r55" pose [-17.449 -10.302 125.131] )
swarmbot(  name "r56" pose [-16.801 -10.719 -39.194] )
swarmbot(  name "r57" pose [-18.187 -8.888 255.674] )
swarmbot(  name "r58" pose [-17.199 -10.012 113.856] )
swarmbot(  name "r59" pose [-16.392 -8.961 91.531] )

swarmbot(  name "r60" pose [-17.871 -12.496 -248.807] )
swarmbot(  name "r61" pose [-16.450 -10.881 241.121] )
swarmbot(  name "r62" pose [-17.428 -13.086 46.705] )
swarmbot(  name "r63" pose [-17.738 -11.230 -50.988] )
swarmbot(  name "r64" pose [-17.577 -8.776 -140.355] )
swarmbot(  name "r65" pose [-16.957 -8.253 0.000] )
swarmbot(  name "r66" pose [-16.347 -9.671 103.805] )
swarmbot(  name "r67" pose [-17.921 -11.888 85.146] )
swarmbot(  name "r68" pose [-17.461 -9.659 29.125] )
swarmbot(  name "r69" pose [-16.387 -12.728 -226.468] )

swarmbot(  name "r70" pose [-17.372 -11.633 0.000] )
swarmbot(  name "r71" pose [-17.240 -12.274 -83.676] )
swarmbot(  name "r72" pose [-17.658 -10.637 26.588] )
swarmbot(  name "r73" pose [-17.711 -10.930 117.049] )
swarmbot(  name "r74" pose [-16.605 -9.489 -51.499] )
swarmbot(  name "r75" pose [-18.275 -10.416 36.214] )
swarmbot(  name "r76" pose [-16.567 -9.156 -13.213] )
swarmbot(  name "r77" pose [-16.638 -13.118 222.614] )
swarmbot(  name "r78" pose [-17.129 -10.299 65.240] )
swarmbot(  name "r79" pose [-17.696 -12.758 0.000] )

swarmbot(  name "r80" pose [-17.917 -8.745 -101.745] )
swarmbot(  name "r81" pose [-17.740 -10.232 162.306] )
swarmbot(  name "r82" pose [-17.945 -11.583 93.010] )
swarmbot(  name "r83" pose [-16.828 -9.737 4.473] )
swarmbot(  name "r84" pose [-16.666 -8.409 -50.105] )
swarmbot(  name "r85" pose [-17.182 -9.699 275.900] )
swarmbot(  name "r86" pose [-17.761 -9.644 -196.957] )
swarmbot(  name "r87" pose [-16.849 -8.645 -76.085] )
swarmbot(  name "r88" pose [-18.164 -9.348 -158.847] )
swarmbot(  name "r89" pose [-17.224 -11.300 231.280] )

swarmbot(  name "r90" pose [-16.929 -11.298 -130.147] )
swarmbot(  name "r91" pose [-16.726 -12.218 -42.054] )
swarmbot(  name "r92" pose [-16.459 -10.582 -152.533] )
swarmbot(  name "r93" pose [-16.897 -10.050 -182.657] )
swarmbot(  name "r94" pose [-18.039 -10.269 289.935] )
swarmbot(  name "r95" pose [-17.124 -10.910 222.443] )
swarmbot(  name "r96" pose [-17.741 -13.060 -254.341] )
swarmbot(  name "r97" pose [-16.569 -9.890 -77.874] )
swarmbot(  name "r98" pose [-17.667 -11.566 218.413] )
swarmbot(  name "r99" pose [-16.603 -10.259 1.974] )

--- NEW FILE: pss.world ---

# TODO: fiducual wall hits, >16 robots, 


# Desc: 1 pioneer robot with laser      
# CVS: $Id: pss.world,v 1.1 2007/09/11 01:24:44 rtv Exp $

# size of the world in meters
size [40 18]

# set the resolution of the underlying raytrace model in meters
resolution 0.02

# set the ratio of simulation and real time
interval_sim 100  # milliseconds per update step
interval_real 100 # real-time milliseconds per update step


# configure the GUI window
window
( 
  size [ 705.000 648.000 ] 
  center [-15.539 4.915] 
  scale 0.014 

  rangerdata 1
  fill_polygons 1
)

define target model
(
  fiducial_return 100
)

# create some instances of our 'erratic' robot model
define swarmbot position
(
  gui_nose 1    
  gui_outline 0

  size [0.2 0.2]

  # this polygon approximates the shape of a pioneer
  polygons 1
  polygon[0].points 8
  polygon[0].point[0] [  0.23  0.05 ]
  polygon[0].point[1] [  0.15  0.15 ]
  polygon[0].point[2] [ -0.15  0.15 ]
  polygon[0].point[3] [ -0.23  0.05 ]
  polygon[0].point[4] [ -0.23 -0.05 ]
  polygon[0].point[5] [ -0.15 -0.15 ]
  polygon[0].point[6] [  0.15 -0.15 ]
  polygon[0].point[7] [  0.23 -0.05 ]
  polygon[0].fill 0



  ranger(
  scount 12

  # define the pose of each transducer [xpos ypos heading]
  spose[0] [ 0 0 -150 ]
  spose[1] [ 0 0 -120 ]
  spose[2] [ 0 0  -90 ]
  spose[3] [ 0 0  -60 ]
  spose[4] [ 0 0  -30 ]
  spose[5] [ 0 0   0 ]
  spose[6] [ 0 0  30 ]
  spose[7] [ 0 0  60 ]
  spose[8] [ 0 0  90 ]
  spose[9] [ 0 0  120 ]
  spose[10] [ 0 0  150 ]
  spose[11] [ 0 0  180 ]
                
  # define the field of view of each transducer [range_min range_max view_angle]
  sview [0 2.0 30]

  # define the size of each transducer [xsize ysize] in meters
  ssize [0.01 0.05]
  )

  #laser( size [0.1 0.1] samples 40 )
  #fiducialfinder( fov 360  range_max 8.0 range_max_id 8.0 )
  #fiducial_return 1
)

include "../map.inc"

map
( 
  bitmap "../bitmaps/hospital_section.png" 
  size [40 18]  
)

swarmbot(  name "r00" pose [-17.435 3.229 396.507] )
swarmbot(  name "r01" pose [-17.653 3.573 -189.465] )
swarmbot(  name "r02" pose [-17.996 3.780 10.603] )
swarmbot(  name "r03" pose [-17.334 3.912 392.529] )
swarmbot(  name "r04" pose [-17.781 4.090 355.371] )
swarmbot(  name "r05" pose [-18.594 7.413 101.390] )
swarmbot(  name "r06" pose [-18.195 7.836 93.742] )
swarmbot(  name "r07" pose [-18.996 5.772 131.222] )
swarmbot(  name "r08" pose [-17.846 4.879 14.742] )
swarmbot(  name "r09" pose [-19.219 4.438 164.495] )

swarmbot(  name "r10" pose [-18.802 6.681 104.904] )
swarmbot(  name "r11" pose [-17.360 7.023 95.884] )
swarmbot(  name "r12" pose [-18.143 7.366 27.056] )
swarmbot(  name "r13" pose [-18.219 4.520 52.390] )
swarmbot(  name "r14" pose [-18.975 4.703 72.929] )
swarmbot(  name "r15" pose [-18.146 5.558 78.861] )
swarmbot(  name "r16" pose [-18.636 5.797 2.125] )
swarmbot(  name "r17" pose [-17.997 6.694 52.524] )
swarmbot(  name "r18" pose [-18.451 4.992 -8.573] )
swarmbot(  name "r19" pose [-18.905 2.997 24.453] )

swarmbot(  name "r20" pose [-17.693  6.799 -21.133] )
swarmbot(  name "r21" pose [-19.064  6.960 21.433] )
swarmbot(  name "r22" pose [-19.164  6.235 -30.765] )
swarmbot(  name "r23" pose [-18.816  2.711 161.003] )
swarmbot(  name "r24" pose [-18.420  5.437 61.576] )
swarmbot(  name "r25" pose [-17.688  5.332 16.061] )
swarmbot(  name "r26" pose [-18.148  3.052 147.188] )
swarmbot(  name "r27" pose [-19.081  5.204 41.821] )
swarmbot(  name "r28" pose [-18.792  3.722 46.680] )
swarmbot(  name "r29" pose [-18.068  2.724 32.775] )

swarmbot(  name "r30" pose [-18.485  2.958 -139.821] )
swarmbot(  name "r31" pose [-17.325 2.603 99.504] )
swarmbot(  name "r32" pose [-19.330 4.788 7.617] )
swarmbot(  name "r33" pose [-17.376 4.808 -48.059] )
swarmbot(  name "r34" pose [-17.744 7.960 -58.906] )
swarmbot(  name "r35" pose [-18.592 7.880 48.652] )
swarmbot(  name "r36" pose [-17.504 5.832 -18.437] )
swarmbot(  name "r37" pose [-18.750 5.240 28.108] )
swarmbot(  name "r38" pose [-17.364 7.703 -49.004] )
swarmbot(  name "r39" pose [-17.681 7.370 47.120] )

swarmbot(  name "r40" pose [-18.966 7.511 56.773] )
swarmbot(  name "r41" pose [-18.293 6.845 -48.646] )
swarmbot(  name "r42" pose [-17.334 6.309 46.130] )
swarmbot(  name "r43" pose [-18.569 6.174 14.819] )
swarmbot(  name "r44" pose [-18.554 4.231 48.111] )
swarmbot(  name "r45" pose [-19.229 3.007 -31.137] )
swarmbot(  name "r46" pose [-19.157 3.844 14.206] )
swarmbot(  name "r47" pose [-18.329 3.562 -74.133] )
swarmbot(  name "r48" pose [-17.763 6.092 171.925] )
swarmbot(  name "r49" pose [-18.061 5.258 24.941] )

swarmbot(  name "r50" pose [-18.786 4.945 325.793] )
swarmbot(  name "r51" pose [-18.194 4.859 69.133] )
swarmbot(  name "r52" pose [-18.872 6.043 0.000] )
swarmbot(  name "r53" pose [-18.075 6.302 -123.231] )
swarmbot(  name "r54" pose [-18.872 3.997 0.000] )
swarmbot(  name "r55" pose [-18.945 3.394 125.131] )
swarmbot(  name "r56" pose [-19.508 6.248 -39.194] )
swarmbot(  name "r57" pose [-18.388 7.605 255.674] )
swarmbot(  name "r58" pose [-18.355 7.174 113.856] )
swarmbot(  name "r59" pose [-18.277 5.993 91.531] )

swarmbot(  name "r60" pose [-18.756 5.530 -248.807] )
swarmbot(  name "r61" pose [-17.653 6.470 241.121] )
swarmbot(  name "r62" pose [-17.724 2.502 46.705] )
swarmbot(  name "r63" pose [-17.978 3.296 -50.988] )
swarmbot(  name "r64" pose [-18.095 4.251 -140.355] )
swarmbot(  name "r65" pose [-18.449 3.917 0.000] )
swarmbot(  name "r66" pose [-17.756 2.898 103.805] )
swarmbot(  name "r67" pose [-17.360 5.552 85.146] )
swarmbot(  name "r68" pose [-17.461 4.350 29.125] )
swarmbot(  name "r69" pose [-17.183 4.550 -226.468] )

swarmbot(  name "r70" pose [-17.265 5.163 0.000] )
swarmbot(  name "r71" pose [-17.632 4.652 -83.676] )
swarmbot(  name "r72" pose [-18.617 3.277 26.588] )
swarmbot(  name "r73" pose [-18.531 2.487 117.049] )
swarmbot(  name "r74" pose [-19.164 2.630 -51.499] )
swarmbot(  name "r75" pose [-19.450 2.712 36.214] )
swarmbot(  name "r76" pose [-19.471 3.202 -13.213] )
swarmbot(  name "r77" pose [-19.368 3.549 222.614] )
swarmbot(  name "r78" pose [-18.858 6.388 65.240] )
swarmbot(  name "r79" pose [-18.940 4.305 0.000] )

swarmbot(  name "r80" pose [-19.409 4.182 -101.745] )
swarmbot(  name "r81" pose [-19.552 4.489 162.306] )
swarmbot(  name "r82" pose [-19.307 5.571 93.010] )
swarmbot(  name "r83" pose [-17.898 7.593 4.473] )
swarmbot(  name "r84" pose [-17.224 7.409 -50.105] )
swarmbot(  name "r85" pose [-19.287 7.614 275.900] )
swarmbot(  name "r86" pose [-19.225 7.940 -196.957] )
swarmbot(  name "r87" pose [-18.899 8.002 -76.085] )
swarmbot(  name "r88" pose [-18.385 8.185 -158.847] )
swarmbot(  name "r89" pose [-17.224 5.980 231.280] )

swarmbot(  name "r90" pose [-18.572 4.611 -130.147] )
swarmbot(  name "r91" pose [-17.939 4.570 -42.054] )
swarmbot(  name "r92" pose [-19.266 6.592 -152.533] )
swarmbot(  name "r93" pose [-17.980 7.042 -182.657] )
swarmbot(  name "r94" pose [-19.266 7.266 289.935] )
swarmbot(  name "r95" pose [-19.430 5.857 222.443] )
swarmbot(  name "r96" pose [-17.796 5.673 -254.341] )
swarmbot(  name "r97" pose [-18.674 7.083 -77.874] )
swarmbot(  name "r98" pose [-17.346 6.633 218.413] )
swarmbot(  name "r99" pose [-18.388 6.449 1.974] )

--- NEW FILE: many.sh ---
#!/bin/bash
./single -i 0 &
./single -i 1 &
./single -i 2 &
./single -i 3 &
./single -i 4 &

--- NEW FILE: pss3d.world ---

# TODO: fiducual wall hits, >16 robots, 


# Desc: 1 pioneer robot with laser      
# CVS: $Id: pss3d.world,v 1.1 2007/09/11 01:24:44 rtv Exp $

# size of the world in meters
#size [40 18]
size [120 60]

# set the resolution of the underlying raytrace model in meters
resolution 0.02

# set the ratio of simulation and real time
interval_sim 100  # milliseconds per update step
interval_real 100 # real-time milliseconds per update step


# configure the GUI window
window
( 
  size [ 1436.000 856.000 ] 
  center [-17.596 -10.652] 
  scale 30.008 

  rangerdata 1
  fill_polygons 1
)

define target model
(
  fiducial_return 100
)

include "pioneer.inc"

# create some instances of our 'erratic' robot model
define swarmbot pioneer2dx
(
  gui_nose 1    
  gui_outline 0

  size [0.2 0.2 0.1]

  ranger(
  scount 12

  # define the pose of each transducer [xpos ypos heading]
  spose[0] [ 0 0 -150 ]
  spose[1] [ 0 0 -120 ]
  spose[2] [ 0 0  -90 ]
  spose[3] [ 0 0  -60 ]
  spose[4] [ 0 0  -30 ]
  spose[5] [ 0 0   0 ]
  spose[6] [ 0 0  30 ]
  spose[7] [ 0 0  60 ]
  spose[8] [ 0 0  90 ]
  spose[9] [ 0 0  120 ]
  spose[10] [ 0 0  150 ]
  spose[11] [ 0 0  180 ]
                
  # define the field of view of each transducer [range_min range_max view_angle]
  sview [0 2.0 30]

  # define the size of each transducer [xsize ysize] in meters
  ssize [0.01 0.05]
  )

  #laser( size [0.1 0.1] samples 40 )
  #fiducialfinder( fov 360  range_max 8.0 range_max_id 8.0 )
  #fiducial_return 1
)

include "map.inc"


map
( 
  #bitmap "hospital_section.png" 
  #size [40 18] 
 
   bitmap "hospital.png" 
  size [120 60 0.5] 
  color "DarkSlateGray"
)

swarmbot(  name "r00" pose [-16.689 -12.823 0 396.507] )
swarmbot(  name "r01" pose [-17.275 -8.211 0 -189.465] )
swarmbot(  name "r02" pose [-18.186 -9.658 0 10.603] )
swarmbot(  name "r03" pose [-16.976 -9.499 0  392.529] )
swarmbot(  name "r04" pose [-16.340 -10.094 0 355.371] )
swarmbot(  name "r05" pose [-18.262 -10.725 0 101.390] )
swarmbot(  name "r06" pose [-17.253 -8.758 0 93.742] )
swarmbot(  name "r07" pose [-18.194 -12.108 0 131.222] )
swarmbot(  name "r08" pose [-16.367 -13.070 0 14.742] )
swarmbot(  name "r09" pose [-17.449 -12.541 0 164.495] )

swarmbot(  name "r10" pose [-16.854 -10.395 0 104.904] )
swarmbot(  name "r11" pose [-17.360 -9.048 0 95.884] )
swarmbot(  name "r12" pose [-18.221 -9.974 0 27.056] )
swarmbot(  name "r13" pose [-17.018 -12.559 0 52.390] )
swarmbot(  name "r14" pose [-16.396 -12.363 0 72.929] )
swarmbot(  name "r15" pose [-17.879 -12.202 0 78.861] )
swarmbot(  name "r16" pose [-18.168 -12.441 0 2.125] )
swarmbot(  name "r17" pose [-16.575 -8.714 0 52.524] )
swarmbot(  name "r18" pose [-16.694 -11.868 0 -8.573] )
swarmbot(  name "r19" pose [-17.385 -10.559 0 24.453] )

swarmbot(  name "r20" pose [-17.137  -9.270 0 -21.133] )
swarmbot(  name "r21" pose [-17.915  -10.517 0 21.433] )
swarmbot(  name "r22" pose [-17.967  -10.809 0 -30.765] )
swarmbot(  name "r23" pose [-17.986  -11.127 0 61.003] )
swarmbot(  name "r24" pose [-17.295  -11.960 0 61.576] )
swarmbot(  name "r25" pose [-16.766  -11.519 0 16.061] )
swarmbot(  name "r26" pose [-16.756  -8.903 0 147.188] )
swarmbot(  name "r27" pose [-17.611  -11.901 0 41.821] )
swarmbot(  name "r28" pose [-17.035  -12.848 0 46.680] )
swarmbot(  name "r29" pose [-17.401  -12.815 0 32.775] )

swarmbot(  name "r30" pose [-17.108 -10.625 0 -139.821] )
swarmbot(  name "r31" pose [-16.843 -9.272 0 99.504] )
swarmbot(  name "r32" pose [-17.535 -12.233 0 7.617] )
swarmbot(  name "r33" pose [-16.984 -11.748 0 -48.059] )
swarmbot(  name "r34" pose [-17.443 -9.364 0 -58.906] )
swarmbot(  name "r35" pose [-17.770 -9.063 0 48.652] )
swarmbot(  name "r36" pose [-16.342 -9.373 0 -18.437] )
swarmbot(  name "r37" pose [-16.437 -11.215 0 28.108] )
swarmbot(  name "r38" pose [-17.743 -8.434 0 -49.004] )
swarmbot(  name "r39" pose [-17.045 -9.021 0 47.120] )

swarmbot(  name "r40" pose [-17.502 -9.977 0 56.773] )
swarmbot(  name "r41" pose [-17.912 -9.351 0 -48.646] )
swarmbot(  name "r42" pose [-16.732 -11.054 0 46.130] )
swarmbot(  name "r43" pose [-18.208 -11.688 0 14.819] )
swarmbot(  name "r44" pose [-17.087 -8.500 0 48.111] )
swarmbot(  name "r45" pose [-17.074 -13.135 0 -31.137] )
swarmbot(  name "r46" pose [-17.855 -9.975 0 14.206] )
swarmbot(  name "r47" pose [-16.698 -12.524 0 -74.133] )
swarmbot(  name "r48" pose [-17.462 -11.105 0 171.925] )
swarmbot(  name "r49" pose [-16.444 -11.567 0 24.941] )

swarmbot(  name "r50" pose [-16.410 -11.960 0 325.793] )
swarmbot(  name "r51" pose [-17.006 -12.089 0 69.133] )
swarmbot(  name "r52" pose [-18.252 -11.076 0 0.000] )
swarmbot(  name "r53" pose [-18.235 -11.395 0 -123.231] )
swarmbot(  name "r54" pose [-17.406 -8.497 0 0.000] )
swarmbot(  name "r55" pose [-17.449 -10.302 0 125.131] )
swarmbot(  name "r56" pose [-16.801 -10.719 0 -39.194] )
swarmbot(  name "r57" pose [-18.187 -8.888 0 255.674] )
swarmbot(  name "r58" pose [-17.199 -10.012 0 113.856] )
swarmbot(  name "r59" pose [-16.392 -8.961 0 91.531] )

swarmbot(  name "r60" pose [-17.871 -12.496 0 -248.807] )
swarmbot(  name "r61" pose [-16.450 -10.881 0 241.121] )
swarmbot(  name "r62" pose [-17.428 -13.086 0 46.705] )
swarmbot(  name "r63" pose [-17.738 -11.230 0 -50.988] )
swarmbot(  name "r64" pose [-17.577 -8.776 0 -140.355] )
swarmbot(  name "r65" pose [-16.957 -8.253 0 0.000] )
swarmbot(  name "r66" pose [-16.347 -9.671 0 103.805] )
swarmbot(  name "r67" pose [-17.921 -11.888 0 85.146] )
swarmbot(  name "r68" pose [-17.461 -9.659 0 29.125] )
swarmbot(  name "r69" pose [-16.387 -12.728 0 -226.468] )

swarmbot(  name "r70" pose [-17.372 -11.633 0 0.000] )
swarmbot(  name "r71" pose [-17.240 -12.274 0 -83.676] )
swarmbot(  name "r72" pose [-17.658 -10.637 0 26.588] )
swarmbot(  name "r73" pose [-17.711 -10.930 0 117.049] )
swarmbot(  name "r74" pose [-16.605 -9.489 0 -51.499] )
swarmbot(  name "r75" pose [-18.275 -10.416 0 36.214] )
swarmbot(  name "r76" pose [-16.567 -9.156 0 -13.213] )
swarmbot(  name "r77" pose [-16.638 -13.118 0 222.614] )
swarmbot(  name "r78" pose [-17.129 -10.299 0 65.240] )
swarmbot(  name "r79" pose [-17.696 -12.758 0 0.000] )

swarmbot(  name "r80" pose [-17.917 -8.745 0 -101.745] )
swarmbot(  name "r81" pose [-17.740 -10.232 0 162.306] )
swarmbot(  name "r82" pose [-17.945 -11.583 0 93.010] )
swarmbot(  name "r83" pose [-16.828 -9.737 0 4.473] )
swarmbot(  name "r84" pose [-16.666 -8.409 0 -50.105] )
swarmbot(  name "r85" pose [-17.182 -9.699 0 275.900] )
swarmbot(  name "r86" pose [-17.761 -9.644 0 -196.957] )
swarmbot(  name "r87" pose [-16.849 -8.645 0 -76.085] )
swarmbot(  name "r88" pose [-18.164 -9.348 0 -158.847] )
swarmbot(  name "r89" pose [-17.224 -11.300 0 231.280] )

swarmbot(  name "r90" pose [-16.929 -11.298 0 -130.147] )
swarmbot(  name "r91" pose [-16.726 -12.218 0 -42.054] )
swarmbot(  name "r92" pose [-16.459 -10.582 0 -152.533] )
swarmbot(  name "r93" pose [-16.897 -10.050  0 -182.657] )
swarmbot(  name "r94" pose [-18.039 -10.269 0 289.935] )
swarmbot(  name "r95" pose [-17.124 -10.910 0 222.443] )
swarmbot(  name "r96" pose [-17.741 -13.060 0 -254.341] )
swarmbot(  name "r97" pose [-16.569 -9.890 0 -77.874] )
swarmbot(  name "r98" pose [-17.667 -11.566 0 218.413] )
swarmbot(  name "r99" pose [-16.603 -10.259 0 1.974] )

--- NEW FILE: multiple.cc ---
#include <libplayerc++/playerc++.h>
#include <iostream>
#include <assert.h>

// For argument parsing
#include "args.h"

#define VSPEED 0.4 // meters per second
#define WGAIN 1.0 // turn speed gain
#define SAFE_DIST 0.3 // meters
#define SAFE_ANGLE 0.4 // radians

int main(int argc, char **argv)
{
  // Parse command line options
  parse_args(argc,argv);

  // We throw exceptions on creation if we fail
  try
  {
    using namespace PlayerCc;
    using namespace std;

    // Create a player client object, using the variables assigned by the
    // call to parse_args()
    PlayerClient robot (gHostname, gPort);
    robot.SetDataMode( PLAYER_DATAMODE_PULL );
    robot.SetReplaceRule( true );
    
    Position2dProxy** ppp = new Position2dProxy*[gPop];
    SonarProxy**      spp = new SonarProxy*[gPop];
    Graphics2dProxy** gpp = new Graphics2dProxy*[gPop];

    for( uint i=0; i<gPop; i++ )
      {
        ppp[i] = new Position2dProxy( &robot , i );
        assert( ppp[i] );

        spp[i] = new SonarProxy( &robot, i );
        assert( spp[i] );

        gpp[i] = new Graphics2dProxy( &robot, i );
        assert( gpp[i] );
        
        spp[i]->RequestGeom();  // query the server for sonar
                                // positions
      }
    
    while(1)
      {
        // blocks until new data comes from Player
        robot.Read();

        for( uint i=0; i<gPop; i++ )
          if( spp[i]->IsFresh() ) // only update if this proxy has some new data
            {
              spp[i]->NotFresh(); // mark the data as old
              
              // compute the vector sum of the sonar ranges           
              double dx=0, dy=0;
              
              int num_ranges = spp[i]->GetCount();
              for( int s=0; s<num_ranges; s++ )
                {
                  player_pose3d_t spose = spp[i]->GetPose(s);
                  double srange = spp[i]->GetScan(s);
                  
                  dx += srange * cos( spose.pyaw );
                  dy += srange * sin( spose.pyaw );
                }

              double resultant_angle = atan2( dy, dx );
              //double resultant_magnitude = hypot( dy, dx );
              
              double forward_speed = 0.0;
              double side_speed = 0.0;     
              double turn_speed = WGAIN * resultant_angle;
              
              int forward = num_ranges/2 -1 ;
              // if the front is clear, drive forwards
              if( (spp[i]->GetScan(forward-1) > SAFE_DIST) &&
                  (spp[i]->GetScan(forward) > SAFE_DIST) &&
                  (spp[i]->GetScan(forward+1) > SAFE_DIST) && 
                  (fabs( resultant_angle ) < SAFE_ANGLE) )
                {
                  forward_speed = VSPEED;
                }

              // send a command to the robot
              ppp[i]->SetSpeed( forward_speed, side_speed, turn_speed );
              
              // draw the resultant vector on the robot to show what it
              // is thinking          
              if( forward_speed > 0 )
                gpp[i]->Color( 0,255,0,0 );
              else
                gpp[i]->Color( 0,255,255,0 );
              
              player_point_2d_t pts[2];
              pts[0].px = 0;
              pts[0].py = 0;
              pts[1].px = dx;
              pts[1].py = dy;   
              
              gpp[i]->Clear();
              gpp[i]->DrawPolyline( pts, 2 );
                      
            }    
      }
  }
  catch (PlayerCc::PlayerError e)
    {
      std::cerr << e << std::endl;
      return -1;
    }
}

--- NEW FILE: single.cc ---
#include <libplayerc++/playerc++.h>
#include <iostream>
#include <assert.h>

// For argument parsing
#include "args.h"

#define POP 100 // population size
#define VSPEED 0.4 // meters per second
#define WGAIN 1.0 // turn speed gain
#define SAFE_DIST 0.3 // meters
#define SAFE_ANGLE 0.4 // radians

int main(int argc, char **argv)
{
  // Parse command line options
  parse_args(argc,argv);

  // We throw exceptions on creation if we fail
  try
  {
    using namespace PlayerCc;
    using namespace std;

    // Create a player client object, using the variables assigned by the
    // call to parse_args()
    PlayerClient robot (gHostname, gPort);
    robot.SetDataMode( PLAYER_DATAMODE_PULL );
    robot.SetReplaceRule( true );
    
    Position2dProxy pp( &robot, gIndex );
    SonarProxy      sp( &robot, gIndex );
    Graphics2dProxy gp( &robot, gIndex );

    sp.RequestGeom();   // query the server for sonar positions
        
    while(1)
      {
        // blocks until new data comes from Player
        robot.Read();
        
        for( int i=0; i<POP; i++ )
          {
            // compute the vector sum of the sonar ranges             
            double dx=0, dy=0;
            
            int num_ranges = sp.GetCount();
            for( int s=0; s<num_ranges; s++ )
              {
                player_pose3d_t spose = sp.GetPose(s);
                double srange = sp.GetScan(s);
                
                dx += srange * cos( spose.pyaw );
                dy += srange * sin( spose.pyaw );
              }
            
            // compute the direction of the resultant vector 
            double resultant_angle = atan2( dy, dx );
            //double resultant_magnitude = hypot( dy, dx );
            
            double forward_speed = 0.0;
            double side_speed = 0.0;       
            double turn_speed = WGAIN * resultant_angle;
                    
            // find the index of the forward-pointing sensor
            int forward = num_ranges/2 -1 ;
            
            // if the front is clear, drive forwards
            if( (sp.GetScan(forward-1) > SAFE_DIST) &&
                (sp.GetScan(forward) > SAFE_DIST) &&
                (sp.GetScan(forward+1) > SAFE_DIST) && 
                (fabs( resultant_angle ) < SAFE_ANGLE) )
              {
                forward_speed = VSPEED;
              }
        
            // send a command to the robot's position device
            pp.SetSpeed( forward_speed, side_speed, turn_speed );
            
            // draw the resultant vector on the robot to show what it
            // is thinking
            if( forward_speed > 0 )           
              gp.Color( 0,255,0,0 );
            else
              gp.Color( 0,255,255,0 );

            player_point_2d_t pts[2];
            pts[0].px = 0;
            pts[0].py = 0;
            pts[1].px = dx;
            pts[1].py = dy;     
            
            gp.Clear();
            gp.DrawPolyline( pts, 2 );
            
          }    
      }
  }
  catch (PlayerCc::PlayerError e)
    {
      std::cerr << e << std::endl;
      return -1;
    }
}


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to