Daftar Isi:

Bangun Mobil Self-Driving Anda Sendiri - (Petunjuk Ini Sedang Dalam Proses): 7 Langkah
Bangun Mobil Self-Driving Anda Sendiri - (Petunjuk Ini Sedang Dalam Proses): 7 Langkah

Video: Bangun Mobil Self-Driving Anda Sendiri - (Petunjuk Ini Sedang Dalam Proses): 7 Langkah

Video: Bangun Mobil Self-Driving Anda Sendiri - (Petunjuk Ini Sedang Dalam Proses): 7 Langkah
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, Juli
Anonim
Image
Image

Halo, Jika Anda melihat Instructable saya yang lain di Drive Robot With Remote USB Gamepad, proyek ini serupa, tetapi dalam skala yang lebih kecil. Anda juga dapat mengikuti atau mendapatkan bantuan atau inspirasi dari daftar putar Robotika, Pengenalan Suara Rumahan, atau Mobil Mengemudi Sendiri di Youtube.

Saya mulai dengan robot besar (Wallace 4), tetapi karena saya memulai grup Meetup lokal, saya membutuhkan sesuatu dalam skala yang lebih kecil, dan grup tersebut sangat tertarik dengan visi komputer.

Jadi saya menemukan kursus Udemy ini: Bangun Mobil Self-Driving Anda Sendiri yang memberi saya ide untuk proyek ini.

Jika Anda tertarik dengan kursus Udemy, Anda dapat terus memeriksanya kembali; itu mulai dijual dengan diskon besar dari waktu ke waktu. Catatan: ada Bagian 1 dan Bagian 2 - Anda perlu melakukan penyelidikan tentang cara mendapatkan dua kursus sebagai paket (diskon).

Tujuan dari instruksi ini ada dua. Pertama, memberikan beberapa petunjuk dan alternatif untuk bagian tertentu dari kursus (seperti bagian dan perangkat keras). Dan kedua, untuk memperluas kursus.

Tujuan utama kursus Udemy:

adalah untuk bisa mendapatkan mobil robot beroda kecil untuk mengemudi sendiri di jalan dua lajur yang diperkecil.

Itu harus mengenali garis-garis jalur, dan ketika telah mencapai ujung jalan.

Itu harus mengenali tanda berhenti (dan berhenti).

Juga, sinyal lalu lintas MERAH dan HIJAU.

Itu juga harus mengenali dan bermanuver di sekitar rintangan (mobil lain).

Apa yang ditambahkan Instructable ini ke kursus:

Kendarai mobil kecil dengan Gamepad USB jarak jauh, sama seperti di Instructable lainnya.

Berikan beberapa alternatif untuk apa yang disediakan kursus.

Anda bahkan mungkin tidak perlu membeli kursus:

Instruksi ini mungkin yang Anda butuhkan untuk memulai.

Perlengkapan

Bagian-bagian penting (disarankan):

Sasis robot

Empat motor

Arduino

Raspberry Pi (3, 3B+, 4)

Kamera (USB Webcam, atau modul Picamera)

Daya baterai

Sakelar Nyala/Mati

kabel jumper

stand-off (plastik dan mungkin logam juga)

Harap tinjau seluruh Instructable dan juga video sebelum mencoba membeli suku cadang.

Setelah melakukan proyek ini, saya menyadari bahwa bagian yang tepat tidak terlalu penting.

Langkah 1: Detail Lebih Lanjut Tentang Bagian…

Image
Image
Lebih Detail Tentang Bagian…
Lebih Detail Tentang Bagian…
Lebih Detail Tentang Bagian…
Lebih Detail Tentang Bagian…

Video terkait membahas beberapa detail tentang bagian-bagiannya, dan beberapa masalah yang saya temukan.

  • Cari-cari sasis / motor yang berbeda
  • Motor seharusnya sudah memiliki kabel yang disolder ke mereka
  • Anda mungkin ingin memiliki bor dan mata bor, ATAU sasis dengan lebih banyak lubang
  • Perlu diingat bahwa berat badan adalah masalah. Semuanya harus seringan mungkin.
  • Driver motor L298 H-Bridge bekerja dengan baik. CATATAN: dapatkan satu dengan blok terminal sekrup (lihat foto)
  • Anda mungkin menginginkan kebuntuan plastik dan logam, ukuran M3 mungkin merupakan pilihan terbaik.

Penyangga plastik bagus untuk memasang papan ke sasis (driver motor, Arduino, Raspberry, power pcb, sakelar hidup/mati, dll).

Kebuntuan logam bagus untuk merakit sasis (kekuatan), dan juga terutama saat Anda mengembangkan (pemrograman, pengujian). Untuk pengembangan, standoffs logam dapat berfungsi sebagai egrang. Sama seperti jika Anda sedang mengerjakan mobil sungguhan, Anda ingin menaikkan mobil agar roda berada di udara dan dapat bergerak dengan bebas. Ini sangat penting! Anda akan membuat kesalahan dan Anda tidak ingin mobil lepas landas dan menabrak.

Bor + mata bor

Saya benar-benar ingin menekankan penggunaan bor, jika Anda bisa, dan menggunakan kebuntuan alih-alih selotip dua sisi. Kemungkinan besar Anda akan menghapus dan memposisikan ulang papan Anda, dll, beberapa kali selama proyek ini, dan penggunaan pita menjadi sangat berantakan.

Menggunakan bor membuatnya sangat mudah untuk diposisikan ulang (terutama jika sasisnya terbuat dari plastik) dan terlihat lebih profesional.

Langkah 2: Menghidupkan Mobil Selama Pengembangan

Menghidupkan Mobil Selama Pengembangan
Menghidupkan Mobil Selama Pengembangan
Menghidupkan Mobil Selama Pengembangan
Menghidupkan Mobil Selama Pengembangan

Menurut pendapat saya, cara tercepat dan termudah untuk memulai proyek ini adalah:

  • untuk pengembangan sketsa Arduino perangkat lunak, cukup sambungkan Arduino ke komputer Anda melalui USB
  • untuk software Raspberry Pi, anda harus memiliki power USB 5V yang bisa mensupply minimal 3 Amps. Dan itu harus memiliki tombol on/off. Kecuali Anda memiliki hub USB yang baik dan bertenaga yang terhubung ke komputer Anda, Anda mungkin tidak akan dapat memberi daya pada Raspberry langsung dari komputer Anda.
  • Untuk saat Anda siap menguji motor/roda, yang paling mudah adalah (lihat foto) catu daya yang bagus. Namun, itu tidak murah.

Maksud saya dengan bagian ini adalah untuk mengatakan bahwa Anda tidak ingin menggunakan daya baterai selama pengembangan, karena itu akan sangat memperlambat kemajuan Anda.

Juga, dengan melakukan sesuatu yang mirip dengan saran di atas, Anda tidak perlu khawatir (belum) tentang bagaimana Anda akan menyalakan mobil. Anda dapat menunda keputusan itu untuk nanti dalam proyek.

Langkah 3: Menyalakan Mobil Selama Penggunaan Sebenarnya

Menghidupkan Mobil Selama Penggunaan Sebenarnya
Menghidupkan Mobil Selama Penggunaan Sebenarnya
Menghidupkan Mobil Selama Penggunaan Sebenarnya
Menghidupkan Mobil Selama Penggunaan Sebenarnya

Jika Anda memutuskan untuk mengikuti kursus (atau apa yang telah saya lakukan) untuk daya 5V ke logika, maka ketahuilah bahwa tidak semua bank daya USB 5V bagus untuk proyek ini.

Poin utama di sini adalah Anda membutuhkan 5V tetapi Anda membutuhkan setidaknya 3 Amps! Pikirkan seperti ini - Anda menginginkan powerbank yang akan memberi daya pada komputer laptop (mungkin).

Jika Anda tinggal di A. S. Saya pikir salah satu cara terbaik untuk melakukannya adalah dengan membeli dari Best Buy. Mengapa? Karena kebijakan pengembalian uang 14 hari mereka untuk pengembalian.

Saya benar-benar harus mencoba tiga powerbank yang berbeda sebelum saya menemukan satu yang akan bekerja. Yang lain menyebabkan Raspberry Pi mengeluh tentang tegangan di bawah.

Saya telah memulai dengan powerbank yang paling murah, dan terus mencoba model berikutnya (yang harganya lebih mahal), sampai saya menemukan yang berfungsi.

Cara memberi daya pada Arduino

Pada kursus Udemy, penulis memilih untuk menyalakan Arduino langsung dari powerbank (melalui pcb custom yang ia buat) dan ia menggunakan pin daya pada konektor GPIO Arduino.

Namun, saya memilih untuk menyalakan Arduino langsung dari Raspberry Pi, melalui kabel USB.

Anda harus memutuskan mana yang lebih baik.

Cara memberi daya pada motor/pengemudi motor

Pada kursus Udemy, penulis memilih untuk menyalakan motor/driver langsung dari powerbank 5V. Ada dua pertimbangan jika Anda menggunakan pendekatan itu.

  1. Ketika motor pertama kali mulai berputar, mereka menarik arus paling banyak. Ini dapat (akan) menyebabkan tegangan listrik melorot (turun) di bawah 5V, dan menyebabkan Raspberry diatur ulang.
  2. Menggunakan hanya 5V untuk menyalakan motor berarti Anda tidak memberikan daya sebanyak yang Anda bisa ke motor, dan mobil akan bergerak lebih lambat (lebih lamban). Saya telah menguji motor (dengan catu daya itu) (lihat foto) hingga setidaknya 9V. Mereka bekerja dengan baik di 9V.

Pengamatan tentang 9V (atau lebih)

Jika Anda melihat semua foto dan video untuk Instructable ini, Anda perhatikan bahwa saya merakit PCB khusus untuk membuat sumber daya 9V saya sendiri. Saya telah belajar beberapa hal di sepanjang jalan.

Saat ini saya menggunakan beberapa (3) sel baterai 9V secara paralel, untuk menyalakan motor. Saya telah menggunakan baterai isi ulang alkaline dan NiMH.

Pengalaman Belajar #1: Dibutuhkan waktu lama (berjam-jam) untuk mengisi baterai NiMH 9V dengan benar.

Kemungkinan Solusi: Investasikan pada pengisi daya NiMH multi-baterai. Itu harus menjadi pengisi daya "pintar".

Kekurangan: Mereka tidak murah.

Pengalaman Belajar #2: Baterai 9V sebenarnya terdiri dari beberapa sel interior kecil. Jika salah satu sel mati, seluruh baterai tidak berguna. Saya TIDAK memiliki masalah ini, tetapi saya membacanya.

Pengalaman Belajar #3: Tidak semua baterai 9V memiliki voltase yang sama. Yang satu ini penting. Karena semakin tinggi tegangan, semakin banyak kecepatan yang dimungkinkan. Beberapa sel baterai (dan pengisi daya) hanya 8.4V. Beberapa bahkan kurang. Beberapa adalah 9.6V.

Pengalaman Belajar #4: Baterai 9V, terutama baterai NiMH, memiliki bobot yang ringan. Hal yang baik. Namun, kebanyakan dari mereka hanya menyediakan arus keluaran mA. Itu sebabnya saya harus menempatkan mereka secara paralel. Anda membutuhkan total kapasitas arus hampir 2 Amps, bahkan untuk periode waktu yang singkat.

Pengalaman Belajar #5: Ada paket baterai 9.6V, yang digunakan untuk hal-hal seperti mobil yang dikendalikan radio. Saya belum pernah menggunakannya, tetapi saya yakin mereka memberikan lebih banyak arus daripada melakukan baterai 9V paralel seperti yang saya lakukan. Juga, Anda dapat mengisi daya satu unit. Paket datang dalam berbagai ukuran. Dan ada pertimbangan berat. Dan kemudian, apakah Anda menggunakan paket untuk memberi daya pada seluruh mobil, atau hanya motornya? Jika untuk seluruh mobil, Anda akan memerlukan regulator step-down 5V untuk Raspberry Pi.

L298 H-Bridge memang memiliki kemampuan untuk menghasilkan 5V untuk tujuan ini, tetapi saya khawatir tentang berapa banyak arus yang dapat dihasilkan untuk Raspberry Pi, dan apakah akan terlalu banyak tekanan pada papan L298.

Jika Anda memutuskan untuk memiliki dua sumber daya yang terpisah, maka Anda mungkin memiliki masalah berat (terlalu berat).

Langkah 4: Pemrograman Perangkat Lunak untuk Mengemudi Gamepad

Saya rasa saya sudah membahas banyak bagian ini di Robot Driven Via Remote USB Gamepad Instructable, jadi saya tidak akan mengulanginya di sini.

Bagian pemrograman/perangkat lunak di Instructable lainnya hanyalah saran. Saya pikir seseorang belajar lebih banyak dengan coba-coba.

Langkah 5: Menambahkan Kamera

Menambahkan Kamera
Menambahkan Kamera
Menambahkan Kamera
Menambahkan Kamera
Menambahkan Kamera
Menambahkan Kamera

Dalam kursus Udemy, saya percaya penulis menggunakan pena kayu bulat dan lem untuk membangun cara untuk mengangkat kamera.

Anda akan ingin meninggikan kamera sehingga melihat ke bawah ke jalan dua jalur, sehingga dapat lebih mudah mengenali jalur.

Di tempat saya tinggal di AS, pasak kayu sangat murah. Anda dapat membelinya di Lowe's atau Home Depot. Saya memilih pasak persegi daripada pasak bulat.

Saya juga memilih untuk membuat dasar yang lebih kokoh untuk menara kamera, dan saya membuat seluruh menara dapat dilepas dari mobil, sehingga saya dapat bermain-main dan bereksperimen tentang posisi terbaik untuk itu di mobil.

Juga, saya membuat menara dengan ide dalam pikiran bahwa saya akan mulai dengan webcam USB, tetapi mungkin kemudian beralih menggunakan modul Picamera.

Anda mungkin ingin berinvestasi dalam kamera jenis mata ikan.

Saya membeli pistol lem panas yang sangat murah, tetapi saya ingin memperkuat dasar menara dengan lebih baik, jadi saya mengebor beberapa lubang sekrup dan menambahkan sekrup untuk menyatukan semuanya dengan lebih baik.

Lalu saya mengunci alasnya ke sasis mobil.

Jika nanti, saya ingin memindahkan barang-barang, saya hanya melepas alas dari sasis, mengebor lubang baru di lokasi sasis yang baru, dan memasang kembali menara ke sasis.

Saya membawa kode Python dan Node.js "ikuti saya" dari robot besar (Wallace Robot 4) sebagai cara untuk menguji semuanya. Silakan lihat foto-foto di bagian ini untuk daftar youtube yang memberikan lebih banyak detail tentang "ikuti saya".

Seperti yang saya sebutkan, lebih mudah memasang webcam USB terlebih dahulu. Nanti saya bisa memasang modul Picamera.

Langkah 6: Pengenalan Wajah - Tentukan Posisi

Image
Image

Bagian ini bukanlah fokus dari kursus Udemy, tetapi merupakan latihan yang menyenangkan.

Jika Anda melakukan pencarian web untuk "pengenalan wajah python opencv", Anda akan menemukan banyak contoh bagus tentang cara melakukannya, dan semuanya mengikuti langkah-langkah yang sama.

  1. memuat file wajah "haar"
  2. inisialisasi kamera
  3. mulai lingkaran di mana Anda mengambil bingkai
  4. mengubah gambar berwarna menjadi skala abu-abu
  5. berikan ke opencv untuk membuatnya menemukan wajah
  6. mulai loop dalam (untuk setiap wajah yang ditemukan) (dalam kasus saya, saya menambahkan kode untuk membatalkan jika lebih dari 1 wajah)

Untuk tujuan ini di sini, setelah kita mendeteksi sebuah wajah, kita mengetahui X, Y, W, dan H dari persegi imajiner yang menguraikan wajah.

Jika Anda ingin robot bergerak maju atau mundur, Anda hanya perlu mempertimbangkan W. Jika W terlalu besar (terlalu dekat), minta robot mundur. Jika W terlalu kecil (terlalu jauh), minta robot bergerak maju.

Gerakan kiri/kanan hanya sedikit lebih rumit tetapi tidak gila. Lihatlah gambar untuk bagian ini yang merinci cara menentukan posisi wajah kiri vs kanan.

CATATAN:

Jika Anda menjalankan salah satu contoh OpenCV web, semuanya menunjukkan tampilan sebenarnya dari apa yang "dilihat" oleh opencv, dengan wajah yang digariskan dalam kotak. Jika Anda amati, bujur sangkar itu tidak tetap (konstan), bahkan jika Anda tidak bergerak.

Nilai-nilai yang berubah itu akan menyebabkan robot terus bergerak, maju atau mundur, kiri atau kanan.

Dengan demikian, Anda perlu memiliki semacam delta untuk maju/mundur dan kiri/kanan.

Mari kita ambil kiri vs kanan:

Setelah Anda menghitung kiri, dan kanan, maka dapatkan selisihnya (delta):

delta = perut (kiri - kanan)

Anda perlu mengambil yang absolut karena Anda tidak tahu mana yang akan menjadi angka yang lebih besar.

Kemudian Anda menambahkan beberapa kode bersyarat untuk hanya mencoba bergerak jika delta lebih besar dari beberapa minimum.

Anda akan melakukan hal yang sama untuk maju vs mundur.

Langkah 7: Posisi Wajah - Robot Bergerak

Setelah Anda tahu bahwa Anda membutuhkan robot untuk bergerak ke kiri atau kanan, maju atau mundur, bagaimana Anda melakukannya?

Karena Instruksi ini sedang dalam proses, saat ini, saya baru saja menyalin kode dari robot besar saya untuk digunakan dalam proyek ini. Silakan periksa daftar putar Robotika saya di youtube di mana ia merinci semua ini.

Singkatnya, saya memiliki kode berlapis-lapis.

Skrip pengenalan wajah Python membuat permintaan http ke server Node.js

Server Node.js mendengarkan permintaan http untuk arah perpindahan, mengubahnya menjadi protokol serial khusus

Protokol serial khusus antara server Node.js dan Arduino

Sketsa Arduino yang melakukan perintah aktual untuk memindahkan robot

Kursus Udemy tidak seperti di atas. Tetapi karena saya ingin membuat kemajuan yang baik dan fokus pada pengenalan gambar yang sebenarnya, saya menggunakan kembali kode saya sebelumnya untuk saat ini.

Direkomendasikan: