Хабрахабр

Разработка робота для сбора мячей для гольфа

Процесс разработки сервисного робота на Orangepi zero и arduino для сбора гольф-мячей. Вся боль инди-разработчика, не обремененного техническим бэкграундом в одном посте…
Разработка MVP. Видео тестирования.

Что такое гольф?

Гольф — это спортивная игра. Основная цель — за меньшее количество ударов закатить мяч в лунку на каждом поле, за меньшее количество ударов пройти все поля. В нашей стране гольф развит крайне плохо и это печально. Игра достаточно интересная, позволяет людям проводить время на свежем воздухе, общаться во время игры, подходит для всех возрастов. В игре есть четкое измерение Вашего успеха «гандикап» — числовой показатель квалификации спортсмена. Все эти факторы делают гольф потоковым занятием. Если Вы еще не пробовали гольф — самое время!

Что такое driving range?

Чтобы ударить с первого раза в конец поля, ближе к лунке, Вы должны уметь совершать дальние и точные удары. Драйвинг-рэйндж – это тренировочное поле для отработки дальних и средних ударов игры в гольф. Выглядят эти поля примерно так.

Это иллюстрация к тому, как неправильно бить. Я на driving range.

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

Сейчас еще используется ручной инструмент, но это скорее исключение.

Чаще всего шары собирают с помощью специального нацепного устройства на трактор, гольф-кар или обычное авто.

(Грэскипер — это человек, который ответственен за качество газона на гольф-полях).
Разработка и внедрение сервисного робота для сбора мячей для гольфа выглядит оправданным шагом с экономической точки зрения, так как экономит содержание спецтехники и заработную плату сотрудника, который должен был выполнять данный процесс. Для сбора мячей, их перетаскивания в машину для мытья, загрузку в диспенсер обычно содержится специальный человек в штате, хотя эту роль может выполнять и grasskeeper. Гольф развит по всему миру, данная фотография это явно показывает.

Особенное распространения данная игра получила в США и Европе, где уровень заработной платы достаточно высокий и возможность заменить сотрудника сервисным роботом окупается очень быстро.

Поиск готового решения

В результате поиска были найдены:
парочка DIY проектов

парочка красивых рендеров

и один вполне себе коммерческий проект

Скорее всего в такие нисшевые решения очень рискованно вкладываться. Из этого можно сделать вывод, что интерес есть. Гольф-клубов в России немногим более 40, при этом в мире их много, в одной Германии их более 700, а во всего более 34. Стоимость разработки и наладки производства высоки, одни пресс-формы выйдут в несколько десятков тысяч $. Робот сборщик мячей как продукт точно не пройдет тест зубной щетки в корпорации добра. 000.

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

Может быть где-то на пути от фанерной коробки до первого «взрослого» образца придет понимание нужно это кому-то или нет. Я не знаю точно, что из этого получится.

Далее планирую придать роботу аккуратный внешний вид и поставить для тестов в гольф-клуб в России. Первоначальной целью является получение работающего образца без внимания к внешнему виду. После отладки и проведения долговременных тестов — приступить к переработки модель в пригодную для производства.

Поехали!

Планируется несколько основных преимуществ относительно существующего коммерческого решения.

  • Отсутствие необходимости закапывать слаботочный кабель по периметру.
  • Возможность внедрения в уже существующую инфраструктуру.
  • Более низкая стоимость и совокупная стоимость владения.

Корпус и механическая часть

Материалом для корпуса первого образца была выбрана фанера. Дешево, позволяет на месте быстро подрезать какие-то части или просверлить отверстия. Чтобы все было четко подогнано набросал чертеж и отдал на фрезерную резку.

С самого начала была идея сделать корпус скругленным, но решил остановится строго на MVP. Собрал все детали. Все, что не влияет на работоспособность пока умышленно исключаю из todo-листа.

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

По двигателю 12V 30 Н/м. на каждое колесо. Такой же двигатель крутит вал с дисками захвата, так как они подняты над поверхностью для облечения поворотов и повышения маневренности.

В описании не было момента, поэтому риск был велик. Изначально двигатели были noname китайские. Момента явно не хватало, что не скажешь о двигателей от стеклоподъемников.

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

Электроника

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

Принял решение использовать Orangepi lite и arduino для более удобной работы с 5v без зоопарка конверторов уровней для каждого датчика и драйвера двигателей.

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

Схема состоит из 11 план, 11 Карл!
— Orange Pi Lite
— Arduino nano
— GPS модуль GY-NEO6MV2
— 2 драйвера двигателя VNH2SP30
— Bluetoth Hc-06
— 2 ультразвуковых модуля J34
— Конвертер логических уровней
— Модуль 3-х осевого гироскопа и акселерометра GY-521 MPU-6050
— Блок из двух реле

Конечно это было сделано для быстрой сборки, монтажа и замены модулей.

Программная часть

Основной скрипт написан на Python. В цикле программы существует глобальная цель:

  1. Инициализация
  2. Сбор мячей
  3. Возврат на базу
  4. Зарядка
  5. Отдых по расписанию
  6. Отдых по погодным условиям.

Инициализация

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

Сбор мячей

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

Возврат на базу

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

Зарядка, отдых

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

Корпус

За дизайн огромное спасибо habr.com/users/NikitaKhvoryk

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

Видео

Планы

Уже сейчас ровер собирает 95-100% мячей на своем пути. Строит маршрут внутри полигона по GPS-координатам. В планах:

  • Нахождение базы для сброса мячей и зарядки по визуальной метке.
  • Сервопривод сброса мячей.
  • Датчик переполненности отсека с шарами.
  • WEB-интерфейс для визуального указания точек на карте, построения зон для сбора мячей с разной периодичностью.
  • Корпус.
  • Размещение робота в гольф-клубе в Москве для теста в боевых условиях.

Вопросы

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

  • Каким образом сделать корпус для робота? Это должно выглядить красиво, без вложений в пресс-формы.
  • Стоит ли уйти от модулей и делать все на одной плате? Как быть с микрокомпьютером?
  • Как найти финансирование под проект? Где тестировать образцы?
  • Никак не могу найти пример фильтра Калмана для данных с GPS с коррекцией по магнетометру, гироскопу. Есть Pycalman, но каким образом вместить в матрицы данные с датчиков никак не пойму. Даже на тостере не нашел ответ. Буду очень благодарен.

Спасибо за внимание. В следующем посте тест в боевых условиях. Я покажу Вам не показанное, постараюсь разгадать неразгаданное, и выведать все неизведанное!

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

Я открыт для диалога, советов, помощи, предложений.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»