Revision: 8559
http://playerstage.svn.sourceforge.net/playerstage/?rev=8559&view=rev
Author: rtv
Date: 2010-02-20 01:20:25 +0000 (Sat, 20 Feb 2010)
Log Message:
-----------
fasr2 demo with basic recharging
Modified Paths:
--------------
code/stage/trunk/examples/ctrl/fasr2.cc
code/stage/trunk/libstage/model_fiducial.cc
code/stage/trunk/worlds/fasr2.world
Modified: code/stage/trunk/examples/ctrl/fasr2.cc
===================================================================
--- code/stage/trunk/examples/ctrl/fasr2.cc 2010-02-19 21:28:18 UTC (rev
8558)
+++ code/stage/trunk/examples/ctrl/fasr2.cc 2010-02-20 01:20:25 UTC (rev
8559)
@@ -14,31 +14,9 @@
const int avoidduration = 10;
const int workduration = 20;
const int PAYLOAD = 1;
-const int TRAIL_LENGTH_MAX = 500;
-double have[4][4] = {
- // { -120, -180, 180, 180 }
- //{ -90, -120, 180, 90 },
- { 90, 180, 180, 180 },
- { 90, -90, 180, 90 },
- { 90, 90, 180, 90 },
- { 0, 45, 0, 0}
-};
+//const int TRAIL_LENGTH_MAX = 500;
-double need[4][4] = {
- { -120, -180, 180, 180 },
- { -90, -120, 180, 90 },
- { -90, -90, 180, 180 },
- { -90, -180, -90, -90 }
-};
-
-double refuel[4][4] = {
- { 0, 0, 45, 120 },
- { 0,-90, -60, -160 },
- { -90, -90, 180, 180 },
- { -90, -180, -90, -90 }
-};
-
typedef enum {
MODE_WORK=0,
MODE_DOCK,
@@ -104,7 +82,7 @@
FOR_EACH( it, nodes ){ (*it)->Draw(); }
}
- stg_radians_t GoodDirection( const Pose& pose, stg_meters_t range )
+ bool GoodDirection( const Pose& pose, stg_meters_t range, stg_radians_t&
heading_result )
{
// find the node with the lowest value within range of the given
// pose and return the absolute heading from pose that node
@@ -112,9 +90,9 @@
if( nodes.empty() )
return 0; // a null guess
-
+
Node* best_node = NULL;
-
+
// find the closest node
FOR_EACH( it, nodes )
{
@@ -133,11 +111,14 @@
if( best_node == NULL )
{
puts( "warning: no nodes in range" );
- return 0;
+ return false;
}
+
//else
- return atan2( best_node->pose.y - pose.y,
- best_node->pose.x - pose.x );
+ heading_result = atan2( best_node->pose.y - pose.y,
+
best_node->pose.x - pose.x );
+
+ return true;
}
};
@@ -221,6 +202,7 @@
ModelRanger* ranger;
ModelFiducial* fiducial;
Model *source, *sink;
+ Model* fuel_zone;
int avoidcount, randcount;
int work_get, work_put;
bool charger_ahoy;
@@ -229,6 +211,8 @@
double charger_heading;
nav_mode_t mode;
+ Model* goal;
+
Graph graph;
GraphVis graphvis;
Node* last_node;
@@ -243,13 +227,15 @@
public:
Robot( ModelPosition* pos,
Model* source,
- Model* sink )
+ Model* sink,
+ Model* fuel)
: pos(pos),
laser( (ModelLaser*)pos->GetUnusedModelOfType( "laser" )),
ranger( (ModelRanger*)pos->GetUnusedModelOfType( "ranger" )),
fiducial( (ModelFiducial*)pos->GetUnusedModelOfType( "fiducial"
)),
source(source),
sink(sink),
+ fuel_zone(fuel),
avoidcount(0),
randcount(0),
work_get(0),
@@ -259,6 +245,7 @@
charger_range(0),
charger_heading(0),
mode(MODE_WORK),
+ goal(source),
graph(),
graphvis( graph ),
last_node( NULL ),
@@ -283,7 +270,7 @@
laser->Subscribe();
fiducial->AddUpdateCallback( (stg_model_callback_t)FiducialUpdate,
this );
- fiducial->Subscribe();
+ //fiducial->Subscribe();
//pos->AddFlagIncrCallback( (stg_model_callback_t)FlagIncr, NULL );
//pos->AddFlagDecrCallback( (stg_model_callback_t)FlagDecr, NULL );
@@ -334,7 +321,7 @@
}
}
- Plan( source );
+ //( goal );
//puts("");
}
@@ -400,7 +387,9 @@
// }
// else
- if( charger_range > 0.5 )
+ // a_goal *= 2.0;
+
+ if( charger_range > 0.45 )
{
if( !ObstacleAvoid() )
{
@@ -423,7 +412,7 @@
}
else
{
- //printf( "docking but can't see a charger\n" );
+ printf( "%s docking but can't see a charger\n", pos->Token()
);
pos->Stop();
mode = MODE_WORK; // should get us back on track eventually
}
@@ -439,17 +428,21 @@
void UnDock()
{
- const stg_meters_t back_off_distance = 0.3;
- const stg_meters_t back_off_speed = -0.05;
+ const stg_meters_t back_off_distance = 0.6;
+ const stg_meters_t back_off_speed = -0.02;
// back up a bit
if( charger_range < back_off_distance )
pos->SetXSpeed( back_off_speed );
else
pos->SetXSpeed( 0.0 );
-
+
if( charger_range > back_off_distance )
- mode = MODE_WORK;
+ {
+ mode = MODE_WORK;
+ SetGoal( pos->GetFlagCount() ? sink : source );
+ fiducial->Unsubscribe();
+ }
}
bool ObstacleAvoid()
@@ -530,7 +523,16 @@
return false; // didn't have to avoid anything
}
-
+
+ void SetGoal( Model* goal )
+ {
+ if( goal != this->goal )
+ {
+ this->goal = goal;
+ Plan( goal );
+ }
+ }
+
void Work()
{
if( ! ObstacleAvoid() )
@@ -542,38 +544,47 @@
Pose pose = pos->GetPose();
- int x = (pose.x + 8) / 4;
- int y = (pose.y + 8) / 4;
-// // oh what an awful bug - 5 hours to track this down. When
using
-// // this controller in a world larger than 8*8 meters, a_goal
can
-// // sometimes be NAN. Causing trouble WAY upstream.
-// if( x > 3 ) x = 3;
-// if( y > 3 ) y = 3;
-// if( x < 0 ) x = 0;
-// if( y < 0 ) y = 0;
-
- //Model* goal = pos->GetFlagCount() ? sink : source;
- //Pose gp = goal->GetPose();
-
- //printf( "seeking %s\n", goal->Token() );
-
- double a_goal =
+ double a_goal = 0;
+
// 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 );
-
+
+ // Model* goal = fuel_zone;
+
+ if( Hungry() )
+ SetGoal( fuel_zone );
+
+ while( graph.GoodDirection( pose, 4.0, a_goal ) == 0 )
+ {
+ printf( "%s replanning from (%.2f,%.2f) to %s
at (%.2f,%.2f) in Work()\n",
+ pos->Token(),
+ pose.x, pose.y,
+ goal->Token(),
+ goal->GetPose().x,
+ goal->GetPose().y );
+ Plan( goal );
+ }
+
// if we are low on juice - find the direction to the
recharger instead
if( Hungry() )
{
+ fiducial->Subscribe();
+
//puts( "hungry - using refuel map" );
// use the refuel map
- a_goal = dtor( refuel[y][x] );
+ //a_goal = dtor( refuel[y][x] );
+ while( graph.GoodDirection( pose, 4.0, a_goal )
== 0 )
+ {
+ printf( "%s replanning in Work()\n",
pos->Token() );
+ }
+
+
if( charger_ahoy ) // I see a charger while
hungry!
mode = MODE_DOCK;
}
@@ -621,9 +632,9 @@
bool Hungry()
{
// XX
- return false;
+ //return false;
- // return( pos->FindPowerPack()->ProportionRemaining() < 0.25 );
+ return( pos->FindPowerPack()->ProportionRemaining() < 0.5 );
}
bool Full()
@@ -673,7 +684,7 @@
pos->PushFlag( robot->source->PopFlag() );
if( pos->GetFlagCount() == PAYLOAD )
- robot->Plan( robot->sink ); // we're done working
+ robot->SetGoal( robot->sink ); // we're done working
}
// if we're close to the sink we lose a flag
@@ -688,7 +699,7 @@
robot->sink->PushFlag( pos->PopFlag() );
if( pos->GetFlagCount() == 0 )
- robot->Plan( robot->source ); // we're done dropping
off
+ robot->SetGoal( robot->source ); // we're done
dropping off
}
@@ -701,32 +712,39 @@
static int FiducialUpdate( ModelFiducial* mod, Robot* robot )
{
- robot->charger_ahoy = false;
-
- std::vector<ModelFiducial::Fiducial>& fids =
mod->GetFiducials();
-
- for( unsigned int i = 0; i < fids.size(); i++ )
- {
+ robot->charger_ahoy = false;
+
+ std::vector<ModelFiducial::Fiducial>& fids = mod->GetFiducials();
+
+ ModelFiducial::Fiducial* closest = NULL;
+
+ for( unsigned int i = 0; i < fids.size(); i++ )
+ {
//printf( "fiducial %d is %d at %.2f m %.2f radians\n",
// i, f->id, f->range, f->bearing );
+
+ ModelFiducial::Fiducial* f = &fids[i];
+
+ // find the closest
+ if( f->id == 2 && ( closest == NULL || f->range <
closest->range )) // I see a charging station
+ closest = f;
+ }
+
+ if( closest )
+ { // record that I've seen it and where
it is
+ robot->charger_ahoy = true;
- if( fids[i].id == 2 ) // I see a charging station
- {
- // record that I've seen it and where
it is
- robot->charger_ahoy = true;
- robot->charger_bearing =
fids[i].bearing;
- robot->charger_range = fids[i].range;
- robot->charger_heading = fids[i].geom.a;
-
- //printf( "charger at %.2f radians\n",
robot->charger_bearing );
- break;
- }
- }
-
+ //printf( "AHOY %s\n", robot->pos->Token() );
+
+ robot->charger_bearing = closest->bearing;
+ robot->charger_range = closest->range;
+ robot->charger_heading = closest->geom.a;
+ }
+
return 0; // run again
}
-
+
static int FlagIncr( Model* mod, Robot* robot )
{
printf( "model %s collected flag\n", mod->Token() );
@@ -741,8 +759,8 @@
};
-unsigned int Robot::map_width( 50 );
-unsigned int Robot::map_height( 50 );
+unsigned int Robot::map_width( 60 );
+unsigned int Robot::map_height( 60 );
uint8_t* Robot::map_data( NULL );
Model* Robot::map_model( NULL );
@@ -780,7 +798,8 @@
new Robot( (ModelPosition*)mod,
mod->GetWorld()->GetModel( words[1] +
"_source" ),
- mod->GetWorld()->GetModel( words[1] + "_sink"
));
+ mod->GetWorld()->GetModel( words[1] + "_sink"
),
+ mod->GetWorld()->GetModel( "fuel_zone" ) );
return 0; //ok
}
Modified: code/stage/trunk/libstage/model_fiducial.cc
===================================================================
--- code/stage/trunk/libstage/model_fiducial.cc 2010-02-19 21:28:18 UTC (rev
8558)
+++ code/stage/trunk/libstage/model_fiducial.cc 2010-02-20 01:20:25 UTC (rev
8559)
@@ -11,7 +11,7 @@
//
///////////////////////////////////////////////////////////////////////////
-//#define DEBUG 1
+#define DEBUG 0
#include "stage.hh"
#include "option.hh"
@@ -156,7 +156,7 @@
if( IsRelated( him ) )
return;
- PRINT_DEBUG1( " %s is a candidate. doing ray trace", him->Token());
+ //PRINT_DEBUG1( " %s is a candidate. doing ray trace", him->Token());
//printf( "bearing %.2f\n", RTOD(bearing) );
@@ -168,7 +168,7 @@
true ) );
Model* hitmod( ray.mod );
-
+
//printf( "ray hit %s and was seeking LOS to %s\n",
// hitmod ? hitmod->Token() : "null",
// him->Token() );
@@ -199,8 +199,8 @@
// we see value 0
fid.id = range < max_range_id ? hitmod->vis.fiducial_return : 0;
- PRINT_DEBUG2( "adding %s's value %d to my list of fiducials",
- him->Token(),
him->vis.fiducial_return );
+ //PRINT_DEBUG2( "adding %s's value %d to my list of fiducials",
+ // him->Token(), him->vis.fiducial_return );
fiducials.push_back( fid );
}
@@ -210,7 +210,7 @@
//
void ModelFiducial::Update( void )
{
- PRINT_DEBUG( "fiducial update" );
+ //PRINT_DEBUG( "fiducial update" );
if( subs < 1 )
return;
Modified: code/stage/trunk/worlds/fasr2.world
===================================================================
--- code/stage/trunk/worlds/fasr2.world 2010-02-19 21:28:18 UTC (rev 8558)
+++ code/stage/trunk/worlds/fasr2.world 2010-02-20 01:20:25 UTC (rev 8559)
@@ -14,18 +14,18 @@
quit_time 3600 # 1 hour of simulated time
#quit_time 1800 # hour of simulated time
-resolution 0.05
+resolution 0.02
threads 0
# configure the GUI window
window
(
- size [ 980.000 1016.000 ]
+ size [ 758.000 809.000 ]
- center [ -0.203 -1.107 ]
+ center [ -42.865 -43.165 ]
rotate [ 0 0 ]
- scale 9.251
+ scale 51.926
show_data 1
show_flags 1
@@ -81,7 +81,7 @@
)
zone( color "yellow"
- pose [ -37.146 -39.531 0 0 ]
+ pose [ 0.464 -43.755 0 0 ]
name "yellow_source"
ctrl "source"
)
@@ -105,7 +105,7 @@
)
zone( color "magenta"
- pose [ -14.246 -42.150 0 0 ]
+ pose [ -19.859 -42.092 0 0 ]
name "magenta_source"
ctrl "source"
)
@@ -131,44 +131,133 @@
size [ 0.100 0.300 0.100 ]
color "purple"
+ laser_return 0
+ obstacle_return 0
+
# 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 ] )
+ #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 ]
+ size [ 0.050 0.150 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
+
+ laser_return 0
+ obstacle_return 0
)
)
-#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 ] )
+charge_station( pose [ -43.500 -49.000 0 90.000 ] )
+charge_station( pose [ -37.500 -49.000 0 90.000 ] )
+charge_station( pose [ -39.500 -49.000 0 90.000 ] )
+charge_station( pose [ -41.500 -49.000 0 90.000 ] )
+charge_station( pose [ -38.500 -49.000 0 90.000 ] )
+charge_station( pose [ -40.500 -49.000 0 90.000 ] )
+charge_station( pose [ -42.500 -49.000 0 90.000 ] )
+charge_station( pose [ -47.500 -49.000 0 90.000 ] )
+charge_station( pose [ -46.500 -49.000 0 90.000 ] )
+charge_station( pose [ -44.500 -49.000 0 90.000 ] )
+charge_station( pose [ -45.500 -49.000 0 90.000 ] )
+charge_station( pose [ -37.000 -49.000 0 90.000 ] )
+charge_station( pose [ -38.000 -49.000 0 90.000 ] )
+charge_station( pose [ -39.000 -49.000 0 90.000 ] )
+charge_station( pose [ -41.000 -49.000 0 90.000 ] )
+charge_station( pose [ -40.000 -49.000 0 90.000 ] )
+charge_station( pose [ -42.000 -49.000 0 90.000 ] )
+charge_station( pose [ -43.000 -49.000 0 90.000 ] )
+charge_station( pose [ -44.000 -49.006 0 90.000 ] )
+charge_station( pose [ -45.000 -49.000 0 90.000 ] )
+charge_station( pose [ -46.000 -49.007 0 90.000 ] )
+charge_station( pose [ -47.000 -49.000 0 90.000 ] )
+
+charge_station( pose [ -49.000 -47.500 0 0 ] )
+charge_station( pose [ -49.000 -46.500 0 0 ] )
+charge_station( pose [ -49.000 -45.500 0 0 ] )
+charge_station( pose [ -49.000 -44.500 0 0 ] )
+charge_station( pose [ -49.000 -43.500 0 0 ] )
+charge_station( pose [ -49.000 -42.500 0 0 ] )
+charge_station( pose [ -49.000 -41.500 0 0 ] )
+charge_station( pose [ -49.000 -40.500 0 0 ] )
+charge_station( pose [ -49.000 -39.500 0 0 ] )
+charge_station( pose [ -49.000 -38.500 0 0 ] )
+charge_station( pose [ -49.000 -37.500 0 0 ] )
+charge_station( pose [ -49.000 -36.500 0 0 ] )
+
+#charge_station( pose [ -49.000 -36.00 0 0 ] )
+#charge_station( pose [ -49.000 -36.50 0 0 ] )
+charge_station( pose [ -49.000 -37.000 0 0 ] )
+charge_station( pose [ -49.000 -37.500 0 0 ] )
+charge_station( pose [ -49.000 -38.000 0 0 ] )
+charge_station( pose [ -49.000 -38.500 0 0 ] )
+charge_station( pose [ -49.000 -39.000 0 0 ] )
+charge_station( pose [ -49.000 -39.500 0 0 ] )
+charge_station( pose [ -49.000 -40.000 0 0 ] )
+charge_station( pose [ -49.000 -40.500 0 0 ] )
+charge_station( pose [ -49.000 -41.000 0 0 ] )
+charge_station( pose [ -49.000 -41.500 0 0 ] )
+charge_station( pose [ -49.000 -42.000 0 0 ] )
+charge_station( pose [ -49.000 -42.500 0 0 ] )
+charge_station( pose [ -49.000 -43.000 0 0 ] )
+charge_station( pose [ -49.000 -43.500 0 0 ] )
+charge_station( pose [ -49.000 -44.000 0 0 ] )
+charge_station( pose [ -49.000 -44.500 0 0 ] )
+charge_station( pose [ -49.000 -45.000 0 0 ] )
+charge_station( pose [ -49.000 -45.500 0 0 ] )
+charge_station( pose [ -49.000 -46.000 0 0 ] )
+charge_station( pose [ -49.000 -46.500 0 0 ] )
+charge_station( pose [ -49.000 -47.000 0 0 ] )
+charge_station( pose [ -49.000 -47.500 0 0 ] )
+
+
+zone( color "orange"
+ pose [ -43.000 -43.000 0 0 ]
+ name "fuel_zone"
+ size [ 14.000 14.000 0.010 ]
+ gui_move 0
+)
+
+define buffer model
+(
+ color "orange"
+ size [ 0.900 13.000 1.000 ]
+)
+
+buffer( pose [ -49.500 -42.500 0 0 ] )
+buffer( pose [ -42.595 -49.527 0 90.000 ] )
+
+define blinker model
+(
+ color "orange"
+ size [ 0.100 0.700 0.600 ]
+)
+
+#blinker( pose [ -36.066 -48.834 0 0 ] )
+#blinker( pose [ -36.990 -48.838 0 0 ] )
+#blinker( pose [ -38.063 -48.836 0 0 ] )
+#blinker( pose [ -39.020 -48.831 0 0 ] )
+#blinker( pose [ -40.012 -48.823 0 0 ] )
+#blinker( pose [ -41.035 -48.812 0 0 ] )
+#blinker( pose [ -42.047 -48.775 0 0 ] )
+#blinker( pose [ -43.026 -48.834 0 0 ] )
+
define autorob pioneer2dx
(
- sicklaser( samples 32 range_max 4 laser_return 2 watts 30 )
+ sicklaser( samples 32 range_max 4 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 ] ) )
+ charging_bump( obstacle_return 0 fiducial( range_max_id 9 range_max 9 fov 180
pose [ 0 0 -0.050 0 ] ) )
# small speed optimization
# trail_length 0
@@ -185,202 +274,201 @@
#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 [-11.388 12.267 0 166.581] joules 200000 )
+redbot( pose [-12.867 11.964 0 135.003] joules 200000 )
+redbot( pose [-12.289 10.814 0 147.497] joules 200000 )
+redbot( pose [-10.642 11.563 0 123.708] joules 200000 )
+redbot( pose [-11.378 11.274 0 143.281] joules 200000 )
+redbot( pose [-10.200 11.012 0 46.529] joules 200000 )
+redbot( pose [-12.921 13.355 0 168.778] joules 200000 )
+redbot( pose [-11.953 13.260 0 163.730] joules 200000 )
+redbot( pose [-13.740 12.740 0 157.546] joules 200000 )
+redbot( pose [-14.708 12.643 0 138.616] joules 200000 )
-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 [-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 )
+#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 [-13.004 6.811 0 166.511] joules 200000 )
+bluebot( pose [-13.235 8.255 0 175.835] joules 200000 )
+bluebot( pose [-12.180 6.527 0 -132.938] joules 200000 )
+bluebot( pose [-9.958 7.989 0 171.172] joules 200000 )
+bluebot( pose [-12.369 9.016 0 170.270] joules 200000 )
+bluebot( pose [-10.799 7.509 0 -157.026] joules 200000 )
+bluebot( pose [-11.453 8.651 0 -120.696] joules 200000 )
+bluebot( pose [-13.876 8.850 0 -177.508] joules 200000 )
+bluebot( pose [-11.314 5.949 0 -139.502] joules 200000 )
+bluebot( pose [-10.242 8.631 0 160.986] joules 200000 )
-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 [-9.930 7.369 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 [-9.930 7.369 0 174.453] joules 200000 )
+#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 )
-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 )
+cyanbot( pose [-1.975 18.008 0 67.057] joules 400000 )
+cyanbot( pose [-0.577 17.752 0 28.480] joules 400000 )
+cyanbot( pose [0.185 18.933 0 64.025] joules 400000 )
+cyanbot( pose [-4.470 20.502 0 5.703] joules 400000 )
+cyanbot( pose [-3.229 21.138 0 5.731] joules 400000 )
+cyanbot( pose [0.290 17.823 0 24.200] joules 400000 )
+cyanbot( pose [-1.945 19.158 0 54.480] joules 400000 )
+cyanbot( pose [-3.733 17.894 0 54.588] joules 400000 )
+cyanbot( pose [-3.232 17.616 0 52.768] joules 400000 )
+cyanbot( pose [-2.570 20.624 0 20.367] joules 400000 )
-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 )
+#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 [-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 )
-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 [-36.744 -47.036 0 117.485] joules 100000 )
+greenbot( pose [-37.050 -48.323 0 -85.614] joules 100000 )
+greenbot( pose [-8.902 2.142 0 -65.139] joules 200000 )
+greenbot( pose [-9.615 2.398 0 -73.426] joules 200000 )
+greenbot( pose [-8.619 0.004 0 -93.488] joules 200000 )
+greenbot( pose [-9.230 1.231 0 -99.719] joules 200000 )
+greenbot( pose [-10.258 1.202 0 27.802] joules 200000 )
+greenbot( pose [-8.513 0.851 0 -96.070] joules 200000 )
+greenbot( pose [-10.890 1.197 0 160.446] joules 200000 )
+greenbot( pose [-10.591 1.693 0 46.259] joules 200000 )
-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 [-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 )
-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.567 5.300 0 -113.433] joules 200000 )
+yellowbot( pose [-13.218 5.200 0 -105.066] joules 200000 )
+yellowbot( pose [-15.890 6.463 0 -113.959] joules 200000 )
+yellowbot( pose [-15.829 3.428 0 -100.843] joules 200000 )
+yellowbot( pose [-13.943 3.757 0 -116.077] joules 200000 )
+yellowbot( pose [-13.589 6.170 0 -108.098] joules 200000 )
+yellowbot( pose [-15.665 7.690 0 35.677] joules 200000 )
+yellowbot( pose [-15.183 6.829 0 -100.002] joules 200000 )
+yellowbot( pose [-13.444 3.480 0 -97.678] joules 200000 )
+yellowbot( pose [-16.445 7.660 0 68.821] 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.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 [-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 )
-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 [-8.171 13.723 0 -139.469] joules 300000 )
+magentabot( pose [-8.887 12.177 0 -88.070] joules 300000 )
+magentabot( pose [-8.568 11.307 0 -94.395] joules 300000 )
+magentabot( pose [-7.698 14.624 0 -167.188] joules 300000 )
+magentabot( pose [-7.482 13.834 0 -94.067] joules 300000 )
+magentabot( pose [-8.009 13.153 0 -163.083] joules 300000 )
+magentabot( pose [-7.300 12.823 0 -137.774] joules 300000 )
+magentabot( pose [-8.410 14.496 0 -136.374] joules 300000 )
+magentabot( pose [-6.752 14.083 0 -101.104] joules 300000 )
+magentabot( pose [-8.752 15.271 0 -131.336] joules 300000 )
-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.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 )
-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 )
-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit