====== Платформа мобильного робота ====== Подвижный робот (мобильный робот) является одним из популярных роботов, которые обычно строят. Очень распространенными являются роботы сумо, спортивные роботы (футбол, волейбол и т.д.), роботы имитации спасательных работ (пожаротушение, поиск человека или предмета и т.д.) и многие другие. Для этих видов роботов существует много различных соревнований в мире и в Эстонии, были разработаны даже стандартные классы (например, роботов сумо). Общим для этих типов роботов является мобильная платформа, которая может иметь различные конструкции и возможности, но её основная функциональность осталась прежней. Этой основной функциональностью является управление двигателями и основной навигацией, которая включает в себя избегания препятствий путешествие в место назначения. Как правило, к основной функциональности добавлена специфическая функциональность, которая проектируется в соответствии с требованиями и возможностями, установленными для проекта. Далее рассмотрим документацию одной типичной мобильной платформы проекта робота и его различных этапов. ===== Исходное задание ===== Спроектировать и построить многофункциональную мобильную платформу робота с базовой функциональностью навигация с помощью компонентов Домашней Лаборатории. Платформа должна позволять легко менять его оперативную функциональность, снабжая его различным оборудованием: * Манипулятор * Радар * Камера Робот должен иметь возможность двигаться на плоской поверхности в помещении. ==== Требования ==== * Максимальные габариты: 20 cm x 20 cm x 20 cm * Максимальный вес 2 kg * Скорость движения min. 0,1 m/s * Возможность легкого добавления дополнительного оборудования * Полная автономия ==== Ограничения ==== * Должна быть построена в основном из компонентов Домашней Лаборатории * Стоимость компонентов не должна превышать 600 € ===== Общая модель системы ===== Общая модель системы представлена в виде блок-схемы. Она описывает структуру, поведение и другие важные аспекты системы. В качестве примера ниже приведена иерархическая модель системы. [{{ :examples:projects:robot:robot_blokk_diagramm.png?500 |Модель структуры системы}}] ===== Проектные решения ===== Для решения этой задачи команда использовала метод мозгового штурма и сгенерировала 3 концептуально разных решения. Была составлена оценочная матрица, с помощью которой найдена самая оптимальная конструкция. Основные отличия решений заключались в схемах движения. [{{ :examples:projects:robot:robot_ideekavandid.png?500 |Проектное решение}}] Упрощённая оценочная матрица выглядит следующим образом: ^ Функция/Решение ^ I ^ II ^ III ^ Весовой коэффициент^ |Стоимость| 3 | 4 | 6 | 0,8 | |Сложность изгатовления | 2 | 4 | 7 | 0,7 | |Манёвренность | 4 | 8 | 8 | 0,5 | |Проходимость | 5 | 8 | 2 | 0,3 | |Применимость Домашней Лаборатории | 5 | 4 | 5 | 0,9 | |Вес | 5 | 6 | 7 | 0,8 | ^Итого (вместе с вес.коэффициентом) ^ 15,8^20,8^ 24,4^ ^ Оценочная шкала была 1-10 очков и весовым коэффициентом 0-1. Вес факторов был выбраны в соответствии с требованиями и ограничениями, установленными для этой системы. Например, хотя решение 2 было значительно более способно двигаться по неровной земле, это не требовалось в предварительных задачах, следовательно, весовой коэффициент был низким. Судя по оценке, оптимальным решением для данной задачи оказалась спутниковая платформа на двух колесах с двумя отдельными двигателями. Дальнейшая работа продолжала развивать выбранное решение в реальной системе. ^ Функция/Решение ^ Проектное решение ^ Платформа на колёсах ^ Платформа на лентах ^ Весовой коэффициент ^ |Стоимость | 3 | 8 | 6 | 0,8 | |Сложность изготовления | 2 | 8 | 9 | 0,7 | |Манёвренность | 4 | 6 | 8 | 0,5 | |Проходимость | 5 | 3 | 10 | 0,3 | |Приминяемость Домашней Лаборатории | 5 | 6 | 8 | 0,9 | |Вес | 5 | 7 | 6 | 0,8 | |Место для установки доп.оборудования | 10 | 2 | 7 | 0,8 | ^Итого(вместе с вес.коэффициентом) ^ 23,8^23,5^ 35,7^ ^ Так как один из наиважнейших приоритетов была цена, то было выбрано готовое решение "Платформа на лентах". Из анализа стало понятно, что используя готовое решение, следует выбрать платформу на лентах, а изготавливая самостоятельно, целесообразнее было бы выбрать платформу на колёсах. Дальнейшая работа продолжала развивать выбранное решение в реальной системе. ===== Механика ===== Механику постарались сделать как можно более простой, но в то же время в соответствии с принципом модульности. Передний и задний бампер - это идентичные модули. Электроника – это три модуля, которые размещены друг над другом, позволяя простые соединения ленточного кабеля, обеспечивая относительно простую смену модулей. Двигатели были отобраны из комплекта Домашней Лаборатории: двигатели со встроенным редуктором и кодером, которые подключаются непосредственно к приводу двигателей. В качестве колес были использованы колёса модели самолета, так как они очень легкие и достаточно сильные для робота. Чтобы упростить конструкцию, нижняя и верхняя платы идентичны. Платы имеют отверстия, позволяющие различным устройствам прикрепляться к верхней пластине. Кроме электронных модулей между пластинами может поместиться и аккумулятор. [{{ :examples:projects:robot:robot_3d.jpg?500 |Первоначальная 3D модель робота и местоположения его компонентов}}] Бампер робота проектируется отдельно и интегрирован с сенсорными датчиками и датчиками отслеживания линий. Бампер сделан из ПХБ и имеет электричество в дополнение к конструкции. Датчики отслеживания линий припаяны непосредственно к бамперу нижней пластины. Сенсорные датчики (микропереключатели) помещены между двумя пластинами бампера и покрыты единым куском резины. Резиновая деталь поглощает удар и в то же время даёт возможность определить, откуда пришел удар. [{{ :examples:projects:robot:pamperi_joonis.jpg?500 |Рабочий рисунок платы бампера}}] ===== Электроника ===== Электроника системы описана принципиальным решением и классической электронной схемой со схемой монтажа печатной платы. [{{ :examples:projects:robot:robot_electronics.png?500 |Блок-схема компонентов электроники}}] В качестве примера приведена схема электроники датчиков отслеживания линий и монтажная схема печатной платы (PCB). [{{ :examples:projects:robot:robot_pumper_skeem.png?500 |Схема электроники датчиков бампера}}] [{{ :examples:projects:robot:robot_pumper_pcb.png?500 |Схема монтажа бампера}}] ===== Система управления ===== Система управления роботом происходит из поведенческой модели и определяется функциональностью, требованиями и ограничениями, исходящими из начальной задачи. Из поведенческой модели системы создаётся алгоритм программы управления, который, в свою очередь, является основой программного кода. Все три уровня (поведенческая модель - алгоритм - код) должны быть согласованы друг с другом. ==== Алгоритм ==== Алгоритм описывает логику управления системой и изображен в виде блок-схемы. Нескольких элементов и описания их соотношений достаточно, чтобы создать простой алгоритм. Если алгоритм робота составлен правильно, то относительно легко составить программу управления для этого робота. В алгоритме обычно используется два различных объекта: прямоугольник с закругленными углами, который обозначает какую-либо деятельность, и маленький ромб для проверки какого-либо условия, после чего следует затем запуск дальнейшей деятельности в соответствии с результатами проверки. Значения символов, используемых в алгоритме: ^Символ^Значение^0^1^-1^ |M1|левый двигатель|стоит|крутится по часовой стрелке|крутится против часовой стрелки| |M2|правый двигатель|стоит|крутится по часовой стрелке|крутится против часовой стрелки| |F|первый средний сенсор касания|нет сигнала|есть сигнал| | |FR|первый правый сенсор касания|нет сигнала|есть сигнал | | |FL|первый левый сенсор касания|нет сигнала|есть сигнал | | |d|ссылка| | | | [{{ :examples:projects:robot:robot_algoritm.png?500 |Диаграмма состояния алгоритма}}] ==== Исходный код ==== Простая навигация #include #include #include // Определение выводов бампера pin front = PIN(C, 0); pin frontleft = PIN(C, 1); pin frontright = PIN(C, 2); // // Основная программа // int main(void) { // Инициализация двигателей 0 и 1 dcmotor_init(0); dcmotor_init(1); // Выводы сенсоров входами pin_setup_input_with_pullup(front); pin_setup_input_with_pullup(frontleft); pin_setup_input_with_pullup(frontright); // Бесконечный цикл while (true) { // Запуск двигателей по часовой стрелке dcmotor_drive(0, 1); dcmotor_drive(1, 1); // Контроль сигнала среднего сенсора if (pin_get_value(front)) { // Реверсирование двигателей dcmotor_drive(0, -1); dcmotor_drive(1, -1); // Пауза в 1 секунду sw_delay_ms(1000); // Запуск левого мотора по часовой стрелке dcmotor_drive(0, 1); // Пауза в 2 секунды sw_delay_ms(2000); } // Контроль сигнала левого сенсора else if (pin_get_value(frontleft)) { // Реверсирование правого двигателя dcmotor_drive(1, -1); // Пауза в 2 секунды sw_delay_ms(2000); } // Контроль сигнала правого сенсора else if (pin_get_value(frontright)) { // Реверсирование левого двигателя dcmotor_drive(0, -1); // Пауза в 2 секунды sw_delay_ms(2000); } } } ===== Готовое решение ===== Созданная в рамках этого проекта платформа робота в значительной степени состоит из пластика, за исключением креплений двигателя, которые сделаны из алюминия. Электронные модули размещены поверх друг друга, и аккумулятор свободно помещается между пластинами. Бамперы сделаны из печатных плат и окрашены в черный цвет. Верхняя плата робота является абсолютно плоской, позволяя прикреплять различные выбранные устройства. На робота был установлен несложный радар, который состоит из небольшого серводвигателя RC и инфракрасного датчика. В качестве второго решения на платформу был установлен модуль интеллектуальной камеры для решения задач машинного зрения. Оба решения показаны на следующих изображениях. Стандартный манипулятор был испытан в качестве третьего устройства, компоненты которого контролируются стандартным серводвигателем, используя последовательный интерфейс для управления их приводом. [{{ :examples:projects:robot:robot_radar.png?580 |Робот с инфракрасным радаром}}] [{{ :examples:projects:robot:robot_camera.png?580 |Робот с модулем интеллектуальной камеры (CMUcam3)}}] ===== Финансовый расчёт ===== Финансовый расчёт включает в себя стоимость компонентов и затраты на изготовление роботов. Таблица стоймости компонентов ^Компонент^Марка^Кол-во^Цена^Стоимость^ |Двигатель|M LE149.6.43|2|500.-|1000.-| |Микроконтроллер|uC ATmega128|1|900.-|900.-| |Актуатор двигателя|Actuator Board v1.2|1|700.-|700.-| |Плата питания|TP|1|500.-|500.-| |Датчики линейного отслеживания|LFS QRD1114|8|30.-|240.-| |Сенсоры касания|TS Microswitch|8|25.-|200.-| |Плата корпуса|ABS |4|50.-|200.-| |Заготовка печатной платы| |2|50.-|100.-| |Профиль крепления двигателя|Al-L |2|10.-|20.-| |Колесо|60/10 mm |2|30.-|60.-| |Аккумулятор|NI-MH 9,6 V|1|350.-|350.-| |Различные кабели| |10|20.-|200.-| |Гайки-болты| |1|50.-|50.-| |Другие принадлежности| |1|100.-|100.-| ^ Итого^ ^ ^ ^ 4620.- ^ Оценка труда и себестоимости производства в одном экземпляре робота. ^Работа^Время (h)^Цена^Стоимость^ |Фрезеровка деталей конструкции|1|300.-|300.-| |Фрезеровка печатных плат (бампер)|0,5|500.-|250.-| |Составление конструкции робота|0,5|250.-|125.-| |Составление бампера (пайка компонентов)|1|300.-|300.-| |Программирование|5|300.-|1500.-| |Составление документации|3|250.-|750.-| ^Итого^ 11 ^ ^ 3225.- ^ Оценочная стоимость робота всего **7845.-** Высчитанная стоимость робота всё же приблизительная, так как это учебный проект, где большинство работ и составлений выполнено в значительно большем объёме, но без прямой денежной оплаты. Таким образом, затраченное время и работа приблизительные и не отражает реальной ситуации. ===== Управление проектом ===== Мехатронная система (Робот) создана в качестве командной работы с графиком и бюджетом, тем самым, имея большинство особенностей проекта. Основные направления деятельности управления проектом были: планирование времени, планирование работы команды и управление ей, бюджетный мониторинг и получение средств, текущая отчетность перед руководителем, презентации и документирование результатов. К докладу проекта добавляются протоколы собраний рабочих групп, план проекта (желательно диаграммой Ганта), распределение ресурсов (включая человеческие ресурсы), запланированный и фактический бюджет. В качестве примера приведён простой план действий диаграммой Ганта. [{{ :examples:projects:robot:roboti_projekt_gantt.gif?580 |Структурная схема проекта}}] ===== Резюме и выводы ===== Финансовые расчеты показали, что себестоимость производства робота довольно высока, особенно при работе с одним роботом, но всё же остается в пределах первоначальной задачи. Затраты на производство, безусловно, могут быть существенно ниже за счет оптимизации материалов и комплектующих и производства большего количества роботов. В ходе этого проекта мы узнали, как проектировать систему мехатроники, как построить и протестировать её. В конце работы выяснилось, что для исправной работы робота требуется значительно больше времени затратить на планирование и тестирование, особенно по части программы. Разные модули не всегда работают вместе корректно, хоть и были в порядке при их отдельном тестировании. Это показывает, что интегрирование модулей системы - это настоящий вызов и на него требуется запланировать значительно больше времени и ресурсов. В заключении считаем, что данный проект был очень интересным и познавательным и дал представление о проектировании и изготовлении интегрированной системы. ===== Ссылки и использованные материалы ===== - Инструкция Домашней Лаборатории http://home.roboticlab.eu - Спецификация ATmega128 - Dudziak, R., Köhn, C., Sell, R., Integrated Systems & Design, TUT Press, 2008 - Friendenthal, S., Moore, A., Steiner, A., A Practical Guide to SysML, Elsevier, 2008 - Perens, A. Projektijuhtimine, Külim, 1999 - Bräunl, T. Embedded Robotics, Springer-Verlag, 2003