About velocity in utm

Issue #5 resolved
Former user created an issue

Hello, I have the question about the code. Why do you use
msg_vel.twist.twist.linear.z = (double)packet->vel_down * -1e-4; rather than
msg_vel.twist.twist.linear.z = (double)packet->vel_down * 1e-4; ?

What is the different about the "-"? And the vel_north is equivalent to velocity-north in local frame or the velocity-forward in car frame? When I use RT device, Y axis is pointing down, Z axis is pointing left, should I change some codes? Could you tell me about it? Thank you very much!

Comments (3)

  1. Micho Radovnikovich

    The OxTS reports velocity in North East Down (NED) frame, where x is North, y is East, and z is down. The output twist converts this to East North Up (ENU) frame, where x is East, y is North, and z is up. This is done because ENU is more closely related to UTM frame, whose x and y axes point East and North, respectively. However, ENU and UTM frames are not perfectly aligned due to the convergence angle between True North and grid North. See

    https://en.wikipedia.org/wiki/Transverse_Mercator_projection#Convergence

    for details if you are unfamiliar.

    Prompted by your question, we found an issue with the conversion from NED to ENU, which was just fixed in commit 875e878.

    vel_north is the velocity relative to True North, and vel_east is the velocity relative to True East. Keep in mind that these don't necessarily line up with UTM x and y axes, again because of convergence angle.

    Regarding your RT device's Y axis pointing down, did you mount it sideways? You can probably specify the sensor's mounting orientation in the calibration sequence and it should transform the coordinates internally. Having the y axis left and z axis up would be the least confusing probably.

  2. Log in to comment