From: <rt...@us...> - 2008-06-04 23:29:50
|
Revision: 6474 http://playerstage.svn.sourceforge.net/playerstage/?rev=6474&view=rev Author: rtv Date: 2008-06-04 23:29:49 -0700 (Wed, 04 Jun 2008) Log Message: ----------- working on fixing player plugin. now it works but timing could be better Modified Paths: -------------- code/stage/trunk/libstage/main.cc code/stage/trunk/libstage/model_ranger.cc code/stage/trunk/libstage/stage.hh code/stage/trunk/libstage/worldgui.cc code/stage/trunk/libstageplugin/p_driver.cc code/stage/trunk/libstageplugin/p_driver.h code/stage/trunk/worlds/simple.world Modified: code/stage/trunk/libstage/main.cc =================================================================== --- code/stage/trunk/libstage/main.cc 2008-06-05 05:43:47 UTC (rev 6473) +++ code/stage/trunk/libstage/main.cc 2008-06-05 06:29:49 UTC (rev 6474) @@ -52,7 +52,7 @@ StgWorldGui world( 800, 700, argv[0]); world.Load( argv[argc-1] ); - + world.Start(); world.Run(); } Modified: code/stage/trunk/libstage/model_ranger.cc =================================================================== --- code/stage/trunk/libstage/model_ranger.cc 2008-06-05 05:43:47 UTC (rev 6473) +++ code/stage/trunk/libstage/model_ranger.cc 2008-06-05 06:29:49 UTC (rev 6474) @@ -346,10 +346,10 @@ //double dz = rngr->size.z/2.0; // DEBUG: draw a point for the sensor pose - //glPointSize( 6 ); - //glBegin( GL_POINTS ); - //glVertex3f( rngr->pose.x, rngr->pose.y, rngr->pose.z ); - //glEnd(); + glPointSize( 6 ); + glBegin( GL_POINTS ); + glVertex3f( rngr->pose.x, rngr->pose.y, rngr->pose.z ); + glEnd(); // sensor FOV double sidelen = samples[s]; Modified: code/stage/trunk/libstage/stage.hh =================================================================== --- code/stage/trunk/libstage/stage.hh 2008-06-05 05:43:47 UTC (rev 6473) +++ code/stage/trunk/libstage/stage.hh 2008-06-05 06:29:49 UTC (rev 6474) @@ -1776,6 +1776,8 @@ /** Start the simulation and GUI. Does not return */ void Run(); + void Start(); + void Cycle(); virtual void Load( const char* filename ); virtual void Save(); Modified: code/stage/trunk/libstage/worldgui.cc =================================================================== --- code/stage/trunk/libstage/worldgui.cc 2008-06-05 05:43:47 UTC (rev 6473) +++ code/stage/trunk/libstage/worldgui.cc 2008-06-05 06:29:49 UTC (rev 6474) @@ -342,20 +342,28 @@ world->Update(); } -void StgWorldGui::Run() +void StgWorldGui::Start() { - // if a non-zero interval was requested, call Update() after that // interval if( interval_real > 0 ) Fl::add_timeout( interval_real/1e6, (Fl_Timeout_Handler)UpdateCb, this ); else // otherwise call Update() whenever there's no GUI work to do Fl::add_idle( (Fl_Timeout_Handler)idle_callback, this ); +} +void StgWorldGui::Run() +{ Fl::run(); } +void StgWorldGui::Cycle() +{ + if( Fl::ready() ) + Fl::check(); +} + void StgWorldGui::DrawTree( bool drawall ) { g_hash_table_foreach( superregions, (GHFunc)SuperRegion::Draw_cb, NULL ); Modified: code/stage/trunk/libstageplugin/p_driver.cc =================================================================== --- code/stage/trunk/libstageplugin/p_driver.cc 2008-06-05 05:43:47 UTC (rev 6473) +++ code/stage/trunk/libstageplugin/p_driver.cc 2008-06-05 06:29:49 UTC (rev 6474) @@ -168,7 +168,7 @@ extern bool player_quit; // init static vars -StgWorld* StgDriver::world = NULL; +StgWorldGui* StgDriver::world = NULL; int update_request = 0; @@ -437,7 +437,8 @@ // Set up the device. Return 0 if things go well, and -1 otherwise. int StgDriver::Setup() { - //puts("stage driver setup"); + puts("stage driver setup"); + world->Start(); return(0); } @@ -557,7 +558,7 @@ { Driver::ProcessMessages(); - //puts( "STG driver update" ); + // puts( "STG driver update" ); for( int i=0; i<(int)this->devices->len; i++ ) { @@ -568,7 +569,7 @@ { case PLAYER_SIMULATION_CODE: //if( stg_world_update( this->world, FALSE ) ) - world->Update(); + world->Cycle(); //player_quit = TRUE; // set Player's global quit flag break; @@ -578,11 +579,11 @@ // interface? This really needs some thought, as each model/interface // should have a configurable publishing rate. For now, I'm using the // world's update rate (which appears to be stored as msec). - BPG - double currtime; - GlobalTime->GetTimeDouble(&currtime); - if((currtime - interface->last_publish_time) >= - (interface->publish_interval_msec / 1e3)) - { + double currtime; + GlobalTime->GetTimeDouble(&currtime); + if((currtime - interface->last_publish_time) >= + (interface->publish_interval_msec / 1e3)) + { interface->Publish(); interface->last_publish_time = currtime; } Modified: code/stage/trunk/libstageplugin/p_driver.h =================================================================== --- code/stage/trunk/libstageplugin/p_driver.h 2008-06-05 05:43:47 UTC (rev 6473) +++ code/stage/trunk/libstageplugin/p_driver.h 2008-06-05 06:29:49 UTC (rev 6474) @@ -38,7 +38,7 @@ virtual void Update(); /// all player devices share the same Stage world (for now) - static StgWorld* world; + static StgWorldGui* world; /// find the device record with this Player id Interface* LookupDevice( player_devaddr_t addr ); Modified: code/stage/trunk/worlds/simple.world =================================================================== --- code/stage/trunk/worlds/simple.world 2008-06-05 05:43:47 UTC (rev 6473) +++ code/stage/trunk/worlds/simple.world 2008-06-05 06:29:49 UTC (rev 6474) @@ -15,7 +15,7 @@ resolution 0.02 interval_sim 100 # simulation timestep in milliseconds -interval_real 10 # real-time interval between simulation updates in milliseconds +interval_real 100 # real-time interval between simulation updates in milliseconds paused 0 @@ -29,13 +29,13 @@ ) # load an environment bitmap -floorplan -( - name "cave" - size3 [16 16 0.5] - pose [0.000 0.000 0.000] - bitmap "bitmaps/cave.png" -) +#floorplan +#( +# name "cave" +# size3 [16 16 0.5] +# pose [0.000 0.000 0.000] +# bitmap "bitmaps/cave.png" +#) define autorob fancypioneer2dx ( @@ -51,23 +51,23 @@ autorob( pose [3.537 7.177 158.268] name "r0" ) autorob( pose [4.142 -7.764 -52.629] ) autorob( pose [6.320 3.775 22.445] ) -autorob( pose [-1.915 3.332 156.191] ) -autorob( pose [3.309 5.546 -109.062] ) -autorob( pose [7.209 4.552 89.455] ) -autorob( pose [-6.329 1.151 -164.935] ) -autorob( pose [-6.320 -5.692 -103.425] ) -autorob( pose [3.187 -7.170 -57.759] ) -autorob( pose [7.407 2.058 -57.823] ) +#autorob( pose [-1.915 3.332 156.191] ) +#autorob( pose [3.309 5.546 -109.062] ) +#autorob( pose [7.209 4.552 89.455] ) +#autorob( pose [-6.329 1.151 -164.935] ) +#autorob( pose [-6.320 -5.692 -103.425] ) +#autorob( pose [3.187 -7.170 -57.759] ) +#autorob( pose [7.407 2.058 -57.823] ) -autorob( pose [-6.370 2.754 -113.456] ) -autorob( pose [0.402 -6.819 -1.177] ) -autorob( pose [-2.892 -0.583 46.585] ) -autorob( pose [2.284 5.478 135.162] ) -autorob( pose [-2.483 -1.567 -3.588] ) -autorob( pose [-6.321 4.372 93.535] ) -autorob( pose [-4.204 -5.882 -35.760] ) -autorob( pose [-2.409 -4.979 -17.538] ) -autorob( pose [-6.692 5.179 -23.903] ) -autorob( pose [-1.958 0.013 -17.092] ) +#autorob( pose [-6.370 2.754 -113.456] ) +#autorob( pose [0.402 -6.819 -1.177] ) +#autorob( pose [-2.892 -0.583 46.585] ) +#autorob( pose [2.284 5.478 135.162] ) +#autorob( pose [-2.483 -1.567 -3.588] ) +#autorob( pose [-6.321 4.372 93.535] ) +#autorob( pose [-4.204 -5.882 -35.760] ) +#autorob( pose [-2.409 -4.979 -17.538] ) +#autorob( pose [-6.692 5.179 -23.903] ) +#autorob( pose [-1.958 0.013 -17.092] ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |