修改拟合参数

This commit is contained in:
2024-01-30 19:35:45 +08:00
parent a63e4a8d10
commit 77569e8bf6
2 changed files with 56 additions and 45 deletions
+11 -4
View File
@@ -78,15 +78,15 @@ void Parse::run()
src.B[0] = data[data_count++];
src.B[1] = data[data_count++];
ins.ax = src.i[0] * 100.0/32767;//机体纵向加速度
ins.ax = src.i[0] * 100.0/32767;//
src.B[0] = data[data_count++];
src.B[1] = data[data_count++];
ins.az = src.i[0] * -100.0/32767;//机体法向加速度
ins.az = src.i[0] * -100.0/32767;//
src.B[0] = data[data_count++];
src.B[1] = data[data_count++];
ins.ay = src.i[0] * 100.0/32767;//机体侧向加速度
ins.ay = src.i[0] * 100.0/32767;//
/*
qDebug() << ins.roll_rate
<< ins.yaw_rate
@@ -992,6 +992,9 @@ void Parse::run()
_eadc eadc;
int data_count = 0;
data_count++;
data_count++;
src.B[0] = data[data_count++];
src.B[1] = data[data_count++];
eadc.hp = src.i[0] * 0.5; //气压高度
@@ -1022,7 +1025,7 @@ void Parse::run()
src.B[0] = data[data_count++];
src.B[1] = data[data_count++];
eadc.tt = src.i[0] * 0.01; //大气总温
eadc.tt = src.i[0] * 0.01 - 273.15; //大气总温
src.B[0] = data[data_count++];
src.B[1] = data[data_count++];
@@ -1057,10 +1060,14 @@ void Parse::run()
eadc.validAndStatus.attAAcq = (byte >> 1) & 0x01; //迎角采集值有效性
eadc.validAndStatus.sideAAcq = (byte >> 2) & 0x01; //迎角采集值有效性
data_count++;
src.B[0] = data[data_count++];
src.B[1] = data[data_count++];
src.B[2] = data[data_count++];
src.B[3] = data[data_count++];
// memcpy(&src.B[0], data.data()+data_count, 4);
// data_count+=4;
eadc.dp = src.F; //动压
+45 -41
View File
@@ -126,11 +126,13 @@ double act_pwm2deg3(double pwm,const QList<double>&para)
x = pwm - 4096.0;
}
x = x * 33 / 2048;
double angle = 0;
angle = para[0] * x * x * x + para[1] * x * x + para[2] * x + para[3];
angle = para[3] * x * x * x + para[2] * x * x + para[1] * x+ para[0] ;
return angle;
return angle * 57.3;
}
@@ -1391,14 +1393,14 @@ QList<double> ste_fix{+1E-09,-9E-08,-0.0207,+5.1113};
QList<double> vtl_fix{+7E-10,-2E-06,+0.0176,+37.866};
QList<double> vtr_fix{+7E-10,-2E-06,+0.0176,+37.809};
QList<double> dal_fix{-3E-09,-3E-06,-0.0343,+0.2415};
QList<double> dar_fix{-2E-09,-2E-06,-0.0340,+0.0294};
QList<double> dal_fix{0.4649342060, -0.0340147207, 0.0002750884, -0.0000057809};
QList<double> dar_fix{0.4997510138, -0.0328826990, 0.0001765671, -0.0000034374};
QList<double> drl_fix{-2E-09,-8E-07,-0.0336,-0.4362};
QList<double> drr_fix{+2E-09,+9E-07,+0.0335,-0.5028};
QList<double> drl_fix{-0.1607395255, -0.0222880648, 0.0000231149, -0.0000052948};
QList<double> drr_fix{0.1539174036, -0.0226888591, 0.0000827501, -0.0000032349};
QList<double> del_fix{-1E-09,+2E-07,-0.0263,+0.3685};
QList<double> der_fix{-1E-09,+3E-07,-0.0264,+0.9127};
QList<double> del_fix{0.0516495062, -0.0221356239, 0.0000167924, -0.0000022329};
QList<double> der_fix{0.0847748377, -0.0223743546, 0.0000295871, -0.0000024856};
QList<double> dspl_fix{+5E-10,+9E-08,+0.0203,+37.586};
QList<double> dspr_fix{+6E-10,+1E-07,+0.0205,+38.138};
@@ -1425,42 +1427,44 @@ void MainWindow::update_servo_output_raw(int sysid,mavlink_servo_output_raw_t se
servos.insert(16,servo.servo16_raw);
toolsui->index4->setChannel(servo.port,servos);
if(sysid == 1)
{
ste_fix = {+1E-09,-9E-08,-0.0207,+5.1113};
vtl_fix = {+3E-10,-2E-06,+0.0185,+37.603};
vtr_fix = {+3E-10,-2E-06,+0.0185,+37.813};
// qDebug() << "拟合值" << dal_fix;
dal_fix = {-3E-09,-3E-06,-0.0343,+0.2415};
dar_fix = {-2E-09,-2E-06,-0.0340,+0.0294};
drl_fix = {-2E-09,-8E-07,-0.0336,-0.4362};
drr_fix = {+2E-09,+9E-07,+0.0335,-0.5028};
// if(sysid == 1)
// {
// ste_fix = {+1E-09,-9E-08,-0.0207,+5.1113};
// vtl_fix = {+3E-10,-2E-06,+0.0185,+37.603};
// vtr_fix = {+3E-10,-2E-06,+0.0185,+37.813};
del_fix = {-9E-10,+3E-07,-0.0263,+0.9651};
der_fix = {-9E-10,+3E-07,-0.0265,+0.925};
dspl_fix = {+5E-10,+9E-08,+0.0203,+37.976};
dspr_fix = {+6E-10,+1E-07,+0.0205,+38.138};
}
else if(sysid == 2)
{
ste_fix = {+1E-09,-9E-08,-0.0207,+5.1113};
vtl_fix = {+7E-10,-2E-06,+0.0176,+37.866};
vtr_fix = {+7E-10,-2E-06,+0.0176,+37.809};
// dal_fix = {-3E-09,-3E-06,-0.0343,+0.2415};
// dar_fix = {-2E-09,-2E-06,-0.0340,+0.0294};
// drl_fix = {-2E-09,-8E-07,-0.0336,-0.4362};
// drr_fix = {+2E-09,+9E-07,+0.0335,-0.5028};
dal_fix = {-3E-09,-3E-06,-0.0343,+0.2415};
dar_fix = {-2E-09,-2E-06,-0.0340,+0.0294};
drl_fix = {-2E-09,-8E-07,-0.0336,-0.4362};
drr_fix = {+2E-09,+9E-07,+0.0335,-0.5028};
// del_fix = {-9E-10,+3E-07,-0.0263,+0.9651};
// der_fix = {-9E-10,+3E-07,-0.0265,+0.925};
// dspl_fix = {+5E-10,+9E-08,+0.0203,+37.976};
// dspr_fix = {+6E-10,+1E-07,+0.0205,+38.138};
// }
// else if(sysid == 2)
// {
// ste_fix = {+1E-09,-9E-08,-0.0207,+5.1113};
// vtl_fix = {+7E-10,-2E-06,+0.0176,+37.866};
// vtr_fix = {+7E-10,-2E-06,+0.0176,+37.809};
del_fix = {-1E-09,+2E-07,-0.0263,+0.3685};
der_fix = {-1E-09,+3E-07,-0.0264,+0.9127};
dspl_fix = {+5E-10,+9E-08,+0.0203,+37.976};
dspr_fix = {+6E-10,+1E-07,+0.0205,+38.138};
}
else
{
// dal_fix = {-3E-09,-3E-06,-0.0343,+0.2415};
// dar_fix = {-2E-09,-2E-06,-0.0340,+0.0294};
// drl_fix = {-2E-09,-8E-07,-0.0336,-0.4362};
// drr_fix = {+2E-09,+9E-07,+0.0335,-0.5028};
}
// del_fix = {-1E-09,+2E-07,-0.0263,+0.3685};
// der_fix = {-1E-09,+3E-07,-0.0264,+0.9127};
// dspl_fix = {+5E-10,+9E-08,+0.0203,+37.976};
// dspr_fix = {+6E-10,+1E-07,+0.0205,+38.138};
// }
// else
// {
// }
@@ -1478,8 +1482,8 @@ void MainWindow::update_servo_output_raw(int sysid,mavlink_servo_output_raw_t se
// statusui->setValue(0,1,9,QString::number(act_pwm2deg3(servo.servo3_raw,vtr_fix),'f',2) + '|'
// + QString::number(act_pwm2deg3(servo.servo11_raw,vtr_fix),'f',2));
// statusui->setValue(0,1,0,QString::number(act_pwm2deg3(servo.servo4_raw,dal_fix),'f',2) + '|'
// + QString::number(act_pwm2deg3(servo.servo12_raw,dal_fix),'f',2));
statusui->setValue(0,1,0,QString::number(act_pwm2deg3(servo.servo4_raw,dal_fix),'f',2) + '|'
+ QString::number(act_pwm2deg3(servo.servo12_raw,dal_fix),'f',2));
statusui->setValue(0,1,1,QString::number(act_pwm2deg3(servo.servo5_raw,dar_fix),'f',2) + '|'
+ QString::number(act_pwm2deg3(servo.servo13_raw,dar_fix),'f',2));