Moving precisely without GPS

I’d like to be able to move and position the drone without GPS, I’m working on a visual positioning system that uses the camera to detect a target from which position can be determined.

I’m using SET_POSITION_TARGET_LOCAL_NED (through DroneKit) to move the drone (a 3DR Solo), and its generally working, but, the movements are not very precise, for example I attempted to move the drone 10cm, and it moved 48cm.


  1. Does SET_POSITION_TARGET_LOCAL_NED work without the use of GPS?
  2. How should SET_POSITION_TARGET_LOCAL_NED be used for precise movements?

Currently I’m sending SET_POSITION_TARGET_LOCAL_NED every 100ms with a new velocity, on a curve, from 0 upto a max velocity and back to 0, where the integral of the curve is the distance I want to travel.


In particular altitude control seems poor, often it kinda of jumps up and down, could this be related to: