Side Lihat Mobil RC
Arjun Nagappan (asn28)
Arjun Prakash (asp36)
Pengenalan
Kami menciptakan sebuah mobil RC yang dapat mengidentifikasi tempat parkir dan taman paralel dengan sendirinya. Mobil RC drive menyusuri jalan mencari tempat parkir ke kanan dengan menggunakan sensor jarak. Ketika mobil telah mengidentifikasi ruang, mobil memeriksa untuk melihat apakah ruang yang cukup besar untuk taman masuk Jika ia menentukan bahwa ada ruang yang cukup, mobil akan mulai parkir paralel ke dalam ruang itu. Menggunakan informasi dari sensoryang ditempatkan di bagian depan, kanan, dan belakang mobil untuk mengarahkan mobil ke ruang parkir. Setelah mobil telah diparkir, ia akan tetap dalam posisi itu sampai ulang.
Tingkat Tinggi Desain
Alasan
Setelah mendiskusikan ide-ide berbagai proyek, kita akhirnya tersandung ke subjek mobil. Jadi kita mulai brainstorming kemungkinan proyek terkait mengemudi. Ketika brainstorming, kami melihat sesuatu di ruang PADU yang mengingatkan kita pada sebuah garasi. Hal ini menyebabkan kita untuk parkir. Parkir paralel adalah sesuatu yang banyak driver berjuang dengan, namun ada beberapa alat yang sangat tersedia untuk membantu dengan parkir paralel. Meskipun beberapa produsen mobil telah mengembangkan sistem yang dapat paralel parkir mobil otonom, solusi ini sangat mahal. Kami pikir ini akan baik masalah menyenangkan dan menarik untuk mengatasi menggunakan mobil RC sebagai proxy untuk sebuah mobil yang nyata.
Struktur logis
Proyek kami dipecah menjadi dua komponen utama: sistem kontrol dan algoritma mobil bergerak. Algoritma mobil bergerak mengarahkan mobil dan sistem kontrol mengimplementasikan arah dari algoritma mobil bergerak.
Gambar 1: Struktur logis dari Desain Tingkat Tinggi
Sistem Kontrol
Sistem kontrol berisi semua perangkat keras dan perangkat lunak terkait. Hal ini memungkinkan algoritma deteksi parkir dan parkir untuk antarmuka dengan mobil.Perangkat lunak dalam modul ini dibagi menjadi tiga bagian utama: Left-Right/Front-Back (LR / FB) mesin negara, mesin menguasai negara, dan perhitungan jarak. LR / FB mesin negara menentukan arah mana yang harus memindahkan mobil berdasarkan bendera ditetapkan oleh ruang parkir mendeteksi dan algoritma parkir mobil. Setelah LR / FB mesin negara memutuskan arah mana yang harus memindahkan mobil, mesin negara mengimplementasikan master gerakan ini dengan mengirimkan input yang benar dan memungkinkan sinyal ke H-Bridge. Perhitungan Jarak dilaksanakan secara mandiri setiap milidetik.
Pindah Mobil
Pindahkan mobil berisi ruang mendeteksi parkir dan parkir paralel algoritma. Semua fungsi dalam antarmuka memindahkan mobil dengan modul kontrol dengan menetapkan bendera gerakan. Ruang parkir deteksi dan algoritma parkir menggunakan informasi dari sensor jarak untuk mengatur flag-flag ini gerakan dan panduan mobil.
Pindahkan mobil bekerja dengan menginisialisasi bendera gerakan mobil. Ini set mobil di lintasan default dan kemudian panggilan mendeteksi ruang parkir. Setelah tempat parkir telah terdeteksi, algoritma parkir disebut. Setelah mobil berhasil parkir, itu idles sampai ulang.
Hardware / Software pengorbanan:
Sensor Jarak
- Ketika memilih sensor jarak inframerah selalu ada tradeoff antara kemampuansensor untuk mengukur jarak dekat dan jarak jauh. Kami mencoba untuk meminimalkan masalah ini dengan menggunakan sensor yang dirancang untuk rentang bervariasi.
- Menggunakan sensor akurat biaya waktu yang signifikan. Setiap pengukuran dari sensor jarak kita sekitar 40ms tertunda. Hal ini mempengaruhi kemampuan kita untuk memulai dan menghentikan motor dari mobil pada waktu yang benar.
- Kami menggunakan perhitungan integer bukan floating point untuk menghitung jarak. Kami memutuskan peningkatan akurasi tidak akan secara signifikan meningkatkan kemampuan kami untuk memarkir mobil karena kita tidak dapat mengontrol pergerakan mobil dengan tingkat akurasi.
- Setiap sensor menarik maksimal 50mA. Untuk mengakomodasi untuk ini, kami harus menggunakan regulator 5v yang dapat sumber hingga 1A.
Baterai
- Kami memutuskan untuk kekuatan mobil kami menggunakan baterai daripada menggunakan sumber listrik stabil. Ini memberi kami meningkat mobilitas tetapi sangat konsisten dalam arus itu disuplai ke motor. Sebagai baterai lelah, mereka diberikan kurang dan kurang arus ke motor. Hal ini membuat kalibrasi kecepatan mobil sangat sulit.
- Dalam rangka terbaik untuk memanfaatkan sumber daya listrik mobile kami miliki, kami menyalakan motor menggunakan empat baterai AA, yang disimpan dalam kompartemen baterai dari mobil RC. Baterai ini memasok Tegangan Supply untuk H-jembatan, yang pada gilirannya kekuatan motor. Kami menggunakan baterai 9V untuk daya PCB.
Perangkat Lunak
- 1. Kode kita membutuhkan perangkat lunak kontrol motor, perangkat lunak parkir algoritma, dan perangkat lunak sensor jarak untuk berjalan secara paralel. Namun, hal ini tidak mungkin dalam Atmega644 tersebut. Kami mendapat sekitar masalah ini dengan membuat setiap tugas penting mesin negara. Dengan putus fungsi masing-masing menjadi potongan-potongan kecil, kita dapat menjalankan salah satu bagian dari fungsi satu, maka salah satu bagian dari fungsi dua, diikuti dengan sepotong function3, dan kemudian sepotong fungsi satu, dll Hal ini memungkinkan kita untuk meniru sebuah multi- tasking arsitektur.
Hardware
Hardware terdiri dari tiga komponen utama:
- RC Mobil
- H-Bridge
- Sensor Jarak
Semua hardware yang digunakan konvensi warna sebagai berikut:
Warna | Terhubung Untuk |
---|---|
Merah | Vss |
Green | Tanah |
Ungu | Input |
Kuning | Output |
Jeruk | Mengaktifkan |
Tabel 1: Konvensi Wire Warna
RC Mobil
Langkah pertama dari desain perangkat keras kami terlibat sepenuhnya memahami mekanika mobil RC kami. Kami mengambil terpisah mobil dan dibangun kembali beberapa kali untuk memahami bagaimana itu dibangun, apa setiap bagian di dalam mobil digunakan untuk, dan bagaimana bagian-bagian berkontribusi untuk kontrol dari mobil.
Setelah memahami mekanisme mobil, kami memutuskan cara termudah untuk mengendalikan mobil kita akan secara langsung mengontrol input ke motor DC kuas mengendalikan roda depan dan belakang, melewati semua sirkuit internal mobil.Untuk melakukan ini, kita scoped sinyal kontrol dari mobil. Kami menemukan bahwa sinyal kontrol sangat sederhana. Ada satu motor untuk gerakan mundur dan maju dari roda belakang dan satu motor untuk memutar roda kiri depan dan kanan. Motor ini dikontrol oleh input 5V DC sederhana. Sebuah +5 V ternyata roda belakang ke depan dan roda depan ke kiri. A-5V input ternyata roda belakang ke belakang dan ternyata roda depan ke kanan. Untuk lebih mudah mengontrol motor kita disolder kabel ke terminal mereka plus dan minus. Hal ini memungkinkan kita untuk dengan mudah menerapkan 5V /-+ tanpa membuka mobil lagi.
H-Bridge
Kami menggunakan ST Micro L298HN H-Bridge untuk mengontrol motor Mobil RC. Hal ini memungkinkan kita untuk beralih di antara + /-5V di motor. Hal ini juga memungkinkan kita untuk sumber daya dari baterai saat menggunakan prosesor untuk mengendalikan transistor dalam H-Bridge. Algoritma kontrol mengubah transistor yang sesuai pada / off, menerapkan tegangan yang tepat di motor kuas.H-Bridge adalah terhubung menggunakan konfigurasi sebagai berikut:
Gambar 2: Skema H-Bridge
Yang pertama H-Bridge (ke kiri) digunakan untuk mengendalikan motor depan mobil.Motor ini ternyata roda depan kiri atau kanan. Kedua H-Bridge (yang hak) digunakan untuk mengendalikan motor belakang, yang digunakan untuk fungsi maju dan mundur dari mobil. Masukan dan memungkinkan dari H-Bridge yang terhubung ke port B.
Front Motor (Kiri / Kanan) | Belakang Motor (Forward / Reverse) |
---|
Pin | Terhubung Untuk | Pin | Terhubung Untuk |
---|---|---|---|
Dalam 1 | Port B7 | Dalam 3 | Port B3 |
Dalam 2 | Port B6 | Dalam 4 | Port B2 |
Sebuah En | Port B5 | En B | Port B1 |
Out 1 | + Motor Terminal | Out 3 | + Motor Terminal |
Out 2 | - Terminal Motor | Out 4 | - Terminal Motor |
Tabel 2: H-Bridge Konfigurasi Pin
Selain mengkonfigurasi H-Bridge untuk mengontrol motor, kami juga harus melindungi H-Bridge dari lonjakan induktif disebabkan dengan memutar motor DC kuas dan mematikan. Kami menggunakan dioda pada output untuk melindungi dari paku ini. H-Bridge kabel sebagai berikut:
Gambar 3: Perlindungan Lancar Induktif pada H-Bridge Output
Sensor Jarak
Kami menggunakan tiga sensor jarak Sharp inframerah untuk menentukan jarak antara mobil kami dan benda-benda di dekatnya. Kami ditempatkan sebuah sensor di bagian depan, sisi kanan, dan belakang mobil. Untuk depan dan belakang, kami menggunakan 4-30cm sensor. Untuk sisi kanan, kami menggunakan kami menggunakan sensor 10-80cm. Kami memutuskan untuk menggunakan sensor dengan kisaran yang lebih besar untuk samping sehingga kita bisa lebih mudah mendeteksi ruang parkir. Namun, ini membuat menyelaraskan parkir mobil lebih sulit, sehingga kita lebih mengandalkan pada sensor depan dan belakang untuk memarkir mobil. Untuk sedikit meningkatkan jarak jangkauan pendek sensor kita, kita menempatkan sensor sejauh kembali pada mobil mungkin.
Tantangan dengan menggunakan sensor ini adalah bahwa output tegangan mereka nonlinier (fungsi invers) dan setiap sensor bervariasi sedikit. Oleh karena itu, kita scoped output dari sensor jarak masing-masing pada berbagai nilai, linierisasi plot, kurva sesuai garis, dan menerapkan konversi analog ke digital sehingga kita memiliki nilai jarak yang dapat diandalkan.
Pengukuran dan Linearisasi
Jarak (cm) | Front Output Sensor (V) | Sensor Belakang Output (V) |
---|---|---|
4 | 2.78 | 2.6 |
5 | 2.36 | 2.22 |
6 | 2.06 | 1.92 |
8 | 1.6 | 1.52 |
10 | 1.32 | 1.26 |
12 | 1.12 | 1.08 |
15 | .92 | .88 |
18 | .776 | .76 |
21 | .664 | .656 |
24 | .567 | .576 |
27 | .536 | .52 |
30 | .476 | .48 |
Tabel 3: Pengukuran Sensor Depan dan Belakang
Gambar 4: Sensor Plot Front Jarak vs Tegangan dan Jarak-1 vs Tegangan
Gambar 5: Plot Belakang Sensor Jarak vs Tegangan dan Jarak-1 vs Tegangan
Setelah mengambil invers dari jarak plot versus tegangan, kami bertekad akan lebih baik agar sesuai dengan kurva menggunakan dua garis linier bukan satu.Persamaan garis adalah:
Front Sensor | Belakang Sensor |
---|---|
tegangan = 9,759 * [1/distance] 0,381,> 1.5V | tegangan = 8,963 * [1/distance] 0,395,> 1.25V |
tegangan = 12,738 * [1/distance] 0,057, <1.5v | tegangan = 11,806 * [1/distance] 0,09, <1.25V |
Tabel 4: Persamaan Jarak Sensor Depan dan Belakang
Konversi analog ke digital menggunakan persamaan yang berbeda tergantung pada nilai tegangan mengukur. Jika tegangan diukur di atas ambang tertentu, ADC akan menggunakan persamaan di baris atas. Jika di bawah ambang tertentu, ADC akan menggunakan persamaan di baris bawah. Ambang batas untuk sensor depan 1.5V dan 1.25V untuk sensor belakang.
Jarak (cm) | Output Side Sensor (V) |
---|---|
10 | 2.28 |
15 | 1.64 |
20 | 1.28 |
25 | 1.08 |
30 | .808 |
35 | .728 |
45 | .672 |
50 | .612 |
55 | .556 |
60 | .516 |
65 | .488 |
70 | .452 |
75 | .432 |
80 | .42 |
Tabel 5: Side Pengukuran Sensor
Gambar 6: Plot Belakang Sensor Jarak vs Tegangan dan Jarak-1 vs Tegangan
Ketika melihat data untuk plot sensor 10-80cm sisi, kami menentukan bahwa satu garis linier akan cukup untuk secara akurat menangkap output tegangan karakteristik vs jarak sensor. Persamaan garis ini adalah:
tegangan = 21,592 * [jarak jauh] ^ (-1) 0,173
Konversi Analog ke Digital
Untuk konversi analog ke digital kita menggunakan fungsi built in ADC dari MCU.Karena kami memiliki tiga sensor jarak, kami harus memutar sensor yang terhubung ke ADC. Hal ini hanya dilakukan dengan mengubah nilai ADMUX. Salah satu dari tiga sensor adalah sampel setiap milidetik.
Kami mengambil nilai dari register ADCH dan melakukan perhitungan yang tepat untuk mengkonversi nilai ini ke kejauhan. Kami memutuskan untuk hanya menggunakan register ADCH karena nilai yang diwakili oleh dua bit bawah dari ADC adalah pada urutan yang sama besarnya sebagai kebisingan. Oleh karena itu, dua bit tidak penting dengan perhitungan kami. Untuk melakukan hal ini, ADC yang tersisa disesuaikan. Dengan menggunakan nilai dalam register ADCH, kita menggunakan delapan bit atas sepuluh bit ADC. Kami menggunakan tegangan referensi internal 2.56V untuk perbandingan, sehingga perhitungan kami adalah:
Perangkat Lunak
Perangkat lunak untuk proyek ini telah dipartisi menjadi 2 file berdasarkan fungsi.Ada 2 file, ControlModule.c dan AlgorithmModule.c.
Mesin negara dalam ControlModule mengontrol motor, dan:
- fbStateMachine
- lrStateMachine
- masterStateMachine
Mesin negara dalam AlgorithmModule yang menggunakan data sensor dan berbagai algoritma untuk menentukan apa yang harus gerakan berikutnya mobil harus membuat. Mereka menegaskan bendera yang memberitahu mesin ControlModule negara untuk benar-benar memindahkan motor. Mesin negara dalam AlgorithmModule adalah:
- moveCar
- detectParking
- parkCar
Di bawah ini kami telah menjelaskan berbagai mesin negara kita telah digunakan dalam proyek kami.
Modul Kontrol
fbStateMachine ()
Fungsi:
Para fbStateMachine kontrol motor untuk Forward-Mundur operasi. Hal ini dikendalikan oleh bendera isForward dan isReverse. Flag-flag ini berfungsi sebagai indikator, apakah mobil harus bepergian maju atau mundur. Dalam rangka untuk mengontrol kecepatan dari gerak maju-mundur kita anded bit memungkinkan dengan sinyal PWM aa.
Bekerja:
Di Negara 0, motor sedang beristirahat. FB yang sesuai adalah 00 bit kontrol. Ketika algoritma membutuhkan mobil untuk pergi maju atau mundur, bendera yang sesuai (isForward dan isReverse) ditetapkan, dan mesin negara FB switch negara untuk 1 atau 3 masing-masing.
Di Negara 1, motor berputar untuk menggerakkan mobil ke depan. Mesin negara tetap di negara ini sementara isForward adalah sama dengan 1. Setelah isForward adalah de-menegaskan, mesin negara bergerak ke keadaan buffer untuk menghentikan mobil dari bergerak maju karena inersia.
Setelah isForward diatur ke 0, meninggalkan keadaan 1 dan menghentikan motor tidak cukup. Roda mungkin akan terus berputar karena inersia, dan sehingga negara penyangga, Negara 2, diperlukan. Itu membuat motor masuk Reverse selama 1 siklus (50ms) dari State Machine FB, sebelum kembali ke keadaan istirahat, Negara 0.
Jika isReverse ditegaskan, melompat mesin negara ke Negara 3. Mesin negara tetap di negara ini sementara isReverse adalah sama dengan 1. Setelah isReverse adalah de-menegaskan, mesin negara bergerak ke keadaan buffer untuk menghentikan mobil dari yang bergerak secara terbalik karena inersia.
Setelah 3 Negara, sebuah negara penyangga, Negara 4, diperlukan untuk menghentikan roda dari terus memutar secara terbalik karena inersia. Ini adalah siklus 1 Teruskan gerak, mirip dengan fungsi fungsi yang membalikkan Negara 2.Setelah selesai, Mesin Negara FB kembali ke keadaan diamnya, Negara 0.
Waktu:
Para fbStateMachine dipanggil setiap 50ms. Ini adalah waktu yang cukup untuk mengevaluasi bendera diatur dalam AlgorithmModule, tetapi pada saat yang sama cukup cepat untuk membuat gerakan motor yang sangat akurat.
lrStateMachine ()
Para lrStateMachine () bekerja dengan cara yang sama adalah fbStatemachine. Maju berkaitan dengan suatu berbelok ke kiri dan kanan sesuai dengan membalikkan.Diagram untuk kedua adalah:
Gambar 7: FB / LR Motor State Machine
masterStateMachine ()
Fungsi:
Ini menggunakan FB dan kontrol LR bit untuk memanggil fungsi yang diperlukan untuk mengirim sinyal-sinyal input yang sesuai untuk H-Bridge dan membuat motor berputar pada arah yang tepat.
Bekerja:
Dalam fungsi ini, 2 FB dan kontrol LR bit dikombinasikan untuk menciptakan master 4 bit kontrol dengan meninggalkan menggeser bit FW dengan 2 dan menambahkan ke bit LR.
Oleh karena itu,
fbBits = fb.controlBits; / / (FB FB)
lrBits = lr.controlBits; / / (LR LR)
masterBits = (fbBits <<2)>
fbBits = fb.controlBits; / / (FB FB)
lrBits = lr.controlBits; / / (LR LR)
masterBits = (fbBits <<2)>
Akibatnya, masing-masing dari 7 gerakan mobil (berhenti, maju, maju-kiri, depan-kanan, reverse, reverse-kiri, reverse-kanan) memiliki kombinasi yang unik masterBits terkait dengan mereka. Bit-bit kontrol induk kemudian digunakan dalam fungsi untuk memutuskan mana motor fungsi kontrol yang akan dipanggil.
Waktu
Mesin negara ini dipanggil dalam setiap iterasi dari loop sementara tak terbatas dalam utama. Dengan kata lain, dapat dianggap melaksanakan terus menerus dan tidak pada interval. Hal ini penting karena parkir membutuhkan banyak akurasi ketika mengendalikan motor. Oleh karena itu, kami ingin memperbarui motor sesering mungkin, yang akan mengharuskan kita untuk memanggil masterStateMachine sesering mungkin.
Modul Algoritma
moveCar ()
Fungsi:
Ini adalah keadaan master mesin dari modul algoritma. Memutuskan mode mana mobil itu berada, yaitu, apakah mobil itu bergerak maju untuk mendeteksi tempat parkir, menyelaraskan dirinya sekali tempat parkir telah terdeteksi, atau benar-benar akan melalui gerakan parkir.
Diagram:
Gambar 8: Pindahkan Mesin Mobil Motor Negara
Bekerja:
Ini adalah 5 Negara mesin negara linier, seperti dapat dilihat dalam diagram di atas.
Ini dimulai di Negara 0. Dalam keadaan ini, mobil sedang beristirahat. Ini memberi cukup waktu untuk semua transien di dalam mobil untuk menstabilkan. Setelah semuanya stabil, bergerak ke Negara 1.
Di Negara 1, mobil bergerak maju sampai mendeteksi tempat parkir. Sementara di negara ini, mobil memanggil mesin negara detectParking setiap kali mesin negara moveCar disebut dalam Control Module. Rincian cara kerja mesin negara detectParking dijelaskan dalam bagian berikutnya.
Setelah parkir telah terdeteksi, bergerak mesin negara ke Negara 2. Tetap di Negara 2 sampai mobil telah diparkir itu sendiri. Mesin negara parkCar dipanggil untuk setiap siklus bahwa mesin negara moveCar di Negara 2. Setelah mobil telah diparkir oleh mesin negara parkCar, bendera isParked ditegaskan, dan bergerak ke negara moveCar 3.
Ketika kita mencapai Negara 3, mobil yang diparkir itu sendiri. Mobil selamanya akan tetap di negara ini selanjutnya, karena mobil telah diparkir sendiri dan sedang beristirahat.
Selain melayani sebagai mesin negara seperti dijelaskan di atas, moveCar juga membuat tersedia 2 nilai - rsDist dan rrsDist - untuk sub-state mesin, detectParking dan parkCar. rsDist menyimpan nilai-nilai jarak sisi di centang jam sebelumnya dari mesin negara moveCar, sementara toko rrsDist nilai 2 siklus jam sebelumnya.
Waktu:
Mesin negara moveCar dipanggil setiap 100ms. Mesin negara moveCar juga berfungsi sebagai jam untuk detectParking dan mesin negara parkCar. Ketika di Negara 1, masing-masing centang clock mesin negara moveCar berfungsi sebagai centang jam untuk mesin detectParking. Ketika di Negara 3, masing-masing centang clock mesin negara moveCar berfungsi sebagai centang jam untuk mesin parkCar.
detectParking
Fungsi:
Fungsi mesin negara detectParking adalah, seperti namanya, untuk mendeteksi tempat parkir untuk memarkir masuk Ia menyelesaikan ini dengan terus menerus pemungutan suara nilai jarak dari sensor jarak samping.
Diagram:
Gambar 9: Mendeteksi Parkir Space State Machine
Bekerja:
detectParking adalah mesin negara 6 negara, seperti dapat dilihat pada diagram di atas.
Negara 0 berfungsi sebagai start-up. Hal ini penting karena beberapa siklus pertama tempat mengambil detectParking sedangkan sensor jarak sisi masih kalibrasi sendiri.Setelah wait state dilakukan, mesin negara memasuki keadaan 1.
Negara 1, pada dasarnya, pencarian untuk peningkatan mendadak dalam nilai jarak samping. Kenaikan mendadak sesuai dengan awal dari ruang parkir. Hal ini dilakukan dengan memeriksa (sDistance - rsDist) nilai. Jika ada depresi tiba-tiba, sDistance akan meningkat dan sehingga perbedaan dari nilai sendiri sebelumnya (rsDist) akan sejumlah besar. Ketika hal ini terjadi, mesin negara pergi ke Negara 2.
Dalam Negara 2 mencoba untuk mengkonfirmasi bahwa itu memang adalah mendeteksi depresi yang valid, dengan menghitung (sDistance - rrsDist). Karena Negara 2 dipanggil 1 jam berdetak setelah depresi terakhir terdeteksi di Negara 1, rrsDist akan menyimpan nilai jarak sisi sebelum depresi dimulai, yaitu dari 2 siklus jam sebelumnya. Jika (sisi jarak - rrsDist) masih merupakan jumlah yang besar, kita bisa memastikan bahwa depresi telah terdeteksi, dan kami pindah ke Negara 3.
Dalam Negara 3, kita melacak berapa lama depresi itu. Hal ini dilakukan oleh incrementing detect.controlBits centang untuk setiap jam yang mesin negara kita masih dalam depresi. Ketika ada penurunan mendadak dalam nilai jarak sisi, kita pindah ke negara 4, karena sinyal akhir yang kemungkinan tempat parkir.
4 Negara menegaskan bahwa akhir yang mungkin dari ruang parkir, seperti yang terdeteksi di Negara 3, memang akhir ruang. Hal ini dilakukan dalam cara yang mirip dengan konfirmasi dilakukan di Negara 2 menggunakan variabel rrsDist.
Setelah tempat parkir telah terdeteksi oleh negara-negara di atas, bergerak mesin negara ke Negara 5 dimana itu memeriksa Bits kontrol (yang terus melacak berapa lama ruang parkir oleh incrementing untuk setiap centang ayam sementara di depresi) untuk memastikan ruang parkir yang cukup besar. Jika cukup besar, maka bendera isParkingLot ditegaskan yang akan langsung moveCar untuk menghentikan dan mulai urutan parkir.
Waktu
Setiap centang mesin negara detectParking sesuai dengan centang dari fungsi moveCar. Ketika moveCar ini di Negara 1, itu panggilan detectParking pada masing-masing kutu nya. Oleh karena itu, detectParking disebut setiap 100ms sampai tempat parkir telah ditemukan.
parkCar ()
Fungsi:
Fungsi dari mesin negara parkCar adalah untuk memarkir mobil sekali tempat parkir telah diidentifikasi. Algoritma untuk memarkir mobil terus menerus berinteraksi dengan lingkungannya melalui sisi, depan dan belakang sensor.
Diagram:
Gambar 10: Mesin Mobil Taman Negara
Gambar 11: Motion Parkir Mobil, warna sesuai dengan keadaan State Machine Car Park
Bekerja:
Fungsi parkCar mencoba untuk mensimulasikan bagaimana manusia akan parkir paralel. Hal ini, pada dasarnya, hanya 4 gerakan berikut:
- Reverse kanan sampai anda berada di tempat parkir.
- Go Forward dan mengulang 1. jika mobil tidak selaras.
- Reverse Waktu sampai mobil cukup lurus dan dekat dengan dinding belakang.
- Teruskan kanan sampai mobil lurus dan dekat dengan dinding depan.
Rutinitas di atas dilakukan dengan menggunakan mesin 7 negara.
Negara 0 membuat mobil bergerak maju dengan jumlah tertentu. Idenya adalah untuk memberikan mobil cukup ruang untuk bergerak dan memutar ke dalam ruang parkir.
Negara 1 hanya memutar roda depan ke kanan. Kami memutar kemudi sebelum membalikkan mobil agar tidak kehilangan jari-jari dengan memutar balik saat mobil membalikkan. Setelah roda diputar, bergerak mesin negara ke negara 2.
Negara 2 perintah mobil untuk pergi membalikkan tepat untuk jumlah waktu tertentu sampai mobil telah melewati tepi ruang parkir. Setelah melewati tepi ruang, bergerak ke negara 3.
Dalam Negara 3, mobil terus di kanan sebaliknya sampai baik jarak tertentu dari dalam ruang parkir, atau jarak belakang dekat dengan tepi. Kondisi ini, seperti dapat dilihat dari gambar di atas, adalah pemeriksaan untuk memverifikasi bahwa mobil cukup mendalam di dalam parkir untuk dapat menjalankan manuver kiri sebaliknya.Setelah kondisi terpenuhi, mobil berhenti dan mesin negara bergerak ke negara 4.
CATATAN: Jika pada setiap titik di negara-negara 1, 2 atau 3 mobil AI memutuskan tidak dalam posisi untuk pergi melalui dengan parkir, itu akan kembali ke Negara 0, dan mengulang seluruh prosedur.
Di Negara 4, mobil bergerak mundur kiri. Hal ini sampai belakang mobil dekat dengan dinding sisi ruang parkir, yang dapat dinilai dengan nilai sensor jarak belakang.Setelah cukup dekat dengan nilai belakang, berhenti dan bergerak ke negara 5.
5 Negara perintah mobil untuk pergi ke depan kanan. Ini mencoba untuk meluruskan mobil sepenuhnya dan untuk menyelaraskan itu baik di dalam tempat. It goes ke depan kanan sampai dekat dengan dinding sisi ruang parkir, sebagaimana dinilai oleh sensor jarak depan. Setelah sejajar, mobil diparkir dan bergerak ke negara 6.
6 Negara adalah berhenti 1 siklus sebelum maju kembali ke keadaan 0. Juga, di sini variabel isParked diatur sehingga mesin negara moveCar dapat bergerak keluar dari mode parkir untuk beristirahat modus.
Waktu:
Setiap centang mesin negara parkCar sesuai dengan centang dari fungsi moveCar.Ketika moveCar ini di Negara 3, itu panggilan parkCar pada masing-masing kutu nya.Oleh karena itu, parkCar disebut sangat 100ms sementara mobil sedang diparkir.
Misalignment Deteksi
Algoritma parkir kami dilengkapi dengan Detektor misalignment. Perannya adalah untuk menilai apakah mobil bisa parkir sendiri di ruang yang diberikan, dan jika hakim bahwa parkir adalah mustahil, untuk memperbaiki posisi mobil untuk membuatnya mungkin.
Algoritma kami memiliki ketentuan untuk melacak nilai-nilai jarak dari sensor samping (sDIstance) dari jam sebelumnya (rDist) dan kutu jam sebelumnya 2 (rrDist) dari mesin negara. Setelah 2 nilai tersebut sangat penting untuk sukses bekerja dari detektor misalignment.
Detektor bekerja dengan memeriksa berapa banyak sDIstance telah berubah selama 2 siklus terakhir jam. Jika perubahan sDistance besar, itu berarti mobil tidak idealnya diposisikan dan akan mengatur mesin parkir negara ke negara maju. Ini juga akan menentukan berapa lama mobil akan tetap di negara ini. Hal ini dapat dilihat pada gambar di bawah ini:
Gambar 12: Contoh Deteksi misalignment
Apa yang indah tentang hal ini seluruh setup adalah bahwa ini persis bagaimana manusia akan memarkir mobil! Jika pengemudi menyadari bahwa ia tidak selaras dengan cukup baik, ia akan maju dan coba lagi.
Puting itu Semua Bersama
Jika Anda telah melihat desain tingkat tinggi yang diuraikan sebelumnya dalam kode, dan membaca deskripsi dari mesin negara di bagian sebelumnya, Anda memiliki semua informasi yang Anda butuhkan untuk memahami bagaimana perangkat lunak dari mobil bekerja.
Pada dasarnya, mesin AlgorithmModule negara adalah apa yang mengatur flag untuk mengontrol pergerakan mobil. Bendera ini ditafsirkan oleh mesin ControlModule negara, dan menerjemahkannya ke dalam kontrol motor yang sebenarnya.
Hasil Desain
Kecepatan Eksekusi
Kecepatan wasn'ta besar masalah bagi kami. Semua komponen perangkat lunak dilakukan sebagai mesin negara.
Mesin Kontrol negara Motor update pada setiap 50ms kutu. Ini adalah waktu yang cukup untuk mesin negara untuk menghitung controlBits diperlukan dan menegaskan input yang diperlukan untuk H-jembatan. Akibatnya, kami bisa mendapatkan tanggapan yang sangat akurat dan sensitif dari motor ke kode kontrol.
Mesin Kontrol Algoritma negara kutu update pada setiap 100ms. Ini adalah waktu yang cukup untuk mesin negara untuk menghitung parameter yang diperlukan, dan untuk menegaskan bendera diperlukan untuk Control Module untuk menafsirkan mereka dan menerjemahkannya ke dalam gerak motorik.
Tanggapan dari mobil untuk sekitarnya juga sangat cepat. Sensor memiliki waktu respon 20ms, yang cukup cepat bagi mereka untuk diproses secara real time.
Ketepatan
Sensor Jarak
Sensor sangat akurat dalam jangkauan tertentu mereka. Bahkan dengan perhitungan integer, kita dapat menghitung jarak dengan + / - 1cm akurasi. Karena kita tidak bisa mengendalikan pergerakan mobil dengan tingkat akurasi, akurasi sensor jarak kita cukup.
Parkir Space Deteksi
Urutan untuk mendeteksi ruang parkir yang bekerja sangat akurat. Dalam banyak percobaan yang kita dilakukan, selalu terdeteksi ruang parkir dan berhenti di deteksi.
Parkir Algoritma
Algoritma parkir kami telah menulis bekerja sangat baik ketika mobil yang dekat dengan jarak tertentu dari sisi tempat parkir. Itu, bagaimanapun, menjadi kurang akurat ketika mobil ditempatkan pada jarak yang lebih besar dari ruang parkir.
Algoritma parkir kami telah menulis bekerja sangat baik ketika mobil yang dekat dengan jarak tertentu dari sisi tempat parkir. Itu, bagaimanapun, menjadi kurang akurat ketika mobil ditempatkan pada jarak yang lebih besar dari ruang parkir.
Keselamatan dan Interferensi
Tidak ada kekhawatiran keselamatan banyak dengan proyek kami. Dalam rangka untuk meminimalkan gangguan terhadap kelompok-kelompok proyek lainnya, dan menghindari mobil menabrak mahasiswa, kami membuat area tes terpisah di lorong.Kami menggunakan daerah ini menguji semua tujuan pengujian.
Juga, karena mobil benar-benar otonom, tidak ada kontak manusia yang dibutuhkan (kecuali untuk menyalakan mobil). Oleh karena itu, tidak ada masalah gangguan dengan sistem di dalam mobil.
Usability
Menurut pendapat kami, proyek ini memiliki potensi yang luar biasa. Dengan bekerja lagi pada algoritma parkir, kita merasa bahwa kita dapat mengembangkan sistem untuk mobil RC ke taman terlepas dari orientasi dan jarak dari tempat parkir. Dengan penelitian yang cukup, ini dapat dikembangkan untuk mobil nyata!
Hal ini juga dapat digunakan sebagai alat belajar bagi orang yang ingin belajar mengemudi. Dengan mengamati gerak mobil ini, siswa dapat belajar bagaimana untuk parkir paralel yang lebih baik.
Terakhir, proyek ini bisa berfungsi sebagai titik referensi yang berguna untuk proyek-proyek masa depan berhubungan dengan R / C mobil. Modul Kontrol kita harus diterapkan untuk mengontrol mobil R / C dapat digunakan secara universal untuk setiap mobil roda 2-R / C drive.
Kesimpulan
Secara keseluruhan, kami merasa proyek memenuhi sebagian besar harapan kami, karena kami mampu membangun sebuah mobil otonom yang bisa mendeteksi tempat parkir, dan taman di dalamnya. Ketika kami mulai keluar, kita dimaksudkan mobil untuk dapat menemukan tempat parkir, dan taman terlepas dari jarak dari tempat parkir dan orientasi. Kami, bagaimanapun, tidak mampu membuat cukup kuat untuk menampung parkir dari orientasi yang berbeda dan jarak. Namun, kami merasa algoritma dasar akan tetap sama, dan algoritma ini dapat dibangun di atas untuk mengakomodasi fitur ini.
Ini juga merupakan pengalaman belajar yang luar biasa bagi kami, terutama dengan perangkat keras. Kita belajar banyak sekali tentang sistem kontrol motor, desain sirkuit yang efisien, dan debugging hardware. Kami juga belajar banyak tentang perangkat lunak. Melalui proyek ini, kami mendapat pengalaman berharga dalam mengembangkan perangkat lunak yang efisien menggunakan optimasi memori dan run-time, sesuatu yang tidak dapat diperoleh melalui tugas rutin.
Jika kita memiliki kesempatan untuk memulai proyek ini selesai, ada beberapa hal yang akan kami lakukan secara berbeda.
- Gunakan regulator untuk memastikan arus stabil sedang disuplai ke baterai meskipun fluktuasi tegangan baterai, terutama karena mereka kehilangan daya
- Pertimbangkan menerapkan sensor optik untuk melacak kecepatan mobil
- Membangun loop umpan balik PWM untuk mengontrol kecepatan mobil
- Pertimbangkan untuk menambahkan sensor keempat di samping untuk menghitung orientasi mobil
- Pertimbangkan membangun mobil sendiri
Standar, Kekayaan Intelektual, dan Kekhawatiran Hukum
Tidak ada standar atau peraturan yang bersangkutan proyek kami karena kami memutuskan untuk tidak mengendalikan mobil menggunakan sinyal radio. Ada juga tidak ada masalah dengan kekayaan intelektual karena kita membeli mobil RC dan hanya menggunakannya untuk penggunaan pribadi. Semua perangkat lunak dan perangkat keras lainnya dirancang oleh kami.
Pertimbangan Etis
Kami berpegang pada Kode Etik IEEE seluruh proyek ini. Kami sangat berhati-hati untuk mempertimbangkan dampak dari keputusan kita pada kita, orang-orang di sekitar kita, dan hasil dari proyek kami. Kami mengambil waktu yang signifikan untuk merencanakan proyek kami sebelum mengimplementasikannya. Kami ingin memastikan mobil kami dirancang dengan cara terbaik, dalam hal kinerja, kehandalan keamanan, dan. Kami bekerja sama dengan orang lain, mencari dan memberikan umpan balik dan kritik konstruktif dari guru, itu TA, dan kelompok lain untuk membangun desain terbaik.
Kami juga mendirikan sebuah lingkungan pengujian yang aman. Di daerah dengan lalu lintas tinggi, orang bisa dengan mudah menginjak mobil dan terluka. Kami menguji mobil kami dalam lingkungan yang sangat terkontrol untuk memastikan keselamatan semua orang. Kami tidak membuat keputusan yang akan menyebabkan kerugian bagi orang lain atau lingkungan.
Dalam situasi apapun, apakah kita memberi atau menerima suap. Semua bagian kami baik membeli atau sampel dengan cara yang tepat. Kami telah jujur mengenai hasil dan keterbatasan dari desain kami. Kami telah bekerja keras untuk menciptakan desain yang terbaik mungkin dalam kerangka waktu yang diberikan, dan aman untuk beroperasi. Semua orang yang terlibat dengan proyek ini diperlakukan adil.
Lampiran
Lampiran A: Komentar Kode
Link ini berisi kode sumber untuk proyek kami:
Link ini berisi fungsi tambahan yang kami tulis selama pengembangan proyek kami:
Lampiran B: Skema High Level
Lampiran C: Daftar Parts dan Biaya
Bagian | Nomor | Biaya |
---|---|---|
RC Mobil | 1 | $ 20 |
10cm-80cm Sharp IR Sensor (GP2Y0A21YK) | 1 | Gratis (Sampel Dari Sharp) |
4cm-30cm Sharp IR Sensor (GP2D120XJ00F) | 2 | Gratis (Sampel Dari Sharp) |
ST Micro H-Bridge (L298HN) | 1 | Gratis (Sampel dari ST Microelectronics) |
ATMega 644 | 1 | Gratis (Sampel dari Kekaisaran Technologies) |
Custom PC Dewan | 1 | $ 4 |
Kecil Solder Dewan | 1 | $ 2 |
Baterai 9V | 1 | $ 2 |
Baterai AA | 4 | $ 2 |
Header | 65 | $ 3,25 |
Regulator (LM340T5) | 1 | Gratis (Dalam Lab) |
Sekrup dan Spacer | Gratis (Dalam Lab) | |
Total | $ 33,25 |
Lampiran D: Tugas
Kami berdua berkontribusi ke seluruh bagian proyek, namun kami menghabiskan lebih banyak waktu bekerja pada hal-hal tertentu.
- Desain Perangkat Keras: Nagappan
- Desain Algoritma Kontrol: Kedua
- Design of Parking Algorithm: Prakash
- Testing of Hardware: Both
- Testing of Software: Both
- Compiling Report and Web Site: Both
0 komentar:
Posting Komentar