Revision: 6637
http://playerstage.svn.sourceforge.net/playerstage/?rev=6637&view=rev
Author: rtv
Date: 2008-06-17 19:44:30 -0700 (Tue, 17 Jun 2008)
Log Message:
-----------
replaced world grid with checkered texture
Modified Paths:
--------------
code/stage/trunk/docsrc/stage.dox
code/stage/trunk/libstage/canvas.cc
code/stage/trunk/libstage/model_laser.cc
code/stage/trunk/libstage/test.cc
code/stage/trunk/libstage/worldgui.cc
code/stage/trunk/worlds/fasr.world
Added Paths:
-----------
code/stage/trunk/worlds/bitmaps/cave_compact.png
Modified: code/stage/trunk/docsrc/stage.dox
===================================================================
--- code/stage/trunk/docsrc/stage.dox 2008-06-18 02:18:00 UTC (rev 6636)
+++ code/stage/trunk/docsrc/stage.dox 2008-06-18 02:44:30 UTC (rev 6637)
@@ -229,7 +229,7 @@
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
-EXTRACT_STATIC = NO
+EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
@@ -257,7 +257,7 @@
# If set to NO (the default) these classes will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
-HIDE_UNDOC_CLASSES = YES
+HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
# friend (class|struct|union) declarations.
Modified: code/stage/trunk/libstage/canvas.cc
===================================================================
--- code/stage/trunk/libstage/canvas.cc 2008-06-18 02:18:00 UTC (rev 6636)
+++ code/stage/trunk/libstage/canvas.cc 2008-06-18 02:44:30 UTC (rev 6637)
@@ -11,6 +11,12 @@
using namespace Stg;
+static const int checkImageWidth = 2;
+static const int checkImageHeight = 2;
+static GLubyte checkImage[checkImageHeight][checkImageWidth][4];
+static GLuint texName;
+static bool canvas_init_done = false;
+
void StgCanvas::TimerCallback( StgCanvas* c )
{
c->redraw();
@@ -25,6 +31,7 @@
: Fl_Gl_Window(x,y,w,h)
{
end();
+
//show(); // must do this so that the GL context is created before
configuring GL
// but that line causes a segfault in Linux/X11! TODO: test in OS X
@@ -375,13 +382,87 @@
{
glLoadIdentity();
glViewport(0,0,W,H);
+
+ if( ! canvas_init_done ) // do a bit of texture setup
+ {
+ canvas_init_done = true;
+ int i, j, c;
+ for (i = 0; i < checkImageHeight; i++)
+ for (j = 0; j < checkImageWidth; j++)
+ {
+ int even = (i+j)%2;
+ checkImage[i][j][0] = (GLubyte) 255 - 10*even;
+ checkImage[i][j][1] = (GLubyte) 255 - 10*even;
+ checkImage[i][j][2] = (GLubyte) 255;// -
5*even;
+ checkImage[i][j][3] = 255;
+ }
+
+
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ glGenTextures(1, &texName);
+ glBindTexture(GL_TEXTURE_2D, texName);
+ glEnable(GL_TEXTURE_2D);
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_NEAREST);
+
+
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth,
checkImageHeight,
+ 0, GL_RGBA, GL_UNSIGNED_BYTE,
checkImage);
+
+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
+ }
}
+
void StgCanvas::DrawGlobalGrid()
{
- PushColor( 0,0,0,0.2 );
- gl_draw_grid( world->GetExtent() );
+
+
+ stg_bounds3d_t bounds = world->GetExtent();
+
+ char str[16];
+ PushColor( 0,0,0,0.15 );
+ for( double i = floor(bounds.x.min); i < bounds.x.max; i++)
+ {
+ snprintf( str, 16, "%d", (int)i );
+ gl_draw_string( i, 0, 0.00, str );
+ }
+
+ for( double i = floor(bounds.y.min); i < bounds.y.max; i++)
+ {
+ snprintf( str, 16, "%d", (int)i );
+ gl_draw_string( 0, i, 0.00, str );
+ }
PopColor();
+
+ glEnable(GL_POLYGON_OFFSET_FILL);
+ glPolygonOffset(2.0, 2.0);
+ glDisable(GL_BLEND);
+
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, texName);
+
+ glBegin(GL_QUADS);
+
+ glTexCoord2f( bounds.x.min/2.0, bounds.y.min/2.0 );
+ glVertex3f( bounds.x.min, bounds.y.min, 0 );
+ glTexCoord2f( bounds.x.max/2.0, bounds.y.min/2.0);
+ glVertex3f( bounds.x.max, bounds.y.min, 0 );
+ glTexCoord2f( bounds.x.max/2.0, bounds.y.max/2.0 );
+ glVertex3f( bounds.x.max, bounds.y.max, 0 );
+ glTexCoord2f( bounds.x.min/2.0, bounds.y.max/2.0 );
+ glVertex3f( bounds.x.min, bounds.y.max, 0 );
+
+ glEnd();
+
+ glDisable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+
+
+ glDisable(GL_POLYGON_OFFSET_FILL );
}
void StgCanvas::renderFrame( bool robot_camera )
@@ -393,42 +474,28 @@
if( ! (showflags & STG_SHOW_TRAILS) || robot_camera == true )
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
- glPushMatrix();
+ if( showflags & STG_SHOW_GRID && robot_camera == false )
+ DrawGlobalGrid();
- // draw the world size rectangle in white, using the polygon offset
- // so it doesn't z-fight with the models
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- glEnable(GL_POLYGON_OFFSET_FILL);
- glPolygonOffset(2.0, 2.0);
-
- glScalef( 1.0/world->Resolution(), 1.0/world->Resolution(), 0 );
- ((StgWorldGui*)world)->DrawFloor();
-
- glDisable(GL_POLYGON_OFFSET_FILL);
-
if( (showflags & STG_SHOW_QUADTREE) || (showflags & STG_SHOW_OCCUPANCY)
&& robot_camera == false )
{
- glDisable( GL_LINE_SMOOTH );
- glLineWidth( 1 );
- glPolygonMode( GL_FRONT, GL_LINE );
- colorstack.Push(1,0,0);
-
- if( showflags & STG_SHOW_OCCUPANCY )
- ((StgWorldGui*)world)->DrawTree( false );
-
- if( showflags & STG_SHOW_QUADTREE )
- ((StgWorldGui*)world)->DrawTree( true );
-
- colorstack.Pop();
-
- glEnable( GL_LINE_SMOOTH );
+ glPushMatrix();
+ glScalef( 1.0/world->Resolution(), 1.0/world->Resolution(), 0 );
+
+ glLineWidth( 1 );
+ glPolygonMode( GL_FRONT, GL_LINE );
+ colorstack.Push(1,0,0);
+
+ if( showflags & STG_SHOW_OCCUPANCY )
+ ((StgWorldGui*)world)->DrawTree( false );
+
+ if( showflags & STG_SHOW_QUADTREE )
+ ((StgWorldGui*)world)->DrawTree( true );
+
+ colorstack.Pop();
+ glPopMatrix();
}
-
- glPopMatrix();
-
- if( showflags & STG_SHOW_GRID && robot_camera == false )
- DrawGlobalGrid();
-
+
for( GList* it=selected_models; it; it=it->next )
((StgModel*)it->data)->DrawSelected();
Modified: code/stage/trunk/libstage/model_laser.cc
===================================================================
--- code/stage/trunk/libstage/model_laser.cc 2008-06-18 02:18:00 UTC (rev
6636)
+++ code/stage/trunk/libstage/model_laser.cc 2008-06-18 02:44:30 UTC (rev
6637)
@@ -79,9 +79,9 @@
{
PRINT_DEBUG2( "Constructing StgModelLaser %d (%s)\n",
id, typestr );
-
+
// sensible laser defaults
- interval = 1e3 * StgModelLaser::DEFAULT_INTERVAL_MS;
+ interval = StgModelLaser::DEFAULT_INTERVAL_MS * thousand;
laser_return = LaserVisible;
stg_geom_t geom;
@@ -168,23 +168,23 @@
samples = g_renew( stg_laser_sample_t, samples, sample_count );
- stg_pose_t rayorg;
+ stg_pose_t rayorg = geom.pose;
bzero( &rayorg, sizeof(rayorg));
- rayorg.z = geom.size.z/2;
+ rayorg.z += geom.size.z/2;
for( unsigned int t=0; t<sample_count; t += resolution )
{
stg_raytrace_sample_t sample;
- rayorg.a = pose.a + bearing;
+ rayorg.a = bearing;
Raytrace( rayorg,
- range_max,
- laser_raytrace_match,
- NULL,
- &sample,
- true ); // z testing enabled
-
+ range_max,
+ laser_raytrace_match,
+ NULL,
+ &sample,
+ true ); // z testing enabled
+
samples[t].range = sample.range;
// if we hit a model and it reflects brightly, we set
Modified: code/stage/trunk/libstage/test.cc
===================================================================
--- code/stage/trunk/libstage/test.cc 2008-06-18 02:18:00 UTC (rev 6636)
+++ code/stage/trunk/libstage/test.cc 2008-06-18 02:44:30 UTC (rev 6637)
@@ -38,7 +38,7 @@
StgWorldGui world( 400,400, "Test" );
- world.SetRealTimeInterval( 20000 );
+ world.SetRealTimeInterval( 10000 );
world.Start();
@@ -46,6 +46,7 @@
stg_geom_t geom;
bzero( &geom, sizeof(geom) );
+ if( 0 )
{
StgModel mod( &world, NULL );
@@ -135,49 +136,76 @@
} // mod goes out of scope
- #define POP 100
-
+ #define POP 10
+ stg_velocity_t v = {0,0,0,0};
+
StgModel* m[POP];
for( int i=0; i<POP; i++ )
{
- m[i] = new StgModel( &world, NULL );
+ m[i] = new StgModelLaser( &world, NULL );
//m[i]->Say( "Hello" );
- m[i]->SetGeom( geom );
- m[i]->SetPose( random_pose( -10,10, -10,10 ) );
- //m[i]->PlaceInFreeSpace( -10, 10, -10, 10 );
+ m[i]->Subscribe();
+ //m[i]->SetGeom( geom );
+
+ //m[i]->SetPose( random_pose( -5,5, -5,5 ) );
+ m[i]->PlaceInFreeSpace( 0, 10, 0, 10 );
m[i]->SetColor( lrand48() | 0xFF000000 );
- interact( &world );
+
+ v.x = drand48() / 10.0;
+ v.y = drand48() / 10.0;
+ v.z = drand48() / 10.0;
+ v.a = drand48() / 3.0;
+
+ m[i]->SetVelocity( v );
}
-
- geom.size.x = 0.2;
- geom.size.y = 0.2;
- geom.size.z = 0.2;
- for( int i=0; i<POP; i++ )
- {
- StgModel* top = new StgModel( &world, m[i] );
- top->SetGeom( geom );
- //top->SetPose( new_pose( 0,0,0,0 ) );
- //m[i]->SetPose( random_pose( -10,10, -10,10 ) );
- //m[i]->PlaceInFreeSpace( -10, 10, -10, 10 );
- top->SetColor( lrand48() | 0xFF000000 );
+
+ // stg_pose_t o = { 1, 2, 0, 0 };
+// stg_pose_t p = {0,0,0,0};
+
+// m[0]->SetPose( o );
+
+// stg_pose_t q = m[0]->LocalToGlobal( p );
+
+// stg_print_pose( &o );
+// stg_print_pose( &q );
+
+// assert( fabs( q.x - o.x ) < 0.0001 );
+// assert( fabs( q.y - o.y ) < 0.0001 );
+// assert( fabs( q.z - o.z ) < 0.0001 );
+// assert( fabs( q.a - o.a ) < 0.0001 );
+
+// m[1]->SetPose( new_pose( 0,0,0,0 ));
+
+ // geom.size.x = 0.2;
+ //geom.size.y = 0.2;
+ //geom.size.z = 0.2;
+
+// for( int i=0; i<POP; i++ )
+// {
+// StgModel* top = new StgModel( &world, m[i] );
+// top->SetGeom( geom );
+// //top->SetPose( new_pose( 0,0,0,0 ) );
+// //m[i]->SetPose( random_pose( -10,10, -10,10 ) );
+// //m[i]->PlaceInFreeSpace( -10, 10, -10, 10 );
+// top->SetColor( lrand48() | 0xFF000000 );
- //interact( &world );
- }
+// //interact( &world );
+// }
- for( int i=0; i<POP; i++ )
- {
-// m[i]->PlaceInFreeSpace( -10, 10, -10, 10 );
- //m[i]->SetColor( 0xFF00FF00 );
+ // for( int i=0; i<POP; i++ )
+// {
+// // m[i]->PlaceInFreeSpace( -10, 10, -10, 10 );
+// //m[i]->SetColor( 0xFF00FF00 );
- stg_velocity_t v = {0,0,0,1};
+// stg_velocity_t v = {0,0,0,0.1};
- m[i]->SetVelocity( v );
+// m[i]->SetVelocity( v );
- //interact( &world );
- }
+// //interact( &world );
+// }
// for( int i=0; i<POP; i++ )
// {
Modified: code/stage/trunk/libstage/worldgui.cc
===================================================================
--- code/stage/trunk/libstage/worldgui.cc 2008-06-18 02:18:00 UTC (rev
6636)
+++ code/stage/trunk/libstage/worldgui.cc 2008-06-18 02:44:30 UTC (rev
6637)
@@ -257,47 +257,52 @@
fileMan.newWorld( filename );
StgWorld::Load( filename );
-
-// wf_section = wf->LookupEntity( "window" );
-// if( wf_section < 1) // no section defined
-// return;
- int wf_section = 0; // root section
+ int world_section = 0; // use the top-level section for some parms
+ // that
traditionally live there
this->paused =
- wf->ReadInt( wf_section, "paused", this->paused );
+ wf->ReadInt( world_section, "paused", this->paused );
this->interval_real = (stg_usec_t)thousand *
- wf->ReadInt( wf_section, "interval_real",
(int)(this->interval_real/thousand) );
+ wf->ReadInt( world_section, "interval_real",
(int)(this->interval_real/thousand) );
- int width = (int)wf->ReadTupleFloat(wf_section, "size", 0, w() );
- int height = (int)wf->ReadTupleFloat(wf_section, "size", 1, h() );
+
+ // use the window section for the rest
+ int window_section = wf->LookupEntity( "window" );
+
+ if( window_section < 1) // no section defined
+ return;
+
+
+ int width = (int)wf->ReadTupleFloat(window_section, "size", 0, w() );
+ int height = (int)wf->ReadTupleFloat(window_section, "size", 1, h() );
// on OS X this behaves badly - prevents the Window manager resizing
//larger than this size.
size( width,height );
- float x = wf->ReadTupleFloat(wf_section, "center", 0, 0 );
- float y = wf->ReadTupleFloat(wf_section, "center", 1, 0 );
+ float x = wf->ReadTupleFloat(window_section, "center", 0, 0 );
+ float y = wf->ReadTupleFloat(window_section, "center", 1, 0 );
canvas->camera.setPose( x, y );
- canvas->camera.setPitch( wf->ReadTupleFloat( wf_section, "rotate", 0, 0
) );
- canvas->camera.setYaw( wf->ReadTupleFloat( wf_section, "rotate", 1, 0 )
);
- canvas->camera.setScale( wf->ReadFloat(wf_section, "scale",
canvas->camera.getScale() ) );
- canvas->interval = wf->ReadInt(wf_section, "interval", canvas->interval
);
+ canvas->camera.setPitch( wf->ReadTupleFloat( window_section, "rotate",
0, 0 ) );
+ canvas->camera.setYaw( wf->ReadTupleFloat( window_section, "rotate", 1,
0 ) );
+ canvas->camera.setScale( wf->ReadFloat(window_section, "scale",
canvas->camera.getScale() ) );
+ canvas->interval = wf->ReadInt(window_section, "interval",
canvas->interval );
// set the canvas visibilty flags
uint32_t flags = canvas->GetShowFlags();
- uint32_t grid = wf->ReadInt(wf_section, "show_grid", flags &
STG_SHOW_GRID ) ? STG_SHOW_GRID : 0;
- uint32_t data = wf->ReadInt(wf_section, "show_data", flags &
STG_SHOW_DATA ) ? STG_SHOW_DATA : 0;
- uint32_t follow = wf->ReadInt(wf_section, "show_follow", flags &
STG_SHOW_FOLLOW ) ? STG_SHOW_FOLLOW : 0;
- uint32_t blocks = wf->ReadInt(wf_section, "show_blocks", flags &
STG_SHOW_BLOCKS ) ? STG_SHOW_BLOCKS : 0;
- uint32_t quadtree = wf->ReadInt(wf_section, "show_tree", flags &
STG_SHOW_QUADTREE ) ? STG_SHOW_QUADTREE : 0;
- uint32_t clock = wf->ReadInt(wf_section, "show_clock", flags &
STG_SHOW_CLOCK ) ? STG_SHOW_CLOCK : 0;
- uint32_t trails = wf->ReadInt(wf_section, "show_trails", flags &
STG_SHOW_TRAILS ) ? STG_SHOW_TRAILS : 0;
- uint32_t trailsrising = wf->ReadInt(wf_section, "show_trails_rising",
flags & STG_SHOW_TRAILRISE ) ? STG_SHOW_TRAILRISE : 0;
- uint32_t arrows = wf->ReadInt(wf_section, "show_arrows", flags &
STG_SHOW_ARROWS ) ? STG_SHOW_ARROWS : 0;
- uint32_t footprints = wf->ReadInt(wf_section, "show_footprints", flags
& STG_SHOW_FOOTPRINT ) ? STG_SHOW_FOOTPRINT : 0;
- uint32_t status = wf->ReadInt(wf_section, "show_status", flags &
STG_SHOW_STATUS ) ? STG_SHOW_STATUS : 0;
+ uint32_t grid = wf->ReadInt(window_section, "show_grid", flags &
STG_SHOW_GRID ) ? STG_SHOW_GRID : 0;
+ uint32_t data = wf->ReadInt(window_section, "show_data", flags &
STG_SHOW_DATA ) ? STG_SHOW_DATA : 0;
+ uint32_t follow = wf->ReadInt(window_section, "show_follow", flags &
STG_SHOW_FOLLOW ) ? STG_SHOW_FOLLOW : 0;
+ uint32_t blocks = wf->ReadInt(window_section, "show_blocks", flags &
STG_SHOW_BLOCKS ) ? STG_SHOW_BLOCKS : 0;
+ uint32_t quadtree = wf->ReadInt(window_section, "show_tree", flags &
STG_SHOW_QUADTREE ) ? STG_SHOW_QUADTREE : 0;
+ uint32_t clock = wf->ReadInt(window_section, "show_clock", flags &
STG_SHOW_CLOCK ) ? STG_SHOW_CLOCK : 0;
+ uint32_t trails = wf->ReadInt(window_section, "show_trails", flags &
STG_SHOW_TRAILS ) ? STG_SHOW_TRAILS : 0;
+ uint32_t trailsrising = wf->ReadInt(window_section,
"show_trails_rising", flags & STG_SHOW_TRAILRISE ) ? STG_SHOW_TRAILRISE : 0;
+ uint32_t arrows = wf->ReadInt(window_section, "show_arrows", flags &
STG_SHOW_ARROWS ) ? STG_SHOW_ARROWS : 0;
+ uint32_t footprints = wf->ReadInt(window_section, "show_footprints",
flags & STG_SHOW_FOOTPRINT ) ? STG_SHOW_FOOTPRINT : 0;
+ uint32_t status = wf->ReadInt(window_section, "show_status", flags &
STG_SHOW_STATUS ) ? STG_SHOW_STATUS : 0;
canvas->SetShowFlags( grid | data | follow | blocks | quadtree | clock
| trails | arrows | footprints | trailsrising | status
);
@@ -560,31 +565,35 @@
{
PRINT_DEBUG1( "%s.Save()", token );
- int wf_section = 0;
-
- wf->WriteTupleFloat( wf_section, "size", 0, w() );
- wf->WriteTupleFloat( wf_section, "size", 1, h() );
-
- wf->WriteFloat( wf_section, "scale", canvas->camera.getScale() );
+ StgWorld::Save( filename );
- wf->WriteTupleFloat( wf_section, "center", 0, canvas->camera.getX() );
- wf->WriteTupleFloat( wf_section, "center", 1, canvas->camera.getY() );
-
- wf->WriteTupleFloat( wf_section, "rotate", 0, canvas->camera.getPitch()
);
- wf->WriteTupleFloat( wf_section, "rotate", 1, canvas->camera.getYaw()
);
+ // use the window section for the rest
+ int window_section = wf->LookupEntity( "window" );
- uint32_t flags = canvas->GetShowFlags();
- wf->WriteInt( wf_section, "show_blocks", flags & STG_SHOW_BLOCKS );
- wf->WriteInt( wf_section, "show_grid", flags & STG_SHOW_GRID );
- wf->WriteInt( wf_section, "show_follow", flags & STG_SHOW_FOLLOW );
- wf->WriteInt( wf_section, "show_data", flags & STG_SHOW_DATA );
- wf->WriteInt( wf_section, "show_occupancy", flags & STG_SHOW_OCCUPANCY
);
- wf->WriteInt( wf_section, "show_tree", flags & STG_SHOW_QUADTREE );
- wf->WriteInt( wf_section, "show_clock", flags & STG_SHOW_CLOCK );
+ if( window_section > 0 ) // section defined
+ {
+ wf->WriteTupleFloat( window_section, "size", 0, w() );
+ wf->WriteTupleFloat( window_section, "size", 1, h() );
+
+ wf->WriteFloat( window_section, "scale",
canvas->camera.getScale() );
+
+ wf->WriteTupleFloat( window_section, "center", 0,
canvas->camera.getX() );
+ wf->WriteTupleFloat( window_section, "center", 1,
canvas->camera.getY() );
+
+ wf->WriteTupleFloat( window_section, "rotate", 0,
canvas->camera.getPitch() );
+ wf->WriteTupleFloat( window_section, "rotate", 1,
canvas->camera.getYaw() );
+
+ uint32_t flags = canvas->GetShowFlags();
+ wf->WriteInt( window_section, "show_blocks", flags &
STG_SHOW_BLOCKS );
+ wf->WriteInt( window_section, "show_grid", flags &
STG_SHOW_GRID );
+ wf->WriteInt( window_section, "show_follow", flags &
STG_SHOW_FOLLOW );
+ wf->WriteInt( window_section, "show_data", flags &
STG_SHOW_DATA );
+ wf->WriteInt( window_section, "show_occupancy", flags &
STG_SHOW_OCCUPANCY );
+ wf->WriteInt( window_section, "show_tree", flags &
STG_SHOW_QUADTREE );
+ wf->WriteInt( window_section, "show_clock", flags &
STG_SHOW_CLOCK );
- // TODO - per model visualizations save
-
- return StgWorld::Save( filename );
+ // TODO - per model visualizations save
+ }
}
@@ -595,7 +604,6 @@
bool val = paused ? true : StgWorld::Update();
-
stg_usec_t interval;
stg_usec_t timenow;
@@ -614,11 +622,10 @@
} while( interval < interval_real );
+ interval_log[updates%INTERVAL_LOG_LEN] = timenow - real_time_of_last_update;
+
real_time_of_last_update = timenow;
-
- interval_log[updates%INTERVAL_LOG_LEN] = interval_real;//timenow -
real_time_now;
-
return val;
}
Added: code/stage/trunk/worlds/bitmaps/cave_compact.png
===================================================================
(Binary files differ)
Property changes on: code/stage/trunk/worlds/bitmaps/cave_compact.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: code/stage/trunk/worlds/fasr.world
===================================================================
--- code/stage/trunk/worlds/fasr.world 2008-06-18 02:18:00 UTC (rev 6636)
+++ code/stage/trunk/worlds/fasr.world 2008-06-18 02:44:30 UTC (rev 6637)
@@ -1,5 +1,5 @@
# FASR demo world
-# Authors: Richard Vaughan
+# Authors: Richard Vaughanwo
# $Id: fasr.world,v 1.4 2008-04-01 23:57:41 rtv Exp $
# defines Pioneer-like robots
@@ -15,17 +15,19 @@
resolution 0.02
interval_sim 100 # simulation timestep in milliseconds
-interval_real 20 # real-time interval between simulation updates in
milliseconds
+interval_real 0 # real-time interval between simulation updates in
milliseconds
paused 1
# configure the GUI window
-size [ 698.000 628.000 ]
-center [6.990 -4.040]
-rotate [ 0.000 0.000 ]
-scale 33.306
-show_data 0
+window
+(
+ # size [ 698.000 628.000 ]
+ center [6.990 -4.040]
+ rotate [ 0.000 0.000 ]
+ scale 33.306
+ show_data 0
+)
-
# load an environment bitmap
floorplan
(
@@ -55,11 +57,10 @@
(
color "red"
- sicklaser( pose [ 0.040 0.000 0.000 ] samples 32 range_max 5 laser_return 2 )
+ sicklaser( pose [ 0.040 0.000 0.000 ] samples 30 range_max 5 laser_return 2 )
+ ctrl "fasr"
- ctrl "fasr"
-
- say "Autolab"
+ # say "Autolab"
)
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit