New flight mode based on Circle mode

441 views
Skip to first unread message

Anthony Borner

unread,
Aug 11, 2015, 9:47:24 AM8/11/15
to drones-discuss

Hello everyone,


We are two engineering students coming from a French university currently working on an internship project with a luxembourger IT company. Our project revolves around developing on the Arducopter platform. So far we have developed and tested two new modes and would like to show them to the community :


This mode is a modification of circle mode which gives the user control over the circle’s radius, the speed of the drone and the sense of rotation around the centre (clockwise / anticlockwise), we call it the “Photo” mode.

Nowadays drones are used in applications such as photogrammetry or 3D models generation where you have to shoot a loop of photographs in a circular pattern around your subject at different altitudes. This mode was designed to assist the pilot while taking shots around that particular object.

The user can still modify the altitude with the throttle input, while the radius is modified by the pitch input and speed with the roll input. In order to do this we scaled the circle radius and circle rate to the RC inputs.


Let’s take a practical case to show you how the mode works, we will refer to the picture below. You want to make a 3D model of the Statue of Liberty monument, first you will need to bring the drone above the statue.

-Now you can switch to the “Photo” mode, it will register the current location of the drone as the center of rotation and will have a starting radius almost null (case 1 of the picture, the registered center of rotation is the red cross)

-At this point you can widen the circle radius by using the pitch input. Note that if you widen it with a null roll input the radial speed is null and thus the drone will draw a straight line (the green dotted line on case 2). If you increase the radius and the speed at the same time (pitch AND roll input), the drone will draw a spiral. No matter what, the drone will always face the center of the circle.

-On the third case of the picture we use the throttle input to modify the drone’s altitude (green, pink and blue circles) like you would do in Alt Hold or Loiter mode. Note that the centre of rotation follows the drone altitude so it’s still focused on the statue. You can now circle around the subject and take your pictures at the desired radial speed and altitude !




We are currently working on the structure of our code and hopefully we will make a request for a possible implementation in ArduCopter. We would also like to have the community opinion and recommendation on these features !

Robert Lefebvre

unread,
Aug 11, 2015, 9:49:53 AM8/11/15
to drones-discuss
Fantastic! I love it!  Can't wait to see the code for hopeful integration.

--
You received this message because you are subscribed to the Google Groups "drones-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to drones-discus...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Tom Pittenger

unread,
Aug 11, 2015, 10:38:33 AM8/11/15
to drones-discuss

Neat! I wonder what the solo does? It has something similar but I think this one is better. Great idea!

Luis Vale Gonçalves

unread,
Aug 11, 2015, 12:30:05 PM8/11/15
to drones-discuss
Isn't there a risk of changing the control functions (Ail, Roll, ...)

Couldn't this be accomplished by using CH6 to adjust Circle Radius +ve clockwise -ve counterclockwise.

Robert Lefebvre

unread,
Aug 11, 2015, 12:40:28 PM8/11/15
to drones-discuss
I agree, there is some opportunity for users to get confused about the controls.  However, since the copter is automatically panning to face the object, elevator input is still going to push the aircraft forward, and roll is going to make it move laterally.  Also, I hesitate to say we will never add new features, just because some users might get confused with it.  We'd have to remove Acro, and even Stabilize if we followed that to it's logical conclusion.

Randy Mackay

unread,
Aug 11, 2015, 1:36:21 PM8/11/15
to drones-...@googlegroups.com

     So I guess the pitch control is a velocity control?  So when the pilot releases the stick the radius of the circle stops expanding?  And if the pilot pushes the pitch stick forward for a long time the circle gets smaller and smaller and eventually it ends up in "panorama" mode where the vehicle just rotates?

     ..and the roll control is an acceleration control?  So when the pilot releases the stick the vehicle continues to circle at it's current horizontal speed?  .. or maybe at it's current deg/sec speed?

     Anyway, sounds good.  If testers like it I think we could consider adding these controls right into the Circle flight mode instead of creating a new flight mode.

-Randy

Robert Lefebvre

unread,
Aug 11, 2015, 1:52:23 PM8/11/15
to drones-discuss
I would suggest the roll control be interpreted as a tangential linear velocity control.  Trying to use it as an angular speed control would get messy because as the circle gets bigger, the relationship between stick position and linear speed would get very bad.  ie: close in, speed would be very slow.  Far away, speed would quickly end up maxing out the possible linear speed of the copter, so you'd only be able to use very small sections of the stick.

Josh Welsh

unread,
Aug 11, 2015, 2:24:37 PM8/11/15
to drones-...@googlegroups.com

Agree on the roll interpretation, this would help for smooth camera control when circling in wind too.. if user requests, say 10 degrees of angle, they will have inconsistent velocity when going upwind vs downwind while circling the thing of interest.

Eric Liao

unread,
Aug 11, 2015, 2:51:10 PM8/11/15
to drones-...@googlegroups.com
Solo's Orbit mode has the same controls, but that is done on the companion computer.  Perhaps the main difference is that the ROI's altitude remains at the subject's altitude in Orbit, unless manually adjusted using the camera paddle, whereas this use case looks to have an ROI altitude that matches the copter's altitude at all times.  

My understanding of Circle mode is that because it is completely relative to the copter, compounding error will cause your copter to spiral and not form perfect circles.  You really want to have an external input with desired GPS locations to ensure for correction of those errors.     


Robert Lefebvre

unread,
Aug 11, 2015, 3:00:14 PM8/11/15
to drones-discuss
Currently, I believe circle mode locks in to a center point that is established at a given distance (parameter) at the time circle mode is initialized.  So, no compounding errors.  But, much less controllable than a specifically defined target point as Solo would have.

Andy Piper

unread,
Aug 11, 2015, 5:02:00 PM8/11/15
to drones-discuss
+1

Having tried to take a few circular panoramas of my engineering team I can attest that circle mode leaves a lot to be desired - in particular that you have no idea where the center is. FWIW I would prefer that circle mode automatically did what these guys are doing - i.e. when you engage it it treats your current position as the center and imediately flies out to the set radius to begin the circle rather than just setting off in an almost seemly random direction, although I guess that makes it hard to circle objects you can't fly over!

Marco Robustini

unread,
Aug 12, 2015, 2:51:17 AM8/12/15
to drones-discuss
I agre with Andy, it hard to circle objects you can't fly over, this is the real problem.
When it was thought "Circle" mode  I too would have liked it to be like the one being proposed now, but it was decided to develop the virtual circle in front of the direction of the nose.
However it could be set from groudstation, a funcion called "circle here", with the tablet or PC would be possible to set the center of an area with a single click, without having to physically fly over to mark it.

-Marco

Randy Mackay

unread,
Aug 12, 2015, 8:51:08 AM8/12/15
to drones-...@googlegroups.com

Circle's original implementation used the vehicle's current location as the center but then at some point we changed it to use a projection instead.  Changing it back is possible but as Marco suggests it's still an imperfect solution and what we should probably do is instead accept a LOITER_TURNS command-long (in GCS_MAVLink.cpp) which would allow the GCS, with it's better interface, to setup the circle's radius, center point, etc.

-Randy

Allan Musseleck

unread,
Aug 12, 2015, 10:16:03 AM8/12/15
to drones-discuss

Hello,


I’m the second student who’s in internship with Anthony Borner.

At first we used a potentiometer to adjust the circle rate (i thinks you speak about rate and not about radius) but it didn’t felt right when testing it. Actually the pitch (circle radius) and roll (circle rate) are used in the same way as in loiter mode. I mean if you don’t touch the stick, you stay where you are. If you tilt the stick you move in that direction. The more you tilt the faster you travel. And when the stick return in a neutral position, you stop moving. If your radius is near 0 (if you are at the center of the circle) you are indeed in “Panorama” mode.

