Съдържание:

Изградете свой собствен робот Turtlebot !: 7 стъпки
Изградете свой собствен робот Turtlebot !: 7 стъпки

Видео: Изградете свой собствен робот Turtlebot !: 7 стъпки

Видео: Изградете свой собствен робот Turtlebot !: 7 стъпки
Видео: 5 лучших STEM-игрушек для детей в 2024 году 2024, Юли
Anonim
Изградете свой собствен робот Turtlebot!
Изградете свой собствен робот Turtlebot!
Изградете свой собствен робот Turtlebot!
Изградете свой собствен робот Turtlebot!
Изградете свой собствен робот Turtlebot!
Изградете свой собствен робот Turtlebot!

РЕДАКТИРАНЕ:

Допълнителна информация, свързана със софтуера и контрола, е достъпна на тази връзка:

hackaday.io/project/167074-build-your-own-turtlebot-3-backbone

Директната връзка към кода е:

github.com/MattMgn/foxbot_core

Защо този проект?

Turtlebot 3 е перфектната платформа за дълбоко навлизане в електрониката, роботиката и дори AI! Предлагам ви да изградите своя собствена костенурка стъпка по стъпка с достъпни компоненти, без да жертвате функциите и производителността. Имайки предвид едно: запазване на най-доброто от първоначалния робот, неговата модулност, простота и огромния брой пакети за автономна навигация и AI от общността с отворен код.

Този проект е възможност за начинаещи да придобият понятия за електроника, механика и компютърни науки, а за по -опитните да получат мощна платформа за тестване и разработване на алгоритми за изкуствен интелект.

Какво ще откриете в този проект?

На път сте да откриете кои основни механични и електронни части трябва да се пазят от оригиналния бот, за да се гарантира пълна съвместимост.

Целият процес на изграждане ще бъде подробен: от печат на 3D части, сглобяване и няколко компонента, запояване и интегриране на електроника до най -накрая компилиране на код на Arduino. Тази инструкция ще завърши с пример за „здрав свят“, за да ви запознае с ROS. Ако нещо изглежда неясно, не се колебайте да зададете въпрос!

Консумативи

Електроника:

1 x Едноплатен компютър за стартиране на ROS, може да бъде Raspberry Pi или Jetson Nano например

1 x Arduino DUE, можете също да използвате UNO или MEGA

1 x Прото платка, която отговаря на изхода Arduino DUE, налична тук

2 x 12V DC двигателя с енкодери (опция 100 RPM)

1 x двигател L298N

2 x 5V регулатор

1 x батерия (3S/4S LiPo батерия например)

2 x превключвателя за включване/изключване

2 x LED

2 x 470kOhm резистори

3 x 4 пинови JST конектори

1 x USB кабел (поне един между SBC и Arduino)

Сензори:

1 x токов сензор (по избор)

1 x 9 степени на свобода IMU (по избор)

1 x LIDAR (по избор)

Шаси:

16 x модулни плочи Turtlebot (които също могат да бъдат отпечатани 3D)

2 x колела с диаметър 65 мм (опция за ширина 6 мм)

4 x Найлонови дистанционери 30 мм (по избор)

20 x M3 вложки (по избор)

Други:

Проводници

Винтове и вложки M2.5 и M3

3D принтер или някой, който може да отпечата частите вместо вас

Ръчна бормашина с набор свредла като тази

Стъпка 1: Описание

Описание
Описание
Описание
Описание

Този робот е просто диференциално задвижване, което използва 2 колела, директно монтирани на техния двигател, и ролер, който е поставен отзад, за да предотврати падането на робота. Роботът е разделен на два слоя:

долният слой: с задвижващата група (батерия, контролер на двигателя и двигатели) и електрониката на „ниско ниво“: микроконтролер Arduino, регулатор на напрежението, ключове …

горният слой: с електронно „високо ниво“, а именно компютър с единичен борд и LIDAR

Тези слоеве са свързани с отпечатани части и винтове, за да се гарантира здравината на конструкцията.

Електронна схема

Схемата може да изглежда малко объркана. Това е схематичен чертеж и не представлява всички проводници, конектори и прото-платка, но може да се прочете, както следва:

3S литиево -йонна полимерна батерия с капацитет 3000mAh захранва първата верига, захранва както платката за управление на двигателя (L298N), така и първия 5V регулатор за енкодери на двигателя и Arduino. Тази верига се активира чрез превключвател със светодиод, който показва състоянието му ON/OFF.

Същата батерия захранва втора верига, входното напрежение се преобразува в 5V за захранване на единичния бордов компютър. Тук също веригата се активира чрез превключвател и светодиод.

След това могат да се добавят допълнителни сензори като LIDAR или камера директно към Raspberry Pi през USB или CSI порта.

Механичен дизайн

Рамката на робота се състои от 16 еднакви части, които образуват 2 квадратни слоя (ширина 28 см). Многото отвори позволяват да се монтират допълнителни части, където имате нужда и предлагат цялостен модулен дизайн. За този проект реших да взема оригиналните плочи TurtleBot3, но можете също да ги отпечатате 3D, тъй като техният дизайн е с отворен код.

Стъпка 2: Монтаж на блока на двигателя

Монтаж на блока на двигателя
Монтаж на блока на двигателя
Монтаж на блока на двигателя
Монтаж на блока на двигателя
Монтаж на блока на двигателя
Монтаж на блока на двигателя

Подготовка на двигателя

Първата стъпка е да добавите лента от пяна с дебелина 1 мм около всеки двигател, за да предотвратите вибрации и шум при въртене на двигателя.

Печатни части

Държачът на двигателя води до две части, които захващат двигателя като менгеме. Постигнати са 4 винта за затягане на двигателя в държача.

Всеки държач се състои от няколко отвора, в които се поставят вложки M3, които да бъдат монтирани върху конструкцията. Има повече дупки, отколкото действително са необходими, допълнителните отвори в крайна сметка могат да се използват за монтиране на допълнителна част.

Настройки на 3D принтер: всички части се отпечатват със следните параметри

  • Дюза с диаметър 0,4 мм
  • 15% пълнеж на материал
  • 0,2 мм височина слой

Колело

Избраните колела са покрити с гума, за да се постигне максимално сцепление и да се гарантира стабилност при хлъзгане. Затягащ винт поддържа колелото, монтирано на вала на двигателя. Диаметърът на колелото трябва да бъде достатъчно голям, за да пресече незначителни стъпки и неравности на земята (тези колела са с диаметър 65 мм).

Фиксация

Когато приключите с един мотоблок, повторете предишните операции и след това просто ги фиксирайте в слоя с винтове М3.

Стъпка 3: Превключватели и подготовка на кабелите

Превключватели и подготовка на кабелите
Превключватели и подготовка на кабелите
Превключватели и подготовка на кабелите
Превключватели и подготовка на кабелите
Превключватели и подготовка на кабелите
Превключватели и подготовка на кабелите

Подготовка на кабела на двигателя

Обикновено енкодерът на двигателя се доставя с кабел, включващ от едната страна 6-пинов конектор, който свързва задната част на печатната платка на енкодера, и голи проводници от другата страна.

Имате възможност директно да ги запоявате на вашата прото-платка или дори на вашия Arduino, но ви препоръчвам да използвате вместо това женски щифтове и JST-XH конектори. По този начин можете да ги включите/изключите от вашата платка и да улесните сглобяването.

Съвети: можете да добавите разтегателна плитка с ръкави около проводниците и парчета свиваща се тръба близо до съединителите, като по този начин ще получите „чист“кабел.

Превключвател и светодиод

За да активирате двете захранващи вериги, подгответе 2 светодиодни и превключващи кабела: първо запоявайте резистор от 470 kOhm на един от светодиодния щифт, след това запоявайте светодиода върху единия щифт на превключвателя. Тук също можете да използвате парче свиваема тръба, за да скриете резистора вътре. Внимавайте да запоявате светодиода в правилната посока! Повторете тази операция, за да получите два превключващи/светодиодни кабела.

Монтаж

Сглобете предварително направените кабели върху съответната 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 за втория

Избрах следния pin-out с Arduino:

ляв двигател: IN1 на щифт 3, IN2 на щифт 4, ENA на щифт 2

десен двигател: IN3 на щифт 5, IN4 на щифт 6, ENB на щифт 7

5V регулатор

Дори ако l298N обикновено е в състояние да осигури 5V, все пак добавям малък регулатор. Той захранва Arduino чрез VIN порта и 2 -те енкодера на двигателите. Можете да пропуснете тази стъпка, като използвате директно вградения L298N 5V регулатор.

JST конектори и изход за енкодер

Използвайте 4-пинови женски адаптери за JST-XH конектори, след което всеки конектор е свързан към:

  • 5V от регулатора
  • земя
  • два порта за цифров вход (например 34 и 38 за десния енкодер и 26 и 30 за левия)

Допълнителен I2C

Както може би сте забелязали, на пра-платката има допълнителен 4-пинов JST конектор. Използва се за свързване на I2C устройство като IMU, можете да направите същото и дори да добавите свой собствен порт.

Стъпка 5: Motor Group и Arduino на долния слой

Motor Group и Arduino на долния слой
Motor Group и Arduino на долния слой
Motor Group и Arduino на долния слой
Motor Group и Arduino на долния слой
Motor Group и Arduino на долния слой
Motor Group и Arduino на долния слой

Фиксиране на моторни блокове

След като долният слой се сглоби с 8 -те плочи на Turtlebot, просто използвайте 4 винта M3 директно в вложките, за да поддържате моторни блокове. След това можете да включите захранващите проводници на двигателя към изходите L298N и предварително направените кабели към JST конекторите на платката.

Разпределение на мощността

Разпределението на мощността се осъществява просто с бариерен клемен блок. От едната страна на бариерата, кабел с женски щепсел XT60 се завинтва за свързване към LiPo батерията. От другата страна, нашите два LED/кабела за превключване, предварително запоени, се завинтват. По този начин всяка верига (Motor и Arduino) може да бъде активирана със собствен ключ и съответния зелен светодиод.

Управление на кабелите

Бързо ще трябва да се справите с много кабели! За да намалите разхвърляния аспект, можете да използвате „таблицата“, отпечатана преди това 3D. На масата поддържайте електронните си табла с двустранна лента, а под масата оставете проводниците свободно да текат.

Поддръжка на батерията

За да избегнете изхвърлянето на батерията при шофиране на робота, можете просто да използвате ластик за коса.

Ролков колело

Всъщност не е ролер, а проста полусфера, фиксирана с 4 винта на долния слой. Достатъчно е да се осигури стабилност на робота.

Стъпка 6: Едноплатен компютър и сензори на горния слой

Едноплатен компютър и сензори на горния слой
Едноплатен компютър и сензори на горния слой
Едноплатен компютър и сензори на горния слой
Едноплатен компютър и сензори на горния слой
Едноплатен компютър и сензори на горния слой
Едноплатен компютър и сензори на горния слой

Кой едноплатен компютър да изберем?

Не е нужно да ви представя известния Raspberry Pi, броят на случаите на използване значително надвишава областта на роботиката. Но има много по -мощен претендент за Raspberry Pi, който може да игнорирате. Всъщност Jetson Nano от Nvidia вгражда мощна 128-ядрена графична карта в допълнение към своя процесор. Тази конкретна графична карта е разработена, за да ускори изчислителните скъпи задачи, като обработка на изображения или изводи от невронна мрежа.

За този проект избрах Jetson Nano и можете да намерите съответната 3D част сред приложените файлове, но ако искате да отидете с Raspberry Pi, тук има много калъфи за печат.

5V регулатор

Каквато и дъска да решите да донесете на робота си, имате нужда от 5V регулатор. Най -новият Raspberry Pi 4 изисква максимум 1,25A, но Jetson Nano изисква до 3A при стрес, затова избрах Pololu 5V 6A да има резерв на мощност за бъдещи компоненти (сензори, светлини, степери …), но всеки евтин 5V 2A трябва да направи работата. Jetson използва 5,5 мм DC варел, а Pi микро USB, хваща съответния кабел и го запоява към изхода на регулатора.

Оформление на LIDAR

Използваният тук LIDAR е LDS-01, има различни други 2D LIDAR, които могат да се използват като RPLidar A1/A2/A3, YDLidar X4/G4 или дори Hokuyo LIDAR. Единственото изискване е той да бъде включен през USB и да бъде поставен центриран над структурата. Всъщност, ако LIDAR не е добре центриран, картата, създадена от алгоритъма SLAM, може да измести прогнозното положение на стените и препятствията от тяхното реално положение. Също така, ако някакви препятствия от робота пресичат лазерния лъч, това ще намали обхвата и зрителното поле.

Монтаж LIDAR

LIDAR е монтиран върху 3D отпечатана част, която следва формата си, самата част се държи върху правоъгълна плоча (всъщност в шперплат на снимката, но може да бъде и 3D отпечатана). Тогава адаптерната част позволява ансамбълът да бъде фиксиран върху горната плоча на костенурка с найлонови дистанционери.

