Exemplo n.º 1
0
void CinematicMap::SetLaser(LaserData laserdata)
{
    
    pointsCloud= laserdata.getPoints();
    angleCloud = laserdata.getAngles();
    rangeCloud = laserdata.getRanges();

    Obstacle();
    
}
Exemplo n.º 2
0
void Vision2D::SetLaser(LaserData laserdata) {
    //1.01229097=58° -> Field of View (Horizontal, Vertical, Diagonal) = 58° H, 45° V, 70° D
    //1.01229097/2=0.506145485   
    //resolution appears to be 1200x960 pixels at a framerate of 30Hz
    //Deberia ser 1200 puntos en horizontal pero no deja mas de 541 puntos, src/data/laserdata.h mal¿?
    //Operation range = 0.8m - 3.5m  //dejamos el por defecto, 10 metros
    //numstep=1.01229097/541=0.00187115;

    //laserdata.setProperties() //NO FUNCIONA!!!!!
    pointLaser = laserdata.getPoints();
    anglelaser = laserdata.getAngles();
    range = laserdata.getRanges();
    startangle = laserdata.getStartAngle();
    steplaser = laserdata.getStep();

    //MANUALMENTE,el angulo +-0.50614 va del index 212-328, el rango que sea 8metros
    //DE -PI/2 A +PI/2 (index 89-451, 451-89+1=363, rango=8metros.
    //-pi/3 a +pi/3 (index 150-390)
    int idxini=150;
    int idxFin=390;
    int idxRango=idxFin-idxini+1;
    
    pointKinect2D.clear();
    pointKinect2D.resize(idxRango);
    rangeKinect2D.clear();
    rangeKinect2D.resize(idxRango);
    angleKinect2D.clear();
    angleKinect2D.resize(idxRango);
    int j = 0;
    for (int i = idxini; i <= idxFin; i++) {
        pointKinect2D[j] = pointLaser[i];
        rangeKinect2D[j] = range[i];
        angleKinect2D[j] = anglelaser[i];
        j++;
    }
    
    //Calculo index objetos
    indexObject.clear();
    rangeObject.clear();
    for (int i = 0; i < pointKinect2D.size(); i++) {
        if (rangeKinect2D[i] < 8.0) { //Rango en que la Kinect detecta obstaculos
            indexObject.push_back(i); //Guardamos el indice de los objetos, que junto a el vector points
            rangeObject.push_back(rangeKinect2D[i]); //Sabremos donde esta el objeto (Haciendo la correspondiendte transformacion)
        }
    }
    
    Object();

}
Exemplo n.º 3
0
void CinematicMap::SetLaser(LaserData laserdata)
{
    vector<Vector2D> points2D=laserdata.getPoints();
    double zpos=0.4f;   //high laser2D
    pointsCloud.resize(points2D.size());
    for(int i=0;i<points2D.size();i++)
    {
        pointsCloud[i]=Vector3D(points2D[i].x,points2D[i].y,zpos);
    }
    angleCloud = laserdata.getAngles();
    rangeCloud = laserdata.getRanges();

    Obstacle();
    
}
Exemplo n.º 4
0
int main(int argc, char** argv)
{
	mrcoreInit();
	AriaBase robot(argc,argv);
	WheeledBaseServer server(&robot,"base");
	LaserSensorServer laserServer(&robot,"laser");
	
	server.init(13000,1,true);
	laserServer.init(13001,1,true); 
	while(1)
	{
		Sleep(500);
		robot.watchdog();
		LaserData data;
		robot.getData(data);
		cout<<"MEdidas: "<<data.getRanges().size()<<endl;
		if(data.getRanges().size()>0)
			cout<<"Medida: "<<data.getRanges()[data.getRanges().size()/2]<<endl;
	}	

	server.close();
	LOG_INFO("End of server");
	return 1;
}
Exemplo n.º 5
0
void Vision2D::SetLaser(LaserData laserdata) {
    //1.01229097=58° -> Field of View (Horizontal, Vertical, Diagonal) = 58° H, 45° V, 70° D
    //1.01229097/2=0.506145485   
    //resolution appears to be 1200x960 pixels at a framerate of 30Hz = 1200 puntos en horizontal
    //Operation range = 0.8m - 3.5m  //Demasiado poco, dejamos a 8 metros.
    //numstep=1.01229097/1200

    pointLaser = laserdata.getPoints();
    anglelaser = laserdata.getAngles();
    range = laserdata.getRanges();
    startangle = laserdata.getStartAngle();
    steplaser = laserdata.getStep();

    //MANUALMENTE,el angulo +-0.50614 va del index 212-328, el rango que sea 8metros
    //DE -PI/2 A +PI/2 (index 89-451,  rango=8metros.
    int idxini=89;
    int idxFin=451;
    int idxRango=idxFin-idxini+1;
    
    //Añadir puntos al rango
    pointKinect2D.clear();
    pointKinect2D.resize(idxRango);
    rangeKinect2D.clear();
    rangeKinect2D.resize(idxRango);
    angleKinect2D.clear();
    angleKinect2D.resize(idxRango);
    int j = 0;
    for (int i = idxini; i <= idxFin; i++) {
        pointKinect2D[j] = pointLaser[i];
        rangeKinect2D[j] = range[i];
        angleKinect2D[j] = anglelaser[i];
        j++;
    }
    
    //Para el frontal los puntos de -pi/6 a pi/6, es decir, angulo -0.5236 a 0.5236
    //Puntos 210-330, 330-210+1=121
    //-20º a 20º, angulo 0.34906585, puntos 230-310
    //-pi/3 a pi/3, angulo 1,04719, 150-390
    int idxFrontini=210;
    int idxFrontfin=330;
    int idxFrontRan=idxFrontfin-idxFrontini+1;
    
    //Añadir puntos para la frontal
    pointKinect2DFront.clear();
    pointKinect2DFront.resize(idxFrontRan);
    rangeKinect2DFront.clear();
    rangeKinect2DFront.resize(idxFrontRan);
    angleKinect2DFront.clear();
    angleKinect2DFront.resize(idxFrontRan);
    int jj = 0;
    for (int i = idxFrontini; i <= idxFrontfin; i++) {
        pointKinect2DFront[jj] = pointLaser[i];
        rangeKinect2DFront[jj] = range[i];
        angleKinect2DFront[jj] = anglelaser[i];
        jj++;
    }
    
    //Calculo index objetos
    indexObject.clear();
    rangeObject.clear();
    for (int i = 0; i < pointKinect2D.size(); i++) {
        if (rangeKinect2D[i] < 8.0) { //Rango en que la Kinect detecta obstaculos
            indexObject.push_back(i); //Guardamos el indice de los objetos, que junto a el vector points
            rangeObject.push_back(rangeKinect2D[i]); //Sabremos donde esta el objeto (Haciendo la correspondiendte transformacion)
        }
    }
    
    Object();
    
    //Calculo index objetos Frontal
    indexObjectFront.clear();
    rangeObjectFront.clear();
    for (int i = 0; i < pointKinect2DFront.size(); i++) {
        if (rangeKinect2DFront[i] < 8.0) { //Rango en que la Kinect detecta obstaculos
            indexObjectFront.push_back(i); //Guardamos el indice de los objetos, que junto a el vector points
            rangeObjectFront.push_back(rangeKinect2DFront[i]); //Sabremos donde esta el objeto (Haciendo la correspondiendte transformacion)
        }
    }
    
    ObjectFrontal();

}