Isi kandungan:

Bina Kereta Memandu Sendiri - (Instructable Is Work in Process): 7 Langkah
Bina Kereta Memandu Sendiri - (Instructable Is Work in Process): 7 Langkah

Video: Bina Kereta Memandu Sendiri - (Instructable Is Work in Process): 7 Langkah

Video: Bina Kereta Memandu Sendiri - (Instructable Is Work in Process): 7 Langkah
Video: 【MULTI SUB】Anti-routine system EP1-80 2024, Julai
Anonim
Image
Image

Helo, Sekiranya anda melihat Instructable on Drive Robot With Remote USB Gamepad saya yang lain, projek ini serupa, tetapi pada skala yang lebih kecil. Anda juga boleh mengikuti atau mendapatkan sedikit pertolongan atau inspirasi dari senarai main Robotik, Pengiktirafan Suara Orang Rumah, atau Kereta Memandu Sendiri di Youtube.

Saya bermula dengan robot besar (Wallace 4), tetapi sejak saya memulakan kumpulan Meetup tempatan, saya memerlukan sesuatu pada skala yang lebih kecil, dan kumpulan itu sangat berminat dengan penglihatan komputer.

Oleh itu, saya menemui kursus Udemy ini: Bina Kereta Memandu Sendiri Anda yang memberi saya idea untuk projek ini.

Sekiranya anda berminat dengan kursus Udemy, anda boleh terus memeriksa di sana; ia dijual dengan potongan besar dari semasa ke semasa. Catatan: ada Bahagian 1 dan Bahagian 2 - anda perlu melakukan penyelidikan mengenai cara mendapatkan dua kursus sebagai pakej (potongan).

Tujuan pengajaran ini adalah dua kali ganda. Pertama, untuk memberi beberapa petunjuk dan alternatif kepada bahagian kursus tertentu (seperti bahagian dan perkakasan). Dan kedua, untuk memperluas kursus.

Tujuan utama kursus Udemy:

adalah untuk mendapatkan kereta robot beroda kecil untuk memandu sendiri di jalan dua lorong yang diturunkan.

Ia harus mengenali jalur jalur, dan ketika sudah sampai di hujung jalan.

Ia mesti mengenali tanda berhenti (dan berhenti).

Juga, isyarat lalu lintas MERAH dan HIJAU.

Ia juga mesti mengenali dan bergerak di sekitar halangan (kereta lain).

Apa yang diajar oleh Instruksional ini dalam kursus:

Pandu kereta kecil dengan Gamepad USB jarak jauh, sama seperti yang diajar yang lain.

Berikan beberapa alternatif untuk apa yang disediakan oleh kursus.

Anda mungkin tidak perlu membeli kursus ini:

Instructable ini mungkin yang anda perlukan untuk memulakan.

Bekalan

Bahagian penting (dicadangkan):

Casis robot

Empat motor

Arduino

Raspberry Pi (3, 3B +, 4)

Kamera (USB Webcam, atau modul Picamera)

Kuasa bateri

Suis hidup / mati

wayar pelompat

stand-off (plastik dan mungkin juga logam)

Sila tinjau keseluruhan Instructable dan juga video sebelum cuba membeli alat ganti.

Setelah menyelesaikan projek ini, saya menyedari bahawa bahagian yang tepat tidak begitu kritikal.

Langkah 1: Maklumat Lebih Lanjut Mengenai Bahagian …

Image
Image
Maklumat Lanjut Mengenai Bahagian …
Maklumat Lanjut Mengenai Bahagian …
Maklumat Lanjut Mengenai Bahagian …
Maklumat Lanjut Mengenai Bahagian …

Video berkaitan membincangkan beberapa bahagian dan beberapa masalah yang saya dapati.

  • Cari casis / motor yang berbeza
  • Motor semestinya sudah mempunyai kabel yang terpateri pada mereka
  • Anda mungkin mahu mempunyai gerudi dan gerudi bit, ATAU casis dengan lebih banyak lubang
  • Perlu diingat bahawa berat badan adalah masalah. Segala-galanya harus ringan mungkin.
  • Pemandu motor L298 H-Bridge berfungsi dengan baik. CATATAN: dapatkan satu dengan blok terminal skru (lihat foto)
  • Anda mungkin mahukan kebuntuan plastik dan logam, saiz M3 mungkin adalah pilihan terbaik.

Penyekat plastik baik untuk memasang papan ke casis (pemandu motor, Arduino, Raspberry, power pcb, suis hidup / mati, dll).

Penyekat logam baik untuk memasang casis (kekuatan), dan juga terutama ketika anda sedang mengembangkan (pengaturcaraan, pengujian). Untuk pembangunan, penyangga logam dapat berfungsi sebagai tiang. Sama seperti jika anda mengusahakan kereta sebenar, anda mahu menaikkan kereta supaya roda di udara dan dapat bergerak dengan bebas. Ini sangat penting! Anda akan melakukan kesilapan dan anda tidak mahu kereta itu hanya berlepas dan terhempas.

