Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Differential: Fix PID implementation and adjust speed setpoint based on yaw rate setpoint #23928

Closed

Conversation

chfriedrich98
Copy link
Contributor

Solved Problem

This PR address these 2 problems:

  • The integral limits are implemented wrong due to the fact that the limit is taken prior to the multiplication with $k_i$. To fix this the integral limits need to be divided by $k_i$.

  • The controller prioritizes yaw rate over forward speed. A high yaw rate setpoint can therefor make the forward speed setpoint infeasible due to actuator limitations. This leads to the integrator of the speed controller to build up. This can be fixed by adjusting the speed setpoint based on the amount of control effort that is “occupied” by the yaw rate setpoint.

Test coverage

  • Tested in SITL
  • Tested on hardware
    image

@chfriedrich98 chfriedrich98 added the Rover 🚙 Rovers and other UGV label Nov 12, 2024
@chfriedrich98 chfriedrich98 self-assigned this Nov 12, 2024
sfuhrer
sfuhrer previously approved these changes Nov 12, 2024
@chfriedrich98 chfriedrich98 force-pushed the differential_speed_setpoint branch from 377595e to 1815a41 Compare November 18, 2024 07:43
@chfriedrich98
Copy link
Contributor Author

This will instread be fixed with the new PID library in #23931

@chfriedrich98 chfriedrich98 deleted the differential_speed_setpoint branch November 25, 2024 15:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Rover 🚙 Rovers and other UGV
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

2 participants