question about calibration with GPS_INS
HeXu1 opened this issue · comments
-
It seems mistake in CamRigOdoCalibration::addGpsIns function?
the detail of this function is:
CamRigOdoCalibration::addGpsIns(double lat, double lon, double alt,double qx, double qy, double qz, double qw,uint64_t timestamp)
{
// convert latitude/longitude to UTM coordinates
double utmX, utmY;
std::string utmZone;
LLtoUTM(lat, lon, utmX, utmY, utmZone);
PosePtr pose = boost::make_shared();
pose->rotation() = Eigen::Quaterniond(qw,qx,qy,qz);
pose->translation() = Eigen::Vector3d(utmX, utmY, -alt);
pose->timeStamp() = timestamp;
m_gpsInsBuffer.push(timestamp, pose);
}
a> LLtoUTM(lat, lon, utmX, utmY, utmZone); the result of utmX and utmY are utmNorthing and utmEasting,but not east and west?
b> pose->translation() = Eigen::Vector3d(utmX, utmY, -alt); why change alt to negative? -
question about CamOdoThread::threadFunction(void) function.
why change GPS_INS like follows?
gpsIns->x() = interpGpsIns->translation()(1);
gpsIns->y() = -interpGpsIns->translation()(0);
gpsIns->z() = interpGpsIns->translation()(2);
Eigen::Matrix3d R = interpGpsIns->rotation().toRotationMatrix();
double roll, pitch, yaw;
mat2RPY(R, roll, pitch, yaw);
gpsIns->yaw() = -yaw;
thanks a lot !
@hengli
and the two camera calibration result seems same.
follows are my calibration results, but they fixed in the car's two sides~
========== Camera 0 ==========
Rotation:
0.82906 -0.09246 0.55147
-0.55064 0.03662 0.83394
-0.09730 -0.99504 -0.02055
Rotation Q:
-0.67324 0.23881 -0.16865 0.67918
Translation:
-17.15513 -43.04372 0.00000
========== Camera 1 ==========
Rotation:
0.83106 -0.08341 0.54989
-0.54897 0.03557 0.83508
-0.08922 -0.99588 -0.01623
Rotation Q:
-0.67300 0.23491 -0.17113 0.68015
Translation:
-16.87811 -43.36809 -0.10674
@HeXu1
Did you figure out if it is an issue in the GPU code or if it is some data mismatch?