solaESKF_EIGEN

Dependencies:   mbed LPS25HB_I2C LSM9DS1 PIDcontroller LoopTicker GPSUBX_UART_Eigen SBUS_without_mainfile MedianFilter Eigen UsaPack solaESKF_Eigen Vector3 CalibrateMagneto FastPWM

setup.cpp

Committer:
NaotoMorita
Date:
22 months ago
Revision:
144:b3a713b4f1c4
Parent:
143:53808e4e684c

File content as of revision 144:b3a713b4f1c4:

#include "global.hpp"
using namespace std;

void setup()
{
    //sd.baud(115200);
    //sd.printf("\r\nFlight Start\r\n");
    //twelite.baud(38400);
    twelite.serial.printf("\r\nTelemetory Start\r\n");
    uint16_t reg = lsm.begin(lsm.G_SCALE_245DPS, lsm.A_SCALE_8G);
    //printf("%x\n", reg);
    if (!lps.init()){
        twelite.serial.printf("Failed to autodetect pressure sensor!\r\n");
        while (1);
    }
    lps.enableDefault();
    gps.Attach();
    wait_ms(100);
    
    SensorAlignmentAG << 1.0f, 0.0f, 0.0f,
                         0.0f, 1.0f, 0.0f,
                         0.0f, 0.0f, -1.0f;
    SensorAlignmentMAG << -1.0f, 0.0f, 0.0f,
                           0.0f, 1.0f, 0.0f,
                           0.0f, 0.0f, -1.0f; 
    float magMin[3] =  {-392.590332, -85.194908, -155.781174};
    float magMax[3] =  {182.602386, 530.811523, 365.834625};
    magCalibrator.setExtremes(magMin,magMax);
    
    pitchPID.setSetPoint(0.0);
    pitchPID.setBias(0.0);
    pitchPID.setOutputLimits(-1.0,1.0);
    pitchPID.setInputLimits(-M_PI,M_PI);
    
    pitchratePID.setSetPoint(0.0); 
    pitchratePID.setBias(0.0); 
    pitchratePID.setOutputLimits(-1.0,1.0);
    pitchratePID.setInputLimits(-M_PI,M_PI);
    
    rollPID.setSetPoint(0.0); 
    rollPID.setBias(0.0); 
    rollPID.setOutputLimits(-1.0,1.0);
    rollPID.setInputLimits(-M_PI,M_PI); 
     
    rollratePID.setSetPoint(0.0);
    rollratePID.setBias(0.0);
    rollratePID.setOutputLimits(-1.0,1.0);
    rollratePID.setInputLimits(-M_PI,M_PI);
    
    yawratePID.setSetPoint(0.0); 
    yawratePID.setBias(0.0); 
    yawratePID.setOutputLimits(-1.0,1.0);
    yawratePID.setInputLimits(-M_PI,M_PI);
    
    vxPID.setSetPoint(0.0f); 
    vxPID.setBias(0.0f); 
    vxPID.setOutputLimits(-1.0f,1.0);
    vxPID.setInputLimits(-5.0f,5.0f);
    
    vyPID.setSetPoint(0.0f); 
    vyPID.setBias(0.0f); 
    vyPID.setOutputLimits(-1.0f,1.0);
    vyPID.setInputLimits(-5.0f,5.0f);
    
    vzPID.setSetPoint(0.0f); 
    vzPID.setBias(0.0f); 
    vzPID.setOutputLimits(-1.0f,1.0);
    vzPID.setInputLimits(-1.0f,1.0f);
    
    
    motor1.period_us(15000.0);
    motor2.period_us(15000.0);
    motor3.period_us(15000.0);
    motor4.period_us(15000.0);
    motor5.period_us(15000.0);
    motor6.period_us(15000.0);

    motor1.pulsewidth_us(motorPwmMin);
    motor2.pulsewidth_us(motorPwmMin);
    motor3.pulsewidth_us(motorPwmMin);
    motor4.pulsewidth_us(motorPwmMin);
    motor5.pulsewidth_us(motorPwmMin);
    motor6.pulsewidth_us(motorPwmMin);
    
}

void calibrate()
{
    while(1)
    {
        wait(1000);
    }
}