@volate!lo
I disagree with the different PID sets for different distances and circling speeds. Once you have found working PIDs, you can use them over a wide range of speeds and radiuses as the PIDs provide a model to deal with inertness and latency and these are not dependent on the speed or radius.
@Aurius
If you are
really interested in a solution, we can make some kind of deal because my Lissajous algorithm does exactly also what you are searching for: It controls movement of one or more Tellos where the movement on X, Y an Z axis is described by sine functions overlayed with certain amplitudes and phase shifts. A circle or an ellipse is just one special (and trivial) case of such a movement. The problem may be, that my approach is dedicated to
Tello EDU and expects a feedback with a current position in that coordinate system. You'll get them as long, as you fly over a map containing the patterns which are recognized by
Tello EDU.
Another approach could be by just experimenting with constant yaw and sideward movement generated through rc commands with fixed values at a constant rate. With some patience and luck, you may be able to find a set of values, that will let
Tello fly in something looking similar to a circle. This should also work without special map patterns on the ground.
Third approach would be an implementation based on OpenCV and some kind of AI based object detection (e.g. human pose detection, if the object you want do circle around is a person). In that case, you only need an implementation that controls yaw in a way that the object is always kept near the center of the image and a distance control (keeping some part of the object always in the same size). Also this approach requires finding a set of working PIDs but the tolerance is much bigger than finding PIDs for the Lissajous problem. When you now add a constant sideward movement with rc commands, you'll end up with a circle around the object. The advantage is, that this still works even when the object slowly moves by itself. You can see exactly that behaviour in the Pose Tracking example in my signature. The circular movement around me starts at 01:33:
As you can imagine, how much time went into these projects, you may understand, that I do not plan to make all that code public.