Оглавление:
- Запасы
- Шаг 1: Описание
- Шаг 2: Сборка блока двигателя
- Шаг 3: Переключатели и подготовка кабеля
- Шаг 4: Подключение электронных плат
- Шаг 5: Motor Group и Arduino на нижнем уровне
- Шаг 6: Одноплатный компьютер и датчики на верхнем уровне
- Шаг 7: заставьте его двигаться
Видео: Создайте своего робота-черепаху !: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
РЕДАКТИРОВАТЬ:
Дополнительная информация о программном обеспечении и управлении доступна по этой ссылке:
hackaday.io/project/167074-build-your-own-turtlebot-3-backbone
Прямая ссылка на код:
github.com/MattMgn/foxbot_core
Почему именно этот проект?
Turtlebot 3 - идеальная платформа для изучения электроники, робототехники и даже искусственного интеллекта! Я предлагаю вам поэтапно создать своего собственного turtlebot с доступными компонентами, не жертвуя функциями и производительностью. Помня об одном: сохранить лучшее от первоначального робота, его модульность, простоту и огромное количество пакетов для автономной навигации и искусственного интеллекта от сообщества разработчиков ПО с открытым исходным кодом.
Этот проект - возможность для новичков получить представление об электронике, механике и компьютерных науках, а для более опытных - получить мощную платформу для тестирования и разработки алгоритмов искусственного интеллекта.
Что вы откроете для себя в этом проекте?
Вы скоро узнаете, какие важные механические и электронные детали необходимо сохранить в исходном боте, чтобы гарантировать полную совместимость.
Будет подробно описан весь процесс сборки: от 3D-печати деталей, сборки и нескольких компонентов, пайки и интеграции электроники до компиляции кода на Arduino. Это руководство завершится примером «привет, мир», чтобы познакомить вас с ROS. Если что-то кажется непонятным, не стесняйтесь задавать вопрос!
Запасы
Электроника:
1 одноплатный компьютер для запуска ROS, например Raspberry Pi или Jetson Nano
1 x Arduino DUE, вы также можете использовать UNO или MEGA
1 x Протоплата, которая подходит для распиновки Arduino DUE, доступна здесь
2 двигателя постоянного тока 12 В с энкодерами (опция 100 об / мин)
1 драйвер двигателя L298N
Регулятор 2 x 5 В
1 аккумулятор (например, 3S / 4S LiPo аккумулятор)
2 переключателя ВКЛ / ВЫКЛ
2 х светодиода
2 резистора по 470 кОм
Разъемы 3 x 4 контакта JST
1 x USB-кабель (по крайней мере, один между SBC и Arduino)
Датчики:
1 х датчик тока (опционально)
1 x 9 степеней свободы IMU (опционально)
1 x LIDAR (опционально)
Шасси:
16 модульных пластин Turtlebot (которые также можно напечатать на 3D-принтере)
2 колеса диаметром 65 мм (опция шириной 6 мм)
4 нейлоновых прокладки 30 мм (опционально)
20 пластин M3 (опционально)
Другие:
Провода
Винты и вставки M2,5 и M3
3D-принтер или кто-то, кто может распечатать детали для вас
Ручная дрель с набором таких сверл
Шаг 1: Описание
Этот робот представляет собой простой дифференциальный привод, который использует 2 колеса, непосредственно установленные на их двигателе, и роликовый ролик, который размещается сзади, чтобы предотвратить падение робота. Робот разделен на два слоя:
Нижний уровень: с силовой установкой (аккумулятор, контроллер двигателя и двигатели) и электроникой «низкого уровня»: микроконтроллер Arduino, регулятор напряжения, переключатели…
Верхний уровень: с электроникой «высокого уровня», а именно с одноплатным компьютером и лидаром
Эти слои связаны с печатными деталями и винтами, чтобы обеспечить прочность конструкции.
Электронная схема
Схема может показаться немного запутанной. Это схематический чертеж, на котором представлены не все провода, разъемы и макетная плата, но его можно прочитать следующим образом:
Ионно-полимерный аккумулятор 3S Litihum емкостью 3000 мАч питает первую цепь, он питает как плату контроллера двигателя (L298N), так и первый регулятор 5 В для энкодеров двигателя и Arduino. Эта схема включается переключателем со светодиодом, который указывает ее состояние ВКЛ / ВЫКЛ.
Эта же батарея питает вторую цепь, входное напряжение преобразуется в 5 В для питания одноплатного компьютера. Здесь также схема активируется с помощью переключателя и светодиода.
Дополнительные датчики, такие как LIDAR или камера, могут быть добавлены непосредственно на Raspberry Pi через USB или порт CSI.
Механический дизайн
Каркас робота состоит из 16 идентичных частей, которые образуют 2 квадратных слоя (ширина 28 см). Множество отверстий позволяют устанавливать дополнительные детали там, где это необходимо, и предлагают полную модульную конструкцию. Для этого проекта я решил взять оригинальные пластины TurtleBot3, но вы также можете распечатать их на 3D-принтере, поскольку их дизайн открыт.
Шаг 2: Сборка блока двигателя
Моторная подготовка
Первый шаг - обернуть вокруг каждого мотора поролоновую ленту толщиной 1 мм, чтобы предотвратить вибрацию и шум при вращении мотора.
Печатные части
Держатель двигателя состоит из двух частей, которые зажимают двигатель как тиски. 4 винта позволяют закрепить двигатель в держателе.
Каждый держатель состоит из нескольких отверстий, в которые вставляются вставки M3 для установки на конструкцию. Отверстий больше, чем нужно на самом деле, дополнительные отверстия можно использовать для крепления дополнительной детали.
Настройки 3D-принтера: все детали печатаются со следующими параметрами
- Сопло диаметром 0,4 мм
- 15% заполнение материала
- Слой высотой 0,2 мм
Колесо
Выбранные колеса покрыты резиной для максимального сцепления и обеспечения свободного качения. Зажимной винт удерживает колесо, установленное на валу двигателя. Диаметр колеса должен быть достаточно большим, чтобы преодолевать небольшие ступеньки и неровности грунта (эти колеса имеют диаметр 65 мм).
Фиксация
Когда вы закончите с одним моторным блоком, повторите предыдущие операции, а затем просто закрепите их в слое винтами M3.
Шаг 3: Переключатели и подготовка кабеля
Подготовка кабеля двигателя
Обычно мотор-энкодер поставляется с кабелем, включающим с одной стороны 6-контактный разъем, который соединяет заднюю часть печатной платы энкодера, и оголенные провода с другой стороны.
У вас есть возможность напрямую припаять их к вашей прототипной плате или даже к Arduino, но я рекомендую вам вместо этого использовать гнездовые штыревые разъемы и разъемы JST-XH. Таким образом, вы можете подключать / отключать их на своей прототипной плате и упростить сборку.
Советы: вы можете добавить расширяемую оплетку вокруг проводов и отрезки термоусадочной трубки возле разъемов, так вы получите «чистый» кабель.
Переключатель и светодиод
Для включения двух силовых цепей подготовьте 2 кабеля для светодиодов и переключателей: сначала припаяйте резистор 470 кОм к одному из контактов светодиода, затем припаяйте светодиод к одному из контактов переключателя. Здесь также вы можете использовать кусок термоусадочной трубки, чтобы спрятать резистор внутри. Будьте осторожны, чтобы припаять светодиод в правильном направлении! Повторите эту операцию, чтобы получить два кабеля переключателя / светодиода.
сборка
Соберите ранее сделанные кабели на соответствующей 3D-печатной детали. Используйте гайку для фиксации переключателя, светодиоды не требуют клея, достаточно приложить усилие, чтобы вставить его в отверстие.
Шаг 4: Подключение электронных плат
Макет плат
Протоплата, соответствующая разводке платы Arduino, используется для уменьшения количества проводов. В верхней части прототипной платы L298N уложен с женским заголовком Dupont (заголовки Dupont похожи на Arduino).
L298N подготовка
Изначально плата L298N не поставляется с соответствующим штекером Dupont, вам нужно добавить 9-контактный ряд под платой. Вам необходимо проделать 9 отверстий с помощью сверла диаметром 1 мм параллельно существующим отверстиям, как вы можете видеть на картинке. Затем соедините соответствующие контакты 2-х рядов с помощью паяльных материалов и коротких проводов.
Распиновка L298N
L298N состоит из 2 каналов, позволяющих управлять скоростью и направлением:
направление через 2 цифровых выхода, называемых IN1, IN2 для первого канала и IN3 и IN4 для второго
скорость через 1 цифровой выход, называемый ENA для первого канала и ENB для второго
Я выбрал следующую распиновку для Arduino:
левый двигатель: IN1 на контакте 3, IN2 на контакте 4, ENA на контакте 2
правый двигатель: IN3 на контакте 5, IN4 на контакте 6, ENB на контакте 7
Регулятор 5В
Даже если l298N обычно может обеспечивать 5 В, я все же добавляю небольшой регулятор. Он питает Arduino через порт VIN и 2 энкодера на двигателях. Вы можете пропустить этот шаг, напрямую используя встроенный регулятор 5V L298N.
Разъемы JST и распиновка энкодера
Используйте адаптеры разъема JST-XH с 4 контактами, каждый разъем затем подключается к:
- 5В от регулятора
- земля
- два цифровых входных порта (например: 34 и 38 для правого энкодера и 26 и 30 для левого)
Дополнительный I2C
Как вы могли заметить, на прототипной плате есть дополнительный 4-контактный разъем JST. Он используется для подключения устройства I2C, такого как IMU, вы можете сделать то же самое и даже добавить свой собственный порт.
Шаг 5: Motor Group и Arduino на нижнем уровне
Крепление мотоблоков
После того, как нижний слой будет собран с пластинами 8 Turtlebot, просто вставьте 4 винта M3 непосредственно во вставки для обслуживания моторных блоков. Затем вы можете подключить провода питания двигателя к выходам L298N, а ранее сделанные кабели - к разъемам JST на макетной плате.
Распределение мощности
Распределение мощности просто реализуется с помощью клеммной колодки с барьером. С одной стороны шлагбаума прикручен кабель с розеткой XT60 для подключения к LiPo батарее. С другой стороны прикручены два ранее припаянных кабеля для светодиодов / переключателей. Таким образом, каждая схема (двигатель и Arduino) может быть включена с помощью своего переключателя и соответствующего зеленого светодиода.
Кабельный менеджмент
Вам быстро придется разобраться с большим количеством кабелей! Чтобы уменьшить беспорядок, вы можете использовать «стол», ранее напечатанный на 3D-принтере. На столе зафиксируйте электронные платы двусторонним скотчем, а под столом пусть провода свободно протекают.
Аккумуляторная батарея
Чтобы избежать выброса аккумулятора при вождении робота, вы можете просто использовать резинку для волос.
Ролики
Не совсем роликовые ролики, а простая полусфера, закрепленная 4 винтами на нижнем слое. Этого достаточно для обеспечения устойчивости робота.
Шаг 6: Одноплатный компьютер и датчики на верхнем уровне
Какой одноплатный компьютер выбрать?
Мне не нужно представлять вам знаменитый Raspberry Pi, количество его вариантов использования значительно превышает область робототехники. Но у Raspberry Pi есть гораздо более мощный соперник, которого вы можете проигнорировать. Действительно, в Jetson Nano от Nvidia помимо процессора встроена мощная 128-ядерная графическая карта. Эта конкретная графическая карта была разработана для ускорения вычислительных дорогостоящих задач, таких как обработка изображений или логический вывод нейронной сети.
Для этого проекта я выбрал Jetson Nano, и вы можете найти соответствующую 3D-часть среди прикрепленных файлов, но если вы хотите использовать Raspberry Pi, здесь есть много вариантов для печати.
Регулятор 5V
Какую бы плату вы ни решили взять с собой на свой робот, вам понадобится стабилизатор на 5 В. Последнему Raspberry Pi 4 требуется максимум 1,25 А, но Jetson Nano требует до 3 А при нагрузке, поэтому я выбрал Pololu 5V 6A, чтобы иметь запас мощности для будущих компонентов (датчики, фонари, шаговые двигатели …), но подойдут любые дешевые 5V 2A. работа. В Jetson используется цилиндр постоянного тока диаметром 5,5 мм, а в Pi - микро-USB, возьмите соответствующий кабель и припаяйте его к выходу регулятора.
Макет LIDAR
Используемый здесь LIDAR - это LDS-01, существуют различные другие 2D-лидары, которые можно использовать, например, RPLidar A1 / A2 / A3, YDLidar X4 / G4 или даже лидары Hokuyo. Единственное требование - он должен быть подключен через USB и размещен по центру над конструкцией. Действительно, если LIDAR плохо отцентрирован, карта, созданная алгоритмом SLAM, может сместить предполагаемое положение стен и препятствий от их реального положения. Также, если какие-либо препятствия от робота пересекают лазерный луч, это уменьшит дальность и поле зрения.
Монтаж лидара
ЛИДАР монтируется на 3D-печатной детали, которая повторяет его форму, сама деталь удерживается на прямоугольной пластине (на самом деле на картинке из фанеры, но также может быть напечатана 3D-печать). Затем переходная часть позволяет закрепить ансамбль на верхней пластине черепахи с помощью нейлоновых прокладок.
Камера как дополнительный сенсор или замена лидара
Если вы не хотите тратить слишком много денег на лидар (который стоит около 100 долларов), выберите камеру: также существуют алгоритмы SLAM, которые работают только с монокулярной камерой с RGB-подсветкой. Оба SBC принимают камеру USB или CSI.
Более того, камера позволит запускать скрипты компьютерного зрения и обнаружения объектов!
сборка
Перед тем как закрыть робота, пропустите кабели через большие отверстия в верхней пластине:
- соответствующий кабель от регулятора 5V к SBC
- USB-кабель от порта программирования Arduino DUE (ближайшего к корпусу постоянного тока) к USB-порту вашего SBC
Затем закрепите верхнюю пластину с помощью дюжины винтов. Теперь ваш робот готов к программированию, ХОРОШО!
Шаг 7: заставьте его двигаться
Скомпилируйте Arduino
Откройте свою любимую IDE Arduino и импортируйте папку проекта с именем own_turtlebot_core, затем выберите свою плату и соответствующий порт, вы можете обратиться к этому отличному руководству.
Отрегулируйте настройки ядра
Проект состоит из двух файлов, один из которых необходимо адаптировать к вашему роботу. Итак, давайте откроем own_turtlebot_config.h и выясним, какие строки требуют нашего внимания:
#define ARDUINO_DUE // ** КОММЕНТИРУЙТЕ ЭТУ СТРОКУ, ЕСЛИ ВАШЕ НЕ ИСПОЛЬЗУЕТ ДОЛЖНОСТЬ **
Следует использовать только с Arduino DUE, если не комментировать строку.
#define RATE_CONTROLLER_KP 130.0 // ** НАСТРОЙТЕ ЭТО ЗНАЧЕНИЕ **
#define RATE_CONTROLLER_KD 5000000000000.0 // ** НАСТРОЙТЕ ЭТО ЗНАЧЕНИЕ ** #define RATE_CONTROLLER_KI 0.00005 // ** НАСТРОЙТЕ ЭТО ЗНАЧЕНИЕ **
Эти 3 параметра соответствуют коэффициентам усиления регулятора скорости, используемым ПИД-регулятором для поддержания желаемой скорости. В зависимости от напряжения батареи, массы робота, диаметра колеса и механической передачи вашего двигателя вам необходимо будет изменить их значения. ПИД-регулятор - это классический контроллер, и здесь вы не будете подробно рассказывать о нем, но эта ссылка должна дать вам достаточно входных данных для настройки вашего собственного.
/ * Определить контакты * /
// мотор A (справа) константный байт motorRightEncoderPinA = 38; // ** ИЗМЕНИТЬ ПИН-код NB ** const byte motorRightEncoderPinB = 34; // ** ИЗМЕНИТЬ ПИН-код NB ** const byte enMotorRight = 2; // ** ИЗМЕНИТЬ ПИН-код NB ** const byte in1MotorRight = 4; // ** ИЗМЕНИТЬ ПИН-код NB ** const byte in2MotorRight = 3; // ** ИЗМЕНИТЬ ПИН-код NB ** // двигатель B (слева) const byte motorLeftEncoderPinA = 26; // ** ИЗМЕНИТЬ ПИН-код NB ** const byte motorLeftEncoderPinB = 30; // ** ИЗМЕНИТЬ ПИН-код NB ** const byte enMotorLeft = 7; // ** ИЗМЕНИТЬ ПИН-код NB ** const byte in1MotorLeft = 6; // ** ИЗМЕНИТЬ ПИН-код NB ** const byte in2MotorLeft = 5; // ** ИЗМЕНИТЬ ПИН-код NB **
Этот блок определяет распиновку между L298N и Arduino, просто измените номер контакта, чтобы он соответствовал вашему. Когда вы закончите с конфигурационным файлом, скомпилируйте и загрузите код!
Установить и настроить ROS
Как только вы дойдете до этого шага, инструкции будут точно такими же, как те, что подробно описаны в отличном руководстве TurtleBot3, вам нужно скрупулезно следовать
Отлично, TurtleBot 3 теперь ваш, и вы можете запускать все существующие пакеты и учебные пособия с ROS.
Хорошо, но что такое ROS?
ROS расшифровывается как операционная система роботов, поначалу это может показаться довольно сложным, но это не так, просто представьте способ связи между оборудованием (датчики и исполнительные механизмы) и программным обеспечением (алгоритмы навигации, управления, компьютерного зрения…). Например, вы можете легко поменять текущий LIDAR на другую модель без нарушения настройки, потому что каждый LIDAR публикует одно и то же сообщение LaserScan. ROS широко используется в робототехнике, Запустите свой первый пример
Эквивалент «привет, мир» для ROS заключается в дистанционном управлении роботом через удаленный компьютер. Что вы хотите сделать, так это отправить команды скорости, чтобы двигатели вращались, команды следуют за этим каналом:
- узел turtlebot_teleop, работающий на удаленном компьютере, публикует тему "/ cmd_vel", включая сообщение Twist
- это сообщение пересылается через сеть сообщений ROS на SBC
- последовательный узел позволяет получить "/ cmd_vel" на Arduino
- Arduino считывает сообщение и устанавливает угловую скорость на каждом двигателе, чтобы она соответствовала желаемой линейной и угловой скорости робота.
Эта операция проста и может быть выполнена с помощью командных строк, перечисленных выше! Если вам нужна более подробная информация, просто посмотрите видео.
[SBC]
roscore
[SBC]
rosrun rosserial_python serial_node.py _port: = / dev / ttyACM0 _baud: = 115200
[Удаленный компьютер]
экспорт TURTLEBOT3_MODEL = $ {TB3_MODEL}
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Идти дальше
Вам нужно знать последнее, прежде чем пробовать все официальные примеры в руководстве каждый раз, когда вы сталкиваетесь с этой командой:
roslaunch turtlebot3_bringup turtlebot3_robot.launch
вам нужно вместо этого запустить эту команду на своем SBC:
rosrun rosserial_python serial_node.py _port: = / dev / ttyACM0 _baud: = 115200
И если у вас есть LIDAR, запустите соответствующую команду на вашем SBC, в моем случае я запускаю LDS01 со следующей строкой:
roslaunch hls_lfcd_lds_driver hlds_laser.launch
И это все, вы окончательно создали своего собственного черепашьего робота:) Вы готовы открыть для себя фантастические возможности ROS и кодировать алгоритмы машинного обучения и машинного обучения.
Рекомендуемые:
Создайте своего робота для видеостриминга, управляемого через Интернет, с помощью Arduino и Raspberry Pi: 15 шагов (с изображениями)
Создайте своего управляемого через Интернет робота для потоковой передачи видео с помощью Arduino и Raspberry Pi: Я @RedPhantom (он же LiquidCrystalDisplay / Itay), 14-летний студент из Израиля, обучающийся в средней школе Макса Шейна для продвинутых естественных наук и математики. Я делаю этот проект, чтобы каждый мог учиться у него и делиться им! Вы можете
Otto DIY - Создайте своего собственного робота за один час !: 9 шагов (с изображениями)
Otto DIY - создайте своего собственного робота за один час!: Otto - это интерактивный робот, который может создать каждый !, Отто ходит, танцует, издает звуки и избегает препятствий. Otto имеет полностью открытый исходный код, совместим с Arduino, доступен для 3D-печати и поддерживает социальные сети. ударная миссия по созданию инклюзивной среды для всех к
Создайте своего собственного робота для панорамных фотографий 360: 5 шагов
Сделайте своего собственного робота для панорамных фотографий 360: это мой робот для панорамных фотографий 360, идея заключается в том, чтобы снимать на 360 градусов за меньшее время без ошибок, снимайте панорамы в сложных условиях и весело! .Этот проект я беру на 1 месяц и я внедряю улучшения, и я использую pa
Создайте своего собственного робота-дворецкого !!! - Учебное пособие, фотографии и видео: 58 шагов (с изображениями)
Создайте своего собственного робота-дворецкого !!! - Учебное пособие, фотографии и видео: РЕДАКТИРОВАТЬ: больше информации о моих проектах можно найти на моем новом веб-сайте: narobo.com Я также консультирую по проектам / продуктам в области робототехники, мехатроники и спецэффектов. Посетите мой веб-сайт - narobo.com для получения дополнительной информации. Вы когда-нибудь хотели робота-дворецкого, который разговаривает с вами
Создайте очень маленького робота: сделайте самого маленького в мире колесного робота с захватом: 9 шагов (с изображениями)
Создайте очень маленького робота: создайте самого маленького в мире колесного робота с захватом. Создайте робота объемом 1/20 куб. Дюйма с захватом, который может поднимать и перемещать мелкие предметы. Он управляется микроконтроллером Picaxe. На данный момент я считаю, что это может быть самый маленький в мире колесный робот с захватом. Без сомнения, ч