Fixed throttlerate, added constrain so that we cant lower altitude to fast with barometer flight.
This commit is contained in:
parent
abe3af0f46
commit
aa93a954d8
@ -65,7 +65,10 @@ extern pidProfile_t PidProfile[PID_COUNT];
|
|||||||
extern float accRollFineTune;
|
extern float accRollFineTune;
|
||||||
extern float accPitchFineTune;
|
extern float accPitchFineTune;
|
||||||
|
|
||||||
extern accel_t accelProfile; /*Struct profile for input data from sensor*/
|
extern accel_t accelProfile;
|
||||||
|
|
||||||
|
extern float throttleRate;
|
||||||
|
extern int HoverForce;/*Struct profile for input data from sensor*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,10 +62,11 @@ gyro_t gyroProfile = {0}; /*Struct profile for input data from senso
|
|||||||
|
|
||||||
pt1Filter_t accelFilter[2] = {0};
|
pt1Filter_t accelFilter[2] = {0};
|
||||||
|
|
||||||
float throttleRate = 1;
|
|
||||||
float accRollFineTune = 0;
|
float accRollFineTune = 0;
|
||||||
float accPitchFineTune = 0;
|
float accPitchFineTune = 0;
|
||||||
|
|
||||||
|
float throttleRate = 1;
|
||||||
|
int HoverForce = 1485;/*Struct profile for input data from sensor*/
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* BRIEF: Scales data from input range to output range *
|
* BRIEF: Scales data from input range to output range *
|
||||||
@ -101,7 +102,7 @@ void getCurrentValues(float sensorValues[3], uint8_t ID_profile)
|
|||||||
sensorValues[PITCH] = accelProfile.pitchAngle + accPitchFineTune;
|
sensorValues[PITCH] = accelProfile.pitchAngle + accPitchFineTune;
|
||||||
|
|
||||||
/*Checks the biggest angle */
|
/*Checks the biggest angle */
|
||||||
throttleRate = 2 - (ABS_FLOAT(sensorValues[ROLL]) > ABS_FLOAT(sensorValues[PITCH]) )? cos(sensorValues[ROLL]*M_PI/180) : cos(sensorValues[PITCH]*M_PI/180);
|
throttleRate = (ABS_FLOAT(sensorValues[ROLL]) > ABS_FLOAT(sensorValues[PITCH]) )? 2 - cos(sensorValues[ROLL]*M_PI/180) : 2 - cos(sensorValues[PITCH]*M_PI/180);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case PID_ID_COMPASS:
|
case PID_ID_COMPASS:
|
||||||
@ -175,7 +176,7 @@ void getPointRate(float *desiredCommand, uint8_t ID_profile)
|
|||||||
|
|
||||||
//desiredCommand[THROTTLE] = convertData(RADIO_RANGE, BAROMETER_RANGE, 0, rc_input.Throttle*throttleRate);
|
//desiredCommand[THROTTLE] = convertData(RADIO_RANGE, BAROMETER_RANGE, 0, rc_input.Throttle*throttleRate);
|
||||||
|
|
||||||
desiredCommand[THROTTLE] = 1*BAROMETER_SCALE;
|
desiredCommand[THROTTLE] = 5*BAROMETER_SCALE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -345,12 +346,12 @@ void pidRun(uint8_t ID)
|
|||||||
|
|
||||||
if (!(PidProfile[PID_ID_BAROMETER].pidEnabled && flags_IsSet_ID(systemFlags_flightmode_barometer_id)))
|
if (!(PidProfile[PID_ID_BAROMETER].pidEnabled && flags_IsSet_ID(systemFlags_flightmode_barometer_id)))
|
||||||
{
|
{
|
||||||
PidProfile[PID_ID_BAROMETER].PID_Out[0] = rc_input.Throttle*throttleRate;
|
PidProfile[PID_ID_BAROMETER].PID_Out[0] = rc_input.Throttle;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pidUAV(&PidProfile[PID_ID_BAROMETER], &PidProfileBuff[PID_ID_BAROMETER]);
|
pidUAV(&PidProfile[PID_ID_BAROMETER], &PidProfileBuff[PID_ID_BAROMETER]);
|
||||||
PidProfile[PID_ID_BAROMETER].PID_Out[0] = constrainf(PidProfile[PID_ID_BAROMETER].PID_Out[0], -(int)pidProfile->pid_out_limit, (int)pidProfile->pid_out_limit);
|
PidProfile[PID_ID_BAROMETER].PID_Out[0] = constrainf(PidProfile[PID_ID_BAROMETER].PID_Out[0], -1, (int)PidProfile[PID_ID_BAROMETER].pid_out_limit);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,9 +103,9 @@ void mix()
|
|||||||
int16_t RPY_Mix[MOTOR_COUNT]; // Roll Pitch and Yaw variables array
|
int16_t RPY_Mix[MOTOR_COUNT]; // Roll Pitch and Yaw variables array
|
||||||
int16_t RPY_Mix_Min = 0; // Stores the minimum desired command for any motor
|
int16_t RPY_Mix_Min = 0; // Stores the minimum desired command for any motor
|
||||||
int16_t RPY_Mix_Max = 0; // Maximum desired command for any motor
|
int16_t RPY_Mix_Max = 0; // Maximum desired command for any motor
|
||||||
int16_t throttle = PidProfile[PID_ID_BAROMETER].PID_Out[THROTTLE];
|
int16_t throttle = PidProfile[PID_ID_BAROMETER].PID_Out[THROTTLE]*throttleRate;
|
||||||
|
|
||||||
if (PidProfile[PID_ID_BAROMETER].pidEnabled && flags_IsSet_ID(systemFlags_flightmode_barometer_id)) throttle += 1482;
|
if (PidProfile[PID_ID_BAROMETER].pidEnabled && flags_IsSet_ID(systemFlags_flightmode_barometer_id)) throttle += HoverForce;
|
||||||
|
|
||||||
/* Mixer Full Scale enabled */
|
/* Mixer Full Scale enabled */
|
||||||
if (flags_IsSet_ID(systemFlags_mixerfullscale_id))
|
if (flags_IsSet_ID(systemFlags_mixerfullscale_id))
|
||||||
|
Reference in New Issue
Block a user