Mam prosty system serwo, który wykorzystuje kontroler PID zaimplementowany w MCU do wykonania sprzężenia zwrotnego. Jednak właściwości systemu zmieniają się dynamicznie, dlatego parametrów PID nie można nigdy dostosować do wszystkich okoliczności.
Mój robot to lekkie ramię z napędzanymi z tyłu silnikami elektrycznymi, podobnymi do tego:
Ramię wykonuje kilka zadań, w tym podnoszenie dużych ciężarów, pchanie i ciągnięcie przedmiotów po biurku. Każde z tych zadań wymaga innych parametrów strojenia PID, których nie mogę łatwo przewidzieć.
To, co naprawdę chciałbym, to funkcja wyższego poziomu, która może ostrożnie dostosowywać parametry w odpowiedzi na zachowanie ramienia. Na przykład, jeśli zauważy, że ramię oscyluje, może zmniejszyć P i zwiększyć D. Lub jeśli zauważy, że ramię nie osiąga celu, może zwiększyć I.
Czy takie algorytmy istnieją? Byłbym szczęśliwy, nawet gdyby algorytm nie udoskonalił parametrów od razu. EG ramię mogło oscylować kilka razy, zanim parametry zostały dostosowane do ich nowych wartości.