Виталий писал(а):Ну вот с парой двигателей есть проблема...
А именно их нужно синхронизировать не только до нужной скорости, но и и время набора этой скорости.
Если этого не сделать и выдать на один и на другой двигатель команду "прямо 80", то скорее всего робот сперва сделает реверанс, вызванный различными скоростями разгона двигателей, и только потом выйдет на режим.
В том то и дело, что я не предполагаю давать такие команды и вообще предполагаю ограничить программно максимальное ускорение, которое робот пытается развить, правильно подобрав этот параметр в ходе, скажем, некой "калибровки", мы сможем потом управлять разношерстными двигателями синхронно. Когда указанный мною ПИД-алгоритм будет не допускать расхождения в скоростях.
Ладно - попробую рассказать как делается верхний уровень

Каждая из процедур нижнего уровня может выдать что она "сдается" и сказать в какую сторону "сдается" и насколько всё ужастно.
Если верхняя процедура при назначении следующих скоростей видит, что какая-то из нижних процедур "сдается", она выбирает следующие плановые показатели такие, чтобы ни одна из нижних процедур не "сдавалась" и при этом мы минимально отклонялись от плана движения в первую очередь по траектории, а во вторую - по времени её прохождения, а если такого выхода нет, то чтобы сумма "ужастностей ситуаций" была минимальной, то есть чтобы выйти из невозможности корректно влиять на ситуацию.