diff --git a/src/quaternion.cpp b/src/quaternion.cpp index 100be03..e9b04e7 100644 --- a/src/quaternion.cpp +++ b/src/quaternion.cpp @@ -64,10 +64,10 @@ quaternion quatFromEulerAngles(Eigen::Vector3d a) quatY.z = 0.0; quaternion quatZ; - quatX.w = std::cos(z / 2); - quatX.x = 0.0; - quatX.y = 0.0; - quatX.z = std::sin(z / 2); + quatZ.w = std::cos(z / 2); + quatZ.x = 0.0; + quatZ.y = 0.0; + quatZ.z = std::sin(z / 2); quaternion ret; ret.w = 1.0; diff --git a/src/sensorModels/gnssSensor.cpp b/src/sensorModels/gnssSensor.cpp index 0a6a3e1..1e48935 100644 --- a/src/sensorModels/gnssSensor.cpp +++ b/src/sensorModels/gnssSensor.cpp @@ -138,6 +138,15 @@ bool GnssSensor::RunTick(Eigen::Vector3d& gnssOrigin, Eigen::Vector3d& enuToTrac { actualTrackCar = eulerAnglesToRotMat(start_orientation).transpose() * trans + start_position; } + + Eigen::Matrix3d R_body_to_world = eulerAnglesToRotMat(rot).transpose(); + if (trackPreTransformed) + { + R_body_to_world = eulerAnglesToRotMat(start_orientation).transpose() * R_body_to_world; + } + Eigen::Vector3d gpsLeverArmWorld = R_body_to_world * this->position; + actualTrackCar += gpsLeverArmWorld; + Eigen::Vector3d enuCar = rotMatTrackToEnu * actualTrackCar; std::default_random_engine generator(noiseSeed);