mirror of https://github.com/ArduPilot/ardupilot
cleaning up code and adding functions from APM main code
git-svn-id: https://arducopter.googlecode.com/svn/trunk@250 f9c3cf11-9bcb-44bc-f272-b75c42450872
This commit is contained in:
parent
12d54e7e72
commit
36628eeb06
|
@ -27,6 +27,12 @@
|
||||||
// User configurable settings are on UserConfig.h
|
// User configurable settings are on UserConfig.h
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
|
|
||||||
|
/**************************************************************/
|
||||||
|
// Special features that might disapear in future releases
|
||||||
|
|
||||||
|
//#define jpframe // This is only Jani's special frame, you should never use unless you know what you are doing
|
||||||
|
// As default this should be always checked off.
|
||||||
|
|
||||||
|
|
||||||
/* APM Hardware definitions */
|
/* APM Hardware definitions */
|
||||||
#define LED_Yellow 36
|
#define LED_Yellow 36
|
||||||
|
@ -48,12 +54,16 @@
|
||||||
uint8_t sensors[6] = {1, 2, 0, 4, 5, 6}; // For ArduPilot Mega Sensor Shield Hardware
|
uint8_t sensors[6] = {1, 2, 0, 4, 5, 6}; // For ArduPilot Mega Sensor Shield Hardware
|
||||||
|
|
||||||
// Sensor: GYROX, GYROY, GYROZ, ACCELX, ACCELY, ACCELZ, MAGX, MAGY, MAGZ
|
// Sensor: GYROX, GYROY, GYROZ, ACCELX, ACCELY, ACCELZ, MAGX, MAGY, MAGZ
|
||||||
int SENSOR_SIGN[]={
|
|
||||||
1, -1, -1, // GYROX, GYROY, GYROZ
|
|
||||||
-1, 1, 1, // ACCELX, ACCELY, ACCELZ
|
|
||||||
-1, -1, -1}; // MAGNETOX, MAGNETOY, MAGNETOZ
|
|
||||||
//{-1,1,-1,1,-1,1,-1,-1,-1};
|
|
||||||
|
|
||||||
|
#ifndef jpframe
|
||||||
|
int SENSOR_SIGN[]={
|
||||||
|
1, -1, -1, -1, 1, 1, -1, -1, -1};
|
||||||
|
//{-1,1,-1,1,-1,1,-1,-1,-1};
|
||||||
|
#else
|
||||||
|
int SENSOR_SIGN[]={
|
||||||
|
1, -1, 1, -1, 1, 1, -1, -1, -1};
|
||||||
|
//{-1,1,-1,1,-1,1,-1,-1,-1};
|
||||||
|
#endif
|
||||||
|
|
||||||
/* APM Hardware definitions, END */
|
/* APM Hardware definitions, END */
|
||||||
|
|
||||||
|
@ -115,30 +125,18 @@ float yaw=0;
|
||||||
unsigned int counter = 0;
|
unsigned int counter = 0;
|
||||||
|
|
||||||
float DCM_Matrix[3][3]= {
|
float DCM_Matrix[3][3]= {
|
||||||
{
|
{ 1,0,0 },
|
||||||
1,0,0 }
|
{ 0,1,0 },
|
||||||
,{
|
{ 0,0,1 }};
|
||||||
0,1,0 }
|
|
||||||
,{
|
|
||||||
0,0,1 }
|
|
||||||
};
|
|
||||||
float Update_Matrix[3][3]={
|
float Update_Matrix[3][3]={
|
||||||
{
|
{ 0,1,2 },
|
||||||
0,1,2 }
|
{ 3,4,5 },
|
||||||
,{
|
{ 6,7,8 }}; //Gyros here
|
||||||
3,4,5 }
|
|
||||||
,{
|
|
||||||
6,7,8 }
|
|
||||||
}; //Gyros here
|
|
||||||
|
|
||||||
float Temporary_Matrix[3][3]={
|
float Temporary_Matrix[3][3]={
|
||||||
{
|
{ 0,0,0 },
|
||||||
0,0,0 }
|
{ 0,0,0 },
|
||||||
,{
|
{ 0,0,0 }};
|
||||||
0,0,0 }
|
|
||||||
,{
|
|
||||||
0,0,0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
// GPS variables
|
// GPS variables
|
||||||
float speed_3d=0;
|
float speed_3d=0;
|
||||||
|
@ -200,6 +198,30 @@ float command_altitude;
|
||||||
float altitude_I;
|
float altitude_I;
|
||||||
float altitude_D;
|
float altitude_D;
|
||||||
|
|
||||||
|
//Pressure Sensor variables
|
||||||
|
#ifdef UseBMP
|
||||||
|
unsigned long abs_press = 0;
|
||||||
|
unsigned long abs_press_filt = 0;
|
||||||
|
unsigned long abs_press_gnd = 0;
|
||||||
|
int ground_temperature = 0; //
|
||||||
|
int temp_unfilt = 0;
|
||||||
|
long ground_alt = 0; // Ground altitude from gps at startup in centimeters
|
||||||
|
long press_alt = 0; // Pressure altitude
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define BATTERY_VOLTAGE(x) (x*(INPUT_VOLTAGE/1024.0))*VOLT_DIV_RATIO
|
||||||
|
|
||||||
|
#define AIRSPEED_PIN 1 // Need to correct value
|
||||||
|
#define BATTERY_PIN 1 // Need to correct value
|
||||||
|
#define RELAY_PIN 47
|
||||||
|
#define LOW_VOLTAGE 11.4 // Pack voltage at which to trigger alarm
|
||||||
|
#define INPUT_VOLTAGE 5.2 // (Volts) voltage your power regulator is feeding your ArduPilot to have an accurate pressure and battery level readings. (you need a multimeter to measure and set this of course)
|
||||||
|
#define VOLT_DIV_RATIO 1.0 // Voltage divider ratio set with thru-hole resistor (see manual)
|
||||||
|
|
||||||
|
float battery_voltage = LOW_VOLTAGE * 1.05; // Battery Voltage, initialized above threshold for filter
|
||||||
|
|
||||||
|
|
||||||
// Sonar variables
|
// Sonar variables
|
||||||
int Sonar_value=0;
|
int Sonar_value=0;
|
||||||
#define SonarToCm(x) (x*1.26) // Sonar raw value to centimeters
|
#define SonarToCm(x) (x*1.26) // Sonar raw value to centimeters
|
||||||
|
|
|
@ -30,6 +30,11 @@
|
||||||
GEAR OFF = Flight Assist (Stable Mode)
|
GEAR OFF = Flight Assist (Stable Mode)
|
||||||
|
|
||||||
**** LED Feedback ****
|
**** LED Feedback ****
|
||||||
|
Bootup Sequence:
|
||||||
|
1) A, B, C LED's blinking rapidly while waiting ESCs to bootup and initial shake to end from connecting battery
|
||||||
|
2) A, B, C LED's have running light while calibrating Gyro/Acc's
|
||||||
|
3) Green LED Solid after initialization finished
|
||||||
|
|
||||||
Green LED On = APM Initialization Finished
|
Green LED On = APM Initialization Finished
|
||||||
Yellow LED On = GPS Hold Mode
|
Yellow LED On = GPS Hold Mode
|
||||||
Yellow LED Off = Flight Assist Mode (No GPS)
|
Yellow LED Off = Flight Assist Mode (No GPS)
|
||||||
|
@ -38,6 +43,7 @@
|
||||||
|
|
||||||
Green LED blink slow = Motors armed, Stable mode
|
Green LED blink slow = Motors armed, Stable mode
|
||||||
Green LED blink rapid = Motors armed, Acro mode
|
Green LED blink rapid = Motors armed, Acro mode
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* User definable modules */
|
/* User definable modules */
|
||||||
|
@ -51,6 +57,18 @@
|
||||||
|
|
||||||
#define CONFIGURATOR // Do se use Configurator or normal text output over serial link
|
#define CONFIGURATOR // Do se use Configurator or normal text output over serial link
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************/
|
||||||
|
// Not in use yet, starting to work with battery monitors and pressure sensors.
|
||||||
|
// Added 19-08-2010
|
||||||
|
|
||||||
|
//#define UseAirspeed
|
||||||
|
//#define UseBMP
|
||||||
|
//#define BATTERY_EVENT 1 // (boolean) 0 = don't read battery, 1 = read battery voltage (only if you have it wired up!)
|
||||||
|
|
||||||
|
/**********************************************/
|
||||||
|
|
||||||
/* User definable modules - END */
|
/* User definable modules - END */
|
||||||
|
|
||||||
// Frame build condiguration
|
// Frame build condiguration
|
||||||
|
@ -67,6 +85,9 @@
|
||||||
#include <APM_RC.h>
|
#include <APM_RC.h>
|
||||||
#include <DataFlash.h>
|
#include <DataFlash.h>
|
||||||
#include <APM_Compass.h>
|
#include <APM_Compass.h>
|
||||||
|
#ifdef UseBMP
|
||||||
|
#include <APM_BMP085.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
//#include <GPS_NMEA.h> // General NMEA GPS
|
//#include <GPS_NMEA.h> // General NMEA GPS
|
||||||
#include <GPS_MTK.h> // MediaTEK DIY Drones GPS.
|
#include <GPS_MTK.h> // MediaTEK DIY Drones GPS.
|
||||||
|
@ -77,7 +98,8 @@
|
||||||
#include "ArduCopter.h"
|
#include "ArduCopter.h"
|
||||||
#include "UserConfig.h"
|
#include "UserConfig.h"
|
||||||
|
|
||||||
#define SWVER 1.31 // Current software version (only numeric values)
|
/* Software version */
|
||||||
|
#define VER 1.32 // Current software version (only numeric values)
|
||||||
|
|
||||||
|
|
||||||
/* ***************************************************************************** */
|
/* ***************************************************************************** */
|
||||||
|
@ -85,7 +107,7 @@
|
||||||
/* ***************************************************************************** */
|
/* ***************************************************************************** */
|
||||||
|
|
||||||
// Normal users does not need to edit anything below these lines. If you have
|
// Normal users does not need to edit anything below these lines. If you have
|
||||||
// need, go and change them in FrameConfig.h
|
// need, go and change them in UserConfig.h
|
||||||
|
|
||||||
/* ************************************************************ */
|
/* ************************************************************ */
|
||||||
// STABLE MODE
|
// STABLE MODE
|
||||||
|
@ -234,7 +256,7 @@ int channel_filter(int ch, int ch_old)
|
||||||
/* ************************************************************ */
|
/* ************************************************************ */
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
int i;
|
int i, j;
|
||||||
float aux_float[3];
|
float aux_float[3];
|
||||||
|
|
||||||
pinMode(LED_Yellow,OUTPUT); //Yellow LED A (PC1)
|
pinMode(LED_Yellow,OUTPUT); //Yellow LED A (PC1)
|
||||||
|
@ -246,7 +268,17 @@ void setup()
|
||||||
pinMode(RELE_pin,OUTPUT); // Rele output
|
pinMode(RELE_pin,OUTPUT); // Rele output
|
||||||
digitalWrite(RELE_pin,LOW);
|
digitalWrite(RELE_pin,LOW);
|
||||||
|
|
||||||
delay(1000); // Wait until frame is not moving after initial power cord has connected
|
// delay(1000); // Wait until frame is not moving after initial power cord has connected
|
||||||
|
for(i = 0; i <= 50; i++) {
|
||||||
|
digitalWrite(LED_Green, HIGH);
|
||||||
|
digitalWrite(LED_Yellow, HIGH);
|
||||||
|
digitalWrite(LED_Red, HIGH);
|
||||||
|
delay(20);
|
||||||
|
digitalWrite(LED_Green, LOW);
|
||||||
|
digitalWrite(LED_Yellow, LOW);
|
||||||
|
digitalWrite(LED_Red, LOW);
|
||||||
|
delay(20);
|
||||||
|
}
|
||||||
|
|
||||||
APM_RC.Init(); // APM Radio initialization
|
APM_RC.Init(); // APM Radio initialization
|
||||||
APM_ADC.Init(); // APM ADC library initialization
|
APM_ADC.Init(); // APM ADC library initialization
|
||||||
|
@ -269,7 +301,6 @@ void setup()
|
||||||
if(pitch_mid < 1400 || pitch_mid > 1600) pitch_mid = 1500;
|
if(pitch_mid < 1400 || pitch_mid > 1600) pitch_mid = 1500;
|
||||||
if(yaw_mid < 1400 || yaw_mid > 1600) yaw_mid = 1500;
|
if(yaw_mid < 1400 || yaw_mid > 1600) yaw_mid = 1500;
|
||||||
|
|
||||||
|
|
||||||
// RC channels Initialization (Quad motors)
|
// RC channels Initialization (Quad motors)
|
||||||
APM_RC.OutputCh(0,MIN_THROTTLE); // Motors stoped
|
APM_RC.OutputCh(0,MIN_THROTTLE); // Motors stoped
|
||||||
APM_RC.OutputCh(1,MIN_THROTTLE);
|
APM_RC.OutputCh(1,MIN_THROTTLE);
|
||||||
|
@ -306,6 +337,7 @@ void setup()
|
||||||
aux_float[1] = gyro_offset_pitch;
|
aux_float[1] = gyro_offset_pitch;
|
||||||
aux_float[2] = gyro_offset_yaw;
|
aux_float[2] = gyro_offset_yaw;
|
||||||
|
|
||||||
|
j = 0;
|
||||||
// Take the gyro offset values
|
// Take the gyro offset values
|
||||||
for(i=0;i<300;i++)
|
for(i=0;i<300;i++)
|
||||||
{
|
{
|
||||||
|
@ -319,7 +351,30 @@ void setup()
|
||||||
//Serial.println();
|
//Serial.println();
|
||||||
Log_Write_Sensor(AN[0],AN[1],AN[2],AN[3],AN[4],AN[5],ch_throttle);
|
Log_Write_Sensor(AN[0],AN[1],AN[2],AN[3],AN[4],AN[5],ch_throttle);
|
||||||
delay(10);
|
delay(10);
|
||||||
|
|
||||||
|
// Runnings lights effect to let user know that we are taking mesurements
|
||||||
|
if(j == 0) {
|
||||||
|
digitalWrite(LED_Green, HIGH);
|
||||||
|
digitalWrite(LED_Yellow, LOW);
|
||||||
|
digitalWrite(LED_Red, LOW);
|
||||||
}
|
}
|
||||||
|
else if (j == 1) {
|
||||||
|
digitalWrite(LED_Green, LOW);
|
||||||
|
digitalWrite(LED_Yellow, HIGH);
|
||||||
|
digitalWrite(LED_Red, LOW);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
digitalWrite(LED_Green, LOW);
|
||||||
|
digitalWrite(LED_Yellow, LOW);
|
||||||
|
digitalWrite(LED_Red, HIGH);
|
||||||
|
}
|
||||||
|
if((i % 5) == 0) j++;
|
||||||
|
if(j >= 3) j = 0;
|
||||||
|
}
|
||||||
|
digitalWrite(LED_Green, LOW);
|
||||||
|
digitalWrite(LED_Yellow, LOW);
|
||||||
|
digitalWrite(LED_Red, LOW);
|
||||||
|
|
||||||
for(int y=0; y<=2; y++)
|
for(int y=0; y<=2; y++)
|
||||||
AN_OFFSET[y]=aux_float[y];
|
AN_OFFSET[y]=aux_float[y];
|
||||||
|
|
||||||
|
@ -330,7 +385,6 @@ void setup()
|
||||||
Serial.print("AN[]:");
|
Serial.print("AN[]:");
|
||||||
Serial.println(AN_OFFSET[i]);
|
Serial.println(AN_OFFSET[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial.print("Yaw neutral value:");
|
Serial.print("Yaw neutral value:");
|
||||||
// Serial.println(Neutro_yaw);
|
// Serial.println(Neutro_yaw);
|
||||||
Serial.print(yaw_mid);
|
Serial.print(yaw_mid);
|
||||||
|
@ -367,9 +421,11 @@ void setup()
|
||||||
Read_adc_raw(); // Initialize ADC readings...
|
Read_adc_raw(); // Initialize ADC readings...
|
||||||
delay(20);
|
delay(20);
|
||||||
|
|
||||||
|
#ifdef IsAM
|
||||||
// Switch Left & Right lights on
|
// Switch Left & Right lights on
|
||||||
digitalWrite(RI_LED, HIGH);
|
digitalWrite(RI_LED, HIGH);
|
||||||
digitalWrite(LE_LED, HIGH);
|
digitalWrite(LE_LED, HIGH);
|
||||||
|
#endif
|
||||||
|
|
||||||
motorArmed = 0;
|
motorArmed = 0;
|
||||||
digitalWrite(LED_Green,HIGH); // Ready to go...
|
digitalWrite(LED_Green,HIGH); // Ready to go...
|
||||||
|
@ -384,12 +440,12 @@ void loop(){
|
||||||
int aux;
|
int aux;
|
||||||
int i;
|
int i;
|
||||||
float aux_float;
|
float aux_float;
|
||||||
|
|
||||||
//Log variables
|
//Log variables
|
||||||
int log_roll;
|
int log_roll;
|
||||||
int log_pitch;
|
int log_pitch;
|
||||||
int log_yaw;
|
int log_yaw;
|
||||||
|
|
||||||
|
|
||||||
if((millis()-timer)>=10) // Main loop 100Hz
|
if((millis()-timer)>=10) // Main loop 100Hz
|
||||||
{
|
{
|
||||||
counter++;
|
counter++;
|
||||||
|
@ -409,12 +465,13 @@ void loop(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Matrix_update();
|
Matrix_update();
|
||||||
Normalize();
|
Normalize();
|
||||||
Drift_correction();
|
Drift_correction();
|
||||||
Euler_angles();
|
Euler_angles();
|
||||||
// *****************
|
|
||||||
|
|
||||||
|
// *****************
|
||||||
// Output data
|
// Output data
|
||||||
log_roll = ToDeg(roll) * 10;
|
log_roll = ToDeg(roll) * 10;
|
||||||
log_pitch = ToDeg(pitch) * 10;
|
log_pitch = ToDeg(pitch) * 10;
|
||||||
|
@ -604,8 +661,9 @@ void loop(){
|
||||||
// Quadcopter mix
|
// Quadcopter mix
|
||||||
// Ask Jose if we still need this IF statement, and if we want to do an ESC calibration
|
// Ask Jose if we still need this IF statement, and if we want to do an ESC calibration
|
||||||
if (motorArmed == 1) {
|
if (motorArmed == 1) {
|
||||||
|
#ifdef IsAM
|
||||||
digitalWrite(FR_LED, HIGH); // AM-Mode
|
digitalWrite(FR_LED, HIGH); // AM-Mode
|
||||||
|
#endif
|
||||||
#ifdef FLIGHT_MODE_+
|
#ifdef FLIGHT_MODE_+
|
||||||
rightMotor = constrain(ch_throttle - control_roll - control_yaw, minThrottle, 2000);
|
rightMotor = constrain(ch_throttle - control_roll - control_yaw, minThrottle, 2000);
|
||||||
leftMotor = constrain(ch_throttle + control_roll - control_yaw, minThrottle, 2000);
|
leftMotor = constrain(ch_throttle + control_roll - control_yaw, minThrottle, 2000);
|
||||||
|
@ -620,7 +678,9 @@ void loop(){
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (motorArmed == 0) {
|
if (motorArmed == 0) {
|
||||||
|
#ifdef IsAM
|
||||||
digitalWrite(FR_LED, LOW); // AM-Mode
|
digitalWrite(FR_LED, LOW); // AM-Mode
|
||||||
|
#endif
|
||||||
digitalWrite(LED_Green,HIGH); // Ready LED on
|
digitalWrite(LED_Green,HIGH); // Ready LED on
|
||||||
|
|
||||||
rightMotor = MIN_THROTTLE;
|
rightMotor = MIN_THROTTLE;
|
||||||
|
@ -674,7 +734,10 @@ void loop(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // End of void loop()
|
||||||
|
|
||||||
|
|
||||||
|
// END of Arducopter.pde
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -135,8 +135,14 @@ void comma() {
|
||||||
Serial.print(',');
|
Serial.print(',');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if BATTERY_EVENT == 1
|
||||||
|
void low_battery_event(void)
|
||||||
|
{
|
||||||
|
// send_message(SEVERITY_HIGH,"Low Battery!");
|
||||||
|
// set_mode(RTL);
|
||||||
|
// throttle_cruise = THROTTLE_CRUISE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -375,7 +375,7 @@ void sendSerialTelemetry() {
|
||||||
case 'X': // Stop sending messages
|
case 'X': // Stop sending messages
|
||||||
break;
|
break;
|
||||||
case '!': // Send flight software version
|
case '!': // Send flight software version
|
||||||
Serial.println(SWVER);
|
Serial.println(VER);
|
||||||
queryType = 'X';
|
queryType = 'X';
|
||||||
break;
|
break;
|
||||||
case '.': // Modify GPS settings
|
case '.': // Modify GPS settings
|
||||||
|
|
|
@ -26,12 +26,13 @@ TODO:
|
||||||
************************************************************* */
|
************************************************************* */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
// Safety & Security
|
// Safety & Security
|
||||||
|
|
||||||
// Arm & Disarm delays
|
// Arm & Disarm delays
|
||||||
#define ARM_DELAY 200
|
#define ARM_DELAY 200 // milliseconds of how long you need to keep rudder to max right for arming motors
|
||||||
#define DISARM_DELAY 100
|
#define DISARM_DELAY 100 // milliseconds of how long you need to keep rudder to max left for disarming motors
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
|
@ -57,10 +58,10 @@ TODO:
|
||||||
|
|
||||||
//#define RADIO_TEST_MODE
|
//#define RADIO_TEST_MODE
|
||||||
|
|
||||||
#define ROLL_MID 1478 // Radio Roll channel mid value
|
#define ROLL_MID 1500 // Radio Roll channel mid value
|
||||||
#define PITCH_MID 1483 // Radio Pitch channel mid value
|
#define PITCH_MID 1500 // Radio Pitch channel mid value
|
||||||
#define YAW_MID 1500 // Radio Yaw channel mid value
|
#define YAW_MID 1500 // Radio Yaw channel mid value
|
||||||
#define THROTTLE_MID 1502 // Radio Throttle channel mid value
|
#define THROTTLE_MID 1505 // Radio Throttle channel mid value
|
||||||
#define AUX_MID 1500
|
#define AUX_MID 1500
|
||||||
|
|
||||||
#define CHANN_CENTER 1500 // Channel center, legacy
|
#define CHANN_CENTER 1500 // Channel center, legacy
|
||||||
|
@ -68,25 +69,25 @@ TODO:
|
||||||
|
|
||||||
// Following variables stored in EEPROM
|
// Following variables stored in EEPROM
|
||||||
float KP_QUAD_ROLL;
|
float KP_QUAD_ROLL;
|
||||||
float KD_QUAD_ROLL;
|
|
||||||
float KI_QUAD_ROLL;
|
float KI_QUAD_ROLL;
|
||||||
|
float KD_QUAD_ROLL;
|
||||||
float KP_QUAD_PITCH;
|
float KP_QUAD_PITCH;
|
||||||
float KD_QUAD_PITCH;
|
|
||||||
float KI_QUAD_PITCH;
|
float KI_QUAD_PITCH;
|
||||||
|
float KD_QUAD_PITCH;
|
||||||
float KP_QUAD_YAW;
|
float KP_QUAD_YAW;
|
||||||
float KD_QUAD_YAW;
|
|
||||||
float KI_QUAD_YAW;
|
float KI_QUAD_YAW;
|
||||||
|
float KD_QUAD_YAW;
|
||||||
float STABLE_MODE_KP_RATE;
|
float STABLE_MODE_KP_RATE;
|
||||||
float KP_GPS_ROLL;
|
float KP_GPS_ROLL;
|
||||||
float KD_GPS_ROLL;
|
|
||||||
float KI_GPS_ROLL;
|
float KI_GPS_ROLL;
|
||||||
|
float KD_GPS_ROLL;
|
||||||
float KP_GPS_PITCH;
|
float KP_GPS_PITCH;
|
||||||
float KD_GPS_PITCH;
|
|
||||||
float KI_GPS_PITCH;
|
float KI_GPS_PITCH;
|
||||||
|
float KD_GPS_PITCH;
|
||||||
float GPS_MAX_ANGLE;
|
float GPS_MAX_ANGLE;
|
||||||
float KP_ALTITUDE;
|
float KP_ALTITUDE;
|
||||||
float KD_ALTITUDE;
|
|
||||||
float KI_ALTITUDE;
|
float KI_ALTITUDE;
|
||||||
|
float KD_ALTITUDE;
|
||||||
int acc_offset_x;
|
int acc_offset_x;
|
||||||
int acc_offset_y;
|
int acc_offset_y;
|
||||||
int acc_offset_z;
|
int acc_offset_z;
|
||||||
|
@ -126,25 +127,25 @@ float ch_aux2_offset = 0;
|
||||||
// when a "Default EEPROM Value" command is sent through serial interface
|
// when a "Default EEPROM Value" command is sent through serial interface
|
||||||
void setUserConfig() {
|
void setUserConfig() {
|
||||||
KP_QUAD_ROLL = 1.8;
|
KP_QUAD_ROLL = 1.8;
|
||||||
KD_QUAD_ROLL = 0.4; //0.48
|
|
||||||
KI_QUAD_ROLL = 0.30; //0.4
|
KI_QUAD_ROLL = 0.30; //0.4
|
||||||
|
KD_QUAD_ROLL = 0.4; //0.48
|
||||||
KP_QUAD_PITCH = 1.8;
|
KP_QUAD_PITCH = 1.8;
|
||||||
KD_QUAD_PITCH = 0.4; //0.48
|
|
||||||
KI_QUAD_PITCH = 0.30; //0.4
|
KI_QUAD_PITCH = 0.30; //0.4
|
||||||
|
KD_QUAD_PITCH = 0.4; //0.48
|
||||||
KP_QUAD_YAW = 3.6;
|
KP_QUAD_YAW = 3.6;
|
||||||
KD_QUAD_YAW = 1.2;
|
|
||||||
KI_QUAD_YAW = 0.15;
|
KI_QUAD_YAW = 0.15;
|
||||||
|
KD_QUAD_YAW = 1.2;
|
||||||
STABLE_MODE_KP_RATE = 0.2; // New param for stable mode
|
STABLE_MODE_KP_RATE = 0.2; // New param for stable mode
|
||||||
KP_GPS_ROLL = 0.012;
|
KP_GPS_ROLL = 0.02;
|
||||||
KD_GPS_ROLL = 0.005;
|
KI_GPS_ROLL = 0.008;
|
||||||
KI_GPS_ROLL = 0.004;
|
KD_GPS_ROLL = 0.006;
|
||||||
KP_GPS_PITCH = 0.012;
|
KP_GPS_PITCH = 0.02;
|
||||||
KD_GPS_PITCH = 0.005;
|
KI_GPS_PITCH = 0.008;
|
||||||
KI_GPS_PITCH = 0.004;
|
KD_GPS_PITCH = 0.006;
|
||||||
GPS_MAX_ANGLE = 10;
|
GPS_MAX_ANGLE = 18;
|
||||||
KP_ALTITUDE = 0.8;
|
KP_ALTITUDE = 0.8;
|
||||||
KD_ALTITUDE = 0.2;
|
|
||||||
KI_ALTITUDE = 0.2;
|
KI_ALTITUDE = 0.2;
|
||||||
|
KD_ALTITUDE = 0.2;
|
||||||
acc_offset_x = 2073;
|
acc_offset_x = 2073;
|
||||||
acc_offset_y = 2056;
|
acc_offset_y = 2056;
|
||||||
acc_offset_z = 2010;
|
acc_offset_z = 2010;
|
||||||
|
@ -186,25 +187,25 @@ void setUserConfig() {
|
||||||
|
|
||||||
// EEPROM storage addresses
|
// EEPROM storage addresses
|
||||||
#define KP_QUAD_ROLL_ADR 0
|
#define KP_QUAD_ROLL_ADR 0
|
||||||
#define KD_QUAD_ROLL_ADR 4
|
|
||||||
#define KI_QUAD_ROLL_ADR 8
|
#define KI_QUAD_ROLL_ADR 8
|
||||||
|
#define KD_QUAD_ROLL_ADR 4
|
||||||
#define KP_QUAD_PITCH_ADR 12
|
#define KP_QUAD_PITCH_ADR 12
|
||||||
#define KD_QUAD_PITCH_ADR 16
|
|
||||||
#define KI_QUAD_PITCH_ADR 20
|
#define KI_QUAD_PITCH_ADR 20
|
||||||
|
#define KD_QUAD_PITCH_ADR 16
|
||||||
#define KP_QUAD_YAW_ADR 24
|
#define KP_QUAD_YAW_ADR 24
|
||||||
#define KD_QUAD_YAW_ADR 28
|
|
||||||
#define KI_QUAD_YAW_ADR 32
|
#define KI_QUAD_YAW_ADR 32
|
||||||
|
#define KD_QUAD_YAW_ADR 28
|
||||||
#define STABLE_MODE_KP_RATE_ADR 36
|
#define STABLE_MODE_KP_RATE_ADR 36
|
||||||
#define KP_GPS_ROLL_ADR 40
|
#define KP_GPS_ROLL_ADR 40
|
||||||
#define KD_GPS_ROLL_ADR 44
|
|
||||||
#define KI_GPS_ROLL_ADR 48
|
#define KI_GPS_ROLL_ADR 48
|
||||||
|
#define KD_GPS_ROLL_ADR 44
|
||||||
#define KP_GPS_PITCH_ADR 52
|
#define KP_GPS_PITCH_ADR 52
|
||||||
#define KD_GPS_PITCH_ADR 56
|
|
||||||
#define KI_GPS_PITCH_ADR 60
|
#define KI_GPS_PITCH_ADR 60
|
||||||
|
#define KD_GPS_PITCH_ADR 56
|
||||||
#define GPS_MAX_ANGLE_ADR 64
|
#define GPS_MAX_ANGLE_ADR 64
|
||||||
#define KP_ALTITUDE_ADR 68
|
#define KP_ALTITUDE_ADR 68
|
||||||
#define KD_ALTITUDE_ADR 72
|
|
||||||
#define KI_ALTITUDE_ADR 76
|
#define KI_ALTITUDE_ADR 76
|
||||||
|
#define KD_ALTITUDE_ADR 72
|
||||||
#define acc_offset_x_ADR 80
|
#define acc_offset_x_ADR 80
|
||||||
#define acc_offset_y_ADR 84
|
#define acc_offset_y_ADR 84
|
||||||
#define acc_offset_z_ADR 88
|
#define acc_offset_z_ADR 88
|
||||||
|
@ -268,25 +269,25 @@ void writeEEPROM(float value, int address) {
|
||||||
|
|
||||||
void readUserConfig() {
|
void readUserConfig() {
|
||||||
KP_QUAD_ROLL = readEEPROM(KP_QUAD_ROLL_ADR);
|
KP_QUAD_ROLL = readEEPROM(KP_QUAD_ROLL_ADR);
|
||||||
KD_QUAD_ROLL = readEEPROM(KD_QUAD_ROLL_ADR);
|
|
||||||
KI_QUAD_ROLL = readEEPROM(KI_QUAD_ROLL_ADR);
|
KI_QUAD_ROLL = readEEPROM(KI_QUAD_ROLL_ADR);
|
||||||
|
KD_QUAD_ROLL = readEEPROM(KD_QUAD_ROLL_ADR);
|
||||||
KP_QUAD_PITCH = readEEPROM(KP_QUAD_PITCH_ADR);
|
KP_QUAD_PITCH = readEEPROM(KP_QUAD_PITCH_ADR);
|
||||||
KD_QUAD_PITCH = readEEPROM(KD_QUAD_PITCH_ADR);
|
|
||||||
KI_QUAD_PITCH = readEEPROM(KI_QUAD_PITCH_ADR);
|
KI_QUAD_PITCH = readEEPROM(KI_QUAD_PITCH_ADR);
|
||||||
|
KD_QUAD_PITCH = readEEPROM(KD_QUAD_PITCH_ADR);
|
||||||
KP_QUAD_YAW = readEEPROM(KP_QUAD_YAW_ADR);
|
KP_QUAD_YAW = readEEPROM(KP_QUAD_YAW_ADR);
|
||||||
KD_QUAD_YAW = readEEPROM(KD_QUAD_YAW_ADR);
|
|
||||||
KI_QUAD_YAW = readEEPROM(KI_QUAD_YAW_ADR);
|
KI_QUAD_YAW = readEEPROM(KI_QUAD_YAW_ADR);
|
||||||
|
KD_QUAD_YAW = readEEPROM(KD_QUAD_YAW_ADR);
|
||||||
STABLE_MODE_KP_RATE = readEEPROM(STABLE_MODE_KP_RATE_ADR);
|
STABLE_MODE_KP_RATE = readEEPROM(STABLE_MODE_KP_RATE_ADR);
|
||||||
KP_GPS_ROLL = readEEPROM(KP_GPS_ROLL_ADR);
|
KP_GPS_ROLL = readEEPROM(KP_GPS_ROLL_ADR);
|
||||||
KD_GPS_ROLL = readEEPROM(KD_GPS_ROLL_ADR);
|
|
||||||
KI_GPS_ROLL = readEEPROM(KI_GPS_ROLL_ADR);
|
KI_GPS_ROLL = readEEPROM(KI_GPS_ROLL_ADR);
|
||||||
|
KD_GPS_ROLL = readEEPROM(KD_GPS_ROLL_ADR);
|
||||||
KP_GPS_PITCH = readEEPROM(KP_GPS_PITCH_ADR);
|
KP_GPS_PITCH = readEEPROM(KP_GPS_PITCH_ADR);
|
||||||
KD_GPS_PITCH = readEEPROM(KD_GPS_PITCH_ADR);
|
|
||||||
KI_GPS_PITCH = readEEPROM(KI_GPS_PITCH_ADR);
|
KI_GPS_PITCH = readEEPROM(KI_GPS_PITCH_ADR);
|
||||||
|
KD_GPS_PITCH = readEEPROM(KD_GPS_PITCH_ADR);
|
||||||
GPS_MAX_ANGLE = readEEPROM(GPS_MAX_ANGLE_ADR);
|
GPS_MAX_ANGLE = readEEPROM(GPS_MAX_ANGLE_ADR);
|
||||||
KP_ALTITUDE = readEEPROM(KP_ALTITUDE_ADR);
|
KP_ALTITUDE = readEEPROM(KP_ALTITUDE_ADR);
|
||||||
KD_ALTITUDE = readEEPROM(KD_ALTITUDE_ADR);
|
|
||||||
KI_ALTITUDE = readEEPROM(KI_ALTITUDE_ADR);
|
KI_ALTITUDE = readEEPROM(KI_ALTITUDE_ADR);
|
||||||
|
KD_ALTITUDE = readEEPROM(KD_ALTITUDE_ADR);
|
||||||
acc_offset_x = readEEPROM(acc_offset_x_ADR);
|
acc_offset_x = readEEPROM(acc_offset_x_ADR);
|
||||||
acc_offset_y = readEEPROM(acc_offset_y_ADR);
|
acc_offset_y = readEEPROM(acc_offset_y_ADR);
|
||||||
acc_offset_z = readEEPROM(acc_offset_z_ADR);
|
acc_offset_z = readEEPROM(acc_offset_z_ADR);
|
||||||
|
|
Loading…
Reference in New Issue