|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
Есть два мотора. Я отслеживаю их позиции. Если при движении вперед позиция первого мотора больше – он двигается быстрей – я его притормаживаю а второй ускоряю. Ну и так далее. Исходник Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90.
Возник вопрос – что делать если разница в позициях достигла предельно допустимой? То есть я конечно остановлю оба мотора. Но потом, если пользователь продолжает жать кнопку вперед – я подумал тот мотор который отстает все таки запустить – он сравняется с позицией со вторым мотором – я запущу второй мотор и продолжу отслеживать позиции. Вобщем я начал кодить, добавлять эту часть – такая каша получается, мама не горюй. Есть какая то алгоритмика в этих вопросах? Модератор: Просьба большие простыни убирать под спойлер. Поправил. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 12:09 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
Погугли алгоритмы работы автомобильных антиблокировочных систем. Там похожая задача решается. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 13:02 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
Dima TПогугли алгоритмы работы автомобильных антиблокировочных систем. Там похожая задача решается. да. там система пытается скомпенсировать разность вращения колес. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 13:06 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
Чето у тебя так много букв? Если заменить motor_rt_params[mot_idx1] и pos_dif_control[group] на переменные то станет как-то компактнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 13:54 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
Явно не хватает параметра инертности разгона и торможения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 14:01 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
982183Явно не хватает параметра инертности разгона и торможения. это осталось вне алгоритма. то есть в этот момент Код: c# 1.
нужно бы включить какой нибудь PID по хорошему - регулировать дельту скорости в зависимости от дельты позиции а не тупо Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 14:17 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
jenya7Есть какая то алгоритмика в этих вопросах?Есть такая штука как теория управления. Пропорциональные регуляторы, дифференциальные, интегральные, смешанных типов... почитайте, очень способствует. Потом запрограммировать это не так уж и сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 14:33 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
jenya7нужно бы включить какой нибудь PID по хорошему - регулировать дельту скорости в зависимости от дельты позиции а не тупо Код: c# 1. 2.
Для примера постейшая система диф.уравнений с постоянными коэфф-ми типа dy/dt= -a*x(t)+ c1 dx/dt= -b*y(t) +c2 + физические ограничения. Параметры такие, чтобы решения были устойчивыми к малым колебаниям в параметрах и в начальных условиях y0 x0. Покопайся и порисуй траектории на плоскости - помогает думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 12:02 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
jenya7, надеюсь понятно, что dx/dt скорость. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 12:04 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
exp98jenya7, надеюсь понятно, что dx/dt скорость. Я должен пояснить, что регулировку скорости в моторе я делаю приложением PWM. То есть speed это PWM. Пока я немного улучшил алгоритм, включив пропорциональную составляющую Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 12:57 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
jenya7, это не важно, я проглядел (давно не брал шашек в руки) Твой вариант типа однородный дифур 2-й степени (слева будет ускорение) d2Z/dt2= -A*dZ, где Z= y-x так? всё равно решение аналитическое через корни квадратного ур-ния, просто, но надо вспоминать. И, вроде, всё равно Z будет подобие комплексной экспоненты. Получается тогда, что ускорение "дёргаешь" пропорционально разнице коорд-т, а скорость экспоненциально. Если качественно я не соврал, то вот и алгоритмика получилась. Тебе решать, подходят ли такие рывки. Но вроде, поскольку дёргаешь ускорение, не контролируя будущую скорость, то и возможна игра моторов "на перегонки". ИМХО хорошо сначала определиться с концепцией "догонялок". Кажется немного похожим, если в пробке газовать пропорционально расстояниюдо передней авто. Типа: если 10 метров, то педаль в пол, а текущая скорость не учтена. Как-то так ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 13:55 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 23:48 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 13:22 |
|
Алгоритм закрытия позиционной разности моторов
|
|||
---|---|---|---|
#18+
Жмешь педалю, а по сопротивлению линий пропорционально раскидывается подаваемое давление (управление твоими моторами - больше газа на мотор который отстает). ПИД регулятор, который тут посоветовали - ну очень интересно было бы посмотреть, как его в программе сделают а потом настраивать на нужную чувствительность будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 13:27 |
|
|
start [/forum/topic.php?fid=16&msg=39850671&tid=1339918]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 245ms |
total: | 393ms |
0 / 0 |