Strange behaviour in CIRCLE mode

I want to continuosly rotate copter automatically in Yaw axis. So I changed mode to CIRCLE, radius set to 0 and its finally rotate in one point, but after finish full 360 circle it start to rotate in opposite direction, after that and start to rotate correctly as 2nd circle…

tried many options with CIRCLE_OPTIONS parameter but without success

You left out the most important piece of information. Is this ArduCopter 4.2.1?

1 Like

Sorry for that. I’ve tested it on many firmware versions, i.e. 4.0.7, 4.1.5 but it is the same result. Should I move this post to another part?

No, you can keep it here.
@rmackay9 one more for the list of ArduCopter 4.2.x issues :frowning:

Will be great, if the maximum speed of rotation increased to 180 deg/s :innocent:

Hi @owiec,

Txs for the report. My guess is that the circle rate is faster than the vehicle can achieve (perhaps because of another yaw rate limitation perhaps in the ATC_ parameters).

To provide this I think you could set the CIRCLE_RATE to be much lower and the problem will go away.

Can you prove an onboard log showing the issue?

Hi @rmackay9
Thank You for Your reply.
I’m not sure which parameter is related for this, I guess it’s ATC_ACCEL_Y_MAX?
I’m sending all ATC_ params:


“To provide this I think you could set the CIRCLE_RATE to be much lower and the problem will go away.” - I’ll check this and back to You soon, but I want to rotate much faster :slight_smile:

Sure, here is log (file is larger than 4MB):


I think the limiting parameter will be ATC_SLEW_YAW (currently set to 60deg/sec) or ATC_RAT_YAW_MAX (but this is set to zero so it shouldn’t be the issue).

Hi @rmackay9
Sorry for late response.
Changed ATC_SLEW_YAW from 6000 to 9000 solved the problem :slight_smile: the drone rotates correctly without any strange movements. CIRCLE_RATE was set to 90.
I’ve also tried with lower values ATC_SLEW_YAW, for example 8000 and CIRCLE_RATE 90 and it was quite good, but it started do that weird movements after 2+ rounds, not after 1st lap.
Next I’ve tried reduce CIRCLE_RATE TO 80 (ATC_SLEW_YAW still 8000) and it works correctly.
So I assume there is a strong dependency between these two parameters. Increasing value ATC_SLEW_YAW >9000 doesnt change anything in CIRCLE mode. It changed speed of rotating manually by remote controller but I dont need that speed by RC but remotely.

Summing up, CIRCLE_RATE 90 and ATC_SLEW_YAW 9000 solving my problem so far.

I’m looking for possibilities to increase the speed of rotating - is there any chance to increase the range value of CIRCLE_RATE?

Hi @owiec,

Thanks for the feedback. So this means that we probably need to limit CIRCLE_RATE so that it can’t be higher than ATC_SLEW_YAW (or at least print a warning). I’ve created an issue here.

Re the range of CIRCLE_RATE, if the full parameter list (or full parameter tree) page is used in MP (or some other GCS) then it should be possible to set the parameter outside the recommended range. The range is really just a convenience to reduce mistakes. It’s not actually limited in the autopilot software.

Hi @rmackay9

I think it should be warning and notice in description field in parameter list. I dont know it should be limited, maybe it is usable in other situations. Pay attention the value of CIRCLE_RATE is 100x times lower than ATC_SLEW_YAW. If the unit is identical the issue should be:
circle mode can’t point vehicle at center if (CIRCLE_RATE * 100) > ATC_SLEW_YAW

I didnt know about “no limit”, I thought that description and it’s given range in values is limited by software. So…

This is speed of rotating with CIRCLE_RATE 240 and ATC_SLEW_YAW 24000 which also work perfectly, but can You assure me it is safe to setting parameters above the limit in the description field? Where is the limit? it is 16bit (un)signed value or maybe 32bit?

and this is crazy movement with 360 and 36000