Revision: 8527
http://playerstage.svn.sourceforge.net/playerstage/?rev=8527&view=rev
Author: rtv
Date: 2010-01-25 22:33:23 +0000 (Mon, 25 Jan 2010)
Log Message:
-----------
tracking websim changes
Modified Paths:
--------------
code/stage/trunk/CMakeLists.txt
code/stage/trunk/examples/ctrl/sink.cc
code/stage/trunk/examples/ctrl/source.cc
code/stage/trunk/libstage/model.cc
code/stage/trunk/libstage/stage.hh
code/stage/trunk/libstage/world.cc
code/stage/trunk/libstage/worldgui.cc
code/stage/trunk/webstage/CMakeLists.txt
code/stage/trunk/webstage/webstage.cc
code/stage/trunk/worlds/fasr.world
Modified: code/stage/trunk/CMakeLists.txt
===================================================================
--- code/stage/trunk/CMakeLists.txt 2010-01-24 14:27:08 UTC (rev 8526)
+++ code/stage/trunk/CMakeLists.txt 2010-01-25 22:33:23 UTC (rev 8527)
@@ -165,14 +165,6 @@
MESSAGE( ${INDENT} "Player not detected. If Player is installed but not
detected, check your PKG_CONFIG_PATH." )
ENDIF( PLAYER_FOUND )
-pkg_search_module( WEBSIM websim )
-IF( WEBSIM_FOUND )
- MESSAGE( STATUS ${INDENT} "WebSim version ${WEBSIM_VERSION} detected at
${WEBSIM_PREFIX}" )
-# MESSAGE( STATUS " WEBSIM_CFLAGS = ${WEBSIM_CFLAGS}" )
-# MESSAGE( STATUS " WEBSIM_LDFLAGS = ${WEBSIM_LDFLAGS}" )
-ELSE( WEBSIM_FOUND )
- MESSAGE( ${INDENT} "WebSim not detected." )
-ENDIF( WEBSIM_FOUND )
## this should not be necessary now that we do the FLTK config
## carefully above. I'll leave the code here in case of trouble
@@ -196,14 +188,12 @@
replace
${LIBPNG_INCLUDE_DIRS}
${CMAKE_INCLUDE_PATH}
- ${WEBSIM_INCLUDE_DIRS}
)
# all targets need these library directories
link_directories(
${LIBPNG_LIBRARY_DIRS}
- ${WEBSIM_LIBRARY_DIRS}
)
# work through these subdirs
@@ -211,11 +201,8 @@
ADD_SUBDIRECTORY(examples)
ADD_SUBDIRECTORY(assets)
ADD_SUBDIRECTORY(worlds)
+ADD_SUBDIRECTORY(webstage)
-# if( WEBSIM_FOUND )
-# ADD_SUBDIRECTORY(webstage)
-# endif( WEBSIM_FOUND )
-
IF ( BUILD_PLAYER_PLUGIN AND PLAYER_FOUND )
ADD_SUBDIRECTORY(libstageplugin)
ENDIF ( BUILD_PLAYER_PLUGIN AND PLAYER_FOUND )
Modified: code/stage/trunk/examples/ctrl/sink.cc
===================================================================
--- code/stage/trunk/examples/ctrl/sink.cc 2010-01-24 14:27:08 UTC (rev
8526)
+++ code/stage/trunk/examples/ctrl/sink.cc 2010-01-25 22:33:23 UTC (rev
8527)
@@ -1,7 +1,7 @@
#include "stage.hh"
using namespace Stg;
-const int INTERVAL = 50;
+const int INTERVAL = 20;
int Update( Model* mod, void* dummy );
Modified: code/stage/trunk/examples/ctrl/source.cc
===================================================================
--- code/stage/trunk/examples/ctrl/source.cc 2010-01-24 14:27:08 UTC (rev
8526)
+++ code/stage/trunk/examples/ctrl/source.cc 2010-01-25 22:33:23 UTC (rev
8527)
@@ -1,7 +1,7 @@
#include "stage.hh"
using namespace Stg;
-const int INTERVAL = 200;
+const int INTERVAL = 100;
const double FLAGSZ = 0.4;
int Update( Model* mod, void* dummy );
Modified: code/stage/trunk/libstage/model.cc
===================================================================
--- code/stage/trunk/libstage/model.cc 2010-01-24 14:27:08 UTC (rev 8526)
+++ code/stage/trunk/libstage/model.cc 2010-01-25 22:33:23 UTC (rev 8527)
@@ -228,7 +228,7 @@
laser_return( LaserVisible ),
obstacle_return( true ),
ranger_return( true )
-{ /* nothing do do */ }
+{ /* nothing to do */ }
//static const members
static const double DEFAULT_FRICTION = 0.0;
@@ -261,8 +261,8 @@
// constructor
Model::Model( World* world,
- Model* parent,
- const std::string& type ) :
+ Model* parent,
+ const std::string& type
) :
Ancestor(),
alwayson(false),
blockgroup(),
@@ -271,43 +271,43 @@
color( 1,0,0 ), // red
data_fresh(false),
disabled(false),
- cv_list(),
- flag_list(),
- geom(),
- has_default_block( true ),
- id( Model::count++ ),
- interval((stg_usec_t)1e5), // 100msec
- interval_energy((stg_usec_t)1e5), // 100msec
- interval_pose((stg_usec_t)1e5), // 100msec
- last_update(0),
- log_state(false),
- map_resolution(0.1),
- mass(0),
- parent(parent),
- pose(),
- power_pack( NULL ),
- pps_charging(),
- rastervis(),
- rebuild_displaylist(true),
- say_string(),
- stack_children( true ),
- stall(false),
+ cv_list(),
+ flag_list(),
+ geom(),
+ has_default_block( true ),
+ id( Model::count++ ),
+ interval((stg_usec_t)1e5), // 100msec
+ interval_energy((stg_usec_t)1e5), // 100msec
+ interval_pose((stg_usec_t)1e5), // 100msec
+ last_update(0),
+ log_state(false),
+ map_resolution(0.1),
+ mass(0),
+ parent(parent),
+ pose(),
+ power_pack( NULL ),
+ pps_charging(),
+ rastervis(),
+ rebuild_displaylist(true),
+ say_string(),
+ stack_children( true ),
+ stall(false),
subs(0),
thread_safe( false ),
trail(trail_length),
trail_index(0),
type(type),
- event_queue_num( 0 ),
- used(false),
+ event_queue_num( 0 ),
+ used(false),
velocity(),
velocity_enable( false ),
watts(0.0),
- watts_give(0.0),
- watts_take(0.0),
- wf(NULL),
- wf_entity(0),
- world(world),
- world_gui( dynamic_cast<WorldGui*>( world ) )
+ watts_give(0.0),
+ watts_take(0.0),
+ wf(NULL),
+ wf_entity(0),
+ world(world),
+ world_gui( dynamic_cast<WorldGui*>( world ) )
{
//assert( modelsbyid );
assert( world );
@@ -952,6 +952,11 @@
world->NeedRedraw();
}
+void Model::Redraw( void )
+{
+ world->Redraw();
+}
+
Model* Model::GetUnusedModelOfType( const std::string& type )
{
//printf( "searching for type %d in model %s type %d\n", type, token,
this->type );
Modified: code/stage/trunk/libstage/stage.hh
===================================================================
--- code/stage/trunk/libstage/stage.hh 2010-01-24 14:27:08 UTC (rev 8526)
+++ code/stage/trunk/libstage/stage.hh 2010-01-25 22:33:23 UTC (rev 8527)
@@ -799,6 +799,7 @@
avoids searching the whole world for fiducials. */
ModelPtrVec models_with_fiducials;
+
/** Add a model to the set of models with non-zero fiducials, if not
already there. */
void FiducialInsert( Model* mod )
{
@@ -855,8 +856,13 @@
virtual void Stop(){ paused = true; };
virtual void TogglePause(){ paused ? Start() : Stop(); };
- bool Paused(){ return( paused ); };
-
+ bool Paused(){ return( paused ); };
+
+ /** Force the GUI to redraw the world, even if paused. This
+ imlementation does nothing, but can be
overridden by
+ subclasses. */
+ virtual void Redraw( void ){ }; // does nothing
+
PointIntVec rt_cells;
PointIntVec rt_candidate_cells;
@@ -1424,7 +1430,10 @@
WorldGui(int W,int H,const char*L=0);
~WorldGui();
-
+
+ /** Forces the window to be redrawn, even if paused.*/
+ virtual void Redraw( void );
+
virtual std::string ClockString() const;
virtual bool Update();
virtual void Load( const char* filename );
@@ -2087,7 +2096,10 @@
/** Sets the redraw flag, so this model will be redrawn at the
earliest opportunity */
void NeedRedraw();
-
+
+ /** Force the GUI (if any) to redraw this model */
+ void Redraw();
+
/** Add a block to this model by loading it from a worldfile
entity */
void LoadBlock( Worldfile* wf, int entity );
Modified: code/stage/trunk/libstage/world.cc
===================================================================
--- code/stage/trunk/libstage/world.cc 2010-01-24 14:27:08 UTC (rev 8526)
+++ code/stage/trunk/libstage/world.cc 2010-01-25 22:33:23 UTC (rev 8527)
@@ -155,6 +155,7 @@
ground = new Model(this, NULL, "model");
assert(ground);
ground->SetToken( "_ground_model" ); // allow users to identify this unique
model
+ AddModelName( ground, ground->Token() ); // add this name to the
world's table
ground->ClearBlocks();
ground->SetGuiMove(false);
}
Modified: code/stage/trunk/libstage/worldgui.cc
===================================================================
--- code/stage/trunk/libstage/worldgui.cc 2010-01-24 14:27:08 UTC (rev
8526)
+++ code/stage/trunk/libstage/worldgui.cc 2010-01-25 22:33:23 UTC (rev
8527)
@@ -560,6 +560,12 @@
wg->SetTimeouts();
}
+void WorldGui::Redraw()
+{
+ puts( "redrawing\n" );
+ canvas->redraw();
+}
+
void WorldGui::Start()
{
World::Start();
Modified: code/stage/trunk/webstage/CMakeLists.txt
===================================================================
--- code/stage/trunk/webstage/CMakeLists.txt 2010-01-24 14:27:08 UTC (rev
8526)
+++ code/stage/trunk/webstage/CMakeLists.txt 2010-01-25 22:33:23 UTC (rev
8527)
@@ -1,10 +1,24 @@
-MESSAGE( STATUS "Configuring webstage" )
+MESSAGE( STATUS "Looking for WebSim" )
-add_executable( webstage webstage.cc )
+pkg_search_module( WEBSIM websim )
+IF( WEBSIM_FOUND )
+ MESSAGE( STATUS ${INDENT} "WebSim version ${WEBSIM_VERSION} detected at
${WEBSIM_PREFIX}" )
+ MESSAGE( STATUS " WEBSIM_CFLAGS = ${WEBSIM_CFLAGS}" )
+ MESSAGE( STATUS " WEBSIM_LDFLAGS = ${WEBSIM_LDFLAGS}" )
+ MESSAGE( STATUS " WEBSIM_INCLUDE_DIRS = ${WEBSIM_INCLUDE_DIRS}" )
+ MESSAGE( STATUS " WEBSIM_LIBRARY_DIRS = ${WEBSIM_LIBRARY_DIRS}" )
+ MESSAGE( STATUS "Configuring webstage" )
+ include_directories( ${WEBSIM_INCLUDE_DIRS} )
+ link_directories( ${WEBSIM_LIBRARY_DIRS} )
+ add_executable( webstage webstage.cc )
+ target_link_libraries( webstage stage event ${WEBSIM_LIBRARIES} )
-target_link_libraries( webstage ${WEBSIM_LIBRARIES} event stage )
+ INSTALL(TARGETS webstage RUNTIME DESTINATION bin )
-INSTALL(TARGETS webstage
- RUNTIME DESTINATION bin
-)
+ELSE( WEBSIM_FOUND )
+ MESSAGE( ${INDENT} "WebSim not detected." )
+ENDIF( WEBSIM_FOUND )
+
+
+
Modified: code/stage/trunk/webstage/webstage.cc
===================================================================
--- code/stage/trunk/webstage/webstage.cc 2010-01-24 14:27:08 UTC (rev
8526)
+++ code/stage/trunk/webstage/webstage.cc 2010-01-25 22:33:23 UTC (rev
8527)
@@ -72,67 +72,67 @@
}
- void Push( const std::string& name )
- {
- Stg::Model* mod = world->GetModel( name.c_str() );
+ // void Push( const std::string& name )
+ // {
+ // Stg::Model* mod = world->GetModel( name.c_str() );
- if( mod )
- {
- websim::Pose p;
- websim::Velocity v;
- websim::Acceleration a;
+ // if( mod )
+ // {
+ // websim::Pose p;
+ // websim::Velocity v;
+ // websim::Acceleration a;
- Stg::Pose sp = mod->GetPose();
- p.x = sp.x;
- p.y = sp.y;
- p.z = sp.z;
- p.a = sp.a;
+ // Stg::Pose sp = mod->GetPose();
+ // p.x = sp.x;
+ // p.y = sp.y;
+ // p.z = sp.z;
+ // p.a = sp.a;
- Stg::Velocity sv = mod->GetVelocity();
- v.x = sv.x;
- v.y = sv.y;
- v.z = sv.z;
- v.a = sv.a;
+ // Stg::Velocity sv = mod->GetVelocity();
+ // v.x = sv.x;
+ // v.y = sv.y;
+ // v.z = sv.z;
+ // v.a = sv.a;
- SetPuppetPVA( name, p, v, a );
- }
- else
- printf( "Warning: attempt to push PVA for unrecognized model
\"%s\"\n",
- name.c_str() );
- }
+ // SetPuppetPVA( name, p, v, a );
+ // }
+ // else
+ // printf( "Warning: attempt to push PVA for unrecognized model
\"%s\"\n",
+ // name.c_str() );
+ // }
- void Push()
- {
- for( std::map<std::string,Puppet*>::iterator it = puppets.begin();
- it != puppets.end();
- it++ )
- {
- Puppet* pup = it->second;
- assert(pup);
+ // void Push()
+ // {
+ // for( std::map<std::string,Puppet*>::iterator it = puppets.begin();
+ // it != puppets.end();
+ // it++ )
+ // {
+ // Puppet* pup = it->second;
+ // assert(pup);
- Stg::Model* mod = world->GetModel( pup->name.c_str() );
- assert(mod);
+ // Stg::Model* mod = world->GetModel( pup->name.c_str() );
+ // assert(mod);
- websim::Pose p;
- websim::Velocity v;
- websim::Acceleration a;
+ // websim::Pose p;
+ // websim::Velocity v;
+ // websim::Acceleration a;
- Stg::Pose sp = mod->GetPose();
- p.x = sp.x;
- p.y = sp.y;
- p.z = sp.z;
- p.a = sp.a;
+ // Stg::Pose sp = mod->GetPose();
+ // p.x = sp.x;
+ // p.y = sp.y;
+ // p.z = sp.z;
+ // p.a = sp.a;
- Stg::Velocity sv = mod->GetVelocity();
- v.x = sv.x;
- v.y = sv.y;
- v.z = sv.z;
- v.a = sv.a;
+ // Stg::Velocity sv = mod->GetVelocity();
+ // v.x = sv.x;
+ // v.y = sv.y;
+ // v.z = sv.z;
+ // v.a = sv.a;
- pup->Push( p,v,a );
- printf( "pushing puppet %s\n", pup->name.c_str() );
- }
- }
+ // pup->Push( p,v,a );
+ // printf( "pushing puppet %s\n", pup->name.c_str() );
+ // }
+ // }
virtual bool GetModelChildren(const std::string& model,
std::vector<std::string>& children)
@@ -190,6 +190,16 @@
printf( "delete model name:%s \n", name.c_str() );
return true;
}
+
+ const websim::PVA ModToPVA( Model* mod )
+ {
+ // construct a PVA from Stage's values
+ Stg::Pose sp = mod->GetPose();
+ Stg::Velocity sv = mod->GetVelocity();
+ return( websim::PVA( websim::Pose( sp.x, sp.y, sp.z, 0.0, 0.0,
sp.a ),
+
websim::Velocity( sv.x, sv.y, sv.z, 0.0, 0.0, sv.a ),
+
websim::Acceleration() ));
+ }
virtual bool GetModelData(const std::string& name,
@@ -198,35 +208,18 @@
void*
xmlparent) {
std::string str;
websim::Time t = GetTime();
-
+
Model*mod = world->GetModel( name.c_str() );
if(mod){
- std::string type = mod->GetModelType();
- if(type == "position") {
-
- websim::Pose p;
- websim::Velocity v;
- websim::Acceleration a;
-
- Stg::Pose sp = mod->GetPose();
- p.x = sp.x;
- p.y = sp.y;
- p.z = sp.z;
- p.a = sp.a;
-
- Stg::Velocity sv = mod->GetVelocity();
- v.x = sv.x;
- v.y = sv.y;
- v.z = sv.z;
- v.a = sv.a;
-
- WebSim::GetPVA(name, t, p, v, a, format, response, xmlparent);
-
-
-
- }else if(type == "laser"){
-
- uint32_t resolution;
+ std::string type = mod->GetModelType();
+ if(type == "position")
+ {
+ response = WebSim::FormatPVA( name, t,
ModToPVA(mod), format );
+ return true;
+ }
+ else if(type == "laser")
+ {
+ uint32_t resolution;
double fov;
websim::Pose p;
std::vector<double> ranges;
@@ -318,59 +311,68 @@
return true;
}
-
virtual bool SetModelPVA(const std::string& name,
- const
websim::Pose& p,
- const
websim::Velocity& v,
- const
websim::Acceleration& a,
-
std::string& error)
+
const websim::PVA& pva,
+
std::string& response )
{
//printf( "set model PVA name:%s\n", name.c_str() );
Model* mod = world->GetModel( name.c_str() );
if( mod )
- {
- mod->SetPose( Stg::Pose( p.x, p.y, p.z, p.a ));
- mod->SetVelocity( Stg::Velocity( v.x, v.y, v.z, v.a ));
- // stage doesn't model acceleration
- }
- else
- printf( "Warning: attempt to set PVA for unrecognized model
\"%s\"\n",
- name.c_str() );
+ {
+ mod->SetPose( Stg::Pose( pva.p.x, pva.p.y, pva.p.z,
pva.p.a ));
+ mod->SetVelocity( Stg::Velocity( pva.v.x, pva.v.y,
pva.v.z, pva.v.a ));
+ // stage doesn't model acceleration
- return true;
- }
+ // force GUI update to see the change if Stage was
paused
+ mod->Redraw();
+ response = "OK";
+ return true;
+ }
+ //else
+
+ printf( "Warning: attempt to set PVA for unrecognized model \"%s\"\n",
+ name.c_str() );
+ response = "unknown model " + name;
+ return false;
+ }
+
virtual bool GetModelPVA(const std::string& name,
-
websim::Time& t,
-
websim::Pose& p,
-
websim::Velocity& v,
-
websim::Acceleration& a,
-
std::string& error)
+
websim::Time& t,
+
websim::PVA& pva,
+
std::string& error )
{
//printf( "get model name:%s\n", name.c_str() );
t = GetTime();
-
+
Model* mod = world->GetModel( name.c_str() );
- if( mod )
- {
- Stg::Pose sp = mod->GetPose();
- p.x = sp.x;
- p.y = sp.y;
- p.z = sp.z;
- p.a = sp.a;
- Stg::Velocity sv = mod->GetVelocity();
- v.x = sv.x;
- v.y = sv.y;
- v.z = sv.z;
- v.a = sv.a;
- }
- else
- printf( "Warning: attempt to set PVA for unrecognized model
\"%s\"\n",
- name.c_str() );
+ if( !mod )
+ {
+ error = "attempt to set PVA for unrecognized model '"
+ name + "'";
+ puts( error.c_str() );
+ return false;
+ }
+ // else model is good
+
+ // zero all fields
+ pva.Zero();
+
+ Stg::Pose sp = mod->GetPose();
+ pva.p.x = sp.x;
+ pva.p.y = sp.y;
+ pva.p.z = sp.z;
+ pva.p.a = sp.a;
+
+ Stg::Velocity sv = mod->GetVelocity();
+ pva.v.x = sv.x;
+ pva.v.y = sv.y;
+ pva.v.z = sv.z;
+ pva.v.a = sv.a;
+
return true;
}
/*
@@ -469,44 +471,37 @@
}*/
virtual bool GetModelGeometry(const std::string& name,
-
double& x,
-
double& y,
-
double& z,
-
websim::Pose& center,
-
std::string& response)
+
websim::Time& t,
+
websim::Geometry& geom,
+
std::string& error )
{
- if(name == "sim"){
-
- stg_bounds3d_t ext = world->GetExtent();
-
- x = ext.x.max - ext.x.min;
- y = ext.y.max - ext.y.min;
- z = ext.z.max - ext.z.min;
-
- }
- else
- {
- Model* mod = world->GetModel(name.c_str());
- if(mod){
- Geom ext = mod->GetGeom();
-
- x = ext.size.x;
- y = ext.size.y;
- z = ext.size.z;
- center.x = ext.pose.x;
- center.y = ext.pose.y;
- center.a = ext.pose.a;
- }
- else
- {
- printf("Warning: attemp to get the extent of
unrecognized model \"%s\"\n", name.c_str());
+ if(name == "sim")
+ {
+ stg_bounds3d_t ext = world->GetExtent();
+ geom.extent.x = ext.x.max - ext.x.min;
+ geom.extent.y = ext.y.max - ext.y.min;
+ geom.extent.z = ext.z.max - ext.z.min;
+ return true;
+ }
+
+ Model* mod = world->GetModel(name.c_str());
+ if( !mod )
+ {
+ error = "Error: attempt to get the geometry of
unrecognized model \"" + name + "\"";
+ puts( error.c_str() );
return false;
- }
- }
-
- return true;
+ }
+
+ Geom ext = mod->GetGeom();
+ geom.extent.x = ext.size.x;
+ geom.extent.y = ext.size.y;
+ geom.extent.z = ext.size.z;
+ geom.pose.x = ext.pose.x;
+ geom.pose.y = ext.pose.y;
+ geom.pose.a = ext.pose.a;
+ return true;
}
-
+
static int CountRobots(Model * mod, int* n ){
if(n && mod->GetModelType() == "position")
@@ -567,19 +562,12 @@
return t;
}
- // add an FLTK event loop update to WebSim's implementation
- virtual void Wait()
- {
- do
- {
- printf( " event loop in wait (%d %d %d)\r",
- unacknowledged_ticks,
unacknowledged_pushes, ticks_remaining );
-
- event_loop( EVLOOP_NONBLOCK );
- Fl::check();
- }
- while( unacknowledged_ticks || unacknowledged_pushes ||
ticks_remaining );
- }
+ // add an FLTK event loop update to WebSim's implementation
+ virtual void Wait()
+ {
+ Check(); // nonblocking check for server events
+ Fl::check(); // nonblocking check for GUI events
+ }
}; // close WebStage class
@@ -644,27 +632,25 @@
WebStage ws( world, host, port );
- if( usefedfile )
- ws.LoadFederationFile( fedfilename );
+ //if( usefedfile )
+ // ws.LoadFederationFile( fedfilename );
ws.Startup( true ); // start http server
if( ! world->paused )
world->Start(); // start sumulation running
- puts( "entering main loop" );
-
//close program once time has completed
bool quit = false;
while( ! quit )
{
// todo? check for changes?
// send my updates
- ws.Push();
+ //ws.Push();
//puts( "push done" );
// run one step of the simulation
- ws.Tick();
+ //ws.Tick();
//puts( "tick done" );
@@ -674,6 +660,9 @@
// wait until everyone report simulation step done
ws.Wait();
+
+ usleep(100); // TODO - loop sensibly here
+
//puts( "wait done" );
}
Modified: code/stage/trunk/worlds/fasr.world
===================================================================
--- code/stage/trunk/worlds/fasr.world 2010-01-24 14:27:08 UTC (rev 8526)
+++ code/stage/trunk/worlds/fasr.world 2010-01-25 22:33:23 UTC (rev 8527)
@@ -7,7 +7,7 @@
include "map.inc"
include "sick.inc"
-speedup 10
+speedup 10.000
paused 1
# time at which to pause (in GUI mode) or quit (in headless mode) the
simulation
@@ -16,16 +16,16 @@
resolution 0.02
- threads 0
+threads 0
# configure the GUI window
window
(
size [ 683.000 713.000 ]
- center [ -0.180 -1.009 ]
+ center [ 1.477 -5.626 ]
rotate [ 0 0 ]
- scale 35.284
+ scale 19.306
show_data 1
show_flags 1
@@ -63,7 +63,7 @@
(
pose [0.240 0 -0.100 0 ]
size [0.120 0.050 0.100]
- take_watts 1000.0
+ take_watts 2000.0
color "orange"
obstacle_return 0
)
@@ -83,7 +83,7 @@
color "yellow"
size [ 0.050 0.200 0.100 ]
joules -1 # provides infinite energy
- give_watts 1000
+ give_watts 2000
fiducial_return 2 # look for this in the fiducial sensor
alwayson 1 # so we give charge without any explicit subscriber
@@ -91,10 +91,18 @@
)
-charge_station( pose [ 7.940 -2.000 0 0 ] )
-charge_station( pose [ 7.940 -3.000 0 0 ] )
-charge_station( pose [ 7.940 -4.000 0 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 ] )
+
define autorob pioneer2dx
(
sicklaser( samples 32 range_max 5 laser_return 2 watts 30 )
@@ -108,27 +116,51 @@
# trail_length 0
)
-autorob( pose [7.062 -1.563 0 152.684] joules 300000 name "r0" )
+autorob( pose [5.967 -3.269 0 152.684] joules 300000 name "r0" )
autorob( pose [-7.444 -7.348 0 125.831] joules 100000 name "r1" )
autorob( pose [5.043 3.459 0 174.453] joules 200000 )
autorob( pose [-3.501 -3.827 0 -117.456] joules 400000 )
autorob( pose [-1.782 7.123 0 44.991] joules 100000 )
+
autorob( pose [-6.224 4.313 0 35.145] joules 200000 )
autorob( pose [-4.373 -4.515 0 -143.181] joules 300000 )
autorob( pose [3.975 7.410 0 0] joules 400000 )
autorob( pose [6.796 4.223 0 -89.994] joules 100000 )
autorob( pose [-6.679 -4.488 0 90.003] joules 200000 )
-#autorob( pose [-5.333 -7.515 0 -1.811] )
-#autorob( pose [-1.496 1.724 0 -116.317] )
-#autorob( pose [7.122 4.175 0 -31.440] )
-#autorob( pose [5.944 6.951 0 2.937] )
-#autorob( pose [6.405 5.291 0 -103.060] )
-#autorob( pose [5.974 5.725 0 -103.060] )
-#autorob( pose [4.151 7.272 0 53.540] )
-#autorob( pose [6.545 7.459 0 2.937] )
-#autorob( pose [7.237 7.533 0 34.450] )
-#autorob( pose [3.875 6.533 0 134.717] )
-#autorob( pose [3.944 4.674 0 -103.060] )
-#autorob( pose [4.634 6.897 0 -103.060] )
+autorob( pose [-5.333 -7.515 0 -1.811] )
+autorob( pose [-1.496 1.724 0 -116.317] )
+autorob( pose [7.462 3.892 0 -31.440] )
+autorob( pose [5.944 6.951 0 2.937] )
+autorob( pose [6.405 5.291 0 -103.060] )
+autorob( pose [5.974 5.725 0 -103.060] )
+autorob( pose [2.479 5.713 0 53.540] )
+autorob( pose [7.503 6.594 0 2.937] )
+autorob( pose [6.959 3.268 0 34.450] )
+autorob( pose [4.617 6.811 0 134.717] )
+
+autorob( pose [6.545 7.366 0 2.937] )
+autorob( pose [7.237 7.533 0 34.450] )
+autorob( pose [3.875 6.533 0 134.717] )
+autorob( pose [3.944 4.674 0 -103.060] )
+autorob( pose [4.776 5.792 0 -103.060] )
+
+autorob( pose [3.212 3.779 0 -103.060] )
+autorob( pose [2.982 6.577 0 -103.060] )
+autorob( pose [3.189 5.168 0 -103.060] )
+autorob( pose [2.027 6.472 0 -103.060] )
+autorob( pose [3.897 5.537 0 -103.060] )
+
+#autorob( pose [4.974 4.800 0 -103.060] )
+#autorob( pose [2.225 7.350 0 -103.060] )
+#autorob( pose [5.683 4.431 0 -103.060] )
+#autorob( pose [2.055 2.901 0 -103.060] )
+#autorob( pose [1.498 7.310 0 -103.060] )
+
+#autorob( pose [0.366 6.989 0 -103.060] )
+#autorob( pose [5.215 7.601 0 -103.060] )
+#autorob( pose [6.714 6.392 0 -103.060] )
+#autorob( pose [7.418 5.581 0 -103.060] )
+#autorob( pose [2.523 4.878 0 -103.060] )
+
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit