Revision: 6761
http://playerstage.svn.sourceforge.net/playerstage/?rev=6761&view=rev
Author: rtv
Date: 2008-07-04 14:53:04 -0700 (Fri, 04 Jul 2008)
Log Message:
-----------
fixed vertexarray bug
Modified Paths:
--------------
code/stage/trunk/examples/ctrl/swarmbenchmark.cc
code/stage/trunk/libstage/canvas.cc
code/stage/trunk/libstage/model.cc
code/stage/trunk/libstage/model_camera.cc
code/stage/trunk/libstage/model_laser.cc
code/stage/trunk/libstage/model_ranger.cc
code/stage/trunk/worlds/everything.world
code/stage/trunk/worlds/pioneer.inc
code/stage/trunk/worlds/swarmbenchmark/cave.world
Modified: code/stage/trunk/examples/ctrl/swarmbenchmark.cc
===================================================================
--- code/stage/trunk/examples/ctrl/swarmbenchmark.cc 2008-07-04 19:55:31 UTC
(rev 6760)
+++ code/stage/trunk/examples/ctrl/swarmbenchmark.cc 2008-07-04 21:53:04 UTC
(rev 6761)
@@ -14,10 +14,6 @@
#include "stage.hh"
using namespace Stg;
-static double minfrontdistance = 0.750;
-static double speed = 0.400;
-static double turnrate = M_PI/3.0;
-
typedef struct
{
StgModelLaser* laser;
@@ -25,10 +21,10 @@
StgModelRanger* ranger;
} robot_t;
-#define VSPEED 0.4 // meters per second
-#define WGAIN 1.0 // turn speed gain
+#define VSPEED 0.5 // meters per second
+#define WGAIN 1.5 // turn speed gain
#define SAFE_DIST 0.6 // meters
-#define SAFE_ANGLE 0.25 // radians
+#define SAFE_ANGLE 1 // radians
// forward declare
int RangerUpdate( StgModel* mod, robot_t* robot );
@@ -48,8 +44,8 @@
robot->ranger->AddUpdateCallback( (stg_model_callback_t)RangerUpdate, robot
);
// subscribe to the laser, though we don't use it for navigating
- robot->laser = (StgModelLaser*)mod->GetModel( "laser:0" );
- assert( robot->laser );
+ //robot->laser = (StgModelLaser*)mod->GetModel( "laser:0" );
+ //assert( robot->laser );
//robot->laser->Subscribe();
return 0; //ok
@@ -71,6 +67,8 @@
dx += srange * cos( rgr->sensors[s].pose.a );
dy += srange * sin( rgr->sensors[s].pose.a );
+
+ //printf( "sensor %d angle= %.2f\n", s, rgr->sensors[s].pose.a
);
}
if( (dx == 0) || (dy == 0) )
@@ -84,15 +82,21 @@
double side_speed = 0.0;
double turn_speed = WGAIN * resultant_angle;
- int forward = rgr->sensor_count/2 -1 ;
+ //printf( "resultant %.2f turn_speed %.2f\n", resultant_angle, turn_speed );
+
+ int forward = 0 ;
// if the front is clear, drive forwards
- if( (rgr->samples[forward-1] > SAFE_DIST/5.0) &&
- (rgr->samples[forward ] > SAFE_DIST) &&
- (rgr->samples[forward+1] > SAFE_DIST/5.0) &&
+ if( (rgr->samples[0] > SAFE_DIST) &&
+ (rgr->samples[1] > SAFE_DIST/2.0) &&
+ (rgr->samples[2] > SAFE_DIST/5.0) &&
+ (rgr->samples[15] > SAFE_DIST/2.0) &&
+ (rgr->samples[14] > SAFE_DIST/5.0) &&
(fabs( resultant_angle ) < SAFE_ANGLE) )
{
forward_speed = VSPEED;
}
+
+ //printf( "forward angle = %.2f\n", rgr->sensors[forward].pose.a );
// // send a command to the robot
// stg_velocity_t vel;
Modified: code/stage/trunk/libstage/canvas.cc
===================================================================
--- code/stage/trunk/libstage/canvas.cc 2008-07-04 19:55:31 UTC (rev 6760)
+++ code/stage/trunk/libstage/canvas.cc 2008-07-04 21:53:04 UTC (rev 6761)
@@ -874,8 +874,8 @@
glHint( GL_LINE_SMOOTH_HINT, GL_FASTEST );
glDepthMask( GL_TRUE );
glEnable( GL_TEXTURE_2D );
+ glEnableClientState( GL_VERTEX_ARRAY );
-
//TODO find a better home for loading textures
if( loaded_texture == false ) {
std::string fullpath = world->fileMan->fullPath( "stall.png" );
Modified: code/stage/trunk/libstage/model.cc
===================================================================
--- code/stage/trunk/libstage/model.cc 2008-07-04 19:55:31 UTC (rev 6760)
+++ code/stage/trunk/libstage/model.cc 2008-07-04 21:53:04 UTC (rev 6761)
@@ -1181,7 +1181,7 @@
PushLocalCoords();
DataVisualize(); // virtual function overridden by most model types
- // shift to top of this model
+ // shift to top of this model - why is this not necessary?
glTranslatef( 0,0, geom.size.z );
// and draw the children
Modified: code/stage/trunk/libstage/model_camera.cc
===================================================================
--- code/stage/trunk/libstage/model_camera.cc 2008-07-04 19:55:31 UTC (rev
6760)
+++ code/stage/trunk/libstage/model_camera.cc 2008-07-04 21:53:04 UTC (rev
6761)
@@ -329,7 +329,7 @@
}
- glEnableClientState( GL_VERTEX_ARRAY );
+ //glEnableClientState( GL_VERTEX_ARRAY );
glEnableClientState( GL_COLOR_ARRAY );
glVertexPointer( 3, GL_FLOAT, 0, _camera_quads );
Modified: code/stage/trunk/libstage/model_laser.cc
===================================================================
--- code/stage/trunk/libstage/model_laser.cc 2008-07-04 19:55:31 UTC (rev
6760)
+++ code/stage/trunk/libstage/model_laser.cc 2008-07-04 21:53:04 UTC (rev
6761)
@@ -318,9 +318,18 @@
data_dirty = false;
glNewList( data_dl, GL_COMPILE );
-
+ //glEnableClientState( GL_VERTEX_ARRAY );
glTranslatef( 0,0, geom.size.z/2.0 ); // shoot the laser beam out at the
right height
+ PushColor( 0, 0, 1, 0.5 );
+
+ glPointSize( 4.0 );
+
+ // DEBUG - draw the origin of the laser beams
+ glBegin( GL_POINTS );
+ glVertex2f( 0,0 );
+ glEnd();
+
// pack the laser hit points into a vertex array for fast rendering
static float* pts = NULL;
pts = (float*)g_realloc( pts, 2 * (sample_count+1) * sizeof(float));
@@ -328,10 +337,7 @@
pts[0] = 0.0;
pts[1] = 0.0;
- PushColor( 0, 0, 1, 0.5 );
- glPointSize( 4.0 );
-
glVertexPointer( 2, GL_FLOAT, 0, pts );
for( unsigned int s=0; s<sample_count; s++ )
@@ -379,7 +385,7 @@
glDepthMask( GL_TRUE );
-
+ //glDisableClientState( GL_VERTEX_ARRAY );
glEndList();
}
Modified: code/stage/trunk/libstage/model_ranger.cc
===================================================================
--- code/stage/trunk/libstage/model_ranger.cc 2008-07-04 19:55:31 UTC (rev
6760)
+++ code/stage/trunk/libstage/model_ranger.cc 2008-07-04 21:53:04 UTC (rev
6761)
@@ -80,9 +80,12 @@
#include <math.h>
static const stg_watts_t DEFAULT_RANGER_WATTSPERSENSOR = 0.2;
-static const stg_meters_t DEFAULT_RANGER_SIZEX = 0.01;
-static const stg_meters_t DEFAULT_RANGER_SIZEY = 0.04;
-static const stg_meters_t DEFAULT_RANGER_SIZEZ = 0.04;
+static const stg_meters_t DEFAULT_RANGER_SIZEX = 0.4;
+static const stg_meters_t DEFAULT_RANGER_SIZEY = 0.4;
+static const stg_meters_t DEFAULT_RANGER_SIZEZ = 0.05;
+static const stg_meters_t DEFAULT_RANGER_TRANSDUCER_SIZEX = 0.01;
+static const stg_meters_t DEFAULT_RANGER_TRANSDUCER_SIZEY = 0.04;
+static const stg_meters_t DEFAULT_RANGER_TRANSDUCER_SIZEZ = 0.04;
static const stg_meters_t DEFAULT_RANGER_RANGEMAX = 5.0;
static const stg_meters_t DEFAULT_RANGER_RANGEMIN = 0.0;
static const unsigned int DEFAULT_RANGER_RAYCOUNT = 3;
@@ -113,12 +116,16 @@
stg_geom_t geom;
memset( &geom, 0, sizeof(geom)); // no size
+ geom.size.x = DEFAULT_RANGER_SIZEX;
+ geom.size.y = DEFAULT_RANGER_SIZEY;
+ geom.size.z = DEFAULT_RANGER_SIZEZ;
this->SetGeom( geom );
samples = NULL;
sensor_count = DEFAULT_RANGER_SENSORCOUNT;
sensors = new stg_ranger_sensor_t[sensor_count];
+ // spread the transducers around the ranger's body
double offset = MIN(geom.size.x, geom.size.y) / 2.0;
// create default ranger config
@@ -127,11 +134,11 @@
sensors[c].pose.a = (2.0*M_PI)/sensor_count * c;
sensors[c].pose.x = offset * cos( sensors[c].pose.a );
sensors[c].pose.y = offset * sin( sensors[c].pose.a );
- sensors[c].pose.z = 0;//geom.size.z / 2.0; // half way up
+ sensors[c].pose.z = geom.size.z / 2.0; // half way up
- sensors[c].size.x = DEFAULT_RANGER_SIZEX;
- sensors[c].size.y = DEFAULT_RANGER_SIZEY;
- sensors[c].size.z = DEFAULT_RANGER_SIZEZ;
+ sensors[c].size.x = DEFAULT_RANGER_TRANSDUCER_SIZEX;
+ sensors[c].size.y = DEFAULT_RANGER_TRANSDUCER_SIZEY;
+ sensors[c].size.z = DEFAULT_RANGER_TRANSDUCER_SIZEZ;
sensors[c].bounds_range.min = DEFAULT_RANGER_RANGEMIN;
sensors[c].bounds_range.max = DEFAULT_RANGER_RANGEMAX;;
@@ -356,11 +363,6 @@
{
stg_ranger_sensor_t* rngr = &sensors[s];
- //double dx = rngr->size.x/2.0;
- //double dy = rngr->size.y/2.0;
- //double dz = rngr->size.z/2.0;
-
-
// sensor FOV
double sidelen = samples[s];
double da = rngr->fov/2.0;
@@ -384,12 +386,13 @@
glDepthMask( GL_FALSE );
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
PushColor( 0, 1, 0, 0.1 ); // transparent pale green
- glEnableClientState( GL_VERTEX_ARRAY );
+ //glEnableClientState( GL_VERTEX_ARRAY );
glVertexPointer( 3, GL_FLOAT, 0, pts );
glDrawArrays( GL_TRIANGLES, 0, 3 * sensor_count );
// restore state
glDepthMask( GL_TRUE );
+ //glDisableClientState( GL_VERTEX_ARRAY );
PopColor();
}
Modified: code/stage/trunk/worlds/everything.world
===================================================================
--- code/stage/trunk/worlds/everything.world 2008-07-04 19:55:31 UTC (rev
6760)
+++ code/stage/trunk/worlds/everything.world 2008-07-04 21:53:04 UTC (rev
6761)
@@ -18,8 +18,8 @@
window(
size [ 1059.000 541.000 ]
- center [-3.707 -1.447]
- scale 25.877 # pixels per meter
+ center [-6.333 2.011]
+ scale 80.217 # pixels per meter
)
floorplan(
@@ -47,44 +47,44 @@
puck( pose [-9.114 2.467 -105.501 ] color "red" )
puck( pose [-9.045 2.624 -37.717 ] color "purple" )
-puck( pose [-8.959 2.752 -461.643 ] color "orange" )
+puck( pose [-8.959 2.752 -101.643 ] color "orange" )
+ranger( alwayson 1 )
+
+ sicklaser( pose [0.030 0.000 0.000 ] alwayson 1 )
+
+
# extend the pioneer2dx definition from pioneer.inc
#
define trickedoutpioneer pioneer2dx
(
- sicklaser( alwayson 1
- pose [0.030 0.000 0.000 ]
- fiducial( range_max 8 range_max_id 5 )
+ ranger( alwayson 1 )
- blobfinder( alwayson 1
+ sicklaser( pose [0.030 0.000 0.000 ] alwayson 1 )
+
+ fiducial( range_max 8 range_max_id 5 )
+
+ blobfinder(
channel_count 6
channels [ "red" "blue" "green" "cyan" "yellow" "magenta" ]
+ alwayson 1
)
- )
+
+ #camera( alwayson 1 )
-
fiducial_return 17
gripper_return 0
localization "gps"
localization_origin [ 0 0 0 ]
-
-# bumper( bcount 3
-# blength 0.2
-# bpose[0] [0 -0.165 90]
-# bpose[1] [0 0.165 -90]
-# bpose[2] [-0.26 0 0]
-# blength[2] 0.1 # set the length of a single bumper
-# )
)
trickedoutpioneer
(
name "robot1"
- pose [-10.071 3.186 -722.333]
+ pose [-10.071 3.186 -2.333]
#gripper( pose [0.23 0.000 0.000] color "gray" )
#speech()
@@ -105,21 +105,21 @@
fiducial_return 18
color "blue"
name "p2"
- pose [-6.009 2.481 -194.220]
+ pose [-6.009 2.481 165.780]
)
trickedoutpioneer
(
color "green"
name "p3"
- pose [-6.492 2.156 -199.781]
+ pose [-6.492 2.156 160.219]
)
trickedoutpioneer
(
color "cyan"
name "p4"
- pose [-7.641 3.989 -487.216]
+ pose [-7.641 3.989 -127.216]
)
trickedoutpioneer
@@ -165,5 +165,5 @@
roomba(
name "roomba1"
- pose [-9 0.5 0]
+ pose [-9.000 0.500 0.000]
)
Modified: code/stage/trunk/worlds/pioneer.inc
===================================================================
--- code/stage/trunk/worlds/pioneer.inc 2008-07-04 19:55:31 UTC (rev 6760)
+++ code/stage/trunk/worlds/pioneer.inc 2008-07-04 21:53:04 UTC (rev 6761)
@@ -52,7 +52,7 @@
# use the sonar array defined above with a small vertical offset to
# drop the sensors into the robot body
- p2dx_sonar( pose4 [0.04 0 -0.03 0] )
+ #p2dx_sonar( pose4 [0.04 0 -0.03 0] )
# differential steering model
drive "diff"
Modified: code/stage/trunk/worlds/swarmbenchmark/cave.world
===================================================================
--- code/stage/trunk/worlds/swarmbenchmark/cave.world 2008-07-04 19:55:31 UTC
(rev 6760)
+++ code/stage/trunk/worlds/swarmbenchmark/cave.world 2008-07-04 21:53:04 UTC
(rev 6761)
@@ -8,17 +8,17 @@
resolution 0.02 # resolution of the underlying raytrace mode
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 1
# configure the GUI window
window
(
- size [ 1000.000 1000.000 ]
center [-0.932 -0.088]
rotate [ -61.500 -50.000 ]
scale 51.828
+ interval 10
)
floorplan
@@ -32,10 +32,11 @@
define rob fancypioneer2dx
(
fancysicklaser( pose [ 0.040 0.000 0.000 ] samples 180 )
+ ranger( pose4 [ 0 0 -0.05 0 ] )
+
ctrl "swarmbenchmark"
)
-
define redrob rob( color "red" )
define greenrob rob( color "green" )
define magentarob rob( color "magenta" )
@@ -58,7 +59,7 @@
redrob( pose [-4.393 4.938 114.269] )
redrob( pose [-6.277 4.252 -97.494] )
redrob( pose [-5.202 5.566 -89.743] )
-
+#
bluerob( pose [-7.014 6.409 -103.088] )
bluerob( pose [-6.139 5.649 -29.509] )
bluerob( pose [-6.315 6.277 -35.740] )
@@ -69,7 +70,7 @@
bluerob( pose [-6.810 4.727 -41.884] )
bluerob( pose [-7.415 7.485 -14.803] )
bluerob( pose [-6.722 7.120 -70.950] )
-
+#
greenrob( pose [-2.686 6.660 -20.602] )
greenrob( pose [-3.274 5.174 63.058] )
greenrob( pose [-2.477 6.075 -93.720] )
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit