I’ve activated the CIRCLE_OPTION parameter 1, so according to the docs the copter should update the heading during circle, and it should be tangential to the circle. But it is not. It stays what it was when the copter entered the circle. Other than that, the circle is flown correctly.
The CIRCLE_OPTION is 7 here, so other parameters are also active.
Hello @mackay9, thanks for your answer. I’m sorry, I’m still falling on the read priviledges problem over and over again. I hope now it is fixed.
However, I still don’t understand if it is possible to get the heading updates in the direction of travel in the circle mode. The RC yaw input had to be very small (if any), at some point I’ve added it and the copter has changed its heading, which is visible in the video footage. But it was still no being updated to be tangential to the circle.
I can see you’ve changed the description of the bit 0.
Txs for sharing the logs. It looks like a small amount of RC yaw input appeared as the vehicle was switched into Circle mode. The RC4_TRIM = 1500 and RC4_DZ parameter is set to 20 so anything < 1480 or > 1520 would cause the vehicle’s yaw to stop rotating.
Ah thanks! Now I see, I should enter the circle mode without touching the left stick, when the loiter has already been stabilized. It must be not so simple, as I’ve tried this many times and it always behaved like this.
However, the option of stopping the heading updates during CIRCLE could be also cofigurable. Or is it already covered by some more general yaw control parameters?
In my opinion, checking the behaviour in SITL is not very realistic, even if it works in theory. If I want to change the altitude while circling (useful for testing the camera), it is realistically not possible to stay in the yaw dead zone. A parameter would define if the tangential heading updates should be overriden by the yaw input.
In circle mode it is not possible to ignore the pilot’s yaw or throttle input. Just FYI, this is actually explained on the circle mode wiki page.
In Auto mode’s equivalent, Loiter-Turns, the throttle is always ignored and the yaw input can also be ignored by setting one of the AUTO_OPTIONS parameter bits.
I think it makes sense to be able to ignore the pilot’s yaw and throttle input though. We could either re-use one of the existing CIRCLE_OPTIONS bits or perhaps add new ones. For the yaw we need to be slightly careful about how we implement this and consider how this could affect loiter-turns. There’s a similar RTL_OPTIONS bit for ignore yaw and we use that even in Auto mode.
Thank you so much, @rmackay9! CIRCLE is a very very important mode for me, perfect for testing the equipment without the need of adding a mission. It would be perfect to allow for more control. However, I don’t understand why the RTL_OPTIONS’s only bit (the yaw control) should be used in Auto mode, when the description says:
Options that can be applied to change RTL mode behaviour:
Ignore pilot yaw
Is Auto considered a part of RTL? I hope this issue is not relevant for Circle?
Re RTL_OPTIONS, it is used within Auto when executing RETURN_TO_LAUNCH commands.
My feeling is that we should extend CIRCLE_OPTIONS’s first bit (which was called “manual control”) to also control yaw and throttle (which controls altitude). I think the throttle part of this is a no-brainer but it’s less clear for yaw. It’s possible that some users would want to be able to adjust the circle radius, rate or altitude but would want to control yaw.
If we did the above then I think it would be natural for AUTO_OPTIONS’s “ignore pilot yaw” bit to apply when loiter-turns are being executed. If instead we add a new bit to CIRCLE_OPTIONS called “ignore pilot yaw” then I think we would need to use that in Auto mode (during loiter-turns) to be consistent with how we handle RTL-within-auto and Land-within-auto.
Maybe this is too much information but I’m thinking through what to do so it helps to write it down.