Еще немного лирики
Второе, что поражает при изучении ROS — стоимость платформ на рынке. Комплект turtlebot burger (как один из доступных по цене) — 549 $ (34500 р.). Все остальное еще дороже. Здесь можно возразить, что львиную долю цены составляет lidar, устройство для определения положения робота в пространстве. Который сам по себе стоит под 15к р. Однако, все остальные компоненты также не дешевы.
Посчитаем, во сколько обойдется нам наша «тележка»:
- raspberry pi 3b+ — 2500 р.
- sd карта 10 cat — 600 р.
- arduino uno — 200 р.
- 2 машинки — 600x2=1200 р.
- 2 аккумулятора 18650 — 400 р.
- держатель для акк. — 130 р.
- аккумулятор для raspberry — 1500 р
- доп. комплект гаек, болтов — 280 р.
- *2 оптических энкодера — 60 р.
- камера для raspberry pi (лучше fish-eye) — 800 р.
- драйвер двигателя — 30 р.
- советский конструктор (куда ж без него) — 300 руб.
Итого: 8000 р.
Цена также велика, но на порядок дешевле turtlebotа. При желании, машинки можно напечатать на 3d принтере или взять кусок фанеры. Тогда останется только DC моторы взять. Аккумулятор для raspberry также можно заменить более дешевым аналогом, главное, чтобы он выдавал 5V 3А.
Собираем
За основу проекта был взять ранее существующий проект — www.rosbots.com/build_it, но со значительными доработками. Кроме того, базовый проект, судя по информации с сайта, был заброшен, поэтому придется все доводить до ума самим.
Начало сборки и крепеж моторов аналогичен вышеуказанной инструкции:
Здесь надо обратить внимание на энкодеры, которые монтируются таким образом, чтобы они «накрывали» диски с прорезями, одетыми на моторы:
*Вообще энкодеры не сильны полезны и можно их не крепить. Оптические энкодеры позволяют определять пройденное расстояние, но к сожалению, не позволяют определить направление движения.
После монтажа двигателей и энкодеров (по желанию), соединяем провода с с ардуино uno, драйвером двигателя, батарейным отсеком из 2-х аккумуляторов 18650. Схема соединения аналогична, размещенной на сайте базового проекта за одним исключением:
5V для энкодеров можно взять с arduino (VCC от Right speed sensor и Left speed sensor на 5V arduino).
Крепим arduino и драйвер двигателя, питание для дравера:
Лапша поближе:
Драйвер двигателей. На клеммы зеленого цвета — пары проводов от двигателей:
Arduino у нас не будет питаться от батареек, она будет в дальнейшем соединена по usb с raspberry.
Ставим второй слой машинки
Здесь будет располагаться батарейный отсек, raspberry pi, камера на деталях из советского конструктора:
Не забываем правильно воткнуть шлейф от камеры в raspberry:
Советский конструктор в деле:
Закрываем бургер, третий слой «тележки».
Здесь будет ездить powerbank для raspberry:
*Немного о powerbank:
Все, машина готова!
В следующих постах поговорим уже непосредственно о ROS, линиях, теле, котах и улыбках.
Советы и беспощадная критика приветствуется!
Комментарии (27)
AlexanderS
20.07.2019 22:23Подобное и я делал. Остановился на чём-то подобном, полностью разочаровавшись в машинках без рулевой рейки и не найдя какого-нибудь готового варианта платформы «с рулением» (гусеницы изначально не планировались, а всякие колёса-мекарумы уж больно недешёвы).
Вот ROS, если вы будете толком объяснять что к чему — это будет очень интересно.zoldaten Автор
20.07.2019 23:32Читал вашу статью ранее, спасибо. Из нее мне было интересно в частности про защиту аккумуляторов. Аккумуляторы дохли по неясным причинам. Теперь я нашел более простое решение (без пайки) на али — ru.aliexpress.com/item/32919634014.html.
Однако, собирать только на ардуино, в моем случае не совсем то, что нужно. Хотя под ROS и только ардуино есть хороший проект из «ROS for Absolute Beginners». Если все собрать правильно, то получится вот такой zoldaten на arduino mega —
AlexanderS
21.07.2019 00:16С аккумуляторами интересное решение. Можно в параллель набрать такими ячейками нужную мощность, особо не заботясь о контроле при заряде/разряде. Только при разряде такой батареи, когда «закончится» аккумулятор с самой маленькой ёмкостью (а при интенсивной эксплуатации он рано или поздно появится), нагрузка на остальные возрастёт ступенькой — как только отключится одна ячейка. Возможно в каких-то случаях это надо учитывать (заботливый китаец предупредил нас о том, что всё это для питания устройств не более 5 Вт, но если сделано на совесть, то конструктивно думаю без проблем больше в 2-3 раза можно снимать, вопрос только в том, сколько может отдать преобразователь), например, заведя телеметрию о работе ячеек на контроллер. Кстати, контакты не пружинные, а пластинами — это хорошо, т.к. позволит снимать приличные токи. А то бывали случаи, когда тоненькие пружинки нагревались, проплавляли пластик и батарея самоотключалась)
Думаю читателям про ROS будет интересно. У меня-то у самого руки до неё так и не дошли.
wormball
21.07.2019 12:26> не найдя какого-нибудь готового варианта платформы «с рулением»
А машинки на радиоуправлении чем не устраивают?
> мекарумы
Это вообще что? Гугель и яндекс выдают либо упоминания в вашем же исполнении, либо вот такое из разряда НЕ КАЧАЙТЕ ПОСОНЫ ТАМ ВИРУС: retro-kontrastnyj.begcom.ru/suhoy/robot-mashina-s-338.htmlAlexanderS
21.07.2019 12:35Машинки сбалансированы по весу, на них много чего не поставишь. А хочется такую хорошую суровую платформу. Мы собирались свою сделать, но там не заладилось с механикой, а потом и вообще всё заглохло.
Извините, я опять написал «мекарум» ( Меканум же конечно. Они же омни, колесо Илона.
Foreglance
21.07.2019 09:59На робофоруме можно посмотреть о вариантах энкодеров, которые указывают и расстояние и даже примерный угол поворота
zoldaten Автор
21.07.2019 17:25Да, это отличная информация! И я здесь в группе поддержки датчиков Холла, но другие цены и базовый проект использовал стартовые обыкновенные оптические датчики.
osmanpasha
21.07.2019 12:07сможет поехать по линии на полу, вашим котом, вашим телом
Не совсем понятно, что имеется в виду — телега едет по полу, по коту и по телу?
*Вообще энкодеры не сильны полезны и можно их не крепить. Оптические энкодеры позволяют определять пройденное расстояние, но к сожалению, не позволяют определить направление движения.
У вас энкодеры не те. Надо было взять квадратурные энкодеры, они и направление определяют. Вообще, какую-то локализацию робота серьезнее, чем при езде по линии или вдоль стенки, можно только с энкодерами сделать (и еще какими-нибудь датчиками, типа IMU)
А вообще спасибо за статью. Интересно, какая производительность у малины в задаче анализа видео для поиска линии и улыбки, и можно ли это в реальном времени использовать.
NetBUG
21.07.2019 12:30+1Есть очень хороший вариант робота с шаговиками вместо DC-шек + энкодеров, ещё и дешевле получается (степперы цепляются прямо на малинку): github.com/Rhoeby/mini-turty/tree/master/mini_turty3
У меня есть форк с небольшими доработками. Базовая платформа выглядит как Raspberry, два драйвера на LV8729 и DC-DC на 5 вольт. В расширенном виде добавляется IMU, лидар от популярного пылесоса или от Seeed ($100 ровно в обоих случаях) и платка контроллера питания.
Если интересно, могу статейку накидатьsav1812
21.07.2019 12:59А как обстоят дела с пропуском шагов шаговыми двигателями при возрастании нагрузки?
Энкодеры — они для надёжного получения информации хороши. :)NetBUG
21.07.2019 13:40+1У 8729 никак. С другой стороны, это платформа для того, чтобы люди сделали свои первые шаги с ROS, научились работать с ускорениями, TF и прочими базовыми понятиями.
У TMC2130 есть обратная связь, в том числе по пропускам шагов.
Ну и кроме пропуска шагов, вероятно проскальзывание колёс по поверхности (у omniwheel это вообще штатный режим работы), энкодеры здесь не помогут, нужно либо optical flow (датчик от мыши ставить), либо работать по другим источникам позиционирования (IMU/лидар; у меня на платформе они есть, кстати).
Вообще в ROS самое интересное как раз сведение одометрии из разных источников :)
zoldaten Автор
21.07.2019 17:29+1Обязательно напишите! Если не для машины, то для руки пригодится. Там mg966 разочаровали.
NetBUG
21.07.2019 12:33+1Ещё момент — у вас используется оптический концевик, который ничего не знает о направлении движения. Если разориться и сходить в антикварный магазин за мышью с шаром, в ней будут оптические (если мышь из первой половины 80-х — есть шанс, что механические) энкодеры с одним свето- и двумя фотодиодами. Получается оптический квадратурный энкодер, позволяющий также получить направление движения.
mrhru
21.07.2019 22:18+1Мы на моторы подаём напряжения разной полярности через драйверы и без квадратурных детекторов не знаем направление движения? Это как? :)
NetBUG
22.07.2019 13:06При постоянной скорости — конечно, знаем. А вот при активном торможении и смене направления уже сложнее. Естественно, можно находить наиболее длинный импульс и считать его точкой смены направления вращения, но пятицентовый двойной фотодиод решает эту проблему ещё проще :)
ZEN_LS
21.07.2019 12:51Энкодеры нужны для поддержания постоянной скорости при помощи pid, а не для того чтобы узнать пройденный путь.
NetBUG
21.07.2019 13:33+1И это тоже, но ROS в значительной степени построен вокруг одометрии, и если ТС не отправляет эти данные в систему — это очень странно
osmanpasha
21.07.2019 16:33Ну, команды роботу посылаются в виде скорости (cmd_vel), вот для поддержания нужной скорости колёс и нужны энкодеры и pid. Отправлять обратно одометрию можно, но без продвинутого шаманства толку от неё обычно мало, так как она врёт.
iburyl
21.07.2019 17:17+1А зачем в бутерброде одновременно нужны и малинка и ардуинка? Разве одна raspberry pi 3b+ не потянула бы всё целиком?
zoldaten Автор
21.07.2019 17:21Да, потянула бы. И такой проект есть www.youtube.com/watch?v=D4gQgi8j4VY
Ирония в том, что шапка для raspberry стоит дороже uno ) www.amazon.es/gp/product/B071FWNBXGForeglance
23.07.2019 19:58Если под «шапкой» вы имеете в виду мотор-драйвер — думается под код из указанного видео любой H-бридж подойдёт, например дешевый HG7881
Например здесь на 20-21 шагах нарисованы разные платы для диф-движения (и в комментах про отличие пинов на разных мотор-драйверах)
www.instructables.com/id/Another-cardboard-robot-vacuum-cleaner-controlled-
Или я что-то неправильно понял?zoldaten Автор
23.07.2019 21:20+1HG7881 уже есть в схеме. Вопрос, как я его понял, был — можно ли без arduino обойтись. Да, можно.
MaxAlekseev
Ваш КЭП! По линии робот так и не поехал.
zoldaten Автор
позднее поехал точнее, это раннее видео. просто этот вариант забавней, «воспоминания о линии».