[Solved] GPS track value

Hi

Does anyone know how I can get the GPS track heading to the degree of the drone body heading?
I also noticed this black line in MP keeps changing over time at the same location.

I am using this command to move the drone, but the movement direction in angle is not what I expected.
function vehicle:set_target_velocity_NED(vel_ned) end

The objective I hope to achieve is shown in the picture below.

      yaw_cos = math.cos(g_yaw_rad) -- ahrs:get_yaw()
      yaw_sin = math.sin(g_yaw_rad)
      vel_X = vel * yaw_cos - vel * yaw_sin
      vel_Y = vel * yaw_sin + vel * yaw_cos

      local target_vel = Vector3f()
      target_vel:x(vel_X)
      target_vel:y(vel_Y)
      target_vel:z(0)
      vehicle:set_target_velocity_NED(target_vel)

Is it I need to upgrade the drone to 4.5.5 and above and use gps:gps_yaw_deg?

function gps:gps_yaw_deg(instance) end
function ahrs:get_yaw() end


gps_yaw_deg is only valid for moving baseline configurations.

What you looking for is the gps ground course (the black line represents that in MP). Use gps:ground_course(instance) in LUA. But this is simply calculated from two consecutive position readings. So it is not “valid” while the vehicle is stationary.

1 Like

May I know where I can read more about this set_target_velocity_NED LUA API? How does it work?

You switch to guided mode and send position updates a few times per second.

Good discussion here:

These two borrowed formulas are not ideal in my case. Problem solved.
ahrs:get_yaw() return is with reference to the Earth frame. No other Lua API needed for the new formula.

I notice the problem when I was unable to get these values from the old formula regardless of the angle I input.

target_vel:x(vel_X)  -- 0,1,-1
target_vel:y(vel_Y)  -- 0,1,-1