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


    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