Localization

Dependencies:   BNO055_fusion mbed

main.cpp

Committer:
12104404
Date:
2016-03-01
Revision:
0:96d6eb224379
Child:
1:8966a48ce8d5

File content as of revision 0:96d6eb224379:

#include "LOCALIZE.h"

#define RANGE_ADDR  0x04
#define FRAME_H     180
#define FRAME_W     150
#define RANGE_X_OFF 7
#define RANGE_Y_OFF 6
#define RANGE_ERROR 14
#define RANGE_DIFF  10
#define RANGE_JMPS  4

//Serial pc(p13, p14);
Serial pc(USBTX, USBRX);

I2C i2c1(p28, p27);
I2C i2c2(p9, p10);
LOCALIZE loc(i2c1, i2c2, p26);
LOCALIZE_xya xya;

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

//BNO055_ID_INF_TypeDef bno055_id_inf;
//BNO055_EULER_TypeDef  euler;
//BNO055_GRAVITY_TypeDef gravity;
//BNO055_LIN_ACC_TypeDef accel;
int range_px=-1;
int range_py=-1;
int range_x=-1;
int range_y=-1;
int p_x=-1;
int p_y=-1;
int p_angle=0;
int err=-1;
int range_jmps_y=RANGE_JMPS;
int range_jmps_x=RANGE_JMPS;

//void x_y()
//{
//    err=0;
//    if(p_angle<RANGE_ERROR || p_angle>360-RANGE_ERROR) {
//        p_x=range_x;
//        p_y=range_y;
//    } else if(abs(p_angle-90)<RANGE_ERROR) {
//        p_x=range_y;
//        p_y=FRAME_H-range_x-RANGE_X_OFF;
//    } else if(abs(p_angle-180)<RANGE_ERROR) {
//        p_x=FRAME_W-range_x-RANGE_X_OFF;
//        p_y=FRAME_H-range_y-RANGE_Y_OFF;
//    } else if(abs(p_angle-270)<RANGE_ERROR) {
//        p_x=FRAME_W-range_y-RANGE_Y_OFF;
//        p_y=range_x;
//    } else {
//        err=-1;
//        p_x=range_x;
//        p_y=range_y;
//    }
//    if(p_x>=FRAME_W)
//        p_x=FRAME_W;
//    if(p_y>=FRAME_H)
//        p_y=FRAME_H;
//}
//
//void jump()
//{
//    if(abs(range_x-range_px)<RANGE_DIFF || range_jmps_x>RANGE_JMPS) {
//        if(range_x>0) {
//            range_px=range_x;
//        } else {
//            range_x=range_px;
//        }
//        range_jmps_x=0;
//    } else {
//        range_jmps_x++;
//    }
//
//    if(abs(range_y-range_py)<RANGE_DIFF || range_jmps_y>RANGE_JMPS) {
//        if(range_y>0) {
//            range_py=range_y;
//        } else {
//            range_y=range_py;
//        }
//        range_jmps_y=0;
//    } else {
//        range_jmps_y++;
//    }
//}

int main()
{
    pc.baud(9600);
    pc.printf("IMU INIT %d\n",loc.init());
    while(1) {
        loc.get_angle(&xya);
        pc.printf("Angle: %d\n",xya.a);
    }
    /*if (imu.chip_ready()==0) {
        //pc.printf("BNO055 is NOT available!\n");
    }*/
    //imu.set_mounting_position(MT_P0);
    //imu.change_fusion_mode(MODE_IMU);
    //p_x=location.x;
//    while(1) {
//        char data[]= {0,0,0};
//        i2c1.read(RANGE_ADDR<<1, data, 3);
//        wait(0.05);
//        range_y=data[1];
//        i2c2.read(RANGE_ADDR<<1, data, 3);
//        wait(0.05);
//        //imu.get_linear_accel(&accel);
//        range_x=data[1];
//        //p_angle=get_angle();
//        //jump();
//        //x_y();
//        //pc.printf("X: %3d\tY: %3d\tP: %3d\tERROR:%3d\n",p_x,p_y,p_angle,err);
//        pc.printf("%c%c%c%c\n",p_x,p_y,p_angle/10,p_angle%10);
//        wait(0.5);
//    }
}