Revision: 8558 http://playerstage.svn.sourceforge.net/playerstage/?rev=8558&view=rev Author: rtv Date: 2010-02-19 21:28:18 +0000 (Fri, 19 Feb 2010)
Log Message: ----------- minimal fasr2 demo Modified Paths: -------------- code/stage/trunk/examples/ctrl/astar/stlastar.h code/stage/trunk/examples/ctrl/fasr2.cc code/stage/trunk/examples/ctrl/sink.cc code/stage/trunk/worlds/fasr2.world Added Paths: ----------- code/stage/trunk/worlds/fasr2_duo.world code/stage/trunk/worlds/fasr2_solo.world Modified: code/stage/trunk/examples/ctrl/astar/stlastar.h =================================================================== --- code/stage/trunk/examples/ctrl/astar/stlastar.h 2010-02-19 02:38:04 UTC (rev 8557) +++ code/stage/trunk/examples/ctrl/astar/stlastar.h 2010-02-19 21:28:18 UTC (rev 8558) @@ -41,11 +41,11 @@ // Fixed size memory allocator can be disabled to compare performance // Uses std new and delete instead if you turn it off -#define USE_FSA_MEMORY 1 +#define USE_FSA_MEMORY 0 // disable warning that debugging information has lines that are truncated // occurs in stl headers -#pragma warning( disable : 4786 ) +//#pragma warning( disable : 4786 ) // The AStar search class. UserState is the users state space type template <class UserState> class AStarSearch Modified: code/stage/trunk/examples/ctrl/fasr2.cc =================================================================== --- code/stage/trunk/examples/ctrl/fasr2.cc 2010-02-19 02:38:04 UTC (rev 8557) +++ code/stage/trunk/examples/ctrl/fasr2.cc 2010-02-19 21:28:18 UTC (rev 8558) @@ -103,6 +103,42 @@ glPointSize(4); FOR_EACH( it, nodes ){ (*it)->Draw(); } } + + stg_radians_t GoodDirection( const Pose& pose, stg_meters_t range ) + { + // find the node with the lowest value within range of the given + // pose and return the absolute heading from pose that node + + if( nodes.empty() ) + return 0; // a null guess + + + Node* best_node = NULL; + + // find the closest node + FOR_EACH( it, nodes ) + { + Node* node = *it; + double dist = hypot( node->pose.x - pose.x, node->pose.y - pose.y ); + + // if it's in range, and either its the first we have found, + // or it has a lower value than the current best + if( dist < range && + ( best_node == NULL || node->value < best_node->value )) + { + best_node = node; + } + } + + if( best_node == NULL ) + { + puts( "warning: no nodes in range" ); + return 0; + } + //else + return atan2( best_node->pose.y - pose.y, + best_node->pose.x - pose.x ); + } }; @@ -143,7 +179,7 @@ { // print value //char buf[32]; - //snprintf( buf, 32, "%.2f", value ); + //snprintf( buf, 32, "%.0f", value ); //Gl::draw_string( pose.x, pose.y+0.2, 0.1, buf ); glBegin( GL_POINTS ); @@ -192,7 +228,6 @@ double charger_range; double charger_heading; nav_mode_t mode; - bool at_dest; Graph graph; GraphVis graphvis; @@ -203,7 +238,8 @@ static unsigned int map_width; static unsigned int map_height; static uint8_t* map_data; - + static Model* map_model; + public: Robot( ModelPosition* pos, Model* source, @@ -223,7 +259,6 @@ charger_range(0), charger_heading(0), mode(MODE_WORK), - at_dest( false ), graph(), graphvis( graph ), last_node( NULL ), @@ -254,13 +289,7 @@ //pos->AddFlagDecrCallback( (stg_model_callback_t)FlagDecr, NULL ); pos->AddVisualizer( &graphvis, true ); - - // get the map - Model* cave = pos->GetWorld()->GetModel( "cave" ); - assert(cave); - Geom g = cave->GetGeom(); - if( map_data == NULL ) { map_data = new uint8_t[map_width*map_height*2]; @@ -269,12 +298,17 @@ // non-zero pixels memset( map_data, 0, sizeof(uint8_t) * map_width * map_height); - cave->Rasterize( map_data, - map_width, - map_height, - g.size.x/(float)map_width, - g.size.y/(float)map_height ); + // get the map + map_model = pos->GetWorld()->GetModel( "cave" ); + assert(map_model); + Geom g = map_model->GetGeom(); + map_model->Rasterize( map_data, + map_width, + map_height, + g.size.x/(float)map_width, + g.size.y/(float)map_height ); + // putchar( '\n' ); // for( unsigned int y=0; y<map_height; y++ ) // { @@ -299,9 +333,16 @@ assert( (map_data[i] == 1) || (map_data[i] == 9) ); } } - + + Plan( source ); + //puts(""); + } + + void Plan( Model* dest ) + { Pose pose = pos->GetPose(); - Pose sp = source->GetPose(); + Pose sp = dest->GetPose(); + Geom g = map_model->GetGeom(); point_t start( MetersToCell(pose.x, g.size.x, map_width), MetersToCell(pose.y, g.size.y, map_height) ); @@ -320,23 +361,30 @@ path ); //printf( "#%s:\n", result ? "PATH" : "NOPATH" ); + + graph.nodes.clear(); - FOR_EACH( it, path ) - { - //printf( "%d, %d\n", it->x, it->y ); - - Node* node = new Node( Pose( CellToMeters(it->x, g.size.x, map_width ), - CellToMeters(it->y, g.size.y, map_height), - 0, 0 ) ); - graph.AddNode( node ); - - if( last_node ) - last_node->AddEdge( new Edge( node ) ); - - last_node = node; - } - - //puts(""); + unsigned int dist = 0; + //FOR_EACH( it, path ) + for( std::vector<point_t>::reverse_iterator rit = path.rbegin(); + rit != path.rend(); + ++rit ) + { + //printf( "%d, %d\n", it->x, it->y ); + + Node* node = new Node( Pose( CellToMeters(rit->x, g.size.x, map_width ), + CellToMeters(rit->y, g.size.y, map_height), + 0, 0 ) ); + + node->value = dist++; + + graph.AddNode( node ); + + if( last_node ) + last_node->AddEdge( new Edge( node ) ); + + last_node = node; + } } void Dock() @@ -506,15 +554,18 @@ // if( y < 0 ) y = 0; - Model* goal = pos->GetFlagCount() ? sink : source; - Pose gp = goal->GetPose(); + //Model* goal = pos->GetFlagCount() ? sink : source; + //Pose gp = goal->GetPose(); //printf( "seeking %s\n", goal->Token() ); double a_goal = - // dtor( ( pos->GetFlagCount() ) ? have[y][x] : need[y][x] ); - atan2( gp.y - pose.y, gp.x - pose.x ); + // dtor( ( pos->GetFlagCount() ) ? have[y][x] : need[y][x] ); // map + //atan2( gp.y - pose.y, gp.x - pose.x ); // crow flies + // use direction of lowest value node within range in graph + graph.GoodDirection( pose, 4.0 ); + // if we are low on juice - find the direction to the recharger instead if( Hungry() ) { @@ -618,31 +669,26 @@ if( hypot( sourcepose.x-pose.x, sourcepose.y-pose.y ) < sourcegeom.size.x/2.0 && pos->GetFlagCount() < PAYLOAD ) { - if( ++robot->work_get > workduration ) - { - // transfer a chunk from source to robot - pos->PushFlag( robot->source->PopFlag() ); - robot->work_get = 0; - } + // transfer a chunk from source to robot + pos->PushFlag( robot->source->PopFlag() ); + + if( pos->GetFlagCount() == PAYLOAD ) + robot->Plan( robot->sink ); // we're done working } - robot->at_dest = false; - // if we're close to the sink we lose a flag Pose sinkpose = robot->sink->GetPose(); + Geom sinkgeom = robot->sink->GetGeom(); - if( hypot( sinkpose.x-pose.x, sinkpose.y-pose.y ) < sourcegeom.size.x/2.0 && - pos->GetFlagCount() ) + if( hypot( sinkpose.x-pose.x, sinkpose.y-pose.y ) < sinkgeom.size.x/2.0 && + pos->GetFlagCount() > 0 ) { - robot->at_dest = true; + //puts( "dropping" ); + // transfer a chunk between robot and goal + robot->sink->PushFlag( pos->PopFlag() ); - if( ++robot->work_put > workduration ) - { - //puts( "dropping" ); - // transfer a chunk between robot and goal - robot->sink->PushFlag( pos->PopFlag() ); - robot->work_put = 0; - } + if( pos->GetFlagCount() == 0 ) + robot->Plan( robot->source ); // we're done dropping off } @@ -682,7 +728,7 @@ static int FlagIncr( Model* mod, Robot* robot ) - { + { printf( "model %s collected flag\n", mod->Token() ); return 0; } @@ -695,9 +741,10 @@ }; -unsigned int Robot::map_width( 100 ); -unsigned int Robot::map_height( 100 ); +unsigned int Robot::map_width( 50 ); +unsigned int Robot::map_height( 50 ); uint8_t* Robot::map_data( NULL ); +Model* Robot::map_model( NULL ); void split( const std::string& text, const std::string& separators, std::vector<std::string>& words) { Modified: code/stage/trunk/examples/ctrl/sink.cc =================================================================== --- code/stage/trunk/examples/ctrl/sink.cc 2010-02-19 02:38:04 UTC (rev 8557) +++ code/stage/trunk/examples/ctrl/sink.cc 2010-02-19 21:28:18 UTC (rev 8558) @@ -8,8 +8,8 @@ // Stage calls this when the model starts up extern "C" int Init( Model* mod ) { - mod->AddUpdateCallback( (stg_model_callback_t)Update, NULL ); - mod->Subscribe(); + //mod->AddUpdateCallback( (stg_model_callback_t)Update, NULL ); + //mod->Subscribe(); return 0; //ok } Modified: code/stage/trunk/worlds/fasr2.world =================================================================== --- code/stage/trunk/worlds/fasr2.world 2010-02-19 02:38:04 UTC (rev 8557) +++ code/stage/trunk/worlds/fasr2.world 2010-02-19 21:28:18 UTC (rev 8558) @@ -14,7 +14,7 @@ quit_time 3600 # 1 hour of simulated time #quit_time 1800 # hour of simulated time -resolution 0.02 +resolution 0.05 threads 0 @@ -23,9 +23,9 @@ ( size [ 980.000 1016.000 ] - center [ -15.341 4.193 ] + center [ -0.203 -1.107 ] rotate [ 0 0 ] - scale 13.528 + scale 9.251 show_data 1 show_flags 1 @@ -163,7 +163,7 @@ define autorob pioneer2dx ( - sicklaser( samples 32 range_max 5 laser_return 2 watts 30 ) + sicklaser( samples 32 range_max 4 laser_return 2 watts 30 ) # ctrl "fasr2" joules 100000 joules_capacity 400000 @@ -194,8 +194,31 @@ redbot( pose [-11.593 12.222 0 125.831] joules 100000 ) redbot( pose [-10.303 12.222 0 125.831] joules 100000 ) redbot( pose [-12.120 12.012 0 125.831] joules 100000 ) -redbot( pose [-10.777 11.353 0 125.831] joules 100000 ) +redbot( pose [-12.601 11.375 0 125.831] joules 100000 ) +redbot( pose [-12.145 10.886 0 125.831] joules 100000 ) +redbot( pose [-12.710 12.157 0 125.831] joules 100000 ) +redbot( pose [-12.275 12.775 0 125.831] joules 100000 ) +redbot( pose [-11.461 13.123 0 125.831] joules 100000 ) +redbot( pose [-10.679 13.036 0 125.831] joules 100000 ) +redbot( pose [-12.167 13.514 0 125.831] joules 100000 ) +redbot( pose [-12.992 13.047 0 125.831] joules 100000 ) +redbot( pose [-13.372 12.243 0 125.831] joules 100000 ) +redbot( pose [-13.296 11.331 0 125.831] joules 100000 ) +redbot( pose [-13.944 11.986 0 125.831] joules 100000 ) + +redbot( pose [-14.005 12.947 0 125.831] joules 100000 ) +redbot( pose [-12.922 13.866 0 125.831] joules 100000 ) +redbot( pose [-13.698 13.866 0 125.831] joules 100000 ) +redbot( pose [-14.536 12.558 0 125.831] joules 100000 ) +redbot( pose [-14.577 11.782 0 125.831] joules 100000 ) +redbot( pose [-13.984 11.210 0 125.831] joules 100000 ) +redbot( pose [-13.392 10.618 0 125.831] joules 100000 ) +redbot( pose [-14.883 13.355 0 125.831] joules 100000 ) +redbot( pose [-15.231 12.681 0 125.831] joules 100000 ) +redbot( pose [-10.920 11.394 0 125.831] joules 100000 ) + + bluebot( pose [-11.191 6.965 0 174.453] joules 200000 ) bluebot( pose [-11.270 8.097 0 174.453] joules 200000 ) bluebot( pose [-10.295 6.886 0 174.453] joules 200000 ) @@ -205,49 +228,159 @@ bluebot( pose [-9.453 9.072 0 174.453] joules 200000 ) bluebot( pose [-11.401 8.966 0 174.453] joules 200000 ) bluebot( pose [-9.558 6.570 0 174.453] joules 200000 ) -bluebot( pose [-10.348 7.992 0 174.453] joules 200000 ) +bluebot( pose [-9.795 8.473 0 174.453] joules 200000 ) -#greenbot( pose [-4.059 16.220 0 -117.456] joules 400000 ) -#greenbot( pose [-2.610 16.957 0 -117.456] joules 400000 ) -#greenbot( pose [-1.794 15.087 0 -117.456] joules 400000 ) -#greenbot( pose [-4.164 15.272 0 -117.456] joules 400000 ) -#greenbot( pose [-3.348 14.771 0 -117.456] joules 400000 ) -#greenbot( pose [-2.242 15.930 0 -117.456] joules 400000 ) -#greenbot( pose [-3.348 17.036 0 -117.456] joules 400000 ) -#greenbot( pose [-4.322 17.510 0 -117.456] joules 400000 ) -#greenbot( pose [-4.822 16.536 0 -117.456] joules 400000 ) -#greenbot( pose [-4.980 15.693 0 -117.456] joules 400000 ) +bluebot( pose [-10.901 7.503 0 174.453] joules 200000 ) +bluebot( pose [-12.063 7.960 0 174.453] joules 200000 ) +bluebot( pose [-12.159 8.673 0 174.453] joules 200000 ) +bluebot( pose [-12.039 7.399 0 174.453] joules 200000 ) +bluebot( pose [-12.151 6.782 0 174.453] joules 200000 ) +bluebot( pose [-11.574 6.213 0 174.453] joules 200000 ) +bluebot( pose [-10.725 6.173 0 174.453] joules 200000 ) +bluebot( pose [-10.019 5.829 0 174.453] joules 200000 ) +bluebot( pose [-12.824 8.232 0 174.453] joules 200000 ) +bluebot( pose [-9.930 7.369 0 174.453] joules 200000 ) -#cyanbot( pose [-7.576 4.137 0 44.991] joules 100000 ) -#cyanbot( pose [-8.459 4.269 0 44.991] joules 100000 ) -#cyanbot( pose [-9.907 3.766 0 44.991] joules 100000 ) -#cyanbot( pose [-10.640 2.698 0 44.991] joules 100000 ) -#cyanbot( pose [-8.557 1.729 0 44.991] joules 100000 ) -#cyanbot( pose [-9.821 1.505 0 44.991] joules 100000 ) -#cyanbot( pose [-7.926 3.090 0 44.991] joules 100000 ) -#cyanbot( pose [-9.038 2.865 0 44.991] joules 100000 ) -#cyanbot( pose [-11.097 0.973 0 44.991] joules 100000 ) -#cyanbot( pose [-11.673 2.537 0 44.991] joules 100000 ) +bluebot( pose [-10.706 8.428 0 174.453] joules 200000 ) +bluebot( pose [-12.069 9.308 0 174.453] joules 200000 ) +bluebot( pose [-12.719 7.662 0 174.453] joules 200000 ) +bluebot( pose [-12.771 7.054 0 174.453] joules 200000 ) +bluebot( pose [-12.834 8.847 0 174.453] joules 200000 ) +bluebot( pose [-12.708 6.341 0 174.453] joules 200000 ) +bluebot( pose [-12.163 5.901 0 174.453] joules 200000 ) +bluebot( pose [-11.408 5.555 0 174.453] joules 200000 ) +bluebot( pose [-10.727 5.576 0 174.453] joules 200000 ) +bluebot( pose [-10.286 7.945 0 174.453] joules 200000 ) -#yellowbot( pose [-15.452 7.366 0 35.145] joules 200000 ) -#yellowbot( pose [-13.978 6.340 0 35.145] joules 200000 ) -#yellowbot( pose [-16.163 6.524 0 35.145] joules 200000 ) -#yellowbot( pose [-15.979 5.550 0 35.145] joules 200000 ) -#yellowbot( pose [-14.873 5.208 0 35.145] joules 200000 ) -#yellowbot( pose [-14.504 7.419 0 35.145] joules 200000 ) -#yellowbot( pose [-16.374 8.025 0 35.145] joules 200000 ) -#yellowbot( pose [-15.189 8.420 0 35.145] joules 200000 ) -#yellowbot( pose [-13.793 5.576 0 35.145] joules 200000 ) -#yellowbot( pose [-15.004 6.340 0 35.145] joules 200000 ) +cyanbot( pose [-3.491 17.578 0 -117.456] joules 400000 ) +cyanbot( pose [-2.642 17.210 0 -117.456] joules 400000 ) +cyanbot( pose [-1.415 18.181 0 -117.456] joules 400000 ) +cyanbot( pose [-6.058 20.955 0 -117.456] joules 400000 ) +cyanbot( pose [-5.274 21.749 0 -117.456] joules 400000 ) +cyanbot( pose [-1.642 17.193 0 -117.456] joules 400000 ) +cyanbot( pose [-3.095 18.236 0 -117.456] joules 400000 ) +cyanbot( pose [-4.038 18.173 0 -117.456] joules 400000 ) +cyanbot( pose [-4.538 17.452 0 -117.456] joules 400000 ) +cyanbot( pose [-4.651 20.435 0 -117.456] joules 400000 ) -#magentabot( pose [-7.850 14.772 0 -143.181] joules 300000 ) -#magentabot( pose [-8.323 14.087 0 -143.181] joules 300000 ) -#magentabot( pose [-7.850 13.613 0 -143.181] joules 300000 ) -#magentabot( pose [-7.139 14.772 0 -143.181] joules 300000 ) -#magentabot( pose [-6.401 14.061 0 -143.181] joules 300000 ) -#magentabot( pose [-7.165 13.429 0 -143.181] joules 300000 ) -#magentabot( pose [-6.428 13.323 0 -143.181] joules 300000 ) -#magentabot( pose [-7.455 15.430 0 -143.181] joules 300000 ) -#magentabot( pose [-6.507 14.851 0 -143.181] joules 300000 ) -#magentabot( pose [-8.718 14.877 0 -143.181] joules 300000 ) +cyanbot( pose [-3.635 20.622 0 -117.456] joules 400000 ) +cyanbot( pose [-5.346 20.649 0 -117.456] joules 400000 ) +cyanbot( pose [-4.518 21.397 0 -117.456] joules 400000 ) +cyanbot( pose [-3.796 21.611 0 -117.456] joules 400000 ) +cyanbot( pose [-3.074 19.927 0 -117.456] joules 400000 ) +cyanbot( pose [-2.940 21.424 0 -117.456] joules 400000 ) +cyanbot( pose [-2.326 20.756 0 -117.456] joules 400000 ) +cyanbot( pose [-1.898 19.927 0 -117.456] joules 400000 ) +cyanbot( pose [-1.737 19.125 0 -117.456] joules 400000 ) +cyanbot( pose [-5.320 17.681 0 -117.456] joules 400000 ) +cyanbot( pose [-4.708 18.475 0 -117.456] joules 400000 ) +cyanbot( pose [-5.615 18.687 0 -117.456] joules 400000 ) +cyanbot( pose [-6.341 17.840 0 -117.456] joules 400000 ) +cyanbot( pose [-3.521 18.825 0 -117.456] joules 400000 ) +cyanbot( pose [-4.194 19.473 0 -117.456] joules 400000 ) +cyanbot( pose [-5.192 19.564 0 -117.456] joules 400000 ) +cyanbot( pose [-6.341 19.836 0 -117.456] joules 400000 ) +cyanbot( pose [-2.742 19.050 0 -117.456] joules 400000 ) +cyanbot( pose [-2.198 18.082 0 -117.456] joules 400000 ) +cyanbot( pose [-6.301 18.782 0 -117.456] joules 400000 ) + +greenbot( pose [-10.874 0.353 0 44.991] joules 100000 ) +greenbot( pose [-10.489 1.610 0 44.991] joules 100000 ) +greenbot( pose [-9.907 3.766 0 44.991] joules 100000 ) +greenbot( pose [-10.640 2.698 0 44.991] joules 100000 ) +greenbot( pose [-9.196 2.015 0 44.991] joules 100000 ) +greenbot( pose [-9.821 1.505 0 44.991] joules 100000 ) +greenbot( pose [-10.261 0.974 0 44.991] joules 100000 ) +greenbot( pose [-9.038 2.865 0 44.991] joules 100000 ) +greenbot( pose [-11.097 0.973 0 44.991] joules 100000 ) +greenbot( pose [-11.155 2.003 0 44.991] joules 100000 ) + +greenbot( pose [-11.819 1.550 0 44.991] joules 100000 ) +greenbot( pose [-12.401 2.181 0 44.991] joules 100000 ) +greenbot( pose [-11.236 3.330 0 44.991] joules 100000 ) +greenbot( pose [-12.078 3.298 0 44.991] joules 100000 ) +greenbot( pose [-9.909 2.456 0 44.991] joules 100000 ) +greenbot( pose [-10.734 4.123 0 44.991] joules 100000 ) +greenbot( pose [-11.592 4.398 0 44.991] joules 100000 ) +greenbot( pose [-12.903 2.877 0 44.991] joules 100000 ) +greenbot( pose [-12.434 1.372 0 44.991] joules 100000 ) +greenbot( pose [-10.555 3.358 0 44.991] joules 100000 ) + +greenbot( pose [-9.516 3.311 0 44.991] joules 100000 ) +greenbot( pose [-12.308 3.949 0 44.991] joules 100000 ) +greenbot( pose [-13.185 3.682 0 44.991] joules 100000 ) +greenbot( pose [-13.014 2.167 0 44.991] joules 100000 ) +greenbot( pose [-13.719 2.634 0 44.991] joules 100000 ) +greenbot( pose [-13.633 1.986 0 44.991] joules 100000 ) +greenbot( pose [-13.138 1.385 0 44.991] joules 100000 ) +greenbot( pose [-12.490 0.575 0 44.991] joules 100000 ) +greenbot( pose [-11.775 0.699 0 44.991] joules 100000 ) +greenbot( pose [-11.641 2.586 0 44.991] joules 100000 ) + +yellowbot( pose [-15.452 7.366 0 35.145] joules 200000 ) +yellowbot( pose [-13.978 6.340 0 35.145] joules 200000 ) +yellowbot( pose [-16.173 6.901 0 35.145] joules 200000 ) +yellowbot( pose [-15.979 5.550 0 35.145] joules 200000 ) +yellowbot( pose [-14.873 5.208 0 35.145] joules 200000 ) +yellowbot( pose [-14.504 7.419 0 35.145] joules 200000 ) +yellowbot( pose [-16.374 8.025 0 35.145] joules 200000 ) +yellowbot( pose [-15.189 8.420 0 35.145] joules 200000 ) +yellowbot( pose [-13.793 5.576 0 35.145] joules 200000 ) +yellowbot( pose [-16.914 7.279 0 35.145] joules 200000 ) + +yellowbot( pose [-17.222 6.291 0 35.145] joules 200000 ) +yellowbot( pose [-17.885 7.198 0 35.145] joules 200000 ) +yellowbot( pose [-17.254 8.218 0 35.145] joules 200000 ) +yellowbot( pose [-17.060 5.498 0 35.145] joules 200000 ) +yellowbot( pose [-18.047 6.227 0 35.145] joules 200000 ) +yellowbot( pose [-16.930 4.640 0 35.145] joules 200000 ) +yellowbot( pose [-17.966 5.417 0 35.145] joules 200000 ) +yellowbot( pose [-15.927 4.640 0 35.145] joules 200000 ) +yellowbot( pose [-14.988 4.236 0 35.145] joules 200000 ) +yellowbot( pose [-15.706 6.151 0 35.145] joules 200000 ) + +yellowbot( pose [-16.419 6.225 0 35.145] joules 200000 ) +yellowbot( pose [-14.574 5.868 0 35.145] joules 200000 ) +yellowbot( pose [-15.759 7.850 0 35.145] joules 200000 ) +yellowbot( pose [-15.801 8.625 0 35.145] joules 200000 ) +yellowbot( pose [-16.598 8.835 0 35.145] joules 200000 ) +yellowbot( pose [-14.417 6.791 0 35.145] joules 200000 ) +yellowbot( pose [-15.235 6.801 0 35.145] joules 200000 ) +yellowbot( pose [-15.444 5.260 0 35.145] joules 200000 ) +yellowbot( pose [-16.598 5.187 0 35.145] joules 200000 ) +yellowbot( pose [-16.461 4.159 0 35.145] joules 200000 ) + +magentabot( pose [-7.850 14.772 0 -143.181] joules 300000 ) +magentabot( pose [-8.323 14.087 0 -143.181] joules 300000 ) +magentabot( pose [-7.850 13.613 0 -143.181] joules 300000 ) +magentabot( pose [-7.139 14.772 0 -143.181] joules 300000 ) +magentabot( pose [-6.401 14.061 0 -143.181] joules 300000 ) +magentabot( pose [-7.165 13.429 0 -143.181] joules 300000 ) +magentabot( pose [-6.428 13.323 0 -143.181] joules 300000 ) +magentabot( pose [-7.455 15.430 0 -143.181] joules 300000 ) +magentabot( pose [-6.507 14.851 0 -143.181] joules 300000 ) +magentabot( pose [-8.343 17.162 0 -143.181] joules 300000 ) + +magentabot( pose [-9.099 17.489 0 -143.181] joules 300000 ) +magentabot( pose [-9.610 15.854 0 -143.181] joules 300000 ) +magentabot( pose [-9.589 16.569 0 -143.181] joules 300000 ) +magentabot( pose [-10.059 15.221 0 -143.181] joules 300000 ) +magentabot( pose [-10.264 16.099 0 -143.181] joules 300000 ) +magentabot( pose [-9.814 17.325 0 -143.181] joules 300000 ) +magentabot( pose [-8.180 16.447 0 -143.181] joules 300000 ) +magentabot( pose [-8.629 17.999 0 -143.181] joules 300000 ) +magentabot( pose [-9.467 18.142 0 -143.181] joules 300000 ) +magentabot( pose [-9.079 16.263 0 -143.181] joules 300000 ) + +magentabot( pose [-9.196 15.409 0 -143.181] joules 300000 ) +magentabot( pose [-9.598 14.812 0 -143.181] joules 300000 ) +magentabot( pose [-9.304 14.280 0 -143.181] joules 300000 ) +magentabot( pose [-8.946 13.737 0 -143.181] joules 300000 ) +magentabot( pose [-8.761 13.140 0 -143.181] joules 300000 ) +magentabot( pose [-8.153 12.629 0 -143.181] joules 300000 ) +magentabot( pose [-7.393 12.618 0 -143.181] joules 300000 ) +magentabot( pose [-8.467 15.712 0 -143.181] joules 300000 ) +magentabot( pose [-7.762 16.132 0 -143.181] joules 300000 ) +magentabot( pose [-8.794 14.855 0 -143.181] joules 300000 ) + Added: code/stage/trunk/worlds/fasr2_duo.world =================================================================== --- code/stage/trunk/worlds/fasr2_duo.world (rev 0) +++ code/stage/trunk/worlds/fasr2_duo.world 2010-02-19 21:28:18 UTC (rev 8558) @@ -0,0 +1,320 @@ + +# FASR demo world +# Authors: Richard Vaughan +# $Id: fasr.world,v 1.4 2008-04-01 23:57:41 rtv Exp $ + +include "pioneer.inc" +include "map.inc" +include "sick.inc" + +speedup 10.000 +paused 1 + +# time at which to pause (in GUI mode) or quit (in headless mode) the simulation +quit_time 3600 # 1 hour of simulated time +#quit_time 1800 # hour of simulated time + +resolution 0.02 + +threads 0 + +# configure the GUI window +window +( + size [ 980.000 1016.000 ] + + center [ -3.598 0.596 ] + rotate [ 0 0 ] + scale 9.570 + + show_data 1 + show_flags 1 + + # interval 50 +) + +# load an environment bitmap +floorplan +( + name "cave" + pose [0 0 0 0] + size [100.000 100.000 0.600] + bitmap "bitmaps/cave.png" +) + +zone +( + color "green" + pose [ 38.682 -25.820 0 0 ] + name "green_source" + ctrl "source" +) + +zone( color "DarkGreen" + pose [ -10.930 44.453 0 0 ] + name "green_sink" + ctrl "sink" +) + +zone( color "blue" + pose [ -40.264 -18.084 0 0 ] + name "blue_source" + ctrl "source" +) + +zone( color "DarkBlue" + pose [ 39.986 37.517 0 0 ] + name "blue_sink" + ctrl "sink" +) + +zone( color "red" + pose [ -41.325 32.878 0 0 ] + name "red_source" + ctrl "source" +) + +zone( color "DarkRed" + pose [ 40.730 22.450 0 0 ] + name "red_sink" + ctrl "sink" +) + +zone( color "yellow" + pose [ -37.146 -39.531 0 0 ] + name "yellow_source" + ctrl "source" +) + +zone( color_rgba [ 0.8 0.8 0 1 ] + pose [ -38.243 9.591 0 0 ] + name "yellow_sink" + ctrl "sink" +) + +zone( color "cyan" + pose [ 26.255 41.679 0 0 ] + name "cyan_source" + ctrl "source" +) + +zone( color "DarkCyan" + pose [ 9.412 -40.363 0 0 ] + name "cyan_sink" + ctrl "sink" +) + +zone( color "magenta" + pose [ -14.246 -42.150 0 0 ] + name "magenta_source" + ctrl "source" +) + +zone( color "DarkMagenta" + pose [ 38.511 -14.808 0 0 ] + name "magenta_sink" + ctrl "sink" +) + + +define charging_bump model +( + pose [0.240 0 -0.100 0 ] + size [0.120 0.050 0.100] + take_watts 2000.0 + color "orange" + obstacle_return 0 +) + +define charge_station model +( + size [ 0.100 0.300 0.100 ] + color "purple" + + # side blocks to restrict view angle + model( color "purple" size [0.100 0.050 0.250] pose [ 0 0.100 0 0 ] ) + model( color "purple" size [0.100 0.050 0.250] pose [ 0 -0.100 0 0 ] ) + + # the charging block + model( + pose [ 0.010 0 0 0 ] + color "yellow" + size [ 0.050 0.200 0.100 ] + joules -1 # provides infinite energy + give_watts 2000 + fiducial_return 2 # look for this in the fiducial sensor + + alwayson 1 # so we give charge without any explicit subscriber + ) + +) + +#charge_station( pose [ 7.908 -2.510 0 0 ] ) +#charge_station( pose [ 7.920 -3.847 0 0 ] ) +#charge_station( pose [ 7.449 -4.974 0 -40.107 ] ) +#charge_station( pose [ 7.698 -1.432 0 31.513 ] ) +#charge_station( pose [ 5.162 -0.814 0 88.809 ] ) + +#charge_station( pose [ 3.927 -0.693 0 88.808 ] ) +#charge_station( pose [ 6.427 -0.964 0 74.484 ] ) +#charge_station( pose [ 4.964 -0.752 0 88.808 ] ) +#charge_station( pose [ 3.832 -0.704 0 91.673 ] ) +#charge_station( pose [ 7.949 -4.019 0 0 ] ) + +define autorob pioneer2dx +( + sicklaser( samples 32 range_max 5 laser_return 2 watts 30 ) +# ctrl "fasr2" + joules 100000 + joules_capacity 400000 + fiducial_return 0 + charging_bump( fiducial( range_max 5 pose [ 0 0 -0.100 0 ] ) ) + + # small speed optimization + # trail_length 0 +) + +define redbot autorob( color "red" ctrl "fasr2 red" ) +define greenbot autorob( color "green" ctrl "fasr2 green" ) +define bluebot autorob( color "blue" ctrl "fasr2 blue" ) +define cyanbot autorob( color "cyan" ctrl "fasr2 cyan" ) +define yellowbot autorob( color "yellow" ctrl "fasr2 yellow" ) +define magentabot autorob( color "magenta" ctrl "fasr2 magenta" ) + +#define bot autorob( ctrl "fasr2 " )" +#define bot autorob( ctrl "fasr2 " )" +#define bot autorob( ctrl "fasr2 " )" + +redbot( pose [-10.909 12.012 0 125.831] joules 100000 ) +redbot( pose [-11.699 11.274 0 125.831] joules 100000 ) +#redbot( pose [-11.356 10.669 0 125.831] joules 100000 ) +#redbot( pose [-10.066 11.432 0 125.831] joules 100000 ) +#redbot( pose [-10.698 10.458 0 125.831] joules 100000 ) +#redbot( pose [-9.987 10.669 0 125.831] joules 100000 ) +#redbot( pose [-11.593 12.222 0 125.831] joules 100000 ) +#redbot( pose [-10.303 12.222 0 125.831] joules 100000 ) +#redbot( pose [-12.120 12.012 0 125.831] joules 100000 ) +#redbot( pose [-12.601 11.375 0 125.831] joules 100000 ) + +#redbot( pose [-12.145 10.886 0 125.831] joules 100000 ) +#redbot( pose [-12.710 12.157 0 125.831] joules 100000 ) +#redbot( pose [-12.275 12.775 0 125.831] joules 100000 ) +#redbot( pose [-11.461 13.123 0 125.831] joules 100000 ) +#redbot( pose [-10.679 13.036 0 125.831] joules 100000 ) +#redbot( pose [-12.167 13.514 0 125.831] joules 100000 ) +#redbot( pose [-12.992 13.047 0 125.831] joules 100000 ) +#redbot( pose [-13.372 12.243 0 125.831] joules 100000 ) +#redbot( pose [-13.296 11.331 0 125.831] joules 100000 ) +#redbot( pose [-10.777 11.353 0 125.831] joules 100000 ) + + +bluebot( pose [-11.191 6.965 0 174.453] joules 200000 ) +bluebot( pose [-11.270 8.097 0 174.453] joules 200000 ) +#bluebot( pose [-10.295 6.886 0 174.453] joules 200000 ) +#bluebot( pose [-8.900 8.361 0 174.453] joules 200000 ) +#bluebot( pose [-10.374 8.940 0 174.453] joules 200000 ) +#bluebot( pose [-9.321 7.650 0 174.453] joules 200000 ) +#bluebot( pose [-9.453 9.072 0 174.453] joules 200000 ) +#bluebot( pose [-11.401 8.966 0 174.453] joules 200000 ) +#bluebot( pose [-9.558 6.570 0 174.453] joules 200000 ) +#bluebot( pose [-9.795 8.473 0 174.453] joules 200000 ) + +#bluebot( pose [-10.901 7.503 0 174.453] joules 200000 ) +#bluebot( pose [-12.063 7.960 0 174.453] joules 200000 ) +#bluebot( pose [-12.159 8.673 0 174.453] joules 200000 ) +#bluebot( pose [-12.039 7.399 0 174.453] joules 200000 ) +#bluebot( pose [-12.151 6.782 0 174.453] joules 200000 ) +#bluebot( pose [-11.574 6.213 0 174.453] joules 200000 ) +#bluebot( pose [-10.725 6.173 0 174.453] joules 200000 ) +#bluebot( pose [-10.019 5.829 0 174.453] joules 200000 ) +#bluebot( pose [-12.824 8.232 0 174.453] joules 200000 ) +#bluebot( pose [-10.276 7.872 0 174.453] joules 200000 ) + +cyanbot( pose [-4.059 16.220 0 -117.456] joules 400000 ) +cyanbot( pose [-2.610 16.957 0 -117.456] joules 400000 ) +#cyanbot( pose [-1.794 15.087 0 -117.456] joules 400000 ) +#cyanbot( pose [-4.164 15.272 0 -117.456] joules 400000 ) +#cyanbot( pose [-3.348 14.771 0 -117.456] joules 400000 ) +#cyanbot( pose [-2.242 15.930 0 -117.456] joules 400000 ) +#cyanbot( pose [-3.348 17.036 0 -117.456] joules 400000 ) +#cyanbot( pose [-4.322 17.510 0 -117.456] joules 400000 ) +#cyanbot( pose [-4.822 16.536 0 -117.456] joules 400000 ) +#cyanbot( pose [-5.373 17.628 0 -117.456] joules 400000 ) + +#cyanbot( pose [-4.708 18.475 0 -117.456] joules 400000 ) +#cyanbot( pose [-5.615 18.687 0 -117.456] joules 400000 ) +#cyanbot( pose [-6.341 17.840 0 -117.456] joules 400000 ) +#cyanbot( pose [-3.710 18.415 0 -117.456] joules 400000 ) +#cyanbot( pose [-4.194 19.473 0 -117.456] joules 400000 ) +#cyanbot( pose [-5.192 19.564 0 -117.456] joules 400000 ) +#cyanbot( pose [-6.341 19.836 0 -117.456] joules 400000 ) +#cyanbot( pose [-2.742 19.050 0 -117.456] joules 400000 ) +#cyanbot( pose [-2.198 18.082 0 -117.456] joules 400000 ) +#cyanbot( pose [-5.796 16.509 0 -117.456] joules 400000 ) + +greenbot( pose [-7.576 4.137 0 44.991] joules 100000 ) +greenbot( pose [-8.459 4.269 0 44.991] joules 100000 ) +#greenbot( pose [-9.907 3.766 0 44.991] joules 100000 ) +#greenbot( pose [-10.640 2.698 0 44.991] joules 100000 ) +#greenbot( pose [-8.557 1.729 0 44.991] joules 100000 ) +#greenbot( pose [-9.821 1.505 0 44.991] joules 100000 ) +#greenbot( pose [-7.926 3.090 0 44.991] joules 100000 ) +#greenbot( pose [-9.038 2.865 0 44.991] joules 100000 ) +#greenbot( pose [-11.097 0.973 0 44.991] joules 100000 ) +#greenbot( pose [-11.155 2.003 0 44.991] joules 100000 ) + +#greenbot( pose [-11.819 1.550 0 44.991] joules 100000 ) +#greenbot( pose [-12.401 2.181 0 44.991] joules 100000 ) +#greenbot( pose [-11.236 3.330 0 44.991] joules 100000 ) +#greenbot( pose [-12.078 3.298 0 44.991] joules 100000 ) +#greenbot( pose [-9.909 2.456 0 44.991] joules 100000 ) +#greenbot( pose [-10.734 4.123 0 44.991] joules 100000 ) +#greenbot( pose [-11.592 4.398 0 44.991] joules 100000 ) +#greenbot( pose [-12.903 2.877 0 44.991] joules 100000 ) +#greenbot( pose [-12.434 1.372 0 44.991] joules 100000 ) +#greenbot( pose [-11.689 2.634 0 44.991] joules 100000 ) + +yellowbot( pose [-15.452 7.366 0 35.145] joules 200000 ) +yellowbot( pose [-13.978 6.340 0 35.145] joules 200000 ) +#yellowbot( pose [-16.163 6.524 0 35.145] joules 200000 ) +#yellowbot( pose [-15.979 5.550 0 35.145] joules 200000 ) +#yellowbot( pose [-14.873 5.208 0 35.145] joules 200000 ) +#yellowbot( pose [-14.504 7.419 0 35.145] joules 200000 ) +#yellowbot( pose [-16.374 8.025 0 35.145] joules 200000 ) +#yellowbot( pose [-15.189 8.420 0 35.145] joules 200000 ) +#yellowbot( pose [-13.793 5.576 0 35.145] joules 200000 ) +#yellowbot( pose [-16.914 7.279 0 35.145] joules 200000 ) + +#yellowbot( pose [-17.222 6.291 0 35.145] joules 200000 ) +#yellowbot( pose [-17.885 7.198 0 35.145] joules 200000 ) +#yellowbot( pose [-17.254 8.218 0 35.145] joules 200000 ) +#yellowbot( pose [-17.060 5.498 0 35.145] joules 200000 ) +#yellowbot( pose [-18.047 6.227 0 35.145] joules 200000 ) +#yellowbot( pose [-16.930 4.640 0 35.145] joules 200000 ) +#yellowbot( pose [-17.966 5.417 0 35.145] joules 200000 ) +#yellowbot( pose [-15.927 4.640 0 35.145] joules 200000 ) +#yellowbot( pose [-14.988 4.236 0 35.145] joules 200000 ) +#yellowbot( pose [-15.004 6.340 0 35.145] joules 200000 ) + +magentabot( pose [-7.850 14.772 0 -143.181] joules 300000 ) +magentabot( pose [-8.323 14.087 0 -143.181] joules 300000 ) +#magentabot( pose [-7.850 13.613 0 -143.181] joules 300000 ) +#magentabot( pose [-7.139 14.772 0 -143.181] joules 300000 ) +#magentabot( pose [-6.401 14.061 0 -143.181] joules 300000 ) +#magentabot( pose [-7.165 13.429 0 -143.181] joules 300000 ) +#magentabot( pose [-6.428 13.323 0 -143.181] joules 300000 ) +#magentabot( pose [-7.455 15.430 0 -143.181] joules 300000 ) +#magentabot( pose [-6.507 14.851 0 -143.181] joules 300000 ) +#magentabot( pose [-8.425 15.507 0 -143.181] joules 300000 ) + +#magentabot( pose [-9.196 15.409 0 -143.181] joules 300000 ) +#magentabot( pose [-9.598 14.812 0 -143.181] joules 300000 ) +#magentabot( pose [-9.304 14.280 0 -143.181] joules 300000 ) +#magentabot( pose [-8.946 13.737 0 -143.181] joules 300000 ) +#magentabot( pose [-8.761 13.140 0 -143.181] joules 300000 ) +#magentabot( pose [-8.153 12.629 0 -143.181] joules 300000 ) +#magentabot( pose [-7.393 12.618 0 -143.181] joules 300000 ) +#magentabot( pose [-8.957 16.386 0 -143.181] joules 300000 ) +#magentabot( pose [-7.925 16.234 0 -143.181] joules 300000 ) +#magentabot( pose [-8.794 14.855 0 -143.181] joules 300000 ) + Added: code/stage/trunk/worlds/fasr2_solo.world =================================================================== --- code/stage/trunk/worlds/fasr2_solo.world (rev 0) +++ code/stage/trunk/worlds/fasr2_solo.world 2010-02-19 21:28:18 UTC (rev 8558) @@ -0,0 +1,320 @@ + +# FASR demo world +# Authors: Richard Vaughan +# $Id: fasr.world,v 1.4 2008-04-01 23:57:41 rtv Exp $ + +include "pioneer.inc" +include "map.inc" +include "sick.inc" + +speedup 10.000 +paused 1 + +# time at which to pause (in GUI mode) or quit (in headless mode) the simulation +quit_time 3600 # 1 hour of simulated time +#quit_time 1800 # hour of simulated time + +resolution 0.02 + +threads 0 + +# configure the GUI window +window +( + size [ 980.000 1016.000 ] + + center [ -3.598 0.596 ] + rotate [ 0 0 ] + scale 9.570 + + show_data 1 + show_flags 1 + + # interval 50 +) + +# load an environment bitmap +floorplan +( + name "cave" + pose [0 0 0 0] + size [100.000 100.000 0.600] + bitmap "bitmaps/cave.png" +) + +zone +( + color "green" + pose [ 38.682 -25.820 0 0 ] + name "green_source" + ctrl "source" +) + +zone( color "DarkGreen" + pose [ -10.930 44.453 0 0 ] + name "green_sink" + ctrl "sink" +) + +zone( color "blue" + pose [ -40.264 -18.084 0 0 ] + name "blue_source" + ctrl "source" +) + +zone( color "DarkBlue" + pose [ 39.986 37.517 0 0 ] + name "blue_sink" + ctrl "sink" +) + +zone( color "red" + pose [ -41.325 32.878 0 0 ] + name "red_source" + ctrl "source" +) + +zone( color "DarkRed" + pose [ 40.730 22.450 0 0 ] + name "red_sink" + ctrl "sink" +) + +zone( color "yellow" + pose [ -37.146 -39.531 0 0 ] + name "yellow_source" + ctrl "source" +) + +zone( color_rgba [ 0.8 0.8 0 1 ] + pose [ -38.243 9.591 0 0 ] + name "yellow_sink" + ctrl "sink" +) + +zone( color "cyan" + pose [ 26.255 41.679 0 0 ] + name "cyan_source" + ctrl "source" +) + +zone( color "DarkCyan" + pose [ 9.412 -40.363 0 0 ] + name "cyan_sink" + ctrl "sink" +) + +zone( color "magenta" + pose [ -14.246 -42.150 0 0 ] + name "magenta_source" + ctrl "source" +) + +zone( color "DarkMagenta" + pose [ 38.511 -14.808 0 0 ] + name "magenta_sink" + ctrl "sink" +) + + +define charging_bump model +( + pose [0.240 0 -0.100 0 ] + size [0.120 0.050 0.100] + take_watts 2000.0 + color "orange" + obstacle_return 0 +) + +define charge_station model +( + size [ 0.100 0.300 0.100 ] + color "purple" + + # side blocks to restrict view angle + model( color "purple" size [0.100 0.050 0.250] pose [ 0 0.100 0 0 ] ) + model( color "purple" size [0.100 0.050 0.250] pose [ 0 -0.100 0 0 ] ) + + # the charging block + model( + pose [ 0.010 0 0 0 ] + color "yellow" + size [ 0.050 0.200 0.100 ] + joules -1 # provides infinite energy + give_watts 2000 + fiducial_return 2 # look for this in the fiducial sensor + + alwayson 1 # so we give charge without any explicit subscriber + ) + +) + +#charge_station( pose [ 7.908 -2.510 0 0 ] ) +#charge_station( pose [ 7.920 -3.847 0 0 ] ) +#charge_station( pose [ 7.449 -4.974 0 -40.107 ] ) +#charge_station( pose [ 7.698 -1.432 0 31.513 ] ) +#charge_station( pose [ 5.162 -0.814 0 88.809 ] ) + +#charge_station( pose [ 3.927 -0.693 0 88.808 ] ) +#charge_station( pose [ 6.427 -0.964 0 74.484 ] ) +#charge_station( pose [ 4.964 -0.752 0 88.808 ] ) +#charge_station( pose [ 3.832 -0.704 0 91.673 ] ) +#charge_station( pose [ 7.949 -4.019 0 0 ] ) + +define autorob pioneer2dx +( + sicklaser( samples 32 range_max 5 laser_return 2 watts 30 ) +# ctrl "fasr2" + joules 100000 + joules_capacity 400000 + fiducial_return 0 + charging_bump( fiducial( range_max 5 pose [ 0 0 -0.100 0 ] ) ) + + # small speed optimization + # trail_length 0 +) + +define redbot autorob( color "red" ctrl "fasr2 red" ) +define greenbot autorob( color "green" ctrl "fasr2 green" ) +define bluebot autorob( color "blue" ctrl "fasr2 blue" ) +define cyanbot autorob( color "cyan" ctrl "fasr2 cyan" ) +define yellowbot autorob( color "yellow" ctrl "fasr2 yellow" ) +define magentabot autorob( color "magenta" ctrl "fasr2 magenta" ) + +#define bot autorob( ctrl "fasr2 " )" +#define bot autorob( ctrl "fasr2 " )" +#define bot autorob( ctrl "fasr2 " )" + +redbot( pose [-10.909 12.012 0 125.831] joules 100000 ) +#redbot( pose [-11.699 11.274 0 125.831] joules 100000 ) +#redbot( pose [-11.356 10.669 0 125.831] joules 100000 ) +#redbot( pose [-10.066 11.432 0 125.831] joules 100000 ) +#redbot( pose [-10.698 10.458 0 125.831] joules 100000 ) +#redbot( pose [-9.987 10.669 0 125.831] joules 100000 ) +#redbot( pose [-11.593 12.222 0 125.831] joules 100000 ) +#redbot( pose [-10.303 12.222 0 125.831] joules 100000 ) +#redbot( pose [-12.120 12.012 0 125.831] joules 100000 ) +#redbot( pose [-12.601 11.375 0 125.831] joules 100000 ) + +#redbot( pose [-12.145 10.886 0 125.831] joules 100000 ) +#redbot( pose [-12.710 12.157 0 125.831] joules 100000 ) +#redbot( pose [-12.275 12.775 0 125.831] joules 100000 ) +#redbot( pose [-11.461 13.123 0 125.831] joules 100000 ) +#redbot( pose [-10.679 13.036 0 125.831] joules 100000 ) +#redbot( pose [-12.167 13.514 0 125.831] joules 100000 ) +#redbot( pose [-12.992 13.047 0 125.831] joules 100000 ) +#redbot( pose [-13.372 12.243 0 125.831] joules 100000 ) +#redbot( pose [-13.296 11.331 0 125.831] joules 100000 ) +#redbot( pose [-10.777 11.353 0 125.831] joules 100000 ) + + +bluebot( pose [-11.191 6.965 0 174.453] joules 200000 ) +#bluebot( pose [-11.270 8.097 0 174.453] joules 200000 ) +#bluebot( pose [-10.295 6.886 0 174.453] joules 200000 ) +#bluebot( pose [-8.900 8.361 0 174.453] joules 200000 ) +#bluebot( pose [-10.374 8.940 0 174.453] joules 200000 ) +#bluebot( pose [-9.321 7.650 0 174.453] joules 200000 ) +#bluebot( pose [-9.453 9.072 0 174.453] joules 200000 ) +#bluebot( pose [-11.401 8.966 0 174.453] joules 200000 ) +#bluebot( pose [-9.558 6.570 0 174.453] joules 200000 ) +#bluebot( pose [-9.795 8.473 0 174.453] joules 200000 ) + +#bluebot( pose [-10.901 7.503 0 174.453] joules 200000 ) +#bluebot( pose [-12.063 7.960 0 174.453] joules 200000 ) +#bluebot( pose [-12.159 8.673 0 174.453] joules 200000 ) +#bluebot( pose [-12.039 7.399 0 174.453] joules 200000 ) +#bluebot( pose [-12.151 6.782 0 174.453] joules 200000 ) +#bluebot( pose [-11.574 6.213 0 174.453] joules 200000 ) +#bluebot( pose [-10.725 6.173 0 174.453] joules 200000 ) +#bluebot( pose [-10.019 5.829 0 174.453] joules 200000 ) +#bluebot( pose [-12.824 8.232 0 174.453] joules 200000 ) +#bluebot( pose [-10.276 7.872 0 174.453] joules 200000 ) + +cyanbot( pose [-4.059 16.220 0 -117.456] joules 400000 ) +#cyanbot( pose [-2.610 16.957 0 -117.456] joules 400000 ) +#cyanbot( pose [-1.794 15.087 0 -117.456] joules 400000 ) +#cyanbot( pose [-4.164 15.272 0 -117.456] joules 400000 ) +#cyanbot( pose [-3.348 14.771 0 -117.456] joules 400000 ) +#cyanbot( pose [-2.242 15.930 0 -117.456] joules 400000 ) +#cyanbot( pose [-3.348 17.036 0 -117.456] joules 400000 ) +#cyanbot( pose [-4.322 17.510 0 -117.456] joules 400000 ) +#cyanbot( pose [-4.822 16.536 0 -117.456] joules 400000 ) +#cyanbot( pose [-5.373 17.628 0 -117.456] joules 400000 ) + +#cyanbot( pose [-4.708 18.475 0 -117.456] joules 400000 ) +#cyanbot( pose [-5.615 18.687 0 -117.456] joules 400000 ) +#cyanbot( pose [-6.341 17.840 0 -117.456] joules 400000 ) +#cyanbot( pose [-3.710 18.415 0 -117.456] joules 400000 ) +#cyanbot( pose [-4.194 19.473 0 -117.456] joules 400000 ) +#cyanbot( pose [-5.192 19.564 0 -117.456] joules 400000 ) +#cyanbot( pose [-6.341 19.836 0 -117.456] joules 400000 ) +#cyanbot( pose [-2.742 19.050 0 -117.456] joules 400000 ) +#cyanbot( pose [-2.198 18.082 0 -117.456] joules 400000 ) +#cyanbot( pose [-5.796 16.509 0 -117.456] joules 400000 ) + +greenbot( pose [-7.576 4.137 0 44.991] joules 100000 ) +#greenbot( pose [-8.459 4.269 0 44.991] joules 100000 ) +#greenbot( pose [-9.907 3.766 0 44.991] joules 100000 ) +#greenbot( pose [-10.640 2.698 0 44.991] joules 100000 ) +#greenbot( pose [-8.557 1.729 0 44.991] joules 100000 ) +#greenbot( pose [-9.821 1.505 0 44.991] joules 100000 ) +#greenbot( pose [-7.926 3.090 0 44.991] joules 100000 ) +#greenbot( pose [-9.038 2.865 0 44.991] joules 100000 ) +#greenbot( pose [-11.097 0.973 0 44.991] joules 100000 ) +#greenbot( pose [-11.155 2.003 0 44.991] joules 100000 ) + +#greenbot( pose [-11.819 1.550 0 44.991] joules 100000 ) +#greenbot( pose [-12.401 2.181 0 44.991] joules 100000 ) +#greenbot( pose [-11.236 3.330 0 44.991] joules 100000 ) +#greenbot( pose [-12.078 3.298 0 44.991] joules 100000 ) +#greenbot( pose [-9.909 2.456 0 44.991] joules 100000 ) +#greenbot( pose [-10.734 4.123 0 44.991] joules 100000 ) +#greenbot( pose [-11.592 4.398 0 44.991] joules 100000 ) +#greenbot( pose [-12.903 2.877 0 44.991] joules 100000 ) +#greenbot( pose [-12.434 1.372 0 44.991] joules 100000 ) +#greenbot( pose [-11.689 2.634 0 44.991] joules 100000 ) + +yellowbot( pose [-15.452 7.366 0 35.145] joules 200000 ) +#yellowbot( pose [-13.978 6.340 0 35.145] joules 200000 ) +#yellowbot( pose [-16.163 6.524 0 35.145] joules 200000 ) +#yellowbot( pose [-15.979 5.550 0 35.145] joules 200000 ) +#yellowbot( pose [-14.873 5.208 0 35.145] joules 200000 ) +#yellowbot( pose [-14.504 7.419 0 35.145] joules 200000 ) +#yellowbot( pose [-16.374 8.025 0 35.145] joules 200000 ) +#yellowbot( pose [-15.189 8.420 0 35.145] joules 200000 ) +#yellowbot( pose [-13.793 5.576 0 35.145] joules 200000 ) +#yellowbot( pose [-16.914 7.279 0 35.145] joules 200000 ) + +#yellowbot( pose [-17.222 6.291 0 35.145] joules 200000 ) +#yellowbot( pose [-17.885 7.198 0 35.145] joules 200000 ) +#yellowbot( pose [-17.254 8.218 0 35.145] joules 200000 ) +#yellowbot( pose [-17.060 5.498 0 35.145] joules 200000 ) +#yellowbot( pose [-18.047 6.227 0 35.145] joules 200000 ) +#yellowbot( pose [-16.930 4.640 0 35.145] joules 200000 ) +#yellowbot( pose [-17.966 5.417 0 35.145] joules 200000 ) +#yellowbot( pose [-15.927 4.640 0 35.145] joules 200000 ) +#yellowbot( pose [-14.988 4.236 0 35.145] joules 200000 ) +#yellowbot( pose [-15.004 6.340 0 35.145] joules 200000 ) + +magentabot( pose [-7.850 14.772 0 -143.181] joules 300000 ) +#magentabot( pose [-8.323 14.087 0 -143.181] joules 300000 ) +#magentabot( pose [-7.850 13.613 0 -143.181] joules 300000 ) +#magentabot( pose [-7.139 14.772 0 -143.181] joules 300000 ) +#magentabot( pose [-6.401 14.061 0 -143.181] joules 300000 ) +#magentabot( pose [-7.165 13.429 0 -143.181] joules 300000 ) +#magentabot( pose [-6.428 13.323 0 -143.181] joules 300000 ) +#magentabot( pose [-7.455 15.430 0 -143.181] joules 300000 ) +#magentabot( pose [-6.507 14.851 0 -143.181] joules 300000 ) +#magentabot( pose [-8.425 15.507 0 -143.181] joules 300000 ) + +#magentabot( pose [-9.196 15.409 0 -143.181] joules 300000 ) +#magentabot( pose [-9.598 14.812 0 -143.181] joules 300000 ) +#magentabot( pose [-9.304 14.280 0 -143.181] joules 300000 ) +#magentabot( pose [-8.946 13.737 0 -143.181] joules 300000 ) +#magentabot( pose [-8.761 13.140 0 -143.181] joules 300000 ) +#magentabot( pose [-8.153 12.629 0 -143.181] joules 300000 ) +#magentabot( pose [-7.393 12.618 0 -143.181] joules 300000 ) +#magentabot( pose [-8.957 16.386 0 -143.181] joules 300000 ) +#magentabot( pose [-7.925 16.234 0 -143.181] joules 300000 ) +#magentabot( pose [-8.794 14.855 0 -143.181] joules 300000 ) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit