Проектирование Сервисного Робота. Постановка Проблемы, Архитектура Решения

Я и моя команда( к которому вы можете присоединиться ) единомышленники с Хабра развиваются Робот для сбора мячей для гольфа на тренировочном поле .



Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Владимир Гончаров Shadow_ru рассказывает о сборе требований, формулировании задач для работы, разработке архитектуры и создании прототипа для тестирования ПО.



Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Проект для меня начался со сбора требований, обобщения и последующей декомпозиции на подзадачи.

Задача для робота на первый взгляд проста, но ошибки на этапе планирования сильно портят результат работы и не всегда видны сразу, поэтому пропуск этого этапа — путь в никуда.

Обобщение требований упрощает общение с другими членами команды — вырабатывается общее понимание задачи, ситуация, когда у каждого в голове уже нет своего робота.

Также, когда к команде присоединяется новый участник, достаточно дать ему прочитать аналогичный документ, что сокращает время на этапе входа.

Всегда нужен баланс между сбором требований и обобщений — хотелось бы написать подробнее, но если вы не юрист, привыкший работать с сотнями связанных между собой параграфов, это не решит проблему общего видения.

Есть, конечно, правильный подход, когда предъявляется несколько срезов требований к разным членам команды и внешним заказчикам и подрядчикам.

Но пока это явно ненужно, потому что.

Каждое изменение требований приведет к значительным затратам времени на обновление таких срезов, что не очень хорошо сказывается на производительности стартапа.

Для себя я решил разбить это на функциональные и нефункциональные требования и поместить все на одну страницу А4. Первая версия вышла такой:



Этап 1. Постановка задачи

Задача: Для сбора мячей требуется максимально продолжительный обход тренировочного поля для гольфа в сложных климатических условиях.

Проблема: Требуется беспилотный наземный автомобиль ( УГВ ) для выполнения циклических миссий по обходу пространства, определенного периметром с координатами точек в обозначениях WGS-84. Миссии должны включать в себя следующие операции:

  1. Обычный старт из известной исходной позиции
  2. Аварийный запуск из заранее неизвестного положения (запуск после включения WD, защиты по питанию и т.п.

    )

  3. Передвижение по территории, охватывающей не менее 98% пространства, за 1 или несколько заходов (начинать обход поля заново после заполнения бункера через 15 минут нет необходимости)
  4. Возврат в исходное положение при заполнении бункера, разрядке аккумулятора или окончании объезда.

  5. Прибытие на стартовую платформу для сброса шаров и зарядки аккумуляторов.

Упрощенная версия алгоритма

Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Кроме того, UGV должно отвечать следующим требованиям:
  1. Не покидайте указанный периметр при движении по указанному периметру
  2. Исходное положение может находиться за пределами указанного периметра
  3. Отслеживайте расход заряда батареи и планируйте возврат в зависимости от потребляемой мощности.

    Для перемещения полного контейнера требуется больше энергии аккумулятора, чем для перемещения пустого.

  4. Ведение журналов телеметрии, которые включают, помимо прочего, координаты на плоскости, значения 6 осей вращения, уровень сигнала телеметрии и внешних датчиков.

  5. Имеют три системы позиционирования — GPS для получения приблизительных координат, IMU для проверки и коррекции координат на плоскости, оптическую для точного позиционирования по маркерам.

  6. Имейте две системы Watch Dog — программную и аппаратную.

    Программное обеспечение проверяет статус

  7. Иметь дальний канал экстренной связи с отдельным электропитанием, используемый при выходе параметров миссии за пределы заданных параметров (координаты, аварийная ситуация, отключение электроэнергии, отказ оборудования).

  8. Возможность изменять параметры миссии, находясь в исходной позиции.

  9. Иметь два канала связи – низкоскоростной телеметрический и высокоскоростной для передачи аудиовизуальной информации.

    Высокоскоростной должен иметь возможность включения/выключения по команде телеметрии.



Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Исходя из этих требований была выбрана следующая архитектура решения: В состав робототехнического комплекса входят: один центр управления (Ground Station Control) – далее Г.

С.

К.

.

Позволяет пользователю делать следующее:

  • Установить периметр
  • Планируйте миссии в зависимости от времени суток и загруженности суда.

  • Уметь контролировать роботов для гольфа с разрешением считывания не менее 1 минуты.

  • Иметь возможность прервать миссию
Программное обеспечение GSC должно планировать действия гольф-роботов, но сами роботы должны быть достаточно простыми.

Решение, конечно, не очень гибкое, но самосогласованные решения и ячеистые сети — это не то, что можно решить за короткое время и даже дешево.

Плюс это стандартный подход, а значит есть известные проблемы.

Один или несколько гольф-роботов (Гольф-ровер) — далее ГР .

Выполняет следующие типовые действия:

  • Получает задание, когда находится в радиусе 10 метров от наземной станции.

  • Выполняет миссию
  • Во время типовой миссии отчеты по каналу телеметрии с частотой не менее 1 раза в минуту.

  • Возвращается на наземную станцию
  • Жду новую миссию
  • Каждая миссия должна быть прервана из-за следующих событий:
    • Заполнение бункера для шариков
    • Сбой питания
    • Невозможность движения (опрокидывание, внезапное препятствие)
    • Аварийный перезапуск
    • Ручное прерывание миссии
  • Каждое прерывание миссии должно передаваться по обычной телеметрии и резервному каналу.

  • После перерыва ГР возвращается на наземную станцию, если его состояние позволяет это сделать.

Т.

к.

наземная станция может быть 1, а ГР много - заполнение бункера аэростата считается аварийной ситуацией.

Это решает сразу две проблемы — GSC с высокой степенью достоверности знает, что робот ушел на станцию и частое тестирование резервного канала.

Также предполагается, что наполнение баллонов должно происходить во время миссии и если это не так, то GSC где-то допустил ошибку в планировании и ее следует исправить.

Интуитивно вы хотите выпустить робота в открытое поле, и когда он соберет шарики, он вернется.

Но тут в дело вступает экономика, если этим занимаются 1-2 человека, то роботу лучше стоять на станции и начинать движение, когда шарики уже накопились.

Меньшее потребление ресурсов и энергии.

Одна или несколько наземных станций (Ground Station) – далее GS.

  • Зарядное устройство
  • Бункер для сброса шариков
  • Свяжитесь с GR
Схема всего комплекса такая:

Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения



Второй этап – это оценка рисков и возможных проблем всего этого комплекса.

Было бы неплохо привести таблицу рисков и их оценок, но, боюсь, три листа А4 вызовут только зевоту.

Я просто приведу вам интересный отрывок: Основной проблемой всех автономных ползающих вездеходов является задача получения их точного положения.

При этом положение должно быть по-настоящему точным – желательно в пределах 10–15 см.

Именно потому, что эту задачу реально не решить на небольшой мобильной платформе, не существует дешевых и массово выпускаемых сельскохозяйственных/транспортных/военных дронов.

Хотя казалось бы есть решения по летающим дронам, повторно использовать их на земле и всё.

Но в воздухе 10-15 метров влево или вправо при повороте почти ничего не решает, а на земле приведет к авариям и катастрофам.

Кроме того, камни не меняют своего места в воздухе, а живность не переходит дорогу.

Птицы, да, но в воздухе гораздо больше места.

Позиционирование осуществляется с помощью модуля GPS/ГЛОНАСС, что приводит сразу к двум последствиям: не слишком высокая точность позиционирования и скорость получения координат. Координаты модуля uBlox M8N по данным стационарных испытаний: 2-3 метра при хороших условиях приема, 7-10 при плохих погодных условиях и условиях видимости.

В целом такие ошибки даже хороши для задачи по сбору шариков — марсоход за несколько миссий захватит больше шариков, чем путешествующий по рельсам.

Однако в этом случае оказывается, что на нем нельзя ездить вблизи препятствий, таких как стены или большие камни, и шарики будут скапливаться на этих участках.

Были проанализированы оптические и ультразвуковые навигационные системы, но выяснилось, что при сложной геометрии поля необходимо большое количество маяков/камер, есть проблемы с зонами видимости (поле не всегда ровное, как пол в ангаре) и нестабильная эксплуатация таких систем в сложных погодных условиях (дождь, туман).

Так что пока GPS — наше всё, но с оговорками.

Более того, можно довольно дешево повысить точность GPS — RTK, но проблему стен это не решит. Стало понятно, что выбранный подход, когда марсоход ползает по оживленным точкам с точностью до 5-10 метров влево и вправо, требует проверки.

Забираться ногами в поезд под названием SLAM ради простой задачи кажется ненужным.

Если зайти на станцию с помощью оптически ярких объектов (Код Аруко) понятно, как это сделать, и сколько ресурсов это требует тоже, то решение задачи классификации всех возможных объектов на поле или нахождения границ – задачи совсем другого порядка .



Пришло время для фазы 3 — проверка концепции

Необходимо сделать макет системы, опробовать ее в действии в полевых условиях и оценить ее применимость.

По разработанным требованиям дела пошли гораздо веселее: Как выбиралось программное обеспечение для ровера Ардуровер — активно разрабатывается программное обеспечение, начиная с прошивок для квадрокоптеров на Arduino. Однако на данный момент он также поддерживает платы Linux с ядром RTL и открыт для улучшений.

Кстати, доделывать пришлось позже, но скорее для ускорения работы, чем по необходимости.

Как выбирались мозги марсохода БигльКость Синий - высокоинтегрированная система для робототехники.



Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Отличительной особенностью является использование чипов TI Sitara/Octavo; по сравнению с той же Малиной у них есть Программируемый Блок Реального Времени - ПРУ.

Это два отдельных ядра по 200 МГц, которые могут управлять оборудованием в реальном времени, не отвлекая основное ядро прерываниями, потоками и прочей техномагией.

Кроме того, на платформе сразу есть WiFi, Bluetooth, распаянный разъем для балансировочного кабеля, контроллер зарядки Li-Po аккумулятора, USB-разъемы для подключения телеметрии и компьютера, разъемы для серводвигателей, стабилизаторы питания на 5 и 3,3 Вольта, АЦП.

сразу подключил по одному каналу на батарею, несколько UART. В общем, берите и делайте робота.

Ardurover туда добрался не без проблем — использовать PRU из ПО на данный момент можно только с ядром 4.4 LTS. В новых ядрах программирование PRU из специального программного обеспечения приводит к ошибке SIGBUS. Пообщавшись с разработчиками ветки ardublue, заказал JTAG адаптер, посмотрю в чем причина.

Жизни самого марсохода это не мешает, но хотелось бы четкого понимания, в чем проблема.

Программное обеспечение позволяет выполнять практически все требования, кроме позиционирования при заходе на базу, здесь я использую камеру JeVois-A33. Он также не будет отправлять сигнал тревоги по поводу определенных событий, но это задача отдельного модуля с отдельным питанием, т.к.

модуль управления может не пережить сбой в питании или хороший переворот. Остается только купить GPS-приемник, радиопередатчик телеметрии, ультразвуковой датчик расстояния и подключить камеру машинного зрения.

После пайки, подключения разъемов и тестового запуска получилось вот так:

Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Как используется центр управления Планировщик миссий .



Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Программное обеспечение не бесспорно, для любителей коптеров нужно делать достойный Web-интерфейс вместо швейцарского ножа с 100500+ кнопками, но для целей отладки он более чем пригоден.

Использует протокол для связи с марсоходом МАВЛИНК Для Java/JS написано достаточно много адаптеров и прикладного ПО.

В протоколе, конечно, хотелось бы иметь пакеты поменьше и поддерживать стандартный каталог параметров, но это было бы слишком хорошо.

В качестве основы марсохода была использована модель автомобиля в масштабе 1/18 с отдельным приемником и контроллером двигателя.

Приемник был выкинут, разъемы сервопривода и контроллера мотора были подключены напрямую к BeagleBone Blue, как и аккумулятор.

Забавно, я вспомнил, что в детстве паять вообще не умел, в местах пайки все время висели оловянные сопли, и не без внутреннего трепета взялся за паяльник.

Однако как только нож, проволока и паяльник оказались у меня в руках, я хорошо залудил жало, срезал изоляцию, не задевая внутреннюю жилу, руками скрутил концы кабеля, залудил их и пропаял соединение.

И тут я вспомнил, что начал работать разработчиком встраиваемых систем и за пару месяцев научился пользоваться паяльником.

Замечательная иллюстрация к поговорке «опыт не пропьешь», на мой взгляд. На данный момент стенд выглядит так:

Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Как видите, контроллер без корпуса и креплений.

К сожалению, я заказал распечатку псевдогермобокса на SLS 3D принтере нейлоном, а сделать пока не успели.

Вывод марсохода в открытое поле без тела занял бы у такого викинга полчаса на свежем воздухе.

Тогда либо электрохимическая коррозия закончится, либо после переворота он полностью вылетит. Так что ждем корпус, герметичные разъемы и крепеж по всем правилам гашения ударов и вибрации.

Видео обнаружения марсоходом Aruco Code В результате я провел тестовые заезды дома с использованием ручного управления.

Потом оказалось, что база выбрана не совсем правильно — слишком быстро разгоняется, пришлось учиться программировать китайский контроллер двигателя.

Во-вторых, задняя передача на этом чуде китайской мысли включается двумя сигналами «заднего хода» — первый включает торможение, второй уже включает задний ход. Более того, его можно игнорировать, если сигнал подается слишком быстро – это сохраняет жизнь шестерням и двигателю.

Пришлось доделывать ардуровер, потому что.

такие фокусы не были учтены.

Следующие шаги — откатить маршрут 5-7 раз, снять логи телеметрии и GPS-треки маршрута.

Я нашел футбольный стадион с подогреваемым полем, так что если пойдет снег, ничего страшного.

Сквозь сугробы ровер явно не будет бурить, иначе Фаине Раневской в список извращений помимо хоккея на траве и балета на льду следовало бы добавить гольф в сугробах.

Не самое дешевое развлечение, конечно, но где еще в России можно найти зеленую травку в ноябре? Начались также работы по внедрению гусеничного шасси, где скорости значительно ниже (текущая модель разгоняется до 20 км/ч за 15 секунд) и происходит поворот на месте, а не гонки треугольником на пятачке.

Скорее всего, через пару недель оба шасси будут обкатаны одновременно для проверки работы детектора препятствий и алгоритмов объезда.

В заключение хотелось бы отметить, что тестирование решений на полномасштабных моделях происходит очень быстро и дешево.

Мелкие проблемы выявляются гораздо раньше, и более того, есть время внести изменения в конструкцию большого робота, пока он еще находится на стадии проектирования или прототипа.

Тогда это будет дороже, дольше и в узлах что-то сломается.

Более того, практически все необходимое для задач программное обеспечение легко разрабатывается и тестируется на таких моделях.

В идеале все, что нужно для перехода на другую модель – это замена протокола контроллера мотора на новый.

Ну, можно изменить динамическую модель.

Кроме того, использование специализированных и проверенных решений существенно экономит силы и время.

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

Уже проходил мимо кого-то.



Мне нужна ваша помощь:

  • Если вы готовы работать над версией ROS.
  • Необходимо подготовить плату подключения модуля для версии на raspberry pi и Orange Pi.
  • Помощь в тестировании тренировочного полигона, особенно если вы живете в стране, где активно играют в гольф;
  • Юридические вопросы, вывоз робота из страны, патентное право, юридические требования к конструкции;
  • Нужна помощь в упаковке стартапа и поиске инвестиций.

    Мы хорошо развиваемся и без вложений, у нас есть план действий, формируется команда.

    Нам нужны не деньги инвесторов, а опыт и компетентность в разработке коммерчески успешного проекта.



Текущий статус проекта

Готовим вторую версию корпуса.

В течение недели корпус будет готов методом вакуумной формовки, об этом напишем отдельный пост.

Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Нижняя часть корпуса изготовлена методом фрезеровки из композитного материала.



Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Проектирует корпус и механику НикитаХворик .

Очень долго ждали плату подключения модуля для версии на raspberry pi и Orange Pi. n12eq3 .

Версия с Ardupilot Владимиром Гончаровым Shadow_ru Спасибо за помощь и предложенные советы Процесс0169 , Триф , терсурен , Васимв , vovaekb90 , Вячеслав Солдатов, Левон Закарян, Сергей Помазкин, Влади Кубань, Карен Мусаелян, Алексей Платонов.

Если вы хотите помочь, пожалуйста, напишите мне в личку или ВК , ФБ .



Планы:

У нас есть предварительные договоренности о размещении робота для тестирования в гольф-клубах России, Германии, Латинской Америки и Новой Зеландии.

В ближайших планах — доработка алгоритмов и конструкции, проведение испытаний в Москве и доработка.

Создайте 5 роботов и бесплатно разместите их в клюшках для гольфа для долгосрочных испытаний к новому сезону.



Проектирование сервисного робота.
</p><p>
 Постановка проблемы, архитектура решения

Спасибо, что читаете, спрашивайте и критикуйте нас полностью.

Теги: #Сделай сам или сделай сам #Разработка робототехники #Робототехника #Разработка на Arduino #архитектура решений #Проектирование сервисных роботов

Вместе с данным постом часто просматривают: