Ну вот господа, сделал свою первую тележку Основная задача - отработка алгоритмов движения в замкнутом пространстве, для будущего пылесоса (жена просит). Код пока премитивный, набросал на скорую руку для проверки работоспособности. Обвес незатейливый: контроллер PIC16F876А с бутлоадером, драйвер двигателей L293D, драйвер шаговика ULN2003 и расширитель портов CD4028, датчик расстояния SHARP, есть радиоприемник 433мГц (чтобы была возможность самому порулить ). Есть пару энкодеров - светодиод и фототранзистор - установлены на просвет гусениц, и пока не используются. Управление двигателями - ШИМ. Вот пока ломаю голову, как сделать алгоритм обхода территории....пока остановился на двухмерном масиве, на манер карты, значениями ячеек массива - весовые значения, что-то вроде 0 - нет препятствий, 1 - препятствие со строны условно ЮГ, 2 - препятствие со строны ВОСТОК, 4 - препятствие по сторонам ЮГ-ВОСТОК, ну и т.д. Видео тут: http://video.mail.ru/mail/julbu/1/4.html
Сейчас дистанционное у него или автономное управление? Спереди что у него вращается из стороны в сторону? Как собираешься инициализировать массив направлений?
На видео автономное управление. Вращается датчик расстояния Sharp (GP2D120XJ00). По массиву: думаю брать одну ячейку условно равную размерам необходимым для полного разворота бота, изначально робот условно в центре масива, памяти думаю хватит, у меня комната небольшая
julbu Сзади и спереди можно сонары поставить и если сонар засёк объект ближе 60см, запускать датчик ИК и крутить им. А задним сонаром следить за возможным откатом назад для объезда препятствия.
Схемы нет как таковой, да там ничего интересного и нет...типовые решения. По алгоритму управления сейчас все примитивно: 1. Едем прямо на максимальной скорости. 2. Если появилось препятствие спереди на расстоянии ближе 15 см, переключаем шим на управление от расстояния (притормаживаем). Если ближе 7 см, останавливаем двигатели и вертим "башкой". 3. Сравниваем расстояни замеренные дальномером слева и справа, где большее расстояние, туда и поворачиваем на 90 гр. 4. Если расстояние слева и справа меньше 5 см, отьезжаем на корпус назад и поворачиваем по пункту 3.
Я на пиках давно программирую, атмел не изучал, не было неоходимости. Крутится медленно т.к. там шаговик с редуктором, а во время езды крутить можно и нужно....но это следующий этап.
Мне у пиков не нравилась стандартная среда разработки, просто кусок.. А так прикольные камешки, шустрые. А щас можно вообще юзать PIC32. Так что зря вы так с PIC.
Тележка - супер, на такой платформе можно классную вещь сделать.
Я тоже как-то думал о таком роботе, но всё закончилось на одних, но очень не плохих раздумьях...
Вот собственно алгоритм: -робот едет, пока не уткнется в стену -робот обьезжает по краю всю комнату, записывая контур в массив... (на гусеницы нужно будет установить датчик, считывающьий пройденное расстояние) -если робот вернулся в исходную точку - закончить ехать по контуру -теперь псевдо рекурсивной функцией объезжает всю комнату, записывая в массив то, что он уже прошёл -если на пути препятствие - ... надоело писать там сами разберётесь
*псевдо рекурсивная функция - вы представляете алгоритм заливки какого либо пространства? если да то это не вызовет у вас труда...
Спасибо, отличное решение. Так наверное и поступлю. Обход препятствий по часовой стрелке, только лучше будет тогда сделать векторное управление, т.к. на гусеницах уже стоят фотодатчики-энкодеры. P.S. Ходовая: редукторы из чип-дипа, колеса и траки от какого-то китайского конструктора, остальное алюминиевые уголки, латунь, фторопласт и немного токарно-фрезерных работ.