Я и моя команда( к которому вы можете присоединиться ) единомышленники с Хабра развиваются Робот для сбора мячей для гольфа на тренировочном поле .
Владимир Гончаров Shadow_ru рассказывает о сборе требований, формулировании задач для работы, разработке архитектуры и создании прототипа для тестирования ПО.
Проект для меня начался со сбора требований, обобщения и последующей декомпозиции на подзадачи.
Задача для робота на первый взгляд проста, но ошибки на этапе планирования сильно портят результат работы и не всегда видны сразу, поэтому пропуск этого этапа — путь в никуда.
Обобщение требований упрощает общение с другими членами команды — вырабатывается общее понимание задачи, ситуация, когда у каждого в голове уже нет своего робота.
Также, когда к команде присоединяется новый участник, достаточно дать ему прочитать аналогичный документ, что сокращает время на этапе входа.
Всегда нужен баланс между сбором требований и обобщений — хотелось бы написать подробнее, но если вы не юрист, привыкший работать с сотнями связанных между собой параграфов, это не решит проблему общего видения.
Есть, конечно, правильный подход, когда предъявляется несколько срезов требований к разным членам команды и внешним заказчикам и подрядчикам.
Но пока это явно ненужно, потому что.
Каждое изменение требований приведет к значительным затратам времени на обновление таких срезов, что не очень хорошо сказывается на производительности стартапа.
Для себя я решил разбить это на функциональные и нефункциональные требования и поместить все на одну страницу А4. Первая версия вышла такой:
Этап 1. Постановка задачи
Задача: Для сбора мячей требуется максимально продолжительный обход тренировочного поля для гольфа в сложных климатических условиях.Проблема: Требуется беспилотный наземный автомобиль ( УГВ ) для выполнения циклических миссий по обходу пространства, определенного периметром с координатами точек в обозначениях WGS-84. Миссии должны включать в себя следующие операции:
- Обычный старт из известной исходной позиции
- Аварийный запуск из заранее неизвестного положения (запуск после включения WD, защиты по питанию и т.п.
)
- Передвижение по территории, охватывающей не менее 98% пространства, за 1 или несколько заходов (начинать обход поля заново после заполнения бункера через 15 минут нет необходимости)
- Возврат в исходное положение при заполнении бункера, разрядке аккумулятора или окончании объезда.
- Прибытие на стартовую платформу для сброса шаров и зарядки аккумуляторов.
Кроме того, UGV должно отвечать следующим требованиям:
- Не покидайте указанный периметр при движении по указанному периметру
- Исходное положение может находиться за пределами указанного периметра
- Отслеживайте расход заряда батареи и планируйте возврат в зависимости от потребляемой мощности.
Для перемещения полного контейнера требуется больше энергии аккумулятора, чем для перемещения пустого.
- Ведение журналов телеметрии, которые включают, помимо прочего, координаты на плоскости, значения 6 осей вращения, уровень сигнала телеметрии и внешних датчиков.
- Имеют три системы позиционирования — GPS для получения приблизительных координат, IMU для проверки и коррекции координат на плоскости, оптическую для точного позиционирования по маркерам.
- Имейте две системы Watch Dog — программную и аппаратную.
Программное обеспечение проверяет статус
- Иметь дальний канал экстренной связи с отдельным электропитанием, используемый при выходе параметров миссии за пределы заданных параметров (координаты, аварийная ситуация, отключение электроэнергии, отказ оборудования).
- Возможность изменять параметры миссии, находясь в исходной позиции.
- Иметь два канала связи – низкоскоростной телеметрический и высокоскоростной для передачи аудиовизуальной информации.
Высокоскоростной должен иметь возможность включения/выключения по команде телеметрии.
Исходя из этих требований была выбрана следующая архитектура решения: В состав робототехнического комплекса входят: один центр управления (Ground Station Control) – далее Г.
С.
К.
.
Позволяет пользователю делать следующее:
- Установить периметр
- Планируйте миссии в зависимости от времени суток и загруженности суда.
- Уметь контролировать роботов для гольфа с разрешением считывания не менее 1 минуты.
- Иметь возможность прервать миссию
Решение, конечно, не очень гибкое, но самосогласованные решения и ячеистые сети — это не то, что можно решить за короткое время и даже дешево.
Плюс это стандартный подход, а значит есть известные проблемы.
Один или несколько гольф-роботов (Гольф-ровер) — далее ГР .
Выполняет следующие типовые действия:
- Получает задание, когда находится в радиусе 10 метров от наземной станции.
- Выполняет миссию
- Во время типовой миссии отчеты по каналу телеметрии с частотой не менее 1 раза в минуту.
- Возвращается на наземную станцию
- Жду новую миссию
- Каждая миссия должна быть прервана из-за следующих событий:
- Заполнение бункера для шариков
- Сбой питания
- Невозможность движения (опрокидывание, внезапное препятствие)
- Аварийный перезапуск
- Ручное прерывание миссии
- Каждое прерывание миссии должно передаваться по обычной телеметрии и резервному каналу.
- После перерыва ГР возвращается на наземную станцию, если его состояние позволяет это сделать.
к.
наземная станция может быть 1, а ГР много - заполнение бункера аэростата считается аварийной ситуацией.
Это решает сразу две проблемы — GSC с высокой степенью достоверности знает, что робот ушел на станцию и частое тестирование резервного канала.
Также предполагается, что наполнение баллонов должно происходить во время миссии и если это не так, то GSC где-то допустил ошибку в планировании и ее следует исправить.
Интуитивно вы хотите выпустить робота в открытое поле, и когда он соберет шарики, он вернется.
Но тут в дело вступает экономика, если этим занимаются 1-2 человека, то роботу лучше стоять на станции и начинать движение, когда шарики уже накопились.
Меньшее потребление ресурсов и энергии.
Одна или несколько наземных станций (Ground Station) – далее GS.
- Зарядное устройство
- Бункер для сброса шариков
- Свяжитесь с GR
Второй этап – это оценка рисков и возможных проблем всего этого комплекса.
Было бы неплохо привести таблицу рисков и их оценок, но, боюсь, три листа А4 вызовут только зевоту.
Я просто приведу вам интересный отрывок: Основной проблемой всех автономных ползающих вездеходов является задача получения их точного положения.
При этом положение должно быть по-настоящему точным – желательно в пределах 10–15 см.
Именно потому, что эту задачу реально не решить на небольшой мобильной платформе, не существует дешевых и массово выпускаемых сельскохозяйственных/транспортных/военных дронов.
Хотя казалось бы есть решения по летающим дронам, повторно использовать их на земле и всё.
Но в воздухе 10-15 метров влево или вправо при повороте почти ничего не решает, а на земле приведет к авариям и катастрофам.
Кроме того, камни не меняют своего места в воздухе, а живность не переходит дорогу.
Птицы, да, но в воздухе гораздо больше места.
Позиционирование осуществляется с помощью модуля GPS/ГЛОНАСС, что приводит сразу к двум последствиям: не слишком высокая точность позиционирования и скорость получения координат. Координаты модуля uBlox M8N по данным стационарных испытаний: 2-3 метра при хороших условиях приема, 7-10 при плохих погодных условиях и условиях видимости.
В целом такие ошибки даже хороши для задачи по сбору шариков — марсоход за несколько миссий захватит больше шариков, чем путешествующий по рельсам.
Однако в этом случае оказывается, что на нем нельзя ездить вблизи препятствий, таких как стены или большие камни, и шарики будут скапливаться на этих участках.
Были проанализированы оптические и ультразвуковые навигационные системы, но выяснилось, что при сложной геометрии поля необходимо большое количество маяков/камер, есть проблемы с зонами видимости (поле не всегда ровное, как пол в ангаре) и нестабильная эксплуатация таких систем в сложных погодных условиях (дождь, туман).
Так что пока GPS — наше всё, но с оговорками.
Более того, можно довольно дешево повысить точность GPS — RTK, но проблему стен это не решит. Стало понятно, что выбранный подход, когда марсоход ползает по оживленным точкам с точностью до 5-10 метров влево и вправо, требует проверки.
Забираться ногами в поезд под названием SLAM ради простой задачи кажется ненужным.
Если зайти на станцию с помощью оптически ярких объектов (Код Аруко) понятно, как это сделать, и сколько ресурсов это требует тоже, то решение задачи классификации всех возможных объектов на поле или нахождения границ – задачи совсем другого порядка .
Пришло время для фазы 3 — проверка концепции
Необходимо сделать макет системы, опробовать ее в действии в полевых условиях и оценить ее применимость.По разработанным требованиям дела пошли гораздо веселее: Как выбиралось программное обеспечение для ровера Ардуровер — активно разрабатывается программное обеспечение, начиная с прошивок для квадрокоптеров на Arduino. Однако на данный момент он также поддерживает платы Linux с ядром RTL и открыт для улучшений.
Кстати, доделывать пришлось позже, но скорее для ускорения работы, чем по необходимости.
Как выбирались мозги марсохода БигльКость Синий - высокоинтегрированная система для робототехники.
Отличительной особенностью является использование чипов 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-приемник, радиопередатчик телеметрии, ультразвуковой датчик расстояния и подключить камеру машинного зрения.
После пайки, подключения разъемов и тестового запуска получилось вот так:
Как используется центр управления Планировщик миссий .
Программное обеспечение не бесспорно, для любителей коптеров нужно делать достойный Web-интерфейс вместо швейцарского ножа с 100500+ кнопками, но для целей отладки он более чем пригоден.
Использует протокол для связи с марсоходом МАВЛИНК Для Java/JS написано достаточно много адаптеров и прикладного ПО.
В протоколе, конечно, хотелось бы иметь пакеты поменьше и поддерживать стандартный каталог параметров, но это было бы слишком хорошо.
В качестве основы марсохода была использована модель автомобиля в масштабе 1/18 с отдельным приемником и контроллером двигателя.
Приемник был выкинут, разъемы сервопривода и контроллера мотора были подключены напрямую к BeagleBone Blue, как и аккумулятор.
Забавно, я вспомнил, что в детстве паять вообще не умел, в местах пайки все время висели оловянные сопли, и не без внутреннего трепета взялся за паяльник.
Однако как только нож, проволока и паяльник оказались у меня в руках, я хорошо залудил жало, срезал изоляцию, не задевая внутреннюю жилу, руками скрутил концы кабеля, залудил их и пропаял соединение.
И тут я вспомнил, что начал работать разработчиком встраиваемых систем и за пару месяцев научился пользоваться паяльником.
Замечательная иллюстрация к поговорке «опыт не пропьешь», на мой взгляд. На данный момент стенд выглядит так:
Как видите, контроллер без корпуса и креплений.
К сожалению, я заказал распечатку псевдогермобокса на SLS 3D принтере нейлоном, а сделать пока не успели.
Вывод марсохода в открытое поле без тела занял бы у такого викинга полчаса на свежем воздухе.
Тогда либо электрохимическая коррозия закончится, либо после переворота он полностью вылетит. Так что ждем корпус, герметичные разъемы и крепеж по всем правилам гашения ударов и вибрации.
Видео обнаружения марсоходом Aruco Code В результате я провел тестовые заезды дома с использованием ручного управления.
Потом оказалось, что база выбрана не совсем правильно — слишком быстро разгоняется, пришлось учиться программировать китайский контроллер двигателя.
Во-вторых, задняя передача на этом чуде китайской мысли включается двумя сигналами «заднего хода» — первый включает торможение, второй уже включает задний ход. Более того, его можно игнорировать, если сигнал подается слишком быстро – это сохраняет жизнь шестерням и двигателю.
Пришлось доделывать ардуровер, потому что.
такие фокусы не были учтены.
Следующие шаги — откатить маршрут 5-7 раз, снять логи телеметрии и GPS-треки маршрута.
Я нашел футбольный стадион с подогреваемым полем, так что если пойдет снег, ничего страшного.
Сквозь сугробы ровер явно не будет бурить, иначе Фаине Раневской в список извращений помимо хоккея на траве и балета на льду следовало бы добавить гольф в сугробах.
Не самое дешевое развлечение, конечно, но где еще в России можно найти зеленую травку в ноябре? Начались также работы по внедрению гусеничного шасси, где скорости значительно ниже (текущая модель разгоняется до 20 км/ч за 15 секунд) и происходит поворот на месте, а не гонки треугольником на пятачке.
Скорее всего, через пару недель оба шасси будут обкатаны одновременно для проверки работы детектора препятствий и алгоритмов объезда.
В заключение хотелось бы отметить, что тестирование решений на полномасштабных моделях происходит очень быстро и дешево.
Мелкие проблемы выявляются гораздо раньше, и более того, есть время внести изменения в конструкцию большого робота, пока он еще находится на стадии проектирования или прототипа.
Тогда это будет дороже, дольше и в узлах что-то сломается.
Более того, практически все необходимое для задач программное обеспечение легко разрабатывается и тестируется на таких моделях.
В идеале все, что нужно для перехода на другую модель – это замена протокола контроллера мотора на новый.
Ну, можно изменить динамическую модель.
Кроме того, использование специализированных и проверенных решений существенно экономит силы и время.
Придумывать свою плату высокой плотности, свой протокол связи, наземное программное обеспечение и программное обеспечение вездехода, отладку алгоритмов обхода препятствий и связи с китайскими контроллерами двигателей - это конечно очень увлекательно, но в этом случае можно сразу добавить полгода-год к долгий и тернистый путь.
Уже проходил мимо кого-то.
Мне нужна ваша помощь:
- Если вы готовы работать над версией ROS.
- Необходимо подготовить плату подключения модуля для версии на raspberry pi и Orange Pi.
- Помощь в тестировании тренировочного полигона, особенно если вы живете в стране, где активно играют в гольф;
- Юридические вопросы, вывоз робота из страны, патентное право, юридические требования к конструкции;
- Нужна помощь в упаковке стартапа и поиске инвестиций.
Мы хорошо развиваемся и без вложений, у нас есть план действий, формируется команда.
Нам нужны не деньги инвесторов, а опыт и компетентность в разработке коммерчески успешного проекта.
Текущий статус проекта
Готовим вторую версию корпуса.
В течение недели корпус будет готов методом вакуумной формовки, об этом напишем отдельный пост.
Нижняя часть корпуса изготовлена методом фрезеровки из композитного материала.
Проектирует корпус и механику НикитаХворик .
Очень долго ждали плату подключения модуля для версии на raspberry pi и Orange Pi. n12eq3 .
Версия с Ardupilot Владимиром Гончаровым Shadow_ru Спасибо за помощь и предложенные советы Процесс0169 , Триф , терсурен , Васимв , vovaekb90 , Вячеслав Солдатов, Левон Закарян, Сергей Помазкин, Влади Кубань, Карен Мусаелян, Алексей Платонов.
Если вы хотите помочь, пожалуйста, напишите мне в личку или ВК , ФБ .
Планы:
У нас есть предварительные договоренности о размещении робота для тестирования в гольф-клубах России, Германии, Латинской Америки и Новой Зеландии.В ближайших планах — доработка алгоритмов и конструкции, проведение испытаний в Москве и доработка.
Создайте 5 роботов и бесплатно разместите их в клюшках для гольфа для долгосрочных испытаний к новому сезону.
Спасибо, что читаете, спрашивайте и критикуйте нас полностью.
Теги: #Сделай сам или сделай сам #Разработка робототехники #Робототехника #Разработка на Arduino #архитектура решений #Проектирование сервисных роботов
-
Haiku R1 Alpha 3 Выйдет 1 Июня
19 Oct, 24 -
Перекресток. Глава 4
19 Oct, 24 -
Проектирование Планеты, Удобной Для Землян
19 Oct, 24