Hello everyone,
 I am a student in shanghai jiaotong university,these days I am studying
player stage,Here i have some problems.

for fast running ,I programed in stage ,not used proxy in player.
I have used blobfinder to test some rubbishes , in world file is:
        # create another robot
 pioneer2dx
 (
  name "r1"
  color "red"

  pose [-5.5 -3.5 0 208]
  sicklaser() 
 ctrl "src/imba.so"
# report error-free position in world coordinates
  localization "gps"
  localization_origin [ 0 0 0 0 ]

 blobfinder( 
        colors_count 2 
        colors [ "green" "purple"  ]
                alwayson 1
                range 4.0
                fov 60
    )
          )


but when i run my stage program by "stage imbar.wold", the image box with
the robot can see the green color,that means our blobfinder detected a
rubbish but the program output is not.the program is:(in .cc file )

int BlobfinderUpdate( Model* mod, iRobot* robot );
#define MAXROBOT 1000
iRobot* robotRef[MAXROBOT];
//Stage calls this when the model starts up
extern "C" int Init( Model* mod, CtrlArgs* args )
{
        iRobot* robot = new iRobot(mod);
        robotRef[robot->id] = robot;
        robot->pos->AddUpdateCallback( (stg_model_callback_t)PositionUpdate, 
robot
);
        robot->laser->AddUpdateCallback( (stg_model_callback_t)LaserUpdate, 
robot
);
        robot->blob->AddUpdateCallback( (stg_model_callback_t)BlobfinderUpdate,
robot);

        robot->laser->Subscribe(); // starts the laser updates
        robot->pos->Subscribe(); // starts the position updates
        robot->blob->Subscribe();//starts the blobfinder updates
        
        return 0; //ok
}
int BlobfinderUpdate(Model* mod,iRobot* robot)
{
        std::cout<<"blobfiner"<<std::endl;
    uint32_t bcount = 10;
        std::cout<<"befor test is blob count is:"<<bcount<<std::endl;//out put
initial count
    ModelBlobfinder::Blob* blobtemp = robot->blob->GetBlobs(&bcount);//?have
problem?
        std::cout<<"after test is blob count is:"<<bcount<<std::endl;
        if(bcount)
    {
                                
            std::cout<<"blob see "<<bcount<<"blobs"<<std::endl;
            std::cout<<"going to clear the RUBBISH"<<std::endl;
            robot->pos->SetSpeed(0,0,0);
         }     
        return 0;
}


so after programed  "ModelBlobfinder::Blob* blobtemp =
robot->blob->GetBlobs(&bcount); "
the bcount should changed form 10 (initial data) to 1 because detected a
green rubbish.
but the proaram alway outout like this:

blobfiner
befor test is blob count is:10
after test is blob count is:0


the problem trouble me some days ,really need you help ,thank you very much
.

-- 
View this message in context: 
http://old.nabble.com/something-about-Blobfinder-use-in-stage-tp27026928p27026928.html
Sent from the playerstage-gazebo mailing list archive at Nabble.com.


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Playerstage-gazebo mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-gazebo

Reply via email to