solaESKF_EIGEN

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

servo.cpp

Committer:
cocorlow
Date:
2021-12-06
Revision:
139:b378528c05f2
Parent:
137:240588882ae2
Child:
140:53dbdb207542

File content as of revision 139:b378528c05f2:

//#include "global.hpp"
//
//// 割り込まれた時点での出力(computeの結果)を返す関数
//void calcServoOut()
//{
//    // sbusデータの読み込み
//    for (int i =0 ; i < 16;i ++){
//        rc[i] = 0.65f * mapfloat(float(sbus.getData(i)),368,1680,-1,1) + (1.0f - 0.65f) * rc[i]; // mapped input
//    }
//
//    
//    //姿勢角の所得
//    euler = eskf.computeAngles();
//    rpy.x = euler(1,1);
//    rpy.y = euler(2,1);
//    rpy.z = euler(3,1);
//
//    //PIDへの状態量のセット
//    pitchPID.setProcessValue(rpy.y);
//    pitchratePID.setProcessValue(gyro.y);
//    rollPID.setProcessValue(rpy.x);
//    rollratePID.setProcessValue(gyro.x);
//    
//    dT = rc[2];
//    
//    if (rc[4]>-0.3f && rc[6] < -0.3f)
//    {
//        //level_flight();
//        //point_guide();
//        climb();
//        rollPID.setSetPoint(roll_obj);
//        pitchPID.setSetPoint(pitch_obj);
//        dT += dT_obj;
//    }else{
//        rollPID.setSetPoint(0.0f);
//        pitchPID.setSetPoint(0.0f);
//    }
//    
//    //舵角計算
//    if(rc[4]<-0.3f){
//        de = (rc[0]-rc[1])/2.0f;
//        da = (rc[0]+rc[1])/2.0f;
//    }else{
//        de = (pitchPID.compute()+pitchratePID.compute())+(rc[0]-rc[1])/2.0f;
//        da = (rollPID.compute()+rollratePID.compute())+(rc[0]+rc[1])/2.0f;
//    }
//    
//    scaledServoOut[0]=de+da;
//    scaledServoOut[1]=-de+da;
//    scaledMotorOut[0]= dT;
//    
//    float LP_servo = 0.2;
//    float LP_motor = 0.2;
//    for(int i = 0; i < sizeof(servoOut)/sizeof(servoOut[0]); i++)
//    {
//        servoOut[i] = LP_servo*(mapfloat(scaledServoOut[i],-1,1,servoPwmMin,servoPwmMax))+(1.0-LP_servo)*servoOut[i];
//        if(servoOut[i]<servoPwmMin)
//        {
//            servoOut[i] = servoPwmMin;
//        }
//        if(servoOut[i]>servoPwmMax)
//        {
//            servoOut[i] = servoPwmMax;
//        }
//    }
//    
//    for(int i = 0;i<sizeof(motorOut)/sizeof(motorOut[0]) ;i++){
//        motorOut[i] = LP_motor*(mapfloat(scaledMotorOut[i],-1,1,motorPwmMin,motorPwmMax))+(1.0-LP_motor)*motorOut[i];
//        if(motorOut[i]<motorPwmMin) {
//            motorOut[i] = motorPwmMin;
//        };
//        if(motorOut[i]>motorPwmMax) {
//            motorOut[i] = motorPwmMax;
//        };
//    }
//    servoRight.pulsewidth_us(servoOut[0]);
//    servoLeft.pulsewidth_us(servoOut[1]); 
//    servoThrust.pulsewidth_us(motorOut[0]);
//
//    sendData2PC();
//    writeSDcard();
//    
//    if(loop_count >= 5)
//    {
//        sendTelemetry();
//        loop_count = 1;
//
//    }
//    else
//    {
//        loop_count +=1;
//    }
//}