Isi kandungan:
- Bekalan
- Langkah 1: Penerangan
- Langkah 2: Pemasangan Blok Motor
- Langkah 3: Suis dan Penyediaan Kabel
- Langkah 4: Pendawaian Papan Elektronik
- Langkah 5: Kumpulan Motor dan Arduino di Lapisan Bawah
- Langkah 6: Komputer Papan Tunggal dan Sensor pada Lapisan Atas
- Langkah 7: Jadikannya Bergerak
Video: Bina Robot Turtlebot Anda Sendiri !: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
EDIT:
Maklumat lebih lanjut yang berkaitan dengan perisian dan kawalan tersedia di pautan ini:
hackaday.io/project/167074-build-your-own-turtlebot-3-backbone
Pautan langsung ke kod adalah:
github.com/MattMgn/foxbot_core
Mengapa projek ini?
Turtlebot 3 adalah platform yang tepat untuk mendalami elektronik, robotik dan juga AI! Saya mencadangkan anda membina turtlebot anda sendiri selangkah demi selangkah dengan komponen yang berpatutan tanpa mengorbankan ciri dan prestasi. Dengan satu perkara: menjaga yang terbaik dari robot awal, modulariti, kesederhanaannya dan sebilangan besar pakej untuk navigasi autonomi dan AI dari komuniti sumber terbuka.
Projek ini adalah peluang bagi pemula untuk memperoleh konsep elektronik, mekanik dan sains komputer, dan bagi yang lebih berpengalaman untuk mendapatkan platform yang kuat untuk menguji dan mengembangkan algoritma kecerdasan buatan.
Apa yang anda akan dapati dalam projek ini?
Anda akan menemui bahagian mekanikal dan elektronik penting yang mesti disimpan dari bot asal untuk menjamin keserasian lengkap.
Seluruh proses binaan akan terperinci: bermula dari pencetakan bahagian 3D, pemasangan dan beberapa komponen, pematerian dan penyatuan elektronik hingga akhirnya penyusunan kod di Arduino. Petunjuk ini akan menyimpulkan contoh 'dunia hello' untuk membiasakan anda dengan ROS. Sekiranya ada yang tidak jelas, sila tanya!
Bekalan
Elektronik:
1 x Single Board Computer untuk menjalankan ROS, boleh jadi Raspberry Pi atau Jetson Nano misalnya
1 x Arduino DUE, anda juga boleh menggunakan UNO atau MEGA
1 x Proto-board yang sesuai dengan pin Arduino DUE tersedia di sini
Motor DC 2 x 12V dengan pengekod (pilihan 100 RPM)
Pemandu motor 1 x L298N
Pengatur 2 x 5V
1 x Bateri (contohnya bateri LiPo 3S / 4S)
2 x suis ON / OFF
2 x LED
2 x 470kOhm Perintang
Penyambung JST 3 x 4 pin
1 x kabel USB (sekurang-kurangnya satu antara SBC dan Arduino)
Sensor:
1 x Sensor semasa (pilihan)
1 x 9 Darjah Kebebasan IMU (pilihan)
1 x LIDAR (pilihan)
Casis:
16 x Plat modular Turtlebot (yang juga boleh dicetak 3D)
2 x Roda berdiameter 65mm (pilihan lebar 6mm)
4 x Nylon spacer 30mm (pilihan)
Sisipan 20 x M3 (pilihan)
Lain-lain:
Wayar
Skru dan sisipan M2.5 dan M3
Pencetak 3D atau seseorang yang boleh mencetak bahagian untuk anda
Gerudi tangan dengan satu set gerudi seperti ini
Langkah 1: Penerangan
Robot ini adalah pemacu pembezaan sederhana yang menggunakan 2 roda yang dipasang secara langsung pada motor mereka dan roller caster yang diletakkan di belakang untuk mengelakkan robot jatuh. Robot terbahagi kepada dua lapisan:
Lapisan Bawah: dengan kumpulan penggerak (bateri, pengawal motor dan motor), dan elektronik 'tahap rendah': pengawal mikro Arduino, pengatur voltan, suis…
Lapisan Atas: dengan elektronik 'tahap tinggi' iaitu Komputer Papan Tunggal dan LIDAR
Lapisan tersebut dihubungkan dengan bahagian dan skru yang dicetak untuk memastikan kekukuhan struktur.
Skema elektronik
Skema mungkin kelihatan agak tidak kemas. Ini adalah gambar skematik dan tidak mewakili semua wayar, penyambung dan papan proto tetapi boleh dibaca seperti berikut:
Bateri 3S Litihum Ion Polymer dengan kapasiti 3000mAh memberi kuasa kepada litar pertama, ia memberi kuasa pada papan pengawal motor (L298N) dan pengatur 5V pertama untuk pengekod motor dan Arduino. Litar ini diaktifkan melalui suis dengan LED yang menunjukkan keadaan ON / OFFnya.
Bateri yang sama menguatkan litar kedua, voltan input ditukar menjadi 5V untuk menghidupkan Single Board Computer. Di sini juga, litar diaktifkan melalui suis dan LED.
Sensor tambahan seperti LIDAR atau kamera kemudian boleh ditambahkan terus pada Raspberry Pi melalui USB atau port CSI.
Reka bentuk mekanikal
Rangka robot terdiri daripada 16 bahagian yang sama yang membentuk 2 lapisan kuadrat (lebar 28cm). Banyak lubang membolehkan memasang bahagian tambahan di mana sahaja anda memerlukannya dan menawarkan reka bentuk modular yang lengkap. Untuk projek ini, saya memutuskan untuk mendapatkan plat TurtleBot3 yang asli tetapi anda juga boleh mencetaknya 3D kerana reka bentuknya adalah sumber terbuka.
Langkah 2: Pemasangan Blok Motor
Penyediaan motor
Langkah pertama ialah menambahkan pita busa setebal 1mm di sekitar setiap motor untuk mengelakkan getaran dan bunyi ketika motor akan berputar.
Bahagian bercetak
Pemegang motor menghasilkan dua bahagian yang mencengkam motor seperti naib. 4 skru dicapai untuk mengetatkan motor di pemegangnya.
Setiap pemegang terdiri daripada beberapa lubang yang menempatkan sisipan M3 yang akan dipasang pada struktur. Terdapat lebih banyak lubang daripada yang sebenarnya diperlukan, lubang tambahan akhirnya dapat digunakan untuk memasang bagian tambahan.
Tetapan pencetak 3D: semua bahagian dicetak dengan parameter berikut
- Muncung berdiameter 0.4mm
- Pengisian bahan 15%
- Lapisan ketinggian 0.2 mm
Roda
Roda yang dipilih ditutup dengan getah untuk memaksimumkan lekatan dan memastikan keadaan gulungan bebas slip. Skru pengapit mengekalkan roda yang dipasang pada batang motor. Diameter roda harus cukup besar untuk melintasi langkah kecil dan penyimpangan tanah (roda tersebut berdiameter 65mm).
Pembetulan
Setelah selesai dengan satu blok motor, ulangi operasi sebelumnya dan kemudian pasangkannya ke lapisan dengan skru M3.
Langkah 3: Suis dan Penyediaan Kabel
Penyediaan kabel motor
Umumnya motor-encoder dilengkapi dengan kabel termasuk di satu sisi penyambung 6pin yang menghubungkan bahagian belakang PCB pengekod, dan wayar telanjang di sisi lain.
Anda mempunyai kemungkinan untuk memasangkannya secara langsung pada papan proto atau bahkan Arduino anda, tetapi saya mengesyorkan anda menggunakan header pin wanita dan penyambung JST-XH. Oleh itu, anda boleh memasang / mencabutnya dari papan proto anda dan menjadikan pemasangan anda lebih mudah.
Petua: anda boleh menambah jalinan lengan yang boleh diperluas di sekitar wayar anda dan kepingan tiub pengecutan di dekat penyambung, dengan itu anda akan mendapat kabel 'bersih'.
Suis dan LED
Untuk mengaktifkan dua litar kuasa, sediakan 2 kabel LED dan suis: pada mulanya solder perintang 470kOhm pada salah satu pin LED, kemudian pasangkan LED pada satu pin suis. Di sini juga, anda boleh menggunakan sekeping tiub pengecutan untuk menyembunyikan perintang di dalamnya. Berhati-hati untuk menyolder LED ke arah yang betul! Ulangi operasi ini untuk mendapatkan dua kabel suis / led.
perhimpunan
Pasang kabel yang dibuat sebelumnya pada bahagian bercetak 3D yang sesuai. Gunakan mur untuk mengekalkan suis, LED tidak memerlukan lem, cukup tekan untuk memasangnya di lubang.
Langkah 4: Pendawaian Papan Elektronik
Susun atur papan
Papan proto yang sesuai dengan susun atur papan Arduino digunakan untuk mengurangkan bilangan wayar. Di bahagian atas papan proto, L298N disusun dengan tajuk wanita Dupont (Dupont adalah tajuk 'Arduino seperti').
Penyediaan L298N
Pada asalnya, papan L298N tidak dilengkapi dengan tajuk Dupont lelaki yang sesuai, anda perlu menambah baris 9 pin di bawah papan. Anda perlu menyedari 9 lubang dengan bit gerudi diameter 1mm selari dengan lubang yang ada seperti yang anda lihat pada gambar. Kemudian pautkan pin 2 baris yang sesuai dengan bahan pematerian dan wayar pendek.
Pin-keluar L298N
L298N terdiri daripada 2 saluran yang membolehkan kawalan kelajuan dan arah:
arah melalui 2 output digital, dipanggil IN1, IN2 untuk saluran pertama, dan IN3 dan IN4 untuk yang kedua
laju melalui 1 output digital, dipanggil ENA untuk saluran pertama dan ENB untuk kedua
Saya memilih pin-out berikut dengan Arduino:
motor kiri: IN1 pada pin 3, IN2 pada pin 4, ENA pada pin 2
motor kanan: IN3 pada pin 5, IN4 pada pin 6, ENB pada pin 7
Pengatur 5V
Walaupun l298N biasanya dapat menyediakan 5V, saya tetap menambah pengatur kecil. Ia menggerakkan Arduino melalui port VIN dan 2 pengekod pada motor. Anda boleh melangkau langkah ini dengan menggunakan pengatur 5V L298N bawaan secara langsung.
Penyambung JST dan pin-out Encoder
Gunakan penyesuai penyambung JST-XH wanita 4 pin, setiap penyambung kemudian dihubungkan ke:
- 5V dari pengatur
- Tanah
- dua port input digital (untuk contoh: 34 dan 38 untuk pengekod kanan dan 26 dan 30 untuk pengekod kiri)
Tambahan I2C
Seperti yang anda perhatikan, terdapat penyambung JST 4pin tambahan pada papan proto. Ia digunakan untuk menyambungkan peranti I2C seperti IMU, anda boleh melakukan perkara yang sama dan bahkan menambah port anda sendiri.
Langkah 5: Kumpulan Motor dan Arduino di Lapisan Bawah
Pemasangan blok motor
Setelah lapisan bawah dipasang dengan 8 plat Turtlebot, cukup gunakan 4 skru M3 secara langsung di sisipan untuk mengekalkan blok motor. Kemudian anda boleh memasang wayar kuasa motor ke output L298N dan kabel yang dibuat sebelumnya ke penyambung JST proto-board.
Pengagihan kuasa
Pengagihan kuasa hanya dapat dicapai dengan blok terminal penghalang. Di satu sisi penghalang, kabel dengan palam wanita XT60 diskrukan untuk menyambung ke bateri LiPo. Di sisi lain, dua kabel LED / suis kami yang sebelumnya disolder diskrukan. Oleh itu, setiap litar (Motor dan Arduino) dapat diaktifkan dengan suisnya sendiri dan LED hijau yang sesuai.
Pengurusan kabel
Dengan pantas anda perlu menghadapi banyak kabel! Untuk mengurangkan aspek tidak kemas, anda boleh menggunakan 'meja' yang dicetak 3D sebelumnya. Di atas meja, simpan papan elektronik anda dengan pita dua sisi, dan di bawah meja biarkan wayar bebas mengalir.
Penjagaan bateri
Untuk mengelakkan pelepasan bateri semasa memandu robot anda, anda hanya boleh menggunakan tali elastik rambut.
Roller caster
Bukan benar-benar roller caster tetapi bola sfera sederhana tetap dengan 4 skru pada lapisan bawah. Ia cukup untuk memastikan kestabilan robot.
Langkah 6: Komputer Papan Tunggal dan Sensor pada Lapisan Atas
Komputer Papan Tunggal mana yang hendak dipilih?
Saya tidak perlu menunjukkan kepada anda Raspberry Pi yang terkenal, jumlah kes penggunaannya melebihi bidang robotik. Tetapi ada pencabar yang lebih kuat untuk Raspberry Pi yang mungkin anda abaikan. Memang Jetson Nano dari Nvidia menyertakan kad grafik 128-teras yang kuat sebagai tambahan kepada pemprosesnya. Kad grafik khusus ini telah dikembangkan untuk mempercepat tugas-tugas mahal komputasi seperti pemprosesan gambar atau inferensi rangkaian saraf.
Untuk projek ini, saya memilih Jetson Nano dan anda boleh menemui bahagian 3D yang sesuai di antara fail yang dilampirkan, tetapi jika anda ingin menggunakan Raspberry Pi, terdapat banyak cetakan yang boleh dicetak di sini.
Pengatur 5V
Apa sahaja papan yang anda putuskan untuk membawa robot anda, anda memerlukan pengatur 5V. Raspberry Pi 4 terbaru memerlukan 1.25A maksimum tetapi Jetson Nano memerlukan tekanan sehingga 3A jadi saya memilih Pololu 5V 6A untuk mempunyai rizab kuasa untuk komponen masa depan (sensor, lampu, stepper…), tetapi mana-mana 5V 2A yang murah harus dilakukan kerja. Jetson menggunakan laras DC 5.5mm dan USB mikro Pi, ambil kabel yang sesuai dan pasangkannya ke output pengatur.
Susun atur LIDAR
LIDAR yang digunakan di sini adalah LDS-01, terdapat banyak LIDAR 2D lain yang boleh digunakan seperti RPLidar A1 / A2 / A3, YDLidar X4 / G4 atau bahkan Hokuyo LIDAR. Satu-satunya syarat adalah bahawa ia perlu dipasang melalui USB dan diletakkan di tengah struktur. Sekiranya LIDAR tidak berpusat dengan baik, peta yang dibuat oleh algoritma SLAM dapat mengubah anggaran kedudukan dinding dan rintangan dari kedudukan sebenarnya. Juga jika ada rintangan dari robot melintasi sinar laser, ia akan mengurangkan jarak dan bidang pandangan.
Pemasangan LIDAR
LIDAR dipasang pada bahagian bercetak 3D yang mengikut bentuknya, bahagian itu sendiri dipegang pada plat segi empat tepat (sebenarnya di papan lapis pada gambar tetapi boleh dicetak 3D juga). Kemudian bahagian penyesuai membolehkan ensemble dipasang pada plat kura-kura atas dengan spacer nilon.
Kamera sebagai sensor tambahan atau pengganti LIDAR
Sekiranya anda tidak mahu membelanjakan terlalu banyak wang ke dalam LIDAR (yang harganya sekitar 100 $), cari kamera: terdapat juga algoritma SLAM yang hanya berjalan dengan kamera RGB monokular. Kedua-dua SBC menerima kamera USB atau CSI.
Lebih-lebih lagi kamera akan membolehkan anda menjalankan skrip penglihatan dan pengesanan objek komputer!
perhimpunan
Sebelum menutup robot, pasangkan kabel melalui lubang yang lebih besar di plat atas:
- kabel yang sesuai dari pengatur 5V ke SBC anda
- kabel USB dari Port Pengaturcaraan Arduino DUE (yang paling dekat dengan tong DC) ke port USB SBC anda
Kemudian pegang piring atas dengan lusinan skru. Robot anda kini sudah siap untuk diprogram, SELAMAT DILAKUKAN!
Langkah 7: Jadikannya Bergerak
Menyusun Arduino
Buka Arduino IDE kegemaran anda, dan import folder projek yang disebut own_turtlebot_core, kemudian pilih papan anda dan port yang sesuai, anda boleh merujuk kepada tutorial yang sangat baik ini.
Laraskan tetapan Teras
Projek ini terdiri daripada dua fail, dan satu perlu disesuaikan dengan robot anda. Oleh itu, mari kita buka sendiri_turtlebot_config.h, dan cari baris mana yang memerlukan perhatian kita:
#define ARDUINO_DUE // ** KOMEN BARIS INI JIKA ANDA TIDAK MENGGUNAKAN HUTANG **
Hendaklah digunakan hanya dengan Arduino DUE, jika tidak mengulas barisnya.
#tentukan RATE_CONTROLLER_KP 130.0 // ** TUNAI NILAI INI **
#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNAI NILAI INI ** # tentukan RATE_CONTROLLER_KI 0.00005 // ** TUNAI NILAI INI **
Ketiga parameter tersebut sesuai dengan kenaikan pengawal kadar yang digunakan oleh PID untuk mengekalkan kelajuan yang diinginkan. Bergantung pada voltan bateri, jisim robot, diameter roda dan gear mekanikal motor anda, anda perlu menyesuaikan nilainya. PID adalah pengawal klasik dan anda tidak akan terperinci di sini tetapi pautan ini harus memberi anda input yang mencukupi untuk menala sendiri.
/ * Tentukan pin * /
// motor A (kanan) motor bait constRightEncoderPinA = 38; // ** MODIFY DENGAN PIN ANDA NB ** const byte motorRightEncoderPinB = 34; // ** UBAHKAN DENGAN PIN ANDA NB ** const byte enMotorRight = 2; // ** MODIFY DENGAN PIN ANDA NB ** const byte in1MotorRight = 4; // ** UBAHKAN DENGAN PIN ANDA NB ** const byte in2MotorRight = 3; // ** MODIFY DENGAN PIN ANDA NB ** // motor B (kiri) const byte motorLeftEncoderPinA = 26; // ** MODIFY DENGAN PIN ANDA NB ** const byte motorLeftEncoderPinB = 30; // ** UBAHKAN DENGAN PIN ANDA NB ** const byte enMotorLeft = 7; // ** MODIFY DENGAN PIN ANDA NB ** const byte in1MotorLeft = 6; // ** MODIFY DENGAN PIN ANDA NB ** const byte in2MotorLeft = 5; // ** UBAHKAN DENGAN PIN NB ANDA **
Blok ini menentukan pinout antara L298N dan Arduino, cukup ubah nombor pin agar sesuai dengan nombor anda. Setelah selesai dengan fail konfigurasi, kompilasi dan muat naik kodnya!
Pasang dan konfigurasikan ROS
Setelah anda mencapai langkah ini, arahannya sama seperti yang diperincikan pada manual TurtleBot3 yang sangat baik, anda perlu mengikuti dengan teliti
TurtleBot 3 yang baik kini menjadi milik anda dan anda boleh menjalankan semua pakej dan tutorial yang ada dengan ROS.
Ok tapi apa itu ROS?
ROS bermaksud Sistem Operasi Robot, mungkin nampaknya agak rumit pada mulanya tetapi bukan, bayangkan cara komunikasi antara perkakasan (sensor dan penggerak) dan perisian (algoritma untuk navigasi, kawalan, penglihatan komputer…). Sebagai contoh, anda boleh menukar LIDAR semasa anda dengan model lain dengan mudah tanpa mematahkan persediaan anda, kerana setiap LIDAR menerbitkan mesej LaserScan yang sama. ROS yang banyak digunakan adalah robotik, Jalankan contoh pertama anda
Setaraf 'dunia hello' untuk ROS terdiri daripada operasi robot anda melalui komputer jauh. Apa yang anda ingin lakukan ialah menghantar arahan halaju untuk membuat motor berputar, perintahnya mengikuti paip ini:
- node turtlebot_teleop, berjalan di komputer jauh, menerbitkan topik "/ cmd_vel" termasuk mesej Twist
- mesej ini diteruskan melalui rangkaian mesej ROS ke SBC
- simpul bersiri membolehkan "/ cmd_vel" diterima di Arduino
- Arduino membaca mesej dan menetapkan kadar sudut pada setiap motor agar sepadan dengan kelajuan linear dan sudut robot yang dikehendaki
Operasi ini mudah dan dapat dicapai dengan menjalankan baris arahan yang disenaraikan di atas! Sekiranya anda mahukan maklumat yang lebih terperinci, tonton videonya.
[SBC]
mata ros
[SBC]
rosrun rosserial_python serial_node.py _port: = / dev / ttyACM0 _baud: = 115200
[Komputer jarak jauh]
eksport TURTLEBOT3_MODEL = $ {TB3_MODEL}
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Untuk melangkah lebih jauh
Anda perlu mengetahui perkara terakhir sebelum mencuba semua contoh rasmi, dalam manual setiap kali anda menghadapi arahan ini:
roslaunch turtlebot3_bringup turtlebot3_robot.launch
anda perlu menjalankan perintah ini di SBC anda sebagai gantinya:
rosrun rosserial_python serial_node.py _port: = / dev / ttyACM0 _baud: = 115200
Dan jika anda mempunyai LIDAR jalankan arahan yang berkaitan pada SBC anda, dalam kes saya, saya menjalankan LDS01 dengan baris di bawah:
roslaunch hls_lfcd_lds_driver hlds_laser.launch
Dan itu sahaja, anda telah membuat turtlebot anda sendiri dengan pasti:) Anda sudah bersedia untuk menemui keupayaan hebat ROS, dan untuk kod penglihatan dan algoritma pembelajaran mesin.
Disyorkan:
Bina Suara IR Anda sendiri, Pemancar Suara: 6 Langkah
Bina Suara IR Anda sendiri, Pemancar Suara: Prinsip asas menggunakan projek saya adalah suara yang disebabkan oleh getaran inframerah (laser), yang kemudian menerima isyarat getaran inframerah pada diod penerima inframerah dari litar penerima, dan sinyalnya didemodulasi ke mencapai tahap suara yang
Otto DIY - Bina Robot Anda Sendiri dalam Satu Jam !: 9 Langkah (dengan Gambar)
Otto DIY - Bina Robot Anda Sendiri dalam Satu Jam !: Otto adalah robot interaktif yang boleh dibuat oleh sesiapa sahaja! misi impak untuk mewujudkan persekitaran yang inklusif untuk semua k
Bina Perpustakaan Arduino Anda Sendiri: 5 Langkah
Bina Perpustakaan Arduino Anda Sendiri: Hai semua. Dalam beberapa projek, anda mungkin perlu membuat perpustakaan anda sendiri apabila anda tidak dapat menggunakan perpustakaan yang sudah siap. Atau anda boleh membuat perpustakaan anda sendiri mengikut standardnya sendiri. Hari ini, saya akan menunjukkan betapa mudahnya anda dapat membina perpustakaan anda sendiri dan
Bina Tangki Gelembung PCB Anda Sendiri !: 3 Langkah
Bina Tangki Gelembung PCB Anda Sendiri !: Arahan bagaimana membina tangki gelembung anda sendiri untuk mengukir semua PCB homebrew yang selalu anda mahu buat
Bina Robot Butler Anda Sendiri !!! - Tutorial, Foto, dan Video: 58 Langkah (dengan Gambar)
Bina Robot Butler Anda Sendiri !!! - Tutorial, Foto, dan Video: EDIT: Maklumat lebih lanjut mengenai projek saya lihat laman web baru saya: narobo.comSaya juga melakukan perundingan untuk projek / produk robotik, mekatronik, dan kesan khas. Lihat laman web saya - narobo.com untuk maklumat lebih lanjut. Semuanya mahukan robot butler yang bercakap dengan anda