Как стать автором
Обновить

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

Время на прочтение 5 мин
Количество просмотров 14K
Всего голосов 49: ↑49 и ↓0 +49
Комментарии 62

Комментарии 62

Очень нужен робот для уборки коврика мыши=)
про позиционирование был пост, там автор делал газонокосилку и тоже что-то с чем то скрещивал, результата не помню. Еще вариант дополнить стационарным приемником гпс/гланас и по радио сообщать роботу корректировку.
Автор с газонокосилкой скорее всего был я. Что не скрещивай, а точность так себе.
GPS RTK стоит дорого!
RTK GPS стоит не так уж и дорого, два датчика с хорошими антеннами (2x Ublox neo-m8t с приличной антенной обошлись в чуть более 200 долларов), плюс serial-to-wifi гейт (ESP-шка или какой-нибудь raspberry pi zero) и микрокомпьютер для rtklib (тот же raspberry pi zero или orange pi zero).
SkyTraq сделали дешёвые модули с прошивкой, которая считает RTK прямо на модуле: navspark.mybigcommerce.com/s2525f8-gl-rtk-gps-glonass-rtk-receiver-module, для работы нужна, соответственно, пара таких модулей.
Правильно ли я понимаю, что такой пара таких модулей.
S2525F8-GL-RTK EVB: RTK MODULE EVALUATION BOARD
Если лень паять — то да, можно эвалборды взять.
А у меня идея. В двух углах поля ставятся динамики, они регулярно делают бум!.. Скорость звука 340 м/с, ардуина без проблем замеряет разницу в 1 мкс, то есть можем посчитать расстояние до динамиков с точностью 30см, если время синхронизировать, или инициировать динамики по радиокоманде с робота. Из этой информации высчитываем, что робот может быть в одной из двух точек. А дальше — логически.

Артем, боюсь члены клуба будут против.

Против ультразвука? Они и не узнают. Но для большой площади RTK может быть удобнее, конечно.
Представляете какой силы нужен будет звук, чтобы на сотни метров ловился? Даже если пренебречь влиянием на здоровье собственно ультразвука — там будет слышен довольно громкий «бум» в начале импульса. Ну и как бы на больших расстояниях движущемуся роботу — ультразвук совершенно не катит. Задержка звука будет такая, что робот будет успевать проезжать существенное расстояние, искажения измерений будет страшное, да и частота этих измерений — неприемлимая.
Такие системы уже есть, например, Marvelmind. Двумя маяками ограничиваться не нужно, просто смысла в этом нет, измерения не идеально точные. Еще у вас ошибка в расчетах, порядка 30 см это для 1 мс, а не 1 мкс.
По поводу езды по компасу — можно посмотреть ardumower (автономная газонокосилка на arduino mega 2560 или arduino due), Inav (коптеры и колесные роботы на stm32f3/4/7), openpilot (коптеры и колесные роботы на тех же контроллерах), ну и мой проект github.com/~vasimv/OMower — колесный робот на arduino due или собственной плате. Во всех есть нужные калманы и/или более продвинутые фильтры (Madgwick/Mahony). В моем еще есть поддержка получения координат от RTK (нужен внешний микрокомпьютер с rtklib), остальные тоже теоретически с ним смогут, но не проверял как хорошо.
Спасибо.
Буду смотреть в этом направлении.
Кстати, я недавно делал эксперимент с ориентированием omower по камере (opencv распознает шахматную доску и выдает коррекцию по углу для робота), довольно хорошо получается на нескольких метрах (на большом расстоянии — нужен более мощный, чем raspberry pi zero компьютер для обработки кадров в высоком разрешении). Как раз чтобы на станцию заезжать (подъезжаем по GPS к точке перед станцией, потом по камере рулим в нее).

Принцип довольно простой — opencv выдает нам координаты точек шахматной доски, высчитываем на сколько пикселей смещены углы относительно центра камеры, рассчитываем расстояние по размерам доски на камере и получаем угол отклонения, который прямиком в pid-контроллер моторов пихаем.
Мои тесты показали, что QR-коды на raspberry pi zero распознаются слишком долго (до единиц секунд), что крайне медленно для нормального ориентирования. Шахматную доску 3x4 на 640x480 я распознавал за 100-300 миллисекунд, что позоволяет нормально уже ездить в реальном времени. Впрочем, я не большой специалист в этой области, может и можно что-то крутить в opencv.
Для навигации больше подходят aruco маркеры.
Для ROSа есть прикольный пакет wiki.ros.org/ar_track_alvar использовали его для уточнения позиционирования по slam.
Также делали индор трекинг роботов с внешней камеры. Было 4 робота на которых стояли кубы обклеенные маркерами(т.е. до 12 маркеров в кадре одновременно) на odroid xu4 и допиленном opencv получилось 10-15фпс.
Вы состоите в группе vk.com/robotoperating?
Да, это стоит использовать для метки. Спасибо.
В целом думаю все сделать на ROS, но тогда нужен компьютер мощнее.
ardumower разве работает не с кабелем по периметру?
Решения на Калмане есть, но для Python не смог найти толкового примера как сформировать матрицу.
С кабелем, но GPS-ориентирование с компасом там есть (используется в варианте с внешним компом, строящим карту участка). Не знаю какую там матрицу хотите получить, но питон скорее всего не справится с реал-тайм задачей комбинации акселерометра/гироскопа/компаса.
Здесь ситуация другая. На Driving range практически нет препятствий.
Точки границы участка задать можно заранее.
Какой простейший алгоритм выбрать для построения маршрута в полигоне из GPS координат, чтобы за меньшее время обойти всю площадь?
Тут не подскажу ничего, у меня задача чуток попроще. Читал что-то про такие алгоритмы, но пока не реализовывал.
С numpy или подобной библиотекой справится безо всяких проблем, да еще и с большим запасом. Без них тоже справится, просто смысла не использовать их нет.
Там оно десятки, а то и сотни раз в секунду прет от трех датчиков, в реальном времени. Можно, конечно, потрахаться с приоритетами задач, чтобы оно все успевало, но я бы не стал…
С numpy без проблем, да и куча туториалов в сети по Калман-фильтрам на Python. Если в будущем датчиков будет много, можно на ROS посмотреть, там есть robot_localization для этого (фильтр Калмана).
image
Может быть заменить подбор мяча? Вот например так… Мяч попадает в направляющую по которой продвигается по земле, так как сама конструкция двигается. Затем мяч наезжает на сетчатую полку (сетчатая чтобы не собирать мусор), заезжает глубже (по инерции или подталкивается мячом который следует позади) где заталкивается резиновым валом в бункер для мячей. Может поставить резиновую крыльчатку прямо над тем местом где начинается сетка и мяч будет сразу залетать в бункер.
Утро доброе.

Здесь проще пойти в уже давно известную технологию сбора — жатка комбайна. Все ваши методы, как раз и описывают первичные концепции его разработки. Там используется интегральный шнек (это когда правая и левая части имеют разную навивку шнека). Таким образом, где бы не попал объект, он перемещается к центру. Да и регулировать зазор между шнеком и сеткой не нужно, чтобы предотвратить заклинивание механизма. В ваших случаях есть варианты развития такого сценария.
НЛО прилетело и опубликовало эту надпись здесь
paingolf?
Если рассматривать не только робота, а всю инфраструктуру «автоматический сбор мячей для гольфа» в целом, то предлагаю дополнить:
— Настраиваемыми условиями, при которых начинать сбор мячей (периодический сбор, сбор после расходования определённого количества, сбор если плотность мячей в указанной области становится выше определённого предела). Вряд ли целесообразно гонять робота исключительно за двумя мячами в двух дальних углах поля.
— Добавлением отдельной камеры, которая оценивает куда приблизительно улетают мячи. В дальнейшем, данные с камеры могут служить целеуказанием для робота сборщика.
— Возможность работы в команде одинаковых роботов, чтобы не шерстить повторно участок, пройденный коллегой.
— Возможность «разделения труда». Первое, что приходит в голову: есть робот транспортёр, который отвозит мячи с поля до базы. Есть роботы поисковики, которые ведут самостоятельный поиск, собирают некоторое малое количество мячей и передают транспортёру (и попутно подзаряжаются от него)
Автоматическая рекуперация мячей и есть конечная цель.
Узкое место не сбор, а весь цикл обработки мячей.
Их нужно собрать, привезти, помыть и засыпать в диспенсер.
Люди вставляют монету или купюру и получают свою порцию мячей.

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

