机器人车旋转特定角度的方法二

上一篇文章介绍了旋转的特定角度,想尝试在没有任何障碍物的广场中旋转角度的最优方向,用到概率仿真的算法。

得到最优旋转方向。


#include <time.h>
#include <sys/time.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <ctype.h>

#include <pthread.h>
#include <sys/types.h>
#include <sys/wait.h>

#define MIN(a,b) ((a)<(b))?(a):(b)
int main(int* arc,int*arg[])
{

    if(arc < 2){
      printf("usage:app startdegree rotatedegree \n");
      exit(1);
    }

    int startHeading = atoi(arg[1]);
    int degrees = atoi(arg[2]);

    int targetHeading = startHeading + degrees;
    if (targetHeading < 0){
    targetHeading += 360;

    }
    if (targetHeading > 359){
       targetHeading -=360;

    }

    char flg =0;
    int heading = startHeading;
    char done =0;
     int stepl =0,stepr=0;
    do
    {

         heading --;
         if(heading < 0)
             heading =359;
          stepl ++;
    // Backup method - use the magnetometer to see what direction we're facing.  Stop turning when we reach the target heading.
    int currentHeading = (int)heading;//headingFilter.GetValue();
 // printf("Rotating: currentHeading = %d   targetHeading = %d\n", currentHeading, targetHeading);
    if ((currentHeading == targetHeading))
    {
        done = 1;
    }

    }
    while (!done);
    printf("turn left step :%d \n",stepl );
    heading = startHeading;
    done =0;
  do {
         heading ++;
         if(heading > 360)
             heading = 0;
         stepr ++;
    // Backup method - use the magnetometer to see what direction we're facing.  Stop turning when we reach the target heading.
    int currentHeading = (int)heading;//headingFilter.GetValue();
    //printf("Rotating: currentHeading = %d   targetHeading = %d\n", currentHeading, targetHeading);
    if ((currentHeading == targetHeading))
    {
        done = 1;
    }

    }
    while (!done);
    printf("turn right step :%d \n",stepr);
    printf("the best turn way:%d \n",MIN(stepl,stepr));
    return 0;
}

@lid-VirtualBox:~/share/car/rotate$ ./main 300 330

turn left step :30 

turn right step :331 

the best turn way:30 



sitemap