|
@@ -368,6 +368,8 @@ void MainWindow::onTimer()
|
|
|
iv::ndttracepoint xtrrtk;
|
|
|
while(mvectorrawgps.size()>0)
|
|
|
{
|
|
|
+ // std::cout<<" time diff: "<<(mvectorrawgps[0].recvtime - xlidartime)<<std::endl;
|
|
|
+ // std::cout<<" ldiar time: "<<xlidartime<<std::endl;
|
|
|
if((mvectorrawgps[0].recvtime<xlidartime) &&(mvectorrawgps[0].recvtime>=(xlidartime-15)))
|
|
|
{
|
|
|
iv::ndttracepoint xtr;
|
|
@@ -421,6 +423,11 @@ void MainWindow::onTimer()
|
|
|
xtr.x,xtr.y,xtr.z,xtr.yaw);
|
|
|
ui->lineEdit_Calib->setText(strtemp);
|
|
|
}
|
|
|
+ if((gsplit_cur>50.0)&&(mbCalcCalib == false))
|
|
|
+ {
|
|
|
+ CalcCalib();
|
|
|
+ mbCalcCalib = true;
|
|
|
+ }
|
|
|
update();
|
|
|
}
|
|
|
//记录执行了多少次
|
|
@@ -804,6 +811,15 @@ void MainWindow::CreateView()
|
|
|
|
|
|
CreateParamView(gll1);
|
|
|
|
|
|
+ QGroupBox * gp2 = new QGroupBox(ui->centralWidget);
|
|
|
+ gp2->setTitle(QStringLiteral("Calib"));
|
|
|
+ gp2->setGeometry(QRect(10,730,430,150));
|
|
|
+ QGridLayout * gll2 = new QGridLayout(ui->centralWidget);
|
|
|
+
|
|
|
+ gp2->setLayout(gll2);
|
|
|
+
|
|
|
+ CreateCalibView(gll2);
|
|
|
+
|
|
|
|
|
|
|
|
|
mptraceview = new ivtraceview();
|
|
@@ -905,6 +921,46 @@ void MainWindow::resizeEvent(QResizeEvent *event)
|
|
|
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+void MainWindow::CreateCalibView(QGridLayout * gl)
|
|
|
+{
|
|
|
+ gl->setSpacing(10);
|
|
|
+ int i = 0;
|
|
|
+
|
|
|
+ QLabel * pl = new QLabel(this);
|
|
|
+ pl->setText("Yaw");
|
|
|
+ pl->setFixedWidth(200);
|
|
|
+ QLineEdit * ple = new QLineEdit(this);
|
|
|
+ ple->setFixedWidth(100);
|
|
|
+ ple->setText(" ");
|
|
|
+ gl->addWidget(pl,i,0);
|
|
|
+ gl->addWidget(ple,i,1);
|
|
|
+ mpLE_CalcCalib_Yaw = ple;
|
|
|
+ i++;
|
|
|
+
|
|
|
+ pl = new QLabel(this);
|
|
|
+ pl->setText("Pitch");
|
|
|
+ pl->setFixedWidth(200);
|
|
|
+ ple = new QLineEdit(this);
|
|
|
+ ple->setFixedWidth(100);
|
|
|
+ ple->setText(" ");
|
|
|
+ gl->addWidget(pl,i,0);
|
|
|
+ gl->addWidget(ple,i,1);
|
|
|
+ mpLE_CalcCalib_Pitch = ple;
|
|
|
+ i++;
|
|
|
+
|
|
|
+ pl = new QLabel(this);
|
|
|
+ pl->setText("Roll");
|
|
|
+ pl->setFixedWidth(200);
|
|
|
+ ple = new QLineEdit(this);
|
|
|
+ ple->setFixedWidth(100);
|
|
|
+ ple->setText(" ");
|
|
|
+ gl->addWidget(pl,i,0);
|
|
|
+ gl->addWidget(ple,i,1);
|
|
|
+ mpLE_CalcCalib_Roll = ple;
|
|
|
+ i++;
|
|
|
+}
|
|
|
+
|
|
|
//创建组合框内的Label和LineEdit,并设置初始化值
|
|
|
void MainWindow::CreateParamView(QGridLayout *gl)
|
|
|
{
|
|
@@ -1293,3 +1349,42 @@ void MainWindow::onSetArm()
|
|
|
arm_y = mpLE_Army->text().toDouble();
|
|
|
}
|
|
|
|
|
|
+void MainWindow::CalcCalib()
|
|
|
+{
|
|
|
+ if((mvectorgps.size()>0) &&(mvectortrace.size()>0))
|
|
|
+ {
|
|
|
+ double gps_x = mvectorgps[mvectorgps.size()-1].x;
|
|
|
+ double gps_y = mvectorgps[mvectorgps.size()-1].y;
|
|
|
+ double gps_z = mvectorgps[mvectorgps.size()-1].z;
|
|
|
+
|
|
|
+ double ndt_x = mvectortrace[mvectortrace.size()-1].x;
|
|
|
+ double ndt_y = mvectortrace[mvectortrace.size()-1].y;
|
|
|
+ double ndt_z = mvectortrace[mvectortrace.size()-1].z;
|
|
|
+
|
|
|
+ double gps_dis = sqrt(pow(gps_x,2)+pow(gps_y,2));
|
|
|
+ double ndt_dis = sqrt(pow(ndt_x,2)+pow(ndt_y,2));
|
|
|
+
|
|
|
+ if((gps_dis>0)&&(ndt_dis>0))
|
|
|
+ {
|
|
|
+ double gps_angle = asin(gps_y/gps_dis);
|
|
|
+ if(gps_x < 0)
|
|
|
+ {
|
|
|
+ gps_angle = M_PI - gps_angle;
|
|
|
+ }
|
|
|
+
|
|
|
+ double ndt_angle = asin(ndt_y/ndt_dis);
|
|
|
+ if(ndt_x < 0)
|
|
|
+ {
|
|
|
+ ndt_angle = M_PI - ndt_angle;
|
|
|
+ }
|
|
|
+
|
|
|
+ double calib_yaw = gps_angle - ndt_angle;
|
|
|
+ while(calib_yaw>2.0*M_PI) calib_yaw = calib_yaw - 2.0*M_PI;
|
|
|
+ while(calib_yaw < 0)calib_yaw = calib_yaw + 2.0*M_PI;
|
|
|
+
|
|
|
+ mpLE_CalcCalib_Yaw->setText(QString::number(calib_yaw*180.0/M_PI));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|