Например для засыпки мячей в автомат для мытья думаю сделать наклонную плоскость вдоль домика с диспенсером по которой робот поднимается и сбрасывает мячи через отверстие в стене сразу в автомат мытья.

Далее траспортная наклонная лента из автомата мытья поднимает мячи в диспенсер после того, как они выпадают чистые.
Первыми двумя предложениями я имел в виду решение одной из следующих задач:
— Наиболее оптимальный сбор мячиков (максимальное количество за минимальное время/трудоресурсы). Понятно, что целесообразно добиться какой-то плотности мячиков и идти «харвестить» в наиболее перспективные участки.
— Сбор всех мячиков на поле (за любое время, любой ценой).
И оптимизацию робота уже под конкретику. Хотя, согласен, что для начала нужно получить MVP (минимальный жизнеспособный продукт).
Фото робота вызывает большой вопрос об его проходимости.
image
Не застрянет ли он на таком поле для гольфа?
НЛО прилетело и опубликовало эту надпись здесь
Вы абсолютно правы. Спасибо!
могу подсказать по корпусу — производим кораблики для завоза прикормки из abs пластика — выглядит офигенно, станок делается за два вечера, форма режется из ДСП на любом 3д принтере. повторяемость просто супер, скорость работы — 10 больших корпусов за 5-часовой рабочий день одним сотрудником. Клеится внутрянка(порезанная на том же чпу фрезере) дихлорэтаном(растворитель) да так что отрывается только с мясом и сквозными дырками.
НЛО прилетело и опубликовало эту надпись здесь
имелся ввиду 3д фрезер.
склеиваются между собой до необходимой высоты 2-3-4 столещницы а потом на фрезере чпу — срезается лишнее — выходит внутренняя часть формы на которую надевают размягченный температурой лист пластика а потом ваккуумом отсасывают воздух — в результате пластик приобретает выпуклости формы, потом лишнее отрезается и вуаля — корпус готов
Ось Z e фрезера нужна более 300мм., я не смог такое найти в Подольске.
Думаю насчет вакуумной формовки или стеклохоста и эпоксидки на пенопластовую форму.
Не обязательно. Можно наоборот нарезать слоями (из тех же столешниц), а потом склеить. Просто вначале склеить, а потом нарезать обеспечит более ровные стыки (их отсутствие) и в целом немного проще.

