Build log
What a fan does to a small drone.
For weeks, every flight in our simulation happened in perfectly still air. No living room is like that. When we added the air of a real home, the results changed, and we went looking for fixes. One worked, and we still switched it off.
Still air was an assumption nobody wrote down
Our simulation modelled the robot, its sensors, its motors and their delays, and the position errors that build up in flight. It did not model the air. The controller had been tuned against almost no push from the room at all, so nothing had ever asked it to hold its place in a breeze.
So we built a model of the air in a home from published measurements: the slow drift of room air, the drag a propeller feels when air crosses it, the extra lift close to the floor and close to a ceiling, and the gusting drafts of a pedestal fan, an air-conditioning outlet, an open window and a ceiling fan. The floor and the ceiling are not small details for a light drone. Researchers have shown that multirotors feel the ground differently from helicopters, and that a rotor near a ceiling gains lift as well, so a drone flying close to one tends to rise towards it.
What changed
- Holding still. In a steady breeze, or the gusting draft of a pedestal fan, the controller of the time let the robot drift well away from where it should have been.
- Narrow gaps. Ordinary room air was enough for an occasional touch at the narrowest gaps, which had not happened in still air, and a draft aimed straight at a doorway made passing it much harder.
- Landing. With drafts, some approaches to a landing spot ended in a touch. In still air, none had.
The draft case is deliberately harsh: in every trial a fan or a vent blows straight at the gap or the landing spot. Room air is the everyday case, and it mattered too.
Fix one: remember the push
The textbook answer is an integral term: the controller keeps a running total of how far it has been pushed off course, and leans against it. On our test course it held the robot close to its point in a steady breeze, and in the gap and landing trials the touches in drafts fell sharply.
Then, in still air, it did something we had not expected. On a landing approach that the old controller handled, the safety layers held the robot close to a wall while its position estimate was a few centimetres off. All that time, the integral kept adding up the motion it was being denied. When the target moved on, it spent the total and carried the robot into the wall. The controller had a memory that outlasted the guards. A robot that flies around people should not have one, so the integral stays off until it is built to freeze whenever a safety layer is holding the robot back.
Fix two: measure the push
An accelerometer feels every force on the robot. Take away what the propellers are doing, and what is left is the push from outside, which the controller can lean against as it happens. Research groups have done this for years; one showed a quadcopter holding its place in the wind of a moving fan.
On its own, the estimate did as well in drafts: the touches in gaps and at landings fell sharply, with no cost we could measure in still or room air in those trials.
The cost showed up when we ran thousands of landings in still air. With the estimate on, the robot no longer hovered dead still. It wandered slightly, because part of the sensor noise we assumed (we have not measured it yet) comes through as a push that is not there, and a few landings ended closer to the edge of the surface than any had without it. On the edge of a shelf, that matters. So this one is not switched on yet either: the next version uses the estimate only when there is a real, lasting push, and goes back through the same trials.
The part we cannot simulate yet
Right next to a wall, a propeller’s own air does something we could not find measured for a robot like ours. We do not know how strong it is, or even whether it pulls the robot towards the wall or pushes it away. When we tried a plausible guess, the touches at the narrowest gaps rose sharply. One unmeasured effect may decide how narrow a gap Alkyon can pass. It will be measured on a test stand, not argued about.
What we took from it
- A still-air result is a still-air result. We now say so next to every result, as on the page about passing a narrow door.
- A robot that cannot hold its place has to know it. Alkyon is being designed to measure the push on it and, when the air moves more than it can handle, to wait or take another way instead of trying the gap.
- Run the boring trials too. Both fixes looked like clear wins in drafts. Both showed their cost in still air, in trials that had been passing all along.
These are simulation results: the air model uses published values, not our own measurements, and Alkyon is a concept that flies only in simulation. Sources, read 4 November 2026: Sanchez-Cuevas, Heredia and Ollero, characterization of the aerodynamic ground effect and its influence in multirotor control, International Journal of Aerospace Engineering, 2017; Conyers, Rutherford and Valavanis, an empirical evaluation of ceiling effect for small-scale rotorcraft, ICUAS 2018; McKinnon and Schoellig, unscented external force and torque estimation for quadrotors, IROS 2016.