Bor + bit gerudi

Saya benar-benar ingin menekankan penggunaan latih tubi, jika anda mampu, dan menggunakan kebuntuan dan bukannya pita melekat dua sisi. Anda mungkin akan akhirnya melepaskan dan meletakkan semula papan anda, dan lain-lain, beberapa kali semasa projek ini, dan menggunakan pita menjadi sangat tidak kemas.

Menggunakan gerudi menjadikannya sangat mudah untuk meletakkan semula (terutamanya jika casis plastik) dan kelihatan lebih profesional.

Langkah 2: Menghidupkan Kereta Semasa Pembangunan

Menghidupkan Kereta Semasa Pembangunan
Menghidupkan Kereta Semasa Pembangunan
Menghidupkan Kereta Semasa Pembangunan
Menghidupkan Kereta Semasa Pembangunan

Pada pendapat saya, kaedah terpantas dan termudah untuk memulakan projek ini adalah:

  • untuk pengembangan sketsa perisian Arduino, cukup sambungkan Arduino ke komputer anda melalui USB
  • untuk perisian Raspberry Pi, anda harus mempunyai kuasa USB 5V yang dapat membekalkan sekurang-kurangnya 3 Amps. Dan ia mesti mempunyai suis hidup / mati. Kecuali anda mempunyai hab USB berkuasa yang baik yang disambungkan ke komputer anda, anda mungkin tidak akan dapat menghidupkan Raspberry secara langsung dari komputer anda.
  • Kerana apabila anda sudah bersedia untuk menguji motor / roda, yang paling mudah adalah (lihat foto) bekalan kuasa yang baik. Walau bagaimanapun, itu tidak murah.

Maksud saya dengan bahagian ini adalah untuk mengatakan bahawa anda tidak mahu menggunakan kuasa bateri semasa pembangunan, kerana ini akan memperlahankan kemajuan anda.

Juga, dengan melakukan perkara yang serupa dengan cadangan di atas, anda tidak perlu bimbang tentang bagaimana anda akan menggerakkan kereta. Anda boleh menangguhkan keputusan itu untuk kemudiannya dalam projek.

Langkah 3: Menghidupkan Kereta Semasa Penggunaan Sebenar

Menghidupkan Kereta Semasa Penggunaan Sebenar
Menghidupkan Kereta Semasa Penggunaan Sebenar
Menghidupkan Kereta Semasa Penggunaan Sebenar
Menghidupkan Kereta Semasa Penggunaan Sebenar

Sekiranya anda memutuskan untuk mengikuti kursus (atau apa yang telah saya lakukan) untuk mendapatkan kuasa 5V untuk logik, maka sedarlah bahawa tidak semua powerbank USB 5V sesuai untuk projek ini.

Perkara utama di sini ialah anda memerlukan 5V tetapi anda memerlukan sekurang-kurangnya 3 Amps! Fikirkan dengan cara ini - anda mahukan powerbank yang akan menggunakan komputer riba (mungkin).

Sekiranya anda tinggal di A. S., saya fikir salah satu kaedah terbaik untuk melakukan ini adalah membeli dari Best Buy. Kenapa? Kerana polisi 14 hari wang mereka dikembalikan.

Saya sebenarnya terpaksa mencuba tiga powerbank yang berbeza sebelum saya menjumpai satu powerbank yang berfungsi. Yang lain menyebabkan Pi Raspberry mengeluh mengenai voltan bawah.

Saya telah memulakan dengan powerbank yang paling murah, dan terus mencuba model seterusnya (yang harganya lebih tinggi), sehingga saya menjumpai model yang berfungsi.

Bagaimana untuk menghidupkan Arduino

Dalam kursus Udemy, penulis memilih untuk menghidupkan Arduino secara langsung dari powerbank (melalui pcb khusus yang dibuatnya) dan dia menggunakan pin kuasa pada penyambung GPIO Arduino.

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

Anda harus memutuskan mana yang lebih baik.

Cara menghidupkan motor / pemandu motor

Dalam kursus Udemy, penulis memilih untuk menghidupkan motor / pemandu secara langsung dari powerbank 5V. Terdapat dua pertimbangan jika anda menggunakan pendekatan tersebut.

  1. Semasa motor mula berpusing, mereka menarik arus terkini. Ini boleh (akan) menyebabkan voltan kuasa merosot (dip) di bawah 5V, dan menyebabkan Raspberry diset semula.
  2. Menggunakan hanya 5V untuk menggerakkan motor bermakna anda tidak memberikan tenaga sebanyak yang mungkin pada motor, dan kereta akan bergerak lebih perlahan (lebih perlahan). Saya telah menguji motor (dengan bekalan kuasa itu) (lihat foto) sekurang-kurangnya 9V. Mereka berfungsi dengan baik pada 9V.

