[Math] How to convert velocity given a heading and speed to ECEF coordinates

coordinate systemsordinary differential equations

If you are given positional data in latitude, longitude, altitude along with a given velocity and heading, how do you convert the velocity into Earth Centered Earth Fixed (ECEF) based values?

In this specific problem the altitude is fixed. I currently have an idea of how to solve this problem, but I feel that there is probably a simpler way.

Hypothesized idea steps:

  1. Convert the lat/long/altitude into ECEF coordinates.
  2. Convert heading and speed to deltas of latitude & longitude, bearing in mind that these are dependent on positional data. (I figure it's some type of differential equation, in which I am a bit rusty)
  3. Add the deltas to the initial LLA coordinates and convert to ECEF again.
  4. Use the change of position in ECEF coordinates to calculate the velocity.

The roadblock that I have hit in my approach is step #2. Trying to determine the delta values when the value of the longitude and latitude deltas vary on position so far has gotten the better of me…. Everything I find in this area always start with being given 2 coordinates. However in this case, I don't have that luxury.

Best Answer

I ended up changing a little of my methodology after getting a little recommendation; my brain does not like traveling into spherical coordinate land. After following these steps I was able to get a satisfactory result.

  1. Started by converting the given Latitude/Longitude/Altitude into ECEF.

  2. Computed the Geocentric radius for each point.

  3. Break the speed into component vectors of using the heading into vectors of longitude and latitude.

  4. By treating these vectors as arc length of their given directions. I used the equation solving for theta:

    Arc length = Geocentric radius * theta

  5. I took the computed thetas and added them to my givens of latitude and longitude and changed this new value into ECEF.

  6. Once converted I subtracted the values converted in step 1 to find my component velocities.

After these steps I found my answers to be consistent and somewhat more accurate than the values that were expected. I believe that they used a method by which a flat plane was used to compute velocities at the given points rather than factoring in the curvature of the vector if holding a constant altitude.