Камера като допълнителен сензор или смяна на LIDAR

Ако не искате да харчите твърде много пари в LIDAR (който струва около 100 $), отидете за камера: съществуват и SLAM алгоритми, които работят само с монокулярна RGB камера. И двата SBC приемат USB или CSI камера.

Освен това камерата ще ви позволи да стартирате скриптове за компютърно виждане и откриване на обекти!

Монтаж

Преди да затворите робота, прекарайте кабелите през по -големите отвори в горната плоча:

  • съответния кабел от 5V регулатора към вашия SBC
  • USB кабелът от порта за програмиране на Arduino DUE (най -близкият до DC цевта) към USB порт на вашия SBC

След това задръжте горната плоча на място с дузина винтове. Вашият робот вече е готов за програмиране, БРАВО!

Стъпка 7: Накарайте го да се движи

Компилирайте Arduino

Отворете любимата си Arduino IDE и импортирайте папката на проекта, наречена own_turtlebot_core, след това изберете дъската и съответния порт, можете да се обърнете към този отличен урок.

Регулирайте основните настройки

Проектът се състои от два файла и един трябва да бъде адаптиран към вашия робот. Така че нека отворим own_turtlebot_config.h и да открием кои редове изискват нашето внимание:

#define ARDUINO_DUE // ** КОМЕНТИРАЙТЕ ТАЗИ ЛИНИЯ, АКО НЕ ИЗПОЛЗВАТЕ ДЪЛГ **

Трябва да се използва само с Arduino DUE, ако не коментирате реда.

#define RATE_CONTROLLER_KP 130.0 // ** НАСТРОЙТЕ ТАЗИ ЗНАЧЕНИЕ **

#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNE THIS VALUE ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE THIS VALUE **

Тези 3 параметъра съответстват на печалбите на регулатора на скоростта, използвани от PID за поддържане на желаната скорост. В зависимост от напрежението на акумулатора, масата на робота, диаметъра на колелото и механичната предавка на вашия двигател, ще трябва да адаптирате техните стойности. PID е класически контролер и тук няма да бъдете подробни, но тази връзка трябва да ви даде достатъчно входни данни, за да настроите своя собствена.

/ * Определете щифтове */

// мотор A (десен) const байт motorRightEncoderPinA = 38; // ** ИЗМЕНЯВАЙТЕ С ВАШИЯ ПИН NB ** const byte motorRightEncoderPinB = 34; // ** ИЗМЕНЕНИЕ С ВАШИЯ ПИН NB ** const байт enMotorRight = 2; // ** ИЗМЕНЯВАНЕ С ВАШИЯ ПИН NB ** const байт in1MotorRight = 4; // ** ПРОМЕНЯТЕ С ВАШИЯ ПИН NB ** const байт in2MotorRight = 3; // ** ИЗМЕНЯВАНЕ С ВАШИЯ ПИН NB ** // мотор В (вляво) const байт motorLeftEncoderPinA = 26; // ** ПРОМЕНЯТЕ С ВАШИЯ ПИН NB ** const байт motorLeftEncoderPinB = 30; // ** ИЗМЕНЕНИЕ С ВАШИЯ ПИН NB ** const байт enMotorLeft = 7; // ** ИЗМЕНЕНИЕ С ВАШИЯ ПИН NB ** const байт in1MotorLeft = 6; // ** ИЗМЕНЕНИЕ С ВАШИЯ ПИН NB ** const байт in2MotorLeft = 5; // ** ИЗМЕНЯВАЙТЕ С ВАШИЯ ПИН NB **

Този блок определя разпределението между L298N и Arduino, просто променете номера на пина, за да съответства на вашия. Когато приключите с конфигурационния файл, компилирайте и качете кода!

Инсталирайте и конфигурирайте ROS

След като достигнете тази стъпка, инструкциите са абсолютно същите като тези, описани в отличното ръководство на TurtleBot3, трябва внимателно да следвате

Браво TurtleBot 3 вече е ваше и можете да стартирате всички съществуващи пакети и уроци с ROS.

Добре, но какво е ROS?

ROS означава операционна система Robots, на пръв поглед може да изглежда доста сложна, но не е, просто си представете начин на комуникация между хардуер (сензори и задвижващи механизми) и софтуер (алгоритми за навигация, управление, компютърно виждане …). Например, можете лесно да замените текущия си 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 и да кодирате зрението и алгоритмите за машинно обучение.

Препоръчано: