Dear Apek, Please submit a bug report at http://www.cyberbotics.com/bug and describe precisely what you mean by "the screen turns all distorted".
Best regards, -Olivier On 10/11/10 3:19 AM, Apek Cheeky wrote: > Hi, > > My code here seems to be working but the ground sensor area still does > not seem to be following the line. Can anybody help? I'm using webots. > I tried doing simulation but the screen turns all distorted so i'm not > able to see what its doing. > > > #include <webots/robot.h> > #include <webots/differential_wheels.h> > #include <webots/camera.h> > #include <math.h> > #include <stdlib.h> > #include <stdio.h> > #include <webots/led.h> > #include <string.h> > #include <time.h> > #include <webots/distance_sensor.h> > > #define TIME_STEP_CAM 64 > #define TIME_STEP 64 > #define TRUE 1 > #define FALSE 0 > #define LEFT 0 > #define RIGHT 1 > #define WHITE 0 > #define BLACK 1 > > #define NB_LEDS 10 > #define NB_DIST_SENS 8 > #define PS_RIGHT_10 0 > #define PS_RIGHT_45 1 > #define PS_RIGHT_90 2 > #define PS_RIGHT_REAR 3 > #define PS_LEFT_REAR 4 > #define PS_LEFT_90 5 > #define PS_LEFT_45 6 > #define PS_LEFT_10 7 > #define NB_FLOOR_SENS 3 > #define FS_WHITE 900 > #define FS_LEFT 0 > #define FS_CENTER 1 > #define FS_RIGHT 2 > WbDeviceTag cam; > WbDeviceTag ps[NB_DIST_SENS]; > WbDeviceTag fs[NB_FLOOR_SENS]; > WbDeviceTag led[NB_LEDS]; > > > int speed[2]={0,0}; > int ps_value[NB_DIST_SENS]={0,0,0,0,0,0,0,0}; > const int PS_OFFSET_REALITY[NB_DIST_SENS] = > {480,170,320,500,600,680,210,640}; > unsigned short fs_value[NB_FLOOR_SENS]={0,0,0}; > unsigned short width,height; > int i; > int shapesize=0; > int delay=0; > int shapechecking,whitechecking; > int Itriangle,square,triangle; > int stop=0; > > void Sensor_check() > { > for(i=0;i<NB_FLOOR_SENS;i++) > { > fs_value[i]=(int)wb_distance_sensor_get_value(fs[i]); > } > for(i=0;i<NB_DIST_SENS;i++) > { > ps_value[i]=(int)wb_distance_sensor_get_value(ps[i]); > } > } > void UTurn() > { > while((int)fs_value[0]>330) > { > speed[RIGHT]=400;//rotate right > speed[LEFT]=-400; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > Sensor_check(); > } > } > void Offled() > { > for(i=0;i<9;i++) > { > wb_led_set(led[i],FALSE); > } > } > > void MoveObstacle() > { > Sensor_check(); > > while ((int)ps_value[0]<2000&&(int)ps_value[7]<2000) > { > Sensor_check(); > speed[RIGHT]=300; > speed[LEFT]=300; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > } > > delay=10000; > > while (delay!=0) > { > wb_led_set(led[0],TRUE); > wb_led_set(led[7],TRUE); > wb_led_set(led[6],TRUE); > speed[RIGHT]=450; > speed[LEFT]=-450; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > delay--; > } > > Offled(); > > delay=12000; > while (delay!=0) > { > wb_led_set(led[0],TRUE); > wb_led_set(led[8],TRUE); > speed[RIGHT]=650; > speed[LEFT]=650; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > delay--; > } > > Offled(); > > delay=12000; > while (delay!=0) > { > wb_led_set(led[5],TRUE); > wb_led_set(led[4],TRUE); > speed[RIGHT]=-650; > speed[LEFT]=-650; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > delay--; > > } > > Offled(); > wb_led_set(led[0],TRUE); > wb_led_set(led[1],TRUE); > wb_led_set(led[2],TRUE); > speed[RIGHT]=-300; > speed[LEFT]=-300; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > } > > void black_line() > { > > Sensor_check(); > if((int)fs_value[2]>330) > { > speed[RIGHT]=-180;//rotate right > speed[LEFT]=100; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > } > else if((int)fs_value[0]>330) > { > speed[RIGHT]=100;// rotate left > speed[LEFT]=-180; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > } > else if((int)fs_value[1]>330) > { > speed[RIGHT]=400;// forward > speed[LEFT]=400; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > } > > } > void movewall() > { > > speed[RIGHT]=400; > speed[LEFT]=400; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > > Sensor_check(); > while((int)ps_value[0]>200 || (int)ps_value[7]>200) > { > Sensor_check(); > black_line(); > } > > > } > > void shape() > { > if(shapesize==0) > { > shapesize=shapechecking; > } > else if(shapesize<shapechecking&&whitechecking>3) > { > triangle++; > } > else if(shapesize>shapechecking&&whitechecking>3) > { > Itriangle++; > } > else if(shapesize==shapechecking&&whitechecking>3) > { > square++; > } > shapesize=shapechecking; > > } > void shapecompare() > { > if(triangle>square&&triangle>Itriangle)//triangle > { > movewall(); > } > else if(triangle<square&&square>Itriangle)//square > { > MoveObstacle(); > } > else if(Itriangle>triangle&&square<Itriangle)// Itriangle > { > UTurn(); > } > > Offled(); > triangle=0; > square=0; > Itriangle=0; > shapesize=0; > whitechecking=0; > } > > void CheckCamera() > { > int reg1,x,y; > const unsigned char *image; > cam = wb_robot_get_device("camera"); > wb_camera_enable(cam,TIME_STEP_CAM); > width = wb_camera_get_width(cam); > height = wb_camera_get_height(cam); > image = wb_camera_get_image(cam); > > for (y=38;y>0;y--) > { > for (x=0;x<width;x++) > { > reg1 = wb_camera_image_get_red(image,width,x,y); > if (reg1<50) > { > shapechecking=x; > whitechecking=x-1; > shape(); > y--; > x=0; > } > } > } > } > > > int main() > { > wb_robot_init(); > char light[]="led0"; > for(i=0;i<NB_LEDS;i++) > { > led[i]=wb_robot_get_device(light); > light[3]++; > } > > char named[]="fs0"; > for (i = 0; i < NB_FLOOR_SENS; i++) > { > > fs[i] = wb_robot_get_device(named); /* floor sensors */ > wb_distance_sensor_enable(fs[i],TIME_STEP); > named[2]++; > } > > char textPS[]="ps0"; > for(i=0;i<NB_DIST_SENS;i++) > { > ps[i]=wb_robot_get_device(textPS); > wb_distance_sensor_enable(ps[i],TIME_STEP); > textPS[2]++; > } > > //main loop > while(stop==0) > { > > Sensor_check(); > > if((int)ps_value[0]>200||(int)ps_value[7]>200) > { > speed[RIGHT]=0; > speed[LEFT]=0; > wb_differential_wheels_set_speed(speed[LEFT],speed[RIGHT]); > CheckCamera(); > shapecompare(); > } > else > { > black_line(); > } > } > /* Enter here exit cleanup code */ > > /* Necessary to cleanup webots stuff */ > wb_robot_cleanup(); > > return 0; > } > > > > _______________________________________________ > E-puck-user mailing list > E-puck-user@gna.org > https://mail.gna.org/listinfo/e-puck-user
_______________________________________________ E-puck-user mailing list E-puck-user@gna.org https://mail.gna.org/listinfo/e-puck-user