Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Opis
- Krok 2: Montaż bloku silnika
- Krok 3: Przełączniki i przygotowanie kabli
- Krok 4: Okablowanie płytek elektronicznych
- Krok 5: Grupa silników i Arduino na dolnej warstwie
- Krok 6: Komputer jednopłytkowy i czujniki w górnej warstwie
- Krok 7: Niech się ruszy
Wideo: Zbuduj własnego robota-żółwiaka!: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
EDYTOWAĆ:
Dalsze informacje dotyczące oprogramowania i sterowania są dostępne pod tym linkiem:
hackaday.io/project/167074-build-your-own-turtlebot-3-backbone
Bezpośredni link do kodu to:
github.com/MattMgn/foxbot_core
Dlaczego ten projekt?
Turtlebot 3 to idealna platforma do zagłębienia się w elektronikę, robotykę, a nawet sztuczną inteligencję! Proponuję Ci zbudowanie własnego turtlebota krok po kroku z niedrogimi komponentami bez poświęcania funkcji i wydajności. Mając jedno na uwadze: zachowanie tego, co najlepsze z początkowego robota, jego modułowości, prostoty i ogromnej liczby pakietów do autonomicznej nawigacji i sztucznej inteligencji od społeczności open-source.
Projekt ten jest szansą dla początkujących na przyswojenie sobie pojęć elektroniki, mechaniki i informatyki, a dla bardziej doświadczonych na zdobycie potężnej platformy do testowania i rozwijania algorytmów sztucznej inteligencji.
Co odkryjesz w tym projekcie?
Za chwilę odkryjesz, które istotne części mechaniczne i elektroniczne muszą być przechowywane z dala od oryginalnego bota, aby zagwarantować pełną kompatybilność.
Cały proces budowy będzie szczegółowy: od drukowania części 3D, montażu i kilku komponentów, lutowania i integracji elektroniki, aż po kompilację kodu na Arduino. Ta instrukcja zakończy się przykładem „hello world”, aby zapoznać Cię z ROS. Jeśli coś wydaje się niejasne, zadaj pytanie!
Kieszonkowe dzieci
Elektronika:
1 x komputer jednopłytkowy do obsługi ROS, może to być na przykład Raspberry Pi lub Jetson Nano
1 x Arduino DUE, możesz również użyć UNO lub MEGA
1 x płytka Proto pasująca do pinów Arduino DUE dostępna tutaj
Silniki 2 x 12 V DC z enkoderami (opcja 100 obr./min)
1 x sterownik silnika L298N
2x5V regulator
1 x bateria (na przykład bateria 3S/4S LiPo)
2 x włączniki/wyłączniki
2 x LED
Rezystory 2 x 470 kOhm
3 x 4-pinowe złącza JST
1 x kabel USB (przynajmniej jeden między SBC a Arduino)
Czujniki:
1 x czujnik prądu (opcjonalnie)
1 x 9 stopni swobody IMU (opcjonalnie)
1 x LIDAR (opcjonalnie)
Podwozie:
16 x modułowych płyt Turtlebot (które można również wydrukować w 3D)
2 x koła o średnicy 65 mm (opcja 6 mm szerokości)
4 x nylonowe dystanse 30mm (opcjonalnie)
20 x wkładki M3 (opcjonalnie)
Inni:
Przewody
Śruby i wkładki M2,5 i M3
Drukarka 3D lub ktoś, kto może wydrukować dla Ciebie części
Wiertarka ręczna z zestawem wierteł takich jak ta
Krok 1: Opis
Ten robot jest prostym napędem różnicowym, który wykorzystuje 2 koła zamontowane bezpośrednio na silniku i kółko samonastawne, które jest umieszczone z tyłu, aby zapobiec przewróceniu się robota. Robot podzielony jest na dwie warstwy:
warstwa dolna: z grupą napędową (akumulator, sterownik silnika i silniki) oraz elektroniką „niskiego poziomu”: mikrokontroler Arduino, regulator napięcia, przełączniki…
górna warstwa: z elektroniką „wysokiego poziomu”, czyli komputerem jednopłytkowym i LIDAR
Warstwy te są połączone drukowanymi częściami i śrubami, aby zapewnić solidność konstrukcji.
Schemat elektroniczny
Schemat może wydawać się nieco nieuporządkowany. Jest to schematyczny rysunek i nie przedstawia wszystkich przewodów, złączy i płytki prototypowej, ale można go odczytać w następujący sposób:
Akumulator litowo-jonowo-polimerowy 3S o pojemności 3000 mAh zasila pierwszy obwód, zasila zarówno płytkę sterownika silnika (L298N), jak i pierwszy regulator 5 V dla enkoderów silnika i Arduino. Obwód ten jest włączany za pomocą przełącznika z diodą LED, która wskazuje jego stan ON/OFF.
Ta sama bateria zasila drugi obwód, napięcie wejściowe jest przekształcane na 5 V w celu zasilania komputera jednopłytkowego. Tutaj również obwód jest włączany za pomocą przełącznika i diody LED.
Dodatkowe czujniki, takie jak LIDAR lub kamera, można następnie dodać bezpośrednio do Raspberry Pi przez USB lub port CSI.
Konstrukcja mechaniczna
Rama robota składa się z 16 identycznych części, które utworzyły 2 kwadratowe warstwy (szerokość 28 cm). Wiele otworów pozwala na zamontowanie dodatkowych części w dowolnym miejscu i oferuje pełną modułową konstrukcję. Do tego projektu zdecydowałem się zdobyć oryginalne płytki TurtleBot3, ale można je również wydrukować w 3D, ponieważ ich projekt jest open source.
Krok 2: Montaż bloku silnika
Przygotowanie silnika
Pierwszym krokiem jest dodanie taśmy piankowej o grubości 1 mm wokół każdego silnika, aby zapobiec wibracjom i hałasowi podczas obracania się silnika.
Części drukowane
Uchwyt silnika daje dwie części, które chwytają silnik jak imadło. 4 śruby uzyskane do dokręcenia silnika w uchwycie.
Każdy uchwyt składa się z kilku otworów, w których znajdują się wkładki M3, które należy zamontować na konstrukcji. Jest więcej otworów niż jest to faktycznie potrzebne, dodatkowe otwory mogą w końcu zostać wykorzystane do zamontowania dodatkowej części.
Ustawienia drukarki 3D: wszystkie części są drukowane z następującymi parametrami
- Dysza o średnicy 0,4 mm
- 15% wypełnienia materiałowego
- Warstwa o wysokości 0,2 mm
Koło
Wybrane koła są pokryte gumą, aby zmaksymalizować przyczepność i zapewnić bezpoślizgowe toczenie. Śruba zaciskowa podtrzymuje koło zamontowane na wale silnika. Średnica koła powinna być na tyle duża, aby pokonywać niewielkie uskoki i nierówności terenu (te koła mają średnicę 65 mm).
Fiksacja
Kiedy skończysz z jednym blokiem silnika, powtórz poprzednie czynności, a następnie po prostu przymocuj je do warstwy za pomocą śrub M3.
Krok 3: Przełączniki i przygotowanie kabli
Przygotowanie kabla silnika
Zazwyczaj enkoder silnika jest dostarczany z kablem zawierającym z jednej strony 6-stykowe złącze, które łączy tył płytki PCB enkodera, a nieosłonięte przewody z drugiej strony.
Masz możliwość bezpośredniego lutowania ich na płytce prototypowej lub nawet na swoim Arduino, ale zamiast tego zalecam użycie żeńskich nagłówków pinów i złączy JST-XH. W ten sposób możesz podłączyć/odłączyć je na swojej płycie prototypowej i ułatwić montaż.
Wskazówki: możesz dodać rozszerzalny oplot koszulki wokół przewodów i kawałków rurki termokurczliwej w pobliżu złączy, dzięki czemu uzyskasz „czysty” kabel.
Przełącznik i dioda LED
Aby włączyć dwa obwody zasilania, przygotuj 2 kable LED i przełączników: najpierw przylutuj rezystor 470kOhm na jednym z pinów LED, a następnie przylutuj LED na jednym z pinów przełącznika. Tutaj również możesz użyć kawałka rurki termokurczliwej, aby ukryć rezystor w środku. Uważaj, aby przylutować diodę LED we właściwym kierunku! Powtórz tę operację, aby uzyskać dwa kable przełącznika/led.
montaż
Zamontuj wcześniej wykonane kable na odpowiedniej drukowanej części 3D. Użyj nakrętki do konserwacji przełącznika, diody LED nie wymagają kleju, wystarczy na tyle siły, aby zmieściły się w otworze.
Krok 4: Okablowanie płytek elektronicznych
Układ tablic
Płytka prototypowa pasująca do układu płytki Arduino służy do zmniejszenia liczby przewodów. W górnej części płyty prototypowej L298N jest wyposażony w żeńskie nagłówki Dupont (Dupont są nagłówkami podobnymi do Arduino).
Przygotowanie L298N
Oryginalnie płyta L298N nie jest dostarczana z odpowiednim męskim nagłówkiem Dupont, musisz dodać 9-pinowy rząd poniżej płyty. Musisz wykonać 9 otworów wiertłem o średnicy 1 mm równolegle do istniejących otworów, jak widać na zdjęciu. Następnie połącz odpowiednie piny 2 rzędów materiałami lutowniczymi i krótkimi przewodami.
Wyprowadzenie pinów L298N
L298N składa się z 2 kanałów umożliwiających sterowanie prędkością i kierunkiem:
kierunek przez 2 wyjścia cyfrowe, nazwane IN1, IN2 dla pierwszego kanału oraz IN3 i IN4 dla drugiego
prędkość przez 1 wyjścia cyfrowe, zwane ENA dla pierwszego kanału i ENB dla drugiego
Z Arduino wybrałem następujący pin-out:
lewy silnik: IN1 na pinie 3, IN2 na pinie 4, ENA na pinie 2
prawy silnik: IN3 na pinie 5, IN4 na pinie 6, ENB na pinie 7
Regulator 5V
Nawet jeśli l298N jest normalnie w stanie dostarczyć 5V, nadal dodaję mały regulator. Zasila Arduino przez port VIN i 2 enkodery na silnikach. Możesz pominąć ten krok bezpośrednio za pomocą wbudowanego regulatora L298N 5V.
Złącza JST i wyprowadzenie enkodera
Użyj 4-pinowych żeńskich adapterów złącza JST-XH, każde złącze jest następnie połączone z:
- 5V z regulatora
- Ziemia
- dwa cyfrowe porty wejściowe (np. 34 i 38 dla prawego enkodera oraz 26 i 30 dla lewego)
Dodatkowe I2C
Jak mogłeś zauważyć, na płycie prototypowej znajduje się dodatkowe 4-pinowe złącze JST. Służy do podłączenia urządzenia I2C jak IMU, możesz zrobić to samo, a nawet dodać własny port.
Krok 5: Grupa silników i Arduino na dolnej warstwie
Mocowanie bloków silnika
Gdy dolna warstwa zostanie zmontowana z 8 płytkami Turtlebot, po prostu użyj 4 śrub M3 bezpośrednio we wkładkach, aby utrzymać bloki silnika. Następnie można podłączyć przewody zasilania silnika do wyjść L298N, a wykonane wcześniej przewody do złącz JST na płytce proto-board.
Dystrybucja mocy
Dystrybucja mocy jest po prostu realizowana za pomocą listwy zaciskowej bariery. Z jednej strony bariery przykręcony jest kabel z wtykiem żeńskim XT60 do podłączenia do akumulatora LiPo. Z drugiej strony nasze dwa wcześniej przylutowane kable LED/switch są przykręcone. W ten sposób każdy obwód (silnik i Arduino) można było włączyć za pomocą własnego przełącznika i odpowiedniej zielonej diody LED.
Zarządzanie kablami
Szybko będziesz musiał uporać się z wieloma kablami! Aby zredukować bałagan, możesz użyć „stołu”, który został wcześniej wydrukowany w 3D. Na stole utrzymuj swoje płytki elektroniczne taśmą dwustronną, a pod stołem pozwól przewodom swobodnie płynąć.
Utrzymanie baterii
Aby uniknąć wysuwania baterii podczas jazdy robotem, możesz po prostu użyć gumki do włosów.
Kółko rolkowe
To nie jest rolka, ale prosta półkula przymocowana 4 śrubami na dolnej warstwie. Wystarczy zapewnić robotowi stabilność.
Krok 6: Komputer jednopłytkowy i czujniki w górnej warstwie
Który komputer jednopłytkowy wybrać?
Nie muszę przedstawiać Wam słynnego Raspberry Pi, jego liczba przypadków użycia znacznie przekracza dziedzinę robotyki. Ale dla Raspberry Pi istnieje znacznie potężniejszy pretendent, którego możesz zignorować. Rzeczywiście, Jetson Nano firmy Nvidia zawiera oprócz procesora potężną 128-rdzeniową kartę graficzną. Ta konkretna karta graficzna została opracowana w celu przyspieszenia kosztownych zadań obliczeniowych, takich jak przetwarzanie obrazu lub wnioskowanie o sieciach neuronowych.
Do tego projektu wybrałem Jetson Nano i możesz znaleźć odpowiednią część 3D wśród załączonych plików, ale jeśli chcesz użyć Raspberry Pi, jest tutaj wiele przypadków do druku.
Regulator 5V
Niezależnie od tego, jaką płytkę zdecydowałeś się umieścić w swoim robocie, potrzebujesz regulatora 5V. Najnowszy Raspberry Pi 4 wymaga maks. 1,25 A, ale Jetson Nano wymaga do 3 A na stres, więc zdecydowałem się na Pololu 5 V 6 A, aby mieć rezerwę mocy dla przyszłych komponentów (czujniki, światła, steppery…), ale każdy tani 5 V 2 A powinien wystarczyć Praca. Jetson używa lufy DC 5,5 mm, a Pi micro USB, chwyć odpowiedni kabel i przylutuj go do wyjścia regulatora.
Układ LIDAR
Zastosowany tutaj LIDAR to LDS-01, istnieje wiele innych LIDARów 2D, których można użyć, takich jak RPLidar A1/A2/A3, YDLidar X4/G4, a nawet LIDARY Hokuyo. Jedynym wymaganiem jest to, że musi być podłączony przez USB i umieszczony pośrodku nad konstrukcją. Rzeczywiście, jeśli LIDAR nie jest dobrze wyśrodkowany, mapa stworzona przez algorytm SLAM może przesunąć oszacowane położenie ścian i przeszkód od ich rzeczywistego położenia. Również jeśli jakiekolwiek przeszkody z robota przecinają wiązkę lasera, zmniejszy to zasięg i pole widzenia.
Montaż LIDAR
LIDAR jest montowany na części drukowanej 3D, która podąża za jej kształtem, sama część jest trzymana na prostokątnej płycie (na zdjęciu w rzeczywistości w sklejce, ale może być również wydrukowana w 3D). Następnie część adaptera umożliwia zamocowanie zespołu na górnej płycie żółwia za pomocą nylonowych przekładek.
Kamera jako dodatkowy czujnik lub zamiennik LIDAR
Jeśli nie chcesz wydawać zbyt dużo pieniędzy na LIDAR (który kosztuje około 100 $), wybierz kamerę: istnieją też algorytmy SLAM, które działają tylko z jednookularową kamerą RGB. Oba SBC akceptują kamerę USB lub CSI.
Ponadto kamera pozwoli Ci uruchomić skrypty komputerowej wizji i wykrywania obiektów!
montaż
Przed zamknięciem robota przeprowadź kable przez większe otwory w górnej płycie:
- odpowiedni kabel od regulatora 5V do SBC
- kabel USB z portu programowania Arduino DUE (najbliżej beczki DC) do portu USB twojego SBC
Następnie przytrzymuj górną płytę na miejscu za pomocą kilkunastu śrub. Twój robot jest teraz gotowy do zaprogramowania, DOBRA ZROBIONA!
Krok 7: Niech się ruszy
Skompiluj Arduino
Otwórz swoje ulubione Arduino IDE i zaimportuj folder projektu o nazwie own_turtlebot_core, a następnie wybierz swoją płytę i odpowiedni port, możesz zapoznać się z tym doskonałym samouczkiem.
Dostosuj ustawienia podstawowe
Projekt składa się z dwóch plików, z których jeden musi być dostosowany do Twojego robota. Otwórzmy więc own_turtlebot_config.h i odkryjmy, które linie wymagają naszej uwagi:
#define ARDUINO_DUE // ** SKOMENTUJ TEN WIERS, JEŚLI NIE UŻYWASZ DUE **
Powinien być używany tylko z Arduino DUE, jeśli nie komentuje linii.
#define RATE_CONTROLLER_KP 130.0 // ** DOSTOSUJ TĘ WARTOŚĆ **
#define RATE_CONTROLLER_KD 5000000000000.0 // ** DOSTOSUJ TĘ WARTOŚĆ ** #define RATE_CONTROLLER_KI 0,00005 // ** DOSTOSUJ TĄ WARTOŚĆ **
Te 3 parametry odpowiadają wzmocnieniom regulatora prędkości wykorzystywanym przez PID do utrzymania pożądanej prędkości. W zależności od napięcia akumulatora, masy robota, średnicy koła i przekładni mechanicznej silnika, będziesz musiał dostosować ich wartości. PID jest klasycznym kontrolerem i nie będziesz tutaj szczegółowo opisywany, ale ten link powinien dać ci wystarczającą ilość danych wejściowych do dostrojenia własnego.
/* Zdefiniuj szpilki */
// motor A (prawy) const byte motorRightEncoderPinA = 38; // ** MODYFIKUJ SWOJEGO PINU NB ** const byte motorRightEncoderPinB = 34; // ** MODYFIKUJ SWOJEGO PINU NB ** const byte enMotorRight = 2; // ** MODYFIKUJ SWOJEGO PINU NB ** const byte in1MotorRight = 4; // ** MODYFIKUJ SWOJEGO PINU NB ** const byte in2MotorRight = 3; // ** MODYFIKUJ SWOJEGO PINU NB ** // motor B (lewy) const byte motorLeftEncoderPinA = 26; // ** MODYFIKUJ SWOJEGO PINU NB ** const byte motorLeftEncoderPinB = 30; // ** MODYFIKUJ SWOJEGO PINU NB ** const byte enMotorLeft = 7; // ** MODYFIKUJ SWOJEGO PINU NB ** const byte in1MotorLeft = 6; // ** MODYFIKUJ SWOJEGO PINU NB ** const byte in2MotorLeft = 5; // ** MODYFIKUJ SWOJEGO PINU NB **
Ten blok definiuje pinout między L298N a Arduino, po prostu zmodyfikuj numer pinu, aby pasował do twojego. Kiedy skończysz z plikiem konfiguracyjnym, skompiluj i prześlij kod!
Zainstaluj i skonfiguruj ROS
Po osiągnięciu tego kroku instrukcje są dokładnie takie same, jak te wyszczególnione w doskonałej instrukcji TurtleBot3, musisz skrupulatnie przestrzegać
dobrze zrobione TurtleBot 3 jest teraz Twój i możesz uruchamiać wszystkie istniejące pakiety i samouczki za pomocą ROS.
Ok, ale co to jest ROS?
ROS to skrót od Robots Operating System, na pierwszy rzut oka może się wydawać dość skomplikowany, ale tak nie jest, wystarczy wyobrazić sobie sposób komunikacji między sprzętem (czujniki i siłowniki) a oprogramowaniem (algorytmy nawigacji, sterowania, wizji komputerowej…). Na przykład, możesz łatwo zamienić aktualny LIDAR na inny model bez przerywania konfiguracji, ponieważ każdy LIDAR publikuje ten sam komunikat LaserScan. ROS jest szeroko stosowany w robotyce, Uruchom swój pierwszy przykład
Odpowiednik "hello world" dla ROS polega na zdalnej obsłudze robota przez zdalny komputer. To, co chcesz zrobić, to wysłać polecenia prędkości, aby uruchomić silniki, polecenia podążają za tym potoku:
- węzeł turtlebot_teleop, działający na zdalnym komputerze, publikuje temat "/cmd_vel" zawierający wiadomość Twist
- ta wiadomość jest przekazywana przez sieć wiadomości ROS do SBC
- węzeł szeregowy umożliwia odbiór "/cmd_vel" na Arduino
- Arduino odczytuje wiadomość i ustawia prędkość kątową na każdym silniku, aby dopasować żądaną prędkość liniową i kątową robota
Ta operacja jest prosta i można ją wykonać, uruchamiając wymienione powyżej wiersze poleceń! Jeśli chcesz uzyskać bardziej szczegółowe informacje, po prostu obejrzyj wideo.
[SBC]
roscore
[SBC]
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200
[Komputer zdalny]
eksportuj TURTLEBOT3_MODEL=${TB3_MODEL}
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Iść dalej
Musisz wiedzieć ostatnią rzecz przed wypróbowaniem wszystkich oficjalnych przykładów w instrukcji za każdym razem, gdy napotkasz to polecenie:
roslaunch turtlebot3_bringup turtlebot3_robot.launch
zamiast tego musisz uruchomić to polecenie na swoim SBC:
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200
A jeśli masz LIDAR, uruchom powiązane polecenie na swoim SBC, w moim przypadku uruchamiam LDS01 z poniższą linią:
roslaunch hls_lfcd_lds_driver hlds_laser.launch
I to wszystko, definitywnie zbudowałeś własnego turtlebota:) Jesteś gotowy do odkrycia fantastycznych możliwości ROS oraz do kodowania wizji i algorytmów uczenia maszynowego.
Zalecana:
Stwórz robota sterowanego przez Bluetooth za pomocą własnego GUI: 5 kroków
Stwórz robota sterowanego przez Bluetooth za pomocą własnego GUI: Cześć przyjaciele po dzisiejszym projekcie rzemieślniczym, przyszedłem z fajnym projektem arduino. Zewnętrznie wygląda to na starą koncepcję, ale czekajcie, mam tu trochę niespodzianki, co czyni ten projekt wyjątkowym. Więc co jest tutaj wyjątkowego? Więc tutaj pokażę
Otto DIY - Zbuduj własnego robota w godzinę!: 9 kroków (ze zdjęciami)
Otto DIY - Zbuduj własnego robota w godzinę!: Otto to interaktywny robot, którego każdy może zrobić! Otto chodzi, tańczy, wydaje dźwięki i unika przeszkód. misja wpływu, aby stworzyć przyjazne środowisko dla wszystkich k
Stwórz własnego robota do zdjęć panoramicznych 360: 5 kroków
Stwórz własnego robota do zdjęć panoramicznych 360: to jest mój robot do robienia zdjęć panoramicznych 360, pomysł to strzelanie w 360 stopniach w jak najkrótszym czasie bez błędów, robienie zdjęć panoramicznych w trudnych warunkach i zabawę! Ten projekt zabieram 1 miesiąc i wdrażam ulepszenia i używam pa
Zbuduj własnego robota lokaja!!! - Samouczek, zdjęcia i wideo: 58 kroków (ze zdjęciami)
Zbuduj własnego robota lokaja!!! - Samouczek, zdjęcia i wideo: EDIT: Więcej informacji o moich projektach na mojej nowej stronie internetowej: narobo.com Zajmuję się również konsultingiem w zakresie robotyki, mechatroniki i projektów/produktów z efektami specjalnymi. Sprawdź moją stronę internetową - narobo.com, aby uzyskać więcej informacji. Czy kiedykolwiek chciałeś mieć robota kamerdynera, który rozmawia z tobą
Zbuduj bardzo małego robota: stwórz najmniejszego robota kołowego na świecie za pomocą chwytaka.: 9 kroków (ze zdjęciami)
Zbuduj bardzo małego robota: Stwórz najmniejszego robota kołowego na świecie za pomocą chwytaka.: Zbuduj robota 1/20 cala sześciennego z chwytakiem, który może podnosić i przesuwać małe przedmioty. Jest kontrolowany przez mikrokontroler Picaxe. W tej chwili uważam, że może to być najmniejszy na świecie robot kołowy z chwytakiem. To bez wątpienia ch