Pemerhatian mengenai 9V (atau lebih)

Sekiranya anda melihat semua foto dan video untuk Instructable ini, anda menyedari bahawa saya mengumpulkan PCB khusus untuk membuat sumber kuasa 9V saya sendiri. Saya telah belajar beberapa perkara di sepanjang jalan.

Sekarang saya menggunakan beberapa (3) sel bateri 9V secara selari, untuk menghidupkan motor. Saya telah menggunakan bateri boleh dicas semula alkali dan NiMH.

Pengalaman Pembelajaran # 1: Memerlukan masa yang lama (berjam-jam) untuk mengecas bateri NiMH 9V dengan betul.

Penyelesaian Kemungkinan: Melabur dalam pengecas NiMH berbilang bateri. Ia harus menjadi pengecas "pintar".

Kekurangan: Mereka tidak murah.

Pengalaman Pembelajaran # 2: 9V bateri sebenarnya terdiri daripada beberapa sel dalaman kecil. Sekiranya salah satu sel mati, keseluruhan bateri tidak berguna. Saya TIDAK menghadapi masalah ini, tetapi saya membacanya.

Pengalaman Pembelajaran # 3: Tidak semua bateri 9V mempunyai voltan yang sama. Yang ini penting. Kerana semakin tinggi voltan, semakin banyak kelajuan yang mungkin. Sebilangan sel bateri (dan pengecas) hanya 8.4V. Malah ada yang kurang. Sebahagiannya berukuran 9.6V.

Pengalaman Belajar # 4: 9V bateri, terutamanya yang NiMH, ringan. Perkara yang baik. Walau bagaimanapun, kebanyakan dari mereka hanya menyediakan arus keluaran mA. Itulah sebabnya saya harus meletakkannya secara selari. Anda memerlukan kapasiti semasa hampir 2 Amps, walaupun untuk jangka masa yang singkat.

Pengalaman Pembelajaran # 5: Terdapat pek bateri 9.6V, digunakan untuk perkara seperti kereta yang dikendalikan radio. Saya belum menggunakannya, tetapi saya percaya ia memberikan arus lebih banyak daripada menggunakan bateri 9V selari seperti yang saya gunakan. Anda juga boleh mengecas unit tunggal. Bungkusannya terdapat dalam pelbagai saiz. Dan ada pertimbangan berat. Dan kemudian, adakah anda menggunakan pek untuk menggerakkan keseluruhan kereta, atau hanya motor? Sekiranya untuk keseluruhan kereta, anda memerlukan pengatur turun 5V untuk Raspberry Pi.

L298 H-Bridge memang mempunyai kemampuan untuk mengeluarkan 5V untuk tujuan ini, tetapi saya khuatir berapa banyak arus yang dapat dihasilkan untuk Raspberry Pi, dan jika ia akan terlalu banyak tekanan pada papan L298.

Sekiranya anda memutuskan untuk mempunyai dua sumber kuasa yang berasingan, maka anda mungkin mempunyai masalah berat badan (terlalu berat).

Langkah 4: Pengaturcaraan Perisian untuk Memandu Gamepad

Saya rasa saya telah merangkumi banyak bahagian ini dalam Gamepad USB Remote Driven Via Instructable, jadi saya tidak akan mengulanginya di sini.

Bahagian pengaturcaraan / perisian dalam Instructable lain hanyalah cadangan. Saya fikir seseorang belajar lebih banyak dengan percubaan-dan-kesilapan.

Langkah 5: Menambah Kamera

Menambah Kamera
Menambah Kamera
Menambah Kamera
Menambah Kamera
Menambah Kamera
Menambah Kamera

Dalam kursus Udemy, saya yakin pengarang menggunakan dowel kayu bulat dan pistol gam untuk membina cara untuk mengangkat kamera.

Anda ingin menaikkan kamera sehingga menghadap ke jalan dua lorong, sehingga lebih mudah mengenali lorong.

Di mana saya tinggal di A. S., dowel kayu itu sangat murah. Anda boleh membelinya di Lowe's atau Depot Rumah. Saya memilih dowel persegi dan bukannya dowel bulat.

Saya juga memilih untuk membuat pangkalan yang lebih kuat untuk menara kamera, dan saya menjadikan keseluruhan menara itu boleh dilepaskan dari kereta, supaya saya dapat bermain-main dengan dan bereksperimen mengenai kedudukan terbaik di atas kereta.

Juga, saya membuat menara dengan pemikiran bahawa saya akan memulakan dengan kamera web USB, tetapi mungkin kemudian beralih menggunakan modul Picamera.

Anda mungkin mahu melabur dalam kamera jenis mata ikan.

Saya membeli pistol gam panas yang sangat murah, tetapi saya ingin mengukuhkan pangkal menara dengan lebih baik, jadi saya menggerudi beberapa lubang skru dan menambah skru untuk menjadikan semuanya lebih baik.

Kemudian saya melabuhkan pangkalan ke casis kereta.

Sekiranya kemudian, saya ingin memindahkan barang-barang, saya hanya melepaskan landasan dari casis, menggerudi lubang baru di lokasi baru casis, dan memasang kembali menara ke casis.

Saya membawa kod Python dan Node.js "follow-me" dari robot besar (Wallace Robot 4) sebagai kaedah untuk menguji semuanya. Sila lihat gambar di bahagian ini untuk senarai tabung yang memberikan lebih banyak perincian mengenai "follow-me".

Seperti yang saya nyatakan, lebih mudah memasang kamera web USB terlebih dahulu. Nanti saya boleh pasangkan modul Picamera.

Langkah 6: Pengecaman Muka - Tentukan Kedudukan

Image
Image

Bahagian ini bukanlah fokus kursus Udemy, tetapi merupakan latihan yang menyeronokkan.

Sekiranya anda melakukan carian web untuk "pengenalan wajah python opencv", anda akan menemui banyak contoh yang baik tentang bagaimana melakukannya, dan semuanya hampir mengikuti langkah yang sama.

  1. muatkan fail muka "haar"
  2. mulakan kamera
  3. mulakan gelung di mana anda mengambil bingkai
  4. menukar gambar warna ke skala kelabu
  5. beri makan kepada opencv untuk mendapatkannya
  6. mulakan gelung dalaman (untuk setiap wajah yang dijumpai) (dalam kes saya, saya menambah kod untuk membatalkan jika lebih dari 1 wajah)

Untuk tujuan ini di sini, setelah kita mengesan wajah, kita akan mengetahui X, Y, W, dan H dari kotak khayalan yang menggariskan wajah.

Sekiranya anda mahu robot bergerak maju atau mundur, anda hanya perlu mempertimbangkan W. Sekiranya W terlalu besar (terlalu dekat), minta robot bergerak ke belakang. Sekiranya W terlalu kecil (terlalu jauh), minta robot bergerak ke hadapan.

Pergerakan kiri / kanan sedikit lebih rumit tetapi tidak gila. Lihat gambar untuk bahagian ini yang memperincikan bagaimana menentukan kedudukan muka kiri vs kanan.

CATATAN:

Sekiranya anda menjalankan mana-mana contoh OpenCV web, semuanya menunjukkan pandangan sebenar mengenai apa yang "dilihat" oleh opencv, dengan wajah yang digariskan dalam kotak. Sekiranya anda memerhatikan, petak itu tidak stabil (tetap), walaupun anda tidak bergerak.

Perubahan nilai tersebut akan menyebabkan robot sentiasa bergerak, maju atau belakang, kiri atau kanan.

Oleh itu, anda perlu mempunyai delta untuk kedua-dua depan / belakang dan kiri / kanan.

Mari ambil kiri vs kanan:

Setelah anda mengira kiri dan kanan, kemudian dapatkan perbezaannya (delta):

delta = abs (kiri - kanan)

Anda perlu mengambil yang mutlak kerana anda tidak tahu mana yang lebih banyak.

Kemudian anda menambahkan beberapa kod bersyarat untuk hanya berusaha bergerak jika delta lebih besar daripada minimum.

Anda akan melakukan perkara yang sama untuk maju atau belakang.

Langkah 7: Kedudukan Muka - Robot Bergerak

Setelah anda mengetahui bahawa anda memerlukan robot untuk bergerak ke kiri atau kanan, ke depan atau ke belakang, bagaimana anda melakukannya?

Oleh kerana Instructable ini adalah kerja dalam proses, pada masa ini, saya hanya menyalin kod dari robot besar saya untuk digunakan untuk projek ini. Sila lihat senarai main Robotik saya di youtube di mana ia memperincikan semua ini.

Secara ringkas, saya mempunyai kod secara berlapis.

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

Pelayan Node.js mendengar permintaan http untuk arahan bergerak, mengubahnya menjadi protokol bersiri tersuai

Protokol bersiri tersuai antara pelayan Node.js dan Arduino

Sketsa Arduino yang melakukan perintah sebenar untuk menggerakkan robot

Kursus Udemy tidak melakukannya seperti di atas. Tetapi kerana saya ingin membuat kemajuan yang baik dan fokus pada pengecaman gambar yang sebenarnya, saya menggunakan semula kod sebelumnya untuk sekarang.

Disyorkan: