Guided mode velocity control: instantaneous velocity control instead of integrating position errors

Hi All!

I would like to implement a high-update-rate velocity control in guided mode, in which when we give instantaneous velocity control commands and we expect the copter to reach the last velocity as soon as possible, without integrating position errors or caring about previous velocity commands.

I realised that the current guided mode velocity control is an “integrating velocity control”, it is designed for low update rate and GCS based control and it integrates position errors and tries to keep average velocity at the given level. I.e. if I give a still copter a command to go with 4 m/s, it will start to accelerate and will overshoot with v>4m/s to compensate for the initial period of v<4m/s and reach an average 4m/s in the end. However, in some cases this results in unexpectedly large velocity and position errors that cause undesired oscillations.

Do you have any suggestion how to create an option for velocity control that does not integrate position errors but tries to get close to the last given velocity command as soon as possible?

I attach a log file for the current case, the one I do not want. I want a simple exponential approximation of the desired velocity from below. I assume that this would be a very useful option in a lot of applications using companion computers.


1 Like

While getting no response I did a commit on our own branch to have this functionality (not tested yet, only implemented):

Hey @vasarhelyi

Can you by any chance explain how their control structure works? is it velocity control within the position control?

Hi @vasarhelyi

Could you test your changes of the velocity control in guided? We are using firmware 3.5.3 and we have the same problem as you, see Guided velocity does not match desired velocity

Thank you for your answer!