Здесь мы не будем писать рекламные лозунги о том, какие классные это штуки – роботы-пылесосы, насколько они могут изменить Вашу жизнь, если Вы их у нас купите. Цель этой статьи – показать техническую сторону вопроса и дать нашему читателю наиболее полезную и не привязанную к каким-либо конкретным моделям информацию о том, как работает робот-пылесос.
Итак, в основу работы любого робота-пылесоса положены следующие вещи: навигационная система, чистящий модуль, приводящие механизмы, аккумулятор. Именно эти элементы присутствуют в любом современном роботе-пылесосе, и именно качество их работы влияет в конечном итоге на качестве уборки в Вашем доме. В нашей статье мы затронем самые главные вещи в работе робота, а остальные осветим косвенно, в ходе основного повествования.
Навигация
Итак, разберем по порядку. Навигационная система, как сразу понятно из названия, помогает аппарату ориентироваться в пространстве. Именно от ее работы будет зависеть, где робот может застрять, заблудиться, не почистить пол и т.п. Каждый производитель внедряет в свои изделия собственную систему, но все же, можно выделить несколько основных:
- навигация по датчикам робота;
- навигация по внешним датчикам;
- навигация по лазеру;
- навигация по камере;
Все эти способы навигации имеют свои плюсы и минусы, но здесь мы их описывать не будем – лишь освятим принцип работы. Навигация по датчикам происходит динамически, т.е. робот с помощью датчиков в бампере и под корпусом фиксирует то или иное изменение в окружающем его пространстве и принимает необходимое решение о том, как будет продолжаться уборка. Например, если на пути аппарату встречается диван, то он может притормозить и, соприкоснувшись с последним, начать убирать вдоль него. Грязь тоже фиксируется – наиболее грязные участки робот чистит более интенсивно. Навигационные возможности в данном случае зависят от кол-ва и типов датчиков, скорости обработки сигналов процессором, емкости и скорости памяти робота (если она имеется). Производители могут закладывать разные типы движений для той или иной ситуации, например, вперед-назад или спиральный ход при обнаружении очень грязных участков.
Второй тип навигации – это та же динамическая навигация по датчикам, но только с использованием внешних устройств для разделения помещения (-ий) на зоны для более быстрой и качественной уборки или простого ограничения зон. Подобные датчики называются в первом случаем маяками (координаторами движения), во втором — виртуальными стенами (или ограничителями движения). Представляют собой небольшую пластиковую коробочку, посылающую инфракрасный луч (невидимый и абсолютно безвредный для человека). Если это маяк, то он посылает еще два луча, по которым робот ориентируется о его местонахождении, а основной инфракрасный в определенный момент прерывается для того, чтобы аппарат перебрался в следующее помещение. С виртуальными стенами все проще – робот при фиксации луча попросту разворачивается и едет в другую сторону. Подробней об этих устройствах Вы можете прочесть в нашей отдельной статье — http://www.1-robot.ru/page_155.html.
Навигация с помощью лазеров на данный момент считается самой продвинутой. Суть ее в следующем: на робот ставятся лазерные дальномеры, которые фиксируют расстояние до различных предметов и, таким образом, составляют в памяти аппарата карту помещения. После чего он будет убираться поочередно в каждой комнате, а геометрия перемещения будет представлять из себя четко размеченные прямые линии. Подробней про этот тип навигации также можете почитать в отдельной статье.
Использование для ориентирования камеры. Как правило, камера устанавливается на верхней панели робота и снимает показания с потолка и стен, т.е., фактически, робот будет ориентироваться по потолку. В зависимости от производителя, уборка будет осуществляться покомнатно (как в роботах с лазерами), либо с несколько хаотическим перемещением робота, но также по прямым линиям.
Стоит отметить, что тип навигации номер один может не только использоваться как основной, но и быть дополнительным для всех остальных (в типе номер 2 присутствует обязательно).
Уборка мусора
Перемещаясь по Вашему полу, робот-пылесос, в первую очередь, должен качественно собирать всю попадающуюся на его пути грязь. И тут производители не столь разнообразны, как в случае с навигацией. Классическая схема сбора мусора любым роботом-пылесосом такова: при движении боковая щетка аппарата (как правило, расположена с правой стороны) сметает все волосы, пыль и грязь из углов, возле плинтусов и мебели под основную щетку (или центральную). Основная щетка имеет ворсистую структуру, что позволяет ей собирать как пыль, так и волосы, шерсть, грязь. Именно она выполняет основную работу, а не двигатель, всасывающий пыль, как заблуждаются многие люди. Щетка, по сути, работает как веник, подбрасывая все загрязнения в сторону пластикового мусоросборника, после чего всю эту массу подхватывает воздушный поток и просто прессует в пылесборнике. Далее поток воздуха от двигателя проходит через фильтры в мусороприемнике и выдувается роботом наружу. В зависимости от качества этих фильтров воздух будет выдуваться той или иной чистоты.
Принцип сбора мусора на примере iRobot Roomba 600 серии (здесь — две центральные щетки)
Боковая щетка робота-пылесоса
Теперь нюансы. В зависимости от производителя, могут меняться следующие вещи:
- Кол-во и типы основных щеток. Их может быть две, причем вторую ставят резиновую. Вращаются такие щетки навстречу друг другу. Ворсяная качественно собирает пыль, волосы, шерсть и другие мелкие загрязнения, а резиновая – крупные (крошки, крупная грязь, песок). Такие щетки ставит, например, iRobot. Также вместо ворсяной может стоять одна резиновая щетка.
- Кол-во боковых щеток. Некоторые производители с левой стороны ставят вторую боковую щетку. Несколько убыстряет процесс уборки.
- Типы фильтров. Могут стоять как самые простенькие, похожие больше на салфетки, так и серьезные, многослойные HEPA, которые так любимы аллергиками на пыль.
- Мощности двигателей и объемы контейнеров. Разбросы здесь минимальны, а значения их второстепенны. Например, мощности колеблются в основном в пределах 40-65 Ватт., а объемы от 0,4 до 1 л.
Здесь заметим, что на качество уборки влияет в большей степени именно основная щетка (щетки), поэтому при выборе робота это стоит учитывать в должной мере.
После уборки
Для работы робот-пылесос использует энергию аккумулятора, при разряде которого аппарат просто выключится. Чтобы этого не случилось, робот при достижении определенного уровня заряда батареи включает режим поиска базы для подзарядки. База посылает инфракрасный навигационный луч, при обнаружении которого датчиком робота (находится в передней части, на бампере), аппарат начинает сближение и стыковку с базой. Обнаружение луча происходит при пересечении роботом навигационного луча, т.к. луч не проникает через физические препятствия.
В верхней переденей части бампера расположен датчик в виде бишенки для приема сигналов от виртуальных стен/маяков и зарядной базы.
Также, стоит отметить, что роботы, оснащенные навигационными системами с камерами и лазерами, как правило, запоминают месторасположение базы (если только камера не даст сбой) и после окончания уборки ищут ее по карте. Такая система способствует более быстрому возвращению робота на зарядку.
Примеры зарядных станций роботов-пылесосов
В общем и целом, мы полностью описали технологию работы роботов-пылесосов. Конечно, мы не затронули такие вещи, как чистка девайсов, но они из себя представляют исключительно физическую работу владельца, поэтому к нашей теме относятся лишь косвенно.
Надеемся, что все вышеизложенное поможет Вам в понимании функционирования той или иной модели и правильном выборе помощника по дому.
Есть люди, которые занимаются уборкой полов только раз в неделю, а есть и другие, кто делает эту работу значительно чаще. Привлекательной характеристикой роботов-пылесосов становится тот факт, что они отвечают нуждам обоих категорий. Так или иначе, с ними дом становится безупречней, практически не требуя человеческого фактора.
Современные лучшие роботы пылесосы далеки от первых моделей, которые приходилось искать под каждым предметом мебели в доме, пока вы не услышите сигнал нехватки энергии. Последние модели, направленные на уборку домов, предлагают разительное повышение эффективности, способность к самоочищению, а также умение находить дорогу к зарядной станции самостоятельно.
В этой статье мы подробнее разберемся как работает робот пылесос. Помогать нам понять как устроен робот пылесос будет iRobot Roomba Red, а также проверим несколько других роботов-пылесосов на рынке.
Принцип работы робота пылесоса
Современный рынок предлагает огромный выбор роботов-пылесосов, цены на которые варьируются от 3.500 рублей до 100.000 рублей. Эти пылесосы для клининговых услуг характеризуются низкой посадкой и компактными размерами, чтобы сохранить возможность проникать под мебель, что недоступно традиционным пылесосам.
Большинство производителей скажет вам, что робот пылесос предназначен для дополнения к стандартной уборке пылесосом, но не может заменить эту работу. Они предназначены для выполнения ежедневной уборки, которая становится важным штрихом в поддержании чистоты, таким образом, робот-пылесос призван поддерживать чистоту между ручной уборкой пылесосом. Тем не менее, если вы из тех людей, кто никогда не пылесосит, роботизированный помощник сможет сделать полы и ковры чище, чем они есть сейчас, а вам не придется и палец о палец ударить.
Самым популярным производителем роботов-пылесосов в России остается iRobot, который предлагает на рынке разнообразные модели, начиная с базовой модели Roomba Red и заканчивая технологически продвинутыми Roomba Scheduler. Для того, чтобы разобраться с тем, как работает робот пылесос, мы заполучили в свои руки iRobot Roomba Red, который станет нашим проводником в мир роботизированной уборки. Давайте начнем с того, что у него внутри.
Устройство робота пылесоса Roomba
iRobot Roomba Red имеет размеры, приблизительно, 13-ю дюймами (33 см) в диаметре и 3,5 дюймами (9 см) в высоту. Внешний осмотр робота пылесоса позволяет выявить следующие детали:
Большинство роботов Roomba работают на аккумуляторах NiMH. Аккумулятор Roomba Red, для примера, рассчитан на 3 ампер-часа, а его полная зарядка занимает порядка семи часов / 18 вольт. Некоторые из последних моделей роботов-пылесосов iRobot, конечно, сократили это время до 2-3 часов. Полная зарядка равна приблизительно 2-3 часам времени уборки, что в мире пылесосов Roomba означает 2-3 комнаты, прежде чем роботу потребуется зарядка. За мобильность робота-пылесоса отвечают два моторизованных колеса. Roomba управляется переменной подачей мощности на каждое колесо.
Пылесос Roomba оборудован пятью моторами:
- Один за каждым колесом (Итого: 2);
- Третий управляет пылесосом;
- Четвертый вращает боковой щеткой;
- Пятый управляет комплектом щеток;
Далее мы рассмотрим другие системы, ответственные за работу роботизированных пылесосов Roomba, начиная с наиболее интересной: Навигационной системы.
Навигационная система робота-пылесоса Roomba
Если рассматривать её отдельно, то именно навигационная система делает роботы-пылесосы роботизированными. И основная разница в моделях за 3.500 рублей и за 80.000 рублей, скрывается в точности навигационных датчиков. Подопытный Roomba Red использует AWARE Robotic Intelligence System от iRobot, систему, призванную сократить вмешательство человека в работу робота максимально. Система осведомления включает несколько датчиков, которые собирают данные из окружающей среды, отправляют их на микропроцессор робота-пылесоса, после чего поведение Roomba регулируется должным образом. Согласно iRobot, система может реагировать на новые вводные данные до 67 раз в секунду. Далее мы разберемся с навигацией роботов-пылесосов детально и поймем как работает робот пылесос более детально.
Первое, что Roomba делает при нажатии на кнопку «Clean», рассчитывает размеры комнаты. Компания iRobot была весьма туманна, когда речь зашла о том, как робот это делает, но мы считаем, что робот посылает инфракрасный сигнал и проверяет, сколько времени требуется на возврат сигнала до приемника, расположенного на бампере робота-пылесоса. После того, как робот устанавливает размеры комнаты, он знает, как долго и далеко ему нужно двигаться в процессе уборки.
Ну а пока робот-пылесос убирает, он избегает ступенек и других видов перепадов высоты, используя четыре инфракрасных датчика на передней нижней части робота. Это «Датчики Обрыва», которые постоянно посылают инфракрасные сигналы и, получив отрицательный сигнал, Roomba незамедлительно остановится. Если робот приближается к обрыву, сигнал пропадет. Старшие модели, как Roomba Red, просто разворачиваются и двигаются в другую сторону, современные же модели способы почистить край обрыва. Когда Roomba Red врезается во что-то, его бампер активирует механические датчики, которые сообщают системе робота, что он столкнулся с препятствием. Затем используется определенный алгоритм действий, вовлекающих поворот и попытку движения вперед до тех пор, пока робот не сможет двигаться вперед.
Есть ещё один инфракрасный датчик, который мы назовем «Датчиком Стены», он расположен на правой стороне бампера и позволяет роботу-пылесосу Roomba очень внимательно двигаться вдоль стены и вокруг других объектов (например, мебели), не касаясь их. Это значит, что робот может пройтись вдоль плинтусов, не натыкаясь на них. Он также может самостоятельно рассчитать себе путь уборки, что, согласно iRobot, подключает предварительно заданный алгоритм, который позволяет роботу полностью охватить полы.
Алгоритм уборки робота-пылесоса Roomba Red
Когда мы тестировали робот пылесос, мы обнаружили, что Roomba начинает уборку двигаясь по спирали наружу, а затем направляется к периметру комнаты. После того, как он встречается с препятствием, он считает, что достиг периметра комнаты. Затем робот убирает вдоль «периметра», пока не достигнет ещё одного препятствия, после чего он чистит вокруг него, находит четкий путь и продолжает двигаться по комнате между объектами, будь то стены или мебель, пока не выйдет отведенное время уборки. Идея, кажется, логичной, уборка в течение определенного времени может обеспечить покрытие всего пола, но сможете ли вы достичь полного охвата пола на практике?
Роботы-пылесосы Roomba могут убирать около двух часов на одной зарядке. Если аккумулятора окажется недостаточно, Roomba просто вернется и подключится к зарядному устройству сам по себе. Зарядная станция поставляется в качестве дополнительной опции для моделей роботов iRobot начального уровня, однако, практически все роботы среднего и далее диапазона укомплектованы зарядной станцией. Возвращение робота на базу достигается с помощью инфракрасного приемника на переднем бампере. Когда батарея робота-пылесоса разряжается, тот начинает искать инфракрасный сигнал, излучаемый базой. После того, как робот находит его, Roomba следует сигналу зарядной станции и, таким образом, самостоятельно возвращается для подзарядки. Некоторые роботы-пылесосы также самостоятельно возвращаются к уборке после зарядки.
Таким образом, Roomba достаточно умны, чтобы чистить полы, пока вы смотрите кино, но остаются пока некоторые действия, необходимые с вашей стороны. Во-первых, вам придется удалить небольшие препятствия на полу, чтобы Roomba не застревал на них и не пытался втянуть их. Вы также должны указать роботу, куда двигаться нельзя. Используйте для этого включенные в комплект виртуальные стены, которые помогут содержать робота в определенных границах. Виртуальные стены подают инфракрасные сигналы, которые Roomba воспринимает по средствам приемника на бампере. Когда он принимает сигнал от виртуальной стены, он знает, что пора развернуться и направиться в другую сторону.
Многообразие датчиков робота-пылесоса, позволяют ему перемещаться в доме сравнительно автономно. Теперь давайте выясним, как он выполняет свою истинную цель: пылесосит?
Уборка роботом-пылесосом Roomba
По данным iRobot, более половины владельцев Roomba, называют их маленькими друзьями-пылесосами. Компания Electrolux, производитель высококачественных роботов-пылесосов Tribolite, сообщает, что получает письма и фотографии из семей, которые владеют роботами. Тем не менее, большинство людей покупают робот-пылесос не потому, что ищут себе нового питомца, которого не нужно кормить. Они покупают его потому, что полы пачкаются.
Робот-пылесос Roomba Red имеет систему очистки из трех частей. Если вы удалите щетки в сборе, можно увидеть два датчика грязи:
Боковая щетка несколько выступает за пределы робота-пылесоса, чтобы достичь районов, к которым робот-пылесос не может получить доступ. Эта щетка также вращается вдоль стен, поднимает грязь и пыль, направляя их к области пылесоса. Щетка с противоположной стороны пылесоса Roomba направляет к пылесосу грязь, которая находится под корпусом робота.
Экстрактор на нижней стороне Roomba состоит из двух вращающихся в противоположных направлениях щеток, которые поднимают грязь и другой мусор, направляя его непосредственно в мусорный бак.
Пылесос втягивает грязь и пыль, которую поднимает робот, пока движется по полу.
Вам, как правило, необходимо чистить мусорный бак, по крайней мере, один раз для каждой комнаты, которую пылесосит Roomba и, возможно, два или три раза, в зависимости от того, насколько грязные полы. Начальные модели пылесосов Roomba не знают, когда бак полон, он просто продолжает убирать. Вам также потребуется заменить фильтр, когда тот будет забит слишком сильно. У пылесоса нет мешка для сбора пыли, он просто собирает всё в мусорный бак.
Что касается мощности всасывания, web-сайт производителя утверждает, что пылесосы Roomba предлагают мощность всасывания, идентичную вертикальным пылесосам, хотя характеристики не предлагают ничего подобного. Тестирование роботов-пылесосов Roomba Red показало, что они отлично чистят полы из дерева и линолеум, собирая значительное количество грязи и шерсти домашних животных на низком и среднем ворсе ковров. Согласно производителю, роботы Roomba не предназначены для уборки ковров с высоким ворсом.
Теперь, когда вы самостоятельно пылесосите свою квартиру, вы принимаете разные решения в процессе. Например, если вы видите, что участок особенно грязный, вы проводите за его уборкой больше времени. Когда вы переходите с линолеума на кухне к ковру в зале, вы переключаете щетку и мощность пылесоса, чтобы достичь максимальной производительности на основе типа пола и функций пылесоса. Роботы-пылесосы Roomba призваны хотя бы частично воспроизвести способность человека к уборке.
Для того, чтобы выяснить, какие участки пола нуждаются в дополнительной уборке, Roomba Red использует два датчика грязи, расположенные непосредственно над центральной щеткой. Эти датчики используют акустическое действие. Когда мешалка поднимает большое количество грязи, её частицы вызывают вибрацию сильнее от попадания на металлические пластины датчиков. Датчики распознают увеличение количества грязи и сообщают Roomba, что в этой области стоит пройтись снова. Для того, чтобы обнаружить смену напольного покрытия, Roomba имеет подвижную колодку (в которой находится щетка), высоту которой регулирует автоматически, когда фиксирует подъем на 1-1,5 сантиметров от поверхности пола.
Есть также особенность, доступная роботам-пылесосам и не доступная человеку с вертикальным пылесосом, они могут убирать под мебелью. Благодаря тому, что Roomba Red в высоту насчитывает только 9 сантиметров, он легко может закатиться под большинство столиков, тумбочек, кроватей и даже под некоторые кушетки. Возможность уборки под мебелью, возможно, одна из козырных карт роботов-пылесосов.
iRobot Roomba Red является удобным устройством, но это лишь один из примеров робота пылесоса. В следующем разделе мы собираемся попробовать другие роботы-пылесосы, доступные на рынке.
Модели и виды роботов-пылесосов
Современный рынок предлагает огромный выбор моделей роботов пылесосов, каждый из которых охватывает определенные задачи — в первую очередь, тем не менее, они пылесосы. Большинство моделей также оснащается своего рода системой уклонения от препятствий, и работают с пульта дистанционного управления. Кроме того, существуют определенные различия между продуктами, на которые приходится большой ассортимент в цене. В этом разделе мы обсудим несколько роботов пылесосов и их отличительные характеристики.
В ассортименте дорогостоящих моделей роботов-уборщиков, вы сможете наблюдать тенденцию к расширению обязанностей в уборке, поскольку они будут делать больше, чем просто пылесосить полы. Продукты, которые раньше продавались исключительно в форме роботов-пылесосов, сегодня начинают предлагать дополнительные функции, среди которых подключение к сети Интернет, домашние системы видеонаблюдения или системы очистки воздуха. Будущее, вероятно, ждут домашние роботы, которые загружают музыку, отвечают на телефон, разогревают духовки, пока пылесосят ваш дом или квартиру.
За получением дополнительной информации по роботам-пылесосам, посетите соответствующий раздел нашего сайта: « Роботы-пылесосы «
В конце первой части статьи была представлена электронная схема простого управляющего алгоритма. В этой части будет рассмотрена электронная и программная составляющая системы управления робота, на основе микроконтроллера.
Электроника:
Плата управления построена на микроконтроллере atmega16, изначально она разрабатывалась, как универсальный модуль, поэтому оказалось плохо защищена от помех электродвигателя турбины. Проблема решилась экранированием проводов двигателя и установкой на него конденсатора в 0.1мкф, также необходимо кинуть вывод RESET контроллера прямо (без резистора) на +5v, это позволяет избавиться от произвольно сброса.
Плата контроллера.
Драйвер двигателей собран на микросхеме L298, по стандартной схеме.
Плата драйвера двигателей.
Остальная электроника и органы управления собраны на макетной плате.
Макетная плата.
Общая электронная схема.
Как вы можете видеть, на схеме нет устройства для контроля заряда аккумулятора и сенсоров для поиска зарядной станции. Всё это было в прошлой модификации робота и достаточно неплохо работало, но так-так получилось всё немного кривовато и требует доработки, то описывать в данной статье эти недостающие элементы я не буду. Однако, чтобы не быть голословным, вот вам видео поиска ЗС, роботом прошлой модификации.
Поиск зарядной станции
Программа:
Наверное, самая интересная часть всей работы – это создание алгоритма и написание программы управления роботом.
Алгоритм уборки разделён на 4 режима:
•Режим ожидания
•Спираль
•Движение вдоль стены
•“Газонокосилка”
Разберём каждый из них по отдельности.
Режим ожидания
Здесь всё просто, приводные двигатели выключены, турбина и щётка тоже, индикатор мигает с низкой частотой, никакой реакции на срабатывание бампера, по нажатию кнопки — переход на следующий режим.
Спираль
Данный алгоритм хорош для комнат с минимальным количеством мебели. После обнаружения препятствия робот переходит на следующий режим, так как этим препятствием, скорее всего, окажется стена, логично было бы сделать переход на режим движения вдоль стены.
На блок-схеме, проверка наличия препятствий дана условно, в программе же она производится постоянно, а не один раз за итерацию.
Движение вдоль стены
По-моему это самый нужный алгоритм в роботе уборщике, так как большая часть мусора и пыли скапливается именно около стен. На первом этапе робот двигается вперед, до тех пор, пока не обнаружит препятствие, а затем переходит к движению возле него. Так как этим препятствием может оказаться не только стена, а вообще что угодно (например ножка стула), то работа режима, дабы исключить зацикливание, должна быть ограничена по времени.
“Газонокосилка”
Алгоритм был предложен на робофоруме и опробован в среде logo. Является хорошей заменой случайному блужданию, в чём можно убедиться, прогнав алгоитм в logo на модели своей комнаты:
Конечно, в реальных условиях всё не так идеально, но зато из сенсоров, для данного алгоритма уборки, нужны только датчики соударений.
Приводить блок-схему этого алгоритма не буду, на робофоруме, есть код на logo.
Программа писалась на чистом С без asm вставок.
Код распилен на несколько частей:
main.c -документ с main функцией и главным циклом.
Periphery.с -аппаратные зависимости, настройка периферии контролера.
Action.c -функциональная часть программы
util/drivers.c -функции управления устройствами
util/timer.c -служба таймеров
Periphery.c
Содержит только одну функцию — Periphery() в которой прописывается настройка периферии контроллера. Функция вызывается единожды, из главной функции программы.
util/drivers.c
Содержит макросы для управления уборочным узлом:
А также функцию управления приводными двигателями:
*_vector – направление вращение двигателя: 1-вперед, 0-стоп, -1-назад
*_speed – скорость вращения, число от 0 до 10
util/timer.c
Внутри две функции:
Функция управления временными задержками. Вызывается только по прерыванию с таймера-счётчика2, каждую 1/1000сек.
Единственным параметром передаётся указатель на переменную, от которой будет отсчитываться время. Переменная должна быть заранее инициализирована некоторым, отличным от нуля значением. Как только значение переменной станет равно нулю указатель на неё будет удалён из очереди таймеров. Длину очереди таймеров можно задать с помощью макроса SIZE_ARRAY_HOURS. Обратите внимание что функция Timer_Task не является аналогом функции _delay(), так-как отдаёт управление сразу же, проверять дотикал ли таймер необходимо вручную. Например, вот так выглядит организация задержек в функции управления индикатором:
Action.c
Функциональная часть кода разбита на модули, для каждого физического или программного устройства пишется свой модуль. Физические устройства:
-Привод
-Кнопка управления
-Индикатор
-Пылесос
Программное устройство:
-Управление циклом уборки.
Модули выполняют разную работу в зависимости от текущего режима. Программа внутри них организована по типу конечного автомата, с помощью конструкции switch – case. Модули могут взаимодействовать с помощью глобальных переменных или изменяя счётчики конечного автомата друг друга.
Вызов функций модулей производится из главного цикла программы:
Не буду описывать работу каждого модуля, в коде достаточно комментариев, кто захочет тот разберётся.
В Action.c так же есть функция util_mode(char _mode), она используется для смены режима работы. Помимо присваивания нового значения переменной Mode, в определении функции прописано обнуление счётчиков конечных автоматов и переменных-таймеров.
Исходники
Проект собирается с помощью компилятора avrGCC, Makefile присутствует.
Заключение:
Робот в собранном виде:
Как вы можете видеть, робот вполне хорошо справляется со своей работой. Способ организации программы позволяет с лёгкостью расширить функционал устройства, добавив недостающие модули: контроль заряда аккумулятора и поиск зарядной станции.В остальном робот уже вполне подходит для каждодневной уборки комнат.
UPD 2014-06-06
Перезолил исходники на GitHub.