I am trying to use either Mavlink or ARSDK to control the drone and fetch the local position (not GPS) on both Linux and Windows, but without success.
What we tried and what we managed to discover:
Mavlink – was the first thing we tried since it was advertised as being available on multiple operating systems, including Linux and Windows
- We were able to connect to the drone, receive data and send data (on Windows, probably works on Linux too)
- The drone was controllable, albeit not in a precise way (!)
- Position of the drone in local coordinates is available, based on internal calculation
ARSDK – I booted up a virtual machine with Ubuntu where I managed to make a wrapper over ARSDK
- We were able to connect to the drone, receive data and send data
- The drone was controllable in a precise way, exactly like we wanted
- No local position, unfortunately, only GPS available (!)
Our problem is that, since we want to control the drone indoors, we need both local position (no GPS) and the ability to control the drone in a precise manner. We could not do both using any of the SDKs. Since each SDK can do only one of them, we deduced that it should be possible to achieve what we want. Since it should be possible, I thought I am missing something in regards to both SDKs so that was the reason why I asked about Mavlink on the developer forum (linked below).
Looking at the Olympe documentation (which, as far as I understand, is a wrapper over ARSDK) I could not see anything in regards to a local position that we could receive and use. Using both ARSDK and Mavlink in parallel to use what we need from each one seems also impossible, based on the discussions on the developer forum.
Also, to estimate the position ourselves we would need access to IMU and the camera which is oriented downards. Reading on the forum, the front camera also has a small delay, which might make it difficult to use for position estimation. And, I’ve seen no messages with IMU data on both Mavlink and ARSDK, so that is also unavailable to us.
Our questions from us would be:
- Is there a way to receive local position (which is available on Mavlink already) on ARSDK?
- Is there a way to send commands that can control the drone in a precise manner? For details, you can check this thread: Unable to fine-control (simulated) ANAFI 4K drone using Mavlink
If not, is there any chance that one of these will be available in a future (hopefully soon) release? The Mavlink way of command as it is now seems odd to me.