Написал в лс. Буду рад помощи. Огромное спасибо.
а шестерни так и планируете печатать из говеного пластика? Явно это будет слабое место
Нет, будет металл.
Это максимум на что способен мой плохо откалиброванный пруша.
Ось будет точиться, шпилька для пробы.
Я так понимаю ось для дисков, которые собирают шары, сделана из гибкого материала (садового шланга похоже не данный момент :), что впрочем не важно).
Важно то, что упругие материалы имеют тенденцию менять свои свойства со временем при активном механическом воздействии.
Вы не опасаетесь, что этот узел быстро «разболтается»?
Впрочем может это и к лучшему — нередко сервисное обслуживание является основной статьей доходов производителя. :)
Ось из шпильки 12мм. Это временное решение.
Шланг для мягкой фиксации дисков.
Понял.
Но мне кажется, что «мягкая фиксация» это разновидность той же проблемы, нет?
Т.е. со временем диск продавит на шланге относительно широкую канавку и начнет болтаться. Ну чисто умозрительно.
Надесь до того времени будет уже robogolf v.0.2
Задача интересная, сам робот и реализация тоже, а вот гольф как-то не очень…
www.youtube.com/watch?v=Z4w7H48tBS8
Или я что-то не понимаю, тогда прошу написать научно-популярную статью про гольф и почему гольф — это хорошо :)
В СССР гольфа не было, поэтому у нас он развит крайне плохо и считается игрой исключительно для богатых людей.
Гольф отлично подходит для нетворкинга, проведения неформальных встреч.
Это умеренные нагрузки на свежем воздухе.
Так-то оно так, но Джорж Калин в СССР не жил, а мнение насчёт гольфа имеет… И считает что это игра богатеньких буратин. Зная Штаты по-наслышке, чёрные в гольф тоже играют, правда им в основном достаётся роль собирателей мячиков и подстригающих газон.
3-4 камеры по периметру робота могут распознавать мячики. Кроме того, могут распознавать маркеры на мачтах по углам зоны.
Азимуты до маркеров + примерная координата GPS = точное позиционирование.
Ардуина с таким, боюсь, не справится. Разве что слать картинки с камер на сервер и обрабатывать там.
Камеры на мачтах могут тоже следить на положением роботов, следить за траекторией летящих мячиков.
Это все как-то не вписывается в концепцию минимализации стоимости внедрения и стоимости владения. Тут придется здорово перерабатывать поле.
Нужно просто выпустить робота, установить разгрузочную зону, установить координаты поля.
Разве? ну ок, если сервер убрать, да камеры с мачт.
Сами 2-3 мачты метра 3 с яркой картинкой дорого не стоят, обслуживания не требуют.
3-4 камеры в роботе + 3-4 Raspberry Pi на борту сильно цену не увеличат.
Больше-то и расходов нет.
Можно даже без мачт обойтись если при установке указать на статичные высокие объекты вокруг. Потом, на гольф-полях часто фонари же есть.
Развивая мысль: Если робот знает свою координату (GPS) и точно знает свое направление (дешевая навигационная камера), то используя HD-камеру может определять траекторию пролетающих над ним мячиков.
При поддержке второй камеры стоящей возле разгрузочного хоппера можно точно определять место падения мячика ± пара метров.
У мячей нет ускорения в полёте, мячи одинакового размера, двух камер вполне достаточно чтобы находить траекторию мяча.
Записывая места куда падают мячики можно сделать более эффективным алгоритм их сбора. Ну чтобы не кататься по всему полю как пылесос.
Я бы ещё камеру внутрь хоппера поставил чтобы оценивать степень загрузки.
А что с защитой от влаги? Трава-то всегда мокрая
Трава бывает мокрой от росы, бывает дождь.
В конструкции все это нужно предусмотреть.
Но сами мячи будут хранится отдельно
У компании ublox есть решения gps модулей с подключаемыми датчиками(для навигации автомобилей на парковках и в туннелях) с встроенным фильтром Калмана. Может стоит этим воспользоваться и переложить фильтр на готовое решение?
Вы не могли бы прислать какой продукт Вы именно имеете ввиду. Ссылку где их можно заказать? Нa офф. сайте не нашел.
К примеру Neo-m8u(не путать с другими моделями у них они на буквально одну букву могут отличаться) в нем все датчики встроены внутрь. Ссылка где купить к примеру тут в виде уже модуля www.csgshop.com/product.php?id_product=235 к сожалению не знаю насколько качественно будет лучше, но по рекламным материалам все очень и очень красиво.(реклама такая реклама)
Мое мнение, алгоритм для подобных задач (в двух словах, не развернуто) — висит (летает на квадролете) на определенной высоте камера (класса PTZ), несколько камер, периодически сканируют поле (у каждой камеры свой сектор), идентифицируют объект поиска, передают его координаты уборочной машине.
Проект состоит в нескольких этапав: программная часть ID распознавания и принятия решений, навигация, управление и аппаратная часть воздух. Как-то так
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации