Revision: 6929 http://playerstage.svn.sourceforge.net/playerstage/?rev=6929&view=rev Author: jeremy_asher Date: 2008-07-25 23:17:00 +0000 (Fri, 25 Jul 2008)
Log Message: ----------- stage: changed blobfinder visualization to rotate to face screen, fixed up other code with the same functionality Modified Paths: -------------- code/stage/trunk/libstage/canvas.cc code/stage/trunk/libstage/model.cc code/stage/trunk/libstage/model_blinkenlight.cc code/stage/trunk/libstage/model_blobfinder.cc code/stage/trunk/libstage/model_camera.cc code/stage/trunk/libstage/model_fiducial.cc code/stage/trunk/libstage/model_laser.cc code/stage/trunk/libstage/model_ranger.cc code/stage/trunk/libstage/stage.hh code/stage/trunk/libstageplugin/p_driver.cc Modified: code/stage/trunk/libstage/canvas.cc =================================================================== --- code/stage/trunk/libstage/canvas.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/canvas.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -663,14 +663,14 @@ if( showData ) { if ( visualizeAll ) { for( GList* it = world->StgWorld::children; it; it=it->next ) - ((StgModel*)it->data)->DataVisualizeTree(); + ((StgModel*)it->data)->DataVisualizeTree( current_camera ); } else if ( selected_models ) { for( GList* it = selected_models; it; it=it->next ) - ((StgModel*)it->data)->DataVisualizeTree(); + ((StgModel*)it->data)->DataVisualizeTree( current_camera ); } else if ( last_selection ) { - last_selection->DataVisualizeTree(); + last_selection->DataVisualizeTree( current_camera ); } } @@ -698,7 +698,7 @@ //ensure two icons can't be in the exact same plane if( camera.pitch() == 0 && !pCamOn ) glTranslatef( 0, 0, 0.1 ); - i->second->DrawStatusTree( this ); + i->second->DrawStatusTree( current_camera ); } glPopMatrix(); } Modified: code/stage/trunk/libstage/model.cc =================================================================== --- code/stage/trunk/libstage/model.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/model.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -1001,21 +1001,21 @@ glPopMatrix(); } -void StgModel::DrawStatusTree( StgCanvas* canvas ) +void StgModel::DrawStatusTree( StgCamera* cam ) { PushLocalCoords(); - DrawStatus( canvas ); - LISTMETHODARG( children, StgModel*, DrawStatusTree, canvas ); + DrawStatus( cam ); + LISTMETHODARG( children, StgModel*, DrawStatusTree, cam ); PopCoords(); } -void StgModel::DrawStatus( StgCanvas* canvas ) +void StgModel::DrawStatus( StgCamera* cam ) { if( say_string ) { float yaw, pitch; - pitch = - canvas->current_camera->pitch(); - yaw = - canvas->current_camera->yaw(); + pitch = - cam->pitch(); + yaw = - cam->yaw(); float robotAngle = -rtod(pose.a); glPushMatrix(); @@ -1074,21 +1074,16 @@ if( stall ) { - DrawImage( TextureManager::getInstance()._stall_texture_id, canvas, 0.85 ); + DrawImage( TextureManager::getInstance()._stall_texture_id, cam, 0.85 ); } } -void StgModel::DrawImage( uint32_t texture_id, Stg::StgCanvas* canvas, float alpha ) +void StgModel::DrawImage( uint32_t texture_id, Stg::StgCamera* cam, float alpha ) { - float stheta = dtor( canvas->current_camera->pitch() ); - float sphi = - dtor( canvas->current_camera->yaw() ); - if( canvas->pCamOn == true ) { - sphi = atan2( - ( pose.x - canvas->current_camera->x() ) - , - ( pose.y - canvas->current_camera->y() ) - ); - } + float yaw, pitch; + pitch = - cam->pitch(); + yaw = - cam->yaw(); + float robotAngle = -rtod(pose.a); glEnable(GL_TEXTURE_2D); glBindTexture( GL_TEXTURE_2D, texture_id ); @@ -1098,14 +1093,10 @@ glTranslatef( 0.0, 0.0, 0.75 ); - //orient 2d sprites to face the camera (left-right) - float a = rtod( sphi + pose.a ); - glRotatef( -a, 0.0, 0.0, 1.0 ); + // rotate to face screen + glRotatef( robotAngle - yaw, 0,0,1 ); + glRotatef( -pitch - 90, 1,0,0 ); - //orient to face camera (from top-front) - a = rtod( stheta ); - glRotatef( -(90.0-a), 1.0, 0.0, 0.0 ); - //draw a square, with the textured image glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.25f, 0, -0.25f ); @@ -1222,18 +1213,18 @@ PopCoords(); } -void StgModel::DataVisualize( void ) +void StgModel::DataVisualize( StgCamera* cam ) { // do nothing } -void StgModel::DataVisualizeTree( void ) +void StgModel::DataVisualizeTree( StgCamera* cam ) { PushLocalCoords(); - DataVisualize(); // virtual function overridden by most model types + DataVisualize( cam ); // virtual function overridden by most model types // and draw the children - LISTMETHOD( children, StgModel*, DataVisualizeTree ); + LISTMETHODARG( children, StgModel*, DataVisualizeTree, cam ); PopCoords(); } Modified: code/stage/trunk/libstage/model_blinkenlight.cc =================================================================== --- code/stage/trunk/libstage/model_blinkenlight.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/model_blinkenlight.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -106,7 +106,7 @@ } -void StgModelBlinkenlight::DataVisualize() +void StgModelBlinkenlight::DataVisualize( StgCamera* cam ) { if( on && showBlinkenData ) { Modified: code/stage/trunk/libstage/model_blobfinder.cc =================================================================== --- code/stage/trunk/libstage/model_blobfinder.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/model_blobfinder.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -295,7 +295,7 @@ StgModel::Shutdown(); } -void StgModelBlobfinder::DataVisualize( void ) +void StgModelBlobfinder::DataVisualize( StgCamera* cam ) { if ( !showBlobData ) return; @@ -330,8 +330,16 @@ glRotatef( rtod(-gpose.a),0,0,1 ); // place the "screen" a little away from the robot - glTranslatef( -3.0, -2.0, 1.0 ); - + glTranslatef( -2.5, -1.5, 0.5 ); + + // rotate to face screen + float yaw, pitch; + pitch = - cam->pitch(); + yaw = - cam->yaw(); + float robotAngle = -rtod(pose.a); + glRotatef( robotAngle - yaw, 0,0,1 ); + glRotatef( -pitch, 1,0,0 ); + // convert blob pixels to meters scale - arbitrary glScalef( 0.025, 0.025, 1 ); Modified: code/stage/trunk/libstage/model_camera.cc =================================================================== --- code/stage/trunk/libstage/model_camera.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/model_camera.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -235,7 +235,7 @@ } //TODO create lines outlining camera frustrum, then iterate over each depth measurement and create a square -void StgModelCamera::DataVisualize( void ) +void StgModelCamera::DataVisualize( StgCamera* cam ) { if( _frame_data == NULL || !showCameraData ) Modified: code/stage/trunk/libstage/model_fiducial.cc =================================================================== --- code/stage/trunk/libstage/model_fiducial.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/model_fiducial.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -248,7 +248,7 @@ } -void StgModelFiducial::DataVisualize() +void StgModelFiducial::DataVisualize( StgCamera* cam ) { if ( !showFiducialData ) return; Modified: code/stage/trunk/libstage/model_laser.cc =================================================================== --- code/stage/trunk/libstage/model_laser.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/model_laser.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -301,7 +301,7 @@ } -void StgModelLaser::DataVisualize( void ) +void StgModelLaser::DataVisualize( StgCamera* cam ) { if( ! (samples && sample_count) ) return; Modified: code/stage/trunk/libstage/model_ranger.cc =================================================================== --- code/stage/trunk/libstage/model_ranger.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/model_ranger.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -321,7 +321,7 @@ puts( " ]" ); } -void StgModelRanger::DataVisualize( void ) +void StgModelRanger::DataVisualize( StgCamera* cam ) { if( ! (samples && sensors && sensor_count) ) return; Modified: code/stage/trunk/libstage/stage.hh =================================================================== --- code/stage/trunk/libstage/stage.hh 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstage/stage.hh 2008-07-25 23:17:00 UTC (rev 6929) @@ -79,6 +79,7 @@ class StgModel; class FileManager; class OptionsDlg; + class StgCamera; /** Initialize the Stage library */ void Init( int* argc, char** argv[] ); @@ -1296,8 +1297,8 @@ void DrawBlocksTree(); virtual void DrawBlocks(); - virtual void DrawStatus( StgCanvas* canvas ); - void DrawStatusTree( StgCanvas* canvas ); + virtual void DrawStatus( StgCamera* cam ); + void DrawStatusTree( StgCamera* cam ); void DrawOriginTree(); void DrawOrigin(); @@ -1306,7 +1307,7 @@ void PopCoords(); ///Draw the image stored in texture_id above the model - void DrawImage( uint32_t texture_id, Stg::StgCanvas* canvas, float alpha ); + void DrawImage( uint32_t texture_id, Stg::StgCamera* cam, float alpha ); // static wrapper for DrawBlocks() @@ -1315,7 +1316,7 @@ void* arg ); virtual void DrawPicker(); - virtual void DataVisualize(); + virtual void DataVisualize( StgCamera* cam ); virtual void DrawSelected(void); @@ -1348,7 +1349,7 @@ stg_model_type_t type; static const char* typestr; - void DataVisualizeTree(); + void DataVisualizeTree( StgCamera* cam ); virtual void PushColor( stg_color_t col ) { world->PushColor( col ); } @@ -2071,7 +2072,7 @@ static Option showBlobData; - virtual void DataVisualize(); + virtual void DataVisualize( StgCamera* cam ); public: unsigned int scan_width; @@ -2203,7 +2204,7 @@ virtual void Update(); virtual void Load(); virtual void Print( char* prefix ); - virtual void DataVisualize(); + virtual void DataVisualize( StgCamera* cam ); uint32_t GetSampleCount(){ return sample_count; } @@ -2352,10 +2353,10 @@ // static wrapper function can be used as a function pointer static int AddModelIfVisibleStatic( StgModel* him, StgModelFiducial* me ) - { if( him != me ) me->AddModelIfVisible( him ); }; + { if( him != me ) me->AddModelIfVisible( him ); return 0; } virtual void Update(); - virtual void DataVisualize(); + virtual void DataVisualize( StgCamera* cam ); GArray* data; @@ -2403,7 +2404,7 @@ virtual void Startup(); virtual void Shutdown(); virtual void Update(); - virtual void DataVisualize(); + virtual void DataVisualize( StgCamera* cam ); public: static const char* typestr; @@ -2446,7 +2447,7 @@ virtual void Load(); virtual void Update(); - virtual void DataVisualize(); + virtual void DataVisualize( StgCamera* cam ); }; // CAMERA MODEL ---------------------------------------------------- @@ -2499,7 +2500,7 @@ //virtual void Draw( uint32_t flags, StgCanvas* canvas ); ///Draw camera visualization - virtual void DataVisualize(); + virtual void DataVisualize( StgCamera* cam ); ///width of captured image inline int getWidth( void ) const { return _width; } Modified: code/stage/trunk/libstageplugin/p_driver.cc =================================================================== --- code/stage/trunk/libstageplugin/p_driver.cc 2008-07-25 21:53:39 UTC (rev 6928) +++ code/stage/trunk/libstageplugin/p_driver.cc 2008-07-25 23:17:00 UTC (rev 6929) @@ -333,8 +333,21 @@ case PLAYER_SPEECH_CODE: ifsrc = new InterfaceSpeech( player_addr, this, cf, section ); - break; + break; + // case PLAYER_CAMERA_CODE: + // ifsrc = new InterfaceCamera( player_addr, this, cf, section ); + // break; + + // case PLAYER_GRAPHICS2D_CODE: + // ifsrc = new InterfaceGraphics2d( player_addr, this, cf, section ); + // break; + + // case PLAYER_GRAPHICS3D_CODE: + // ifsrc = new InterfaceGraphics3d( player_addr, this, cf, section ); + // break; + + // case PLAYER_LOCALIZE_CODE: // ifsrc = new InterfaceLocalize( player_addr, this, cf, section ); @@ -343,15 +356,7 @@ // case PLAYER_MAP_CODE: // ifsrc = new InterfaceMap( player_addr, this, cf, section ); // break; - -// case PLAYER_GRAPHICS2D_CODE: -// ifsrc = new InterfaceGraphics2d( player_addr, this, cf, section ); -// break; - -// case PLAYER_GRAPHICS3D_CODE: - // ifsrc = new InterfaceGraphics3d( player_addr, this, cf, section ); - //break; - + // case PLAYER_GRIPPER_CODE: // ifsrc = new InterfaceGripper( player_addr, this, cf, section ); // break; @@ -359,10 +364,6 @@ // case PLAYER_WIFI_CODE: // ifsrc = new InterfaceWifi( player_addr, this, cf, section ); // break; - -// case PLAYER_CAMERA_CODE: -// ifsrc = new InterfaceCamera( player_addr, this, cf, section ); -// break; // case PLAYER_POWER_CODE: // ifsrc = new InterfacePower( player_addr, this, cf, section ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit