Собрал платформу робота на базе гученечного танка.
CPU: платформа ПЛИС Altera Cyclone2, NIOS2, 8Мб ОЗУ.
Интерфейсы: Bluetooth UART, Ethernet 10T, PPM 40 Mhz.
Сенсоры: Ультразвуковой поворотный сканер 120град, фото/видеокамера 2МПикс, сенсорный ЖК дисплей 240*320.
Силовая установка: 2 коллекторных стандартных привода, ШИМ по 8 бит на направление, энкодер на каждой стороне 16 имп на оборот ведущего вала.
Все это все обрабатывается аппаратно, а результаты приходят на центральный процессор.
Вообщем по отдельности все замечательно работает, в ручном режиме управляется, препятствия видит, объезжает.
Но задача у меня собственно была такая, сделать програмируемого робота, наподобие старого детского лунохода.
А проблема собтвенно вот в чем, никак не могу придумать как уровнять скорости вращения ведущих двигателей при прямом движении и как расчитать требуемую разность в шагах между двигателями. Энкодеры выдают, грубо говоря, пройденное расстояние каждой гусеницы.
Вообщем я задаю направление и расстояние, на которое необходимо переместиться, или угол поворота.
PS: пробовал застабилизировать обороты ПИД регулятором, но из-за малого числа импульсов на оборот и сильно разной нагрузке стабилизировать тяжело. Можно корректировать позицию ведомого привода относительно ведущего, но как тогда быть при поворотах.
Вообщем хелп, а то у меня творческий кризис.