ori-mrg / robotcar-dataset-sdk

Software Development Kit for the Oxford Robotcar Dataset
Other
265 stars 93 forks source link

Inquiry about the orientation in the UTM zone 30U #55

Closed JzHuai0108 closed 1 year ago

JzHuai0108 commented 1 year ago

Dear Authors,

Thanks for your public dataset. We are trying to understand how the roll pitch yaw euler angles are computed relative to the UTM zone 30U.

For instance, from the /oxford/rtk/2014-11-11-11-06-25/rtk.csv, we find its first row,

timestamp,latitude,longitude,altitude,northing,easting,down,utm_zone,velocity_north,velocity_east,velocity_down,roll,pitch,yaw
1415704028184063,51.7605920064,-1.2612119076,111.316208,5735841.4578097975,620000.1836618409,-111.316208,30U,0.004,0.004,0.001,-0.01779099999969897,-0.006712000000142968,-0.09384140718030262

In the matlab and python code, we find that the pose of the body frame (B) relative to the world frame (W) is computed as W_T_B = SE3MatrixFromComponents(northing, easting, down, roll, pitch, yaw).

From this website tool, I have confirmed that the northing and easting coordinates are relative to a coordinate frame (F) whose origin is at the equator with longitude -3 degree. To conform to the NED frame convention, the F frame can has its x along north, its y along east, and its z up. The transverse Mercator projection is understandable for the positions.

But for the orientation, I am baffled. As I understand, the F frame and the local level NED frame (N) differs in north direction by about 51.76 degrees in space.

Are these euler angles computed by waypoint inertial explorer (IE), relative to the local level NED frame (N) (which moves with the car) or relative to the F frame? From my experience with IE, it outputs the roll pitch heading in the local level ENU frame by default. But the SE3MatrixFromComponents() function implies that the euler angles are relative to the F frame.

If the euler angles are relative to the F frame, how do you transform the orientation from the N frame to the F frame?

JzHuai0108 commented 1 year ago

I think I found the solution by reading the mercator wiki page. For a INS solution of position lat lon h and orientation (expressed by qx, qy, qz, qw) in the local level ENU frame, we can convert lat lon h to the (e, n, u) coordinates in the local UTM zone for the data acquisition. Let's denote the ENU frame for the UTM zone by E, the local level ENU frame by N, and the body frame of the car by B. Then, we get an Euclidean transform between E and B, since E and N has the same orientation at a point on Earth, i.e., E_T_B = f(e, n, u, qx, qy, qz, qw), and p_E = E_T_B * p_B for a point in the B frame. In this case, the E frame's origin is an imaginary point in space.