The tangential linear velocity control is a good idea that we didn’t think about. That needs to be tested.


For the fact that you need to be above the object to define the center of the circle, it’s a choice we made because it’s different from what you can have with the circle mode and because we find it more easy to use. Of course if you can’t fly above your target it’s a bad point but you could still define the center near the object and fly around it because you can modify your radius.

Both solutions are good but we needed to make a choice, so we used the way that felt the most intuitive. You need to remember that this mode need GPS and i can’t think of a lots of situations where you can’t fly above your target in area where you can have a GPS signal.

Valmantas Palikša

unread,
Aug 13, 2015, 2:00:02 AM8/13/15
to drones-discuss
This mode sounds very similar to what I had thought up. My idea regarding controls goes like this:
Pitch stick - controls distance towards the center, works like loiter.
Roll stick - controls position around circle, like loiter, but circular.
Throttle stick - Altitude
Yaw stick - Unused?

So if you release the controls, copter stays in place.

Setting the center with copters' position when the mode is engaged is a neat idea and very convenient!

Robert Lefebvre

unread,
Aug 13, 2015, 8:16:15 AM8/13/15
to drones-discuss
Maybe we can just keep using Circle's radius parameter to satisfy both desires?

If Circle_Radius is set to 0, then the circle center is set at the point the copter is at when mode is engaged.  Then user can pull back from there as needed.  Or, if Circle_Radius is set to 1000, then the circle center is projected 10m forward when the mode is engaged.  And then they can also move in or out from there.

Seems pretty simple, flexible, and keeps with historic usage of that parameter.

Emile Castelnuovo

unread,
Aug 14, 2015, 12:47:31 PM8/14/15
to drones-...@googlegroups.com
I once made what you suggested as an advanced Circle mode.
It was with an old AC version, so I tried to port it to the new master.
Haven't test it yet so you could use it as a starting point. It used to work in old AC 3.0 or something...

This is how it should work:
  • Set 34 to any CH7-CH12 Aux switch.
    This switch will be used to set the center of the Circle.
    If it's a 3 pos switch you must set it to HIGH to save.

  • Once you set the center, move the copter where you like.
    If you want to start with a panorama, don't move the copter and engage circle mode, leave switch in HIGH position, this will ensure that if you have moved some cm (150) it will still set the _radius to 0 ensuring the panorama mode.

  • If you want a fine tuned radius, you put switch to middle, this will calculate exact radius and start circling around the center, with the calculated radius (>0cm.)

  • Once you have determined the starting point just engage Circle mode. Center will be the position saved before and radius the distance between the copter and the center.

  • Use Pitch stick to move away (stick towards you) or towards (stick away from you). I have choosen for the moment a fixed increment of 50cm/s. ToDo: make it variable with stack position

  • Use roll stick to change speed (rate in deg/s) of the on the circle. The spped change is also hardcoded at 5 deg/s for every second the stick is not 0

  • You can set a new center by switching off and on the 3pos switch
You can find the changes in this branch (is is rebased onto master and it compiles):

This is the commit:

Let me know if it is useful.

Cheers,
Emile

Emile Castelnuovo

unread,
Aug 14, 2015, 12:54:18 PM8/14/15
to drones-...@googlegroups.com
Forgot to tell, if you don't save a center, it will work exactly as the old circle mode (at least it should 😀)
The pitch stick behaviour was choosen like if it was in Simple mode and the copter is exactly between you and the center: So if you push it will go towards the center, if you pull it will move away from the center.

This is far from perfect, and needs a review to ensure nothing in the circle or WP_Nav has change radically so please use at your own risk.

If I have time I will try it this week-end.

Cheers,
Emile

Roberto Navoni

unread,
Aug 14, 2015, 1:18:55 PM8/14/15
to drones-discuss
Great Job Emile :)
best
Roberto 
Reply all
Reply to author
Forward
0 new messages