#include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <sys/time.h> #include "ik.h" #include "servo.h" #include "spi.h" int get_time(); static bot idle_position = { {0,0,-130}, // body position {0,0,0}, // body rotation { // leg positions {{ 166, 110, 0},}, // leg 0 {{ 0, 160, 0},}, // leg 1 {{-166, 110, 0},}, // ... {{-166,-110, 0},}, {{ 0,-160, 0},}, {{ 166,-110, 0},} } }; int main(int argc, char **argv) { int i,j; int start_time; int end_time; spi_open(0,0); ik(&idle_position); for(i=0;i<24;i++) servo_pwm[i]=0; for(i=0;i<NUM_LEGS;i++) { printf("leg %d\n",i); for(j=0;j<3;j++) { printf(" a[%d]=%.3f (%.3f deg)\n",j,idle_position.leg[i].ik_angle[j],idle_position.leg[i].ik_angle[j]*180/M_PI); if(!isnan(idle_position.leg[i].ik_angle[j])) { getchar(); servo_pwm[i*3+j]=(idle_position.leg[i].ik_angle[j]*8.5*1800/M_PI)+servo_offsets[i*3+j]; spi_update_servos(); } } } printf("benchmarking..."); start_time=get_time(); for(i=0;i<1000;i++) { ik(&idle_position); } end_time=get_time(); printf(" %d\n",end_time-start_time); spi_close(); } int get_time() { struct timeval t; gettimeofday(&t,NULL); return (t.tv_sec*1000000+t.tv_usec); }