Controlling Anafi Thermal's speed without the use of optical flow


I am looking to control an Anafi Thermal drone’s speed without the use of optical flow. I covered the optical flow sensor with piece of tape to remove this feature. The issue I am running into is I do not believe it is possible to control the speed of the drone without this feature. I was wondering if anyone knows if there is another way to control the speed of the drone without using optical flow. Perhaps through GPS coordinates? Or maybe controlling the drones pitch instead? Any help is appreciated. Thanks!

the optical flow is mandatory for our autopilot to work properly

Ok that’s what I figured. However, is it not possible to run a flight plan on the drone when it is dark at night? If it is wouldn’t it be running the flight plan through the use of its GPS signal or are all the sensors able to function properly when it is dark? Like I said I’m very inexperienced in this field so a lot of this is going over my head. Please let me know. Thank you!

Yes, if the data is invalid, the autopilot will not rely on it to make the drone stable.
What exactly are you trying to do ? Are you using Ground SDK ? Olympe ?

Hello plepo,

I covered the optical flow sensor with piece of tape to remove this feature. The issue I am running into is I do not believe it is possible to control the speed of the drone without this feature.

What was the behavior of the drone during your test ?

The Anafi and Anafi Thermal autopilot can fly with a good speed estimation and control with either the vertical camera (optical flow) or with the gps. Furthermore during the same flight it is able to switch automatically between them depending on the quality of the measures of each one.

GPS estimation requires a good gps fix (orange or green gps icon on FreeFlight6) and the magnetometer to be calibrated. It is robust to short durations of magnetic interferences, like when passing near a metallic structure.

Optical flow is better when the ground is within measure range of the ultrasonic sensor (3 to 6 meters, depending on the ground type).

Some flight modes require absolute positionning, like RTH, FlightPlan, FollowMe, going to GPS coordinates. These are only available if the GPS is available.

When both the GPS and VerticalCamera are not usable by the autopilot (like indoor in the dark), the drone can still fly, there is no software code to forbid the takeoff. However it will not hover in place but drift at a speed around 1-2 m/s, and will drift with the wind if there is some. Manual control works, but is a bit more difficult, so it should not be done in small spaces.

have a nice day !

1 Like

Hello Jerome,

So I am not 100% sure on which platform I should be using and what would enable to me to have the best control over the drone. I am not too sure on how to implement a flight plan using Olympe but I feel as though that would be the best API to use for my project since I will be able to use Linux. However it seems in Ground SDK it might be easier to implement a Flight plan from QGroundControl using Mavlink commands which is also beneficial in my project.

My project is hoping to control a drone using strictly its GPS signal which it seems is possible to do based on yours and Aurelien’s responses. With this in mind what platform do you recommend I should use for my project, Ground SDK or Olympe?

My goal is to implement a flight plan to the drone using a GCS platform (it seems Anafi is best fit for QGroundCOntrol based on the documentation, please let me know if I should use a different one). The drone is supposed to be able to successfully complete the flight plan using only its GPS signal to fly. The reason for this is we will be flying the drone inside a facility while sending the drone our own customized GPS signal using a GNSS simulator. This way the drone will believe that it is still on its flight plan while not leaving the facility. Please let me know if you have any ideas.

I had a lot of difficulty figuring out how to implement a flight plan from QGroundControl using Olympe (I read the documentation too but still did not have a great understanding). Because of this I am now moving to Ground SDK to see if I will have more success using that API. If you think it is not necessary to use Ground SDK and that I would be able to complete my project using Olympe, please let me know if you have an example code that imports a flight plan to the anafi. This would be greatly appreciated.

Hello Aurelien,

Thank you so much for your assistance. If you can, please take a look at the reply I wrote to Jerome and let me know if you have any input as well. Thanks again!

Ok , it is actually very simple and does not require any programming.
You can upload a MAVLink flight mission to the drone (using the drone web server), and the drone will execute the mission.
You can check FlightPlan with Olympe - #2 by ndessart

Ok, thank you Jerome! I think I will be able to figure it out from here, but if you have any other examples that you believe can help me with this plan, that would also be appreciated.

Hello Jerome,

In the forum post you sent me it reads:

“use the drone web interface “Flightplans” tab ( for a real drone or for a simulated drone). This interface also list available flightplans and their uid.”

However, when I try to use the local network “” (searched on firefox) nothing loads. When I use my skycontrollers IP address “”, I am directed to the Skycontroller 3 Web server. On this server I do not see a “Flightplans” tab. I only see “Info”, “Report”, “FDR”, “Drone” and “Update”. In the update tab it asks if you would like to select a file so I am not sure if I could possibly select a flight plan file from there. Please let me know if I am going about this incorrectly.

Screenshot from 2021-08-18 12-34-06

Regarding the REST JSON API option:

"use the drone REST JSON API that is used by both Freeflight6 and the drone web interface

GET http://{drone_ip_address}/api/v1/upload/flightplans to list of available flightplans on the drone
GET http://{drone_ip_address}/api/v1/upload/flightplan/{flightplan_uid} to download a flightplan mavlink file
PUT http://{drone_ip_address}/api/v1/upload/flightplan to upload a new flightplan mavlink file (the json response is just the uid of the just uploaded flightplan)"

Am I supposed to use the three links provided with the IP address of the drone/skycontroller to open up the webserver. When I typed in those links into Firefox using the IP address “” nothing loads.

Please let me know if you know how to approach this alternative as well. Sorry for asking so many questions. Thank you for all the help so far!


Yes, we have a bug in this firmware : the skycontroller does not forward the packets to the drone using the web server interface.
It will be fixed in the upcoming release, I can send it to you to test it before if you need.

Ok thank you. Is there any other way to deliver a flight plan to the drone using Olympe then? Please let me know.


This topic was automatically closed after 30 days. New replies are no longer allowed.