Description
I have noticed that the orientation in the sensor_msgs/Imu output is being negated and the roll/pitch values are not being used to match the INSPVA log definition.
imu->orientation = tf::createQuaternionMsgFromRollPitchYaw(inspva->roll * DEGREES_TO_RADIANS,
-(inspva->pitch) * DEGREES_TO_RADIANS,
-(inspva->azimuth) * DEGREES_TO_RADIANS);
In the above code snippet from novatel_gps.cpp you can see that the pitch and azimuth values are negated. Additionally, in the tf library roll corresponds to rotation around the x axis while pitch corresponds to rotation around the y axis. However in the INSPVA doc you can see that the roll is actually coming from the vehicle frame Y-axis and the pitch is coming from the vehicle frame X-axis.
It seems like this code might be trying to make the imu match the ROS convention of X being forward and Y being to the right, but I'm not sure how the -Z value is coming into play. Could someone elaborate on the motivation here?