Litar

Bagaimana Membangun Robot Navigasi Sendiri: 7 Langkah

Rancang Bangun Robot Terbang Penghindar Halangan untuk Navigasi dalam Ruangan Bersekat

Rancang Bangun Robot Terbang Penghindar Halangan untuk Navigasi dalam Ruangan Bersekat

Isi kandungan:

Anonim

Ini adalah tutorial terperinci tentang bagaimana merealisasikan robot bermula dari awal, dan memberikan keupayaan untuk menavigasi secara autonomi dalam persekitaran yang tidak diketahui.
Semua argumen tipikal yang terlibat dengan robotik akan diliputi: mekanik , elektronik dan pengaturcaraan .
Seluruh robot direka untuk dibuat oleh sesiapa sahaja di rumah tanpa peralatan dan peralatan profesional (iaitu mahal).
Papan otak (dsNav ) didasarkan pada Microchip dsPIC33 DSC dengan keupayaan pengekod dan pengendali motor. Kedudukannya dikira oleh odometry (encoder) tanpa rujukan luaran (perhitungan mati).
Dalam versi akhir, beberapa pengawal lain digunakan untuk mengawal sensor (Arduino) dan menguruskan sensor analogik (PSoC).

Bekalan:

Langkah 1: Platform Asas

Contoh bagaimana untuk membina platform robotik yang sangat mudah dengan komponen dan bahagian mudah dicari di mana-mana, tanpa keperluan alat atau peralatan profesional, dan tanpa kemahiran khusus pada kerja mekanikal.
Saiz dasar membolehkan penggunaannya dalam pelbagai kategori pertandingan robotik: Explorer, Line Follower, Can Collector, dll.

Langkah 2: Apa yang Kami Mahu Dapatkan? dan bagaimana?

Robot ini, kerana kebanyakan robot yang dibina oleh hobbysts, adalah berdasarkan sistem stereng berbeza, membolehkan kita mengetahui koordinat kedudukan robot pada satu ketika, hanya mengetahui ruang yang diliputi oleh setiap roda secara berkala dengan ketepatan yang cukup.
Sistem navigasi perhitungan mati ini dipengaruhi oleh ralat kumulatif; ketepatan pengukuran mesti tinggi untuk memastikan lingkaran ralat kecil selepas laluan yang panjang. Jadi, selepas beberapa keputusan yang baik dengan pengekod buatan sendiri, saya memutuskan untuk menggunakan sesuatu yang lebih baik: beberapa motosikal 12V-200 rpm yang disambungkan, disambungkan ke beberapa encoder 300 Count Per Revolution (cpr), kedua-duanya terdapat di banyak kedai robotik Internet.
Prinsip asas
Untuk menangkap semua denyutan yang dihasilkan oleh encoder 300 cpr pada motor 3000 rpm dalam kaedah penyahkodean 4x (120 kHz), kita memerlukan perkakasan berdedikasi untuk setiap pengekod (QEI = Quadrature Encoder Interface). Selepas beberapa ujian dengan PIC18F2431 ganda, saya menentukan bahawa peningkatan yang betul adalah dsPIC. Pada permulaan mereka adalah dua pengendali motor dsPIC30F4012 untuk mengawal kedudukan dan kelajuan roda, untuk melaksanakan odometri dan untuk menyediakan data dua motor ke dsPIC30F3013. Tujuan umum DSC ini adalah cukup kuat untuk mendapatkan data, melakukan beberapa trigonometri untuk mengira koordinat kedudukan, dan menyimpan data yang berkaitan dengan laluan yang dilindungi untuk mendapatkan peta medan, semuanya pada kadar yang sangat tinggi.
Apabila lembaga dan program hampir selesai, Microchip mengeluarkan SPDIP 28-pin baru yang kuat dalam siri dsPIC33F untuk kedua-dua pengawal motor (MC) dan kegunaan umum (GP). Mereka jauh lebih cepat daripada dsPIC30F, mereka mempunyai memori program yang lebih banyak dan RAM (berguna untuk pemetaan medan), mereka memerlukan kuasa kurang (baik untuk robot yang dikendalikan bateri), dan keupayaan DMA mereka memudahkan banyak operasi I / O.
Paling penting, ini adalah pengawal motor Microchip pertama dengan dua QEI pada cip yang sama. Mari mulakan lagi pelabuhan baru! The gambarajah blok logik adalah serupa dengan papan sebelumnya , tetapi perkakasan dan perisian lebih mudah sejak itu Saya boleh menggunakan satu DSC sahaja yang tersirat dari tiga . Tidak perlu komunikasi berkelajuan tinggi antara penyelia dan pengendali motor untuk menukar parameter navigasi. Setiap proses mudah untuk disegerakkan kerana ia berada di cip yang sama. Keupayaan pilih pin persisian siri dsPIC33F seterusnya memudahkan PCB, membolehkan sambungan dalaman periferal dan fleksibiliti yang lebih besar.
Ini membawa kita ke "Papan Kawalan Navigasi dsPIC berasaskan" atau dsNavCon untuk pendek. Papan ini direka bentuk sebagai sebahagian daripada sistem yang lebih kompleks. Dalam robot explorer yang lengkap, papan lain akan mengawal bunyi, cahaya, sensor gas, serta bumper dan penemu pelbagai ultrasonik untuk mencari sasaran dan mengelakkan rintangan.
Sebagai lembaga yang berdiri sendiri, dsNavCon juga boleh digunakan untuk robot "pengikut pengikut" yang mudah, sesuatu yang lebih rumit seperti robot untuk odometri dan pertandingan menghitung mati, atau yang disebut "dapat robot" (untuk dapat mengumpul pertandingan). Terdapat banyak lagi memori program percuma untuk menambah kod untuk tugas tersebut. Dengan perubahan kecil atau tiada perisian, ia juga boleh digunakan secara berasingan untuk kenderaan kawalan jauh, menggunakan modem RF dua arah dengan beberapa jenis kawalan jauh pintar. Kawalan jauh ini boleh menghantar arahan kompleks seperti "memindahkan FWD 1m," "putar 15 ° kiri," "jalankan FWD pada 50 cm / s," "pergi ke X, koordinat Y," atau sesuatu yang serupa.
Papan dan robot juga direka untuk dibuat oleh sesiapa sahaja di rumah tanpa alat dan peralatan profesional.

Langkah 3: Perkakasan Sumber Terbuka

Gambarajah blok
Subsistem kawalan navigasi terdiri daripada dsNav sebagai papan "pintar" sistem dan lembaga dua jambatan H-jambatan L298 untuk mengawal motor 12V yang diarahkan (Hsiang Neng HN-GH12-1634TR). Maklum balas gerakan datang dari beberapa encoders 300 cpr (US digital e4p-300-079-ht).
Komunikasi dengan dunia luar dilakukan melalui dua siri antaramuka UART; satu untuk telemetri dan yang lain untuk mendapatkan data dari papan sensor. Modul XBee boleh disambungkan ke UART1 atau UART2 melalui jumper JP1 dan JP2. Soket J1 dan J16 boleh didapati untuk jenis sambungan lain. Port COMM1 (J16) juga boleh digunakan untuk komunikasi I2C berkat keupayaan pilih pin persisian siri dsPIC33F.
Rajah skema asal dalam format Eagle boleh didapati di sini:
http://www.guiott.com/Rino/dsNavCon33/dsNavCon33_Eagle_project/DsPid33sch.zip
Seperti yang anda lihat skematik adalah begitu mudah yang boleh dilaksanakan pada perfboard seperti yang saya lakukan. Jika anda tidak mahu menggunakan sistem ini dan tidak mahu merealisasikan PCB anda sendiri, papan komersil berdasarkan karya asal saya dan serasi sepenuhnya dengan perisian sumber terbuka saya boleh didapati di: http: //www.robot-italy .com / product_info.php? products_id = 1564

Langkah 4: Perisian Sumber Terbuka

Perisian ini dibangunkan dengan IDE percuma MPLAB® dan ditulis dengan compiler MPLAB® C30 (walaupun dalam versi percuma atau pelajar), kedua-duanya (tentu saja) oleh Microchip:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=81
Seluruh projek tersedia sebagai sumber terbuka di Google Code
http://code.google.com/p/dspid33/
Sila rujuk di sana untuk versi terkini, komen, penerangan, dll.
Program ini dijelaskan langkah demi langkah di dalam kod. Untuk mendapatkan tahap komen yang tinggi dan kod yang lebih mudah dibaca, pada setiap titik penting terdapat nombor dalam kurungan (misalnya: 7) sebagai rujukan kepada fail luaran (iaitu: descrEng.txt) dalam projek MPLAB .
Gambar rajah memperlihatkan seni bina keseluruhan prosedur kawalan papan dsNav dan strategi navigasi yang digunakan berdasarkan projek.
Pengawal motor boleh dilihat sebagai kotak hitam yang menjaga kelajuan roda. Penyelia bahagian program menghantar mereka kelajuan rujukan (VeldDesX: halaju yang dikehendaki). Modul Capture Input dari mikrokontroler mendapatkan pulsa dari pengekod yang disambungkan ke paksi motor dan memperoleh kelajuan putaran motor (VelMesX: halaju diukur). Menggabungkan setiap 1ms nilai ini dalam kawalan PID "Speed ​​PID" kita memperoleh nilai PWM yang tepat untuk memastikan kelajuan yang dikehendaki setiap roda tunggal.
Modul QEI (Quadrature Encoder Interface) mendapatkan kedua-dua pulangan A dan B dari pengekod dan memberikan kembali kepada fungsi penyelia arah perjalanan dan bilangan pulsa dalam mod 4x (menghitung tepi yang semakin meningkat dan jatuh dari isyarat A dan isyarat B: 2 x 2 = 4).
Mengalikan bilangan denyutan oleh K yang menunjukkan ruang yang ditempuh untuk setiap nadi pengekod tunggal, kami memperoleh jarak yang dilalui oleh roda kanan dan kiri setiap 10ms. Penyelia menggabungkan maklumat perjalanan ini dan menggunakan prosedur perhitungan yang mati untuk mendapatkan koordinat posisi diukur dari bot: Xmes, Ymes, θMes (sudut orientasi).
Penyelia menerima perintah navigasi dari luar dengan antara muka siri (telemetri).
Strategi yang berbeza boleh digunakan:
A - perjalanan pada kelajuan tertentu dalam arah yang diberikan (VelDes, θDes).
B - perjalanan ke arah titik tertentu dengan koordinat XDes, YDes.
C - perjalanan untuk jarak tertentu dalam arah yang diberikan (DistDes, θDes).
Mod A : dengan "suis kawalan logik" dalam kedudukan 1, hanya kawalan PID "Sudut PID" digunakan oleh fungsi penyelia. Ini menggabungkan sudut yang dikehendaki θDalam sudut yang diukur θMes yang dikira oleh prosedur odometri, untuk mendapatkan nilai giliran sudut kelajuan ω kenderaan di sekitar paksi menegak, diperlukan untuk membetulkan ralat orientasi.
Nilai DeltaV adalah berkadar dengan ω. Ia ditambah kepada VelDes untuk mendapatkan kelajuan roda kiri dan dikurangkan kepada VelDes untuk mendapatkan kelajuan roda kanan, untuk memastikan tajuk yang sama dengan nilai θDesain, manakala pusat robot masih dalam perjalanan pada kelajuan VelDes.
Mod B : dengan "suis kawalan logik" pada kedudukan 2, VelDes kelajuan yang dikehendaki dikira oleh kawalan PID "Dist PID" dan ia digunakan dalam mod A. Input yang diukur untuk PID ini (DistMes) dikira sebagai fungsi koordinat semasa dan koordinat destinasi. Sudut orientasi yang diingini θDes juga berasal dari prosedur yang sama dan ia digunakan sebagai input rujukan untuk "Sudut PID". Input rujukan untuk "Dist PID" adalah 0, yang bermaksud destinasi dicapai. Dengan ω dan VelDes tersedia, kawalan kelajuan roda berjalan seperti dalam mod A.
Mod C : dengan "suis kawalan logik" dalam kedudukan 2, destinasi mengawal Xdes, Ydes dihitung sekali pada permulaan sebagai fungsi parameter input DistDes, θDes. Selepas semuanya berjalan seperti dalam mod B

Langkah 5: Butiran Perisian: Kawalan Kelajuan dan Fungsi Asas Lain

Program ini penuh mengganggu digerakkan . Pada permulaan, selepas permulaan, program masuk dalam gelung utama yang sangat mudah, bertindak sebagai mesin negeri. Dalam gelung utama, program menyemak bendera didayakan oleh peristiwa luar, dan ia memasuki keadaan relatif mengikut nilai mereka.
Oleh kerana ia adalah sejenis koperasi yang sangat mudah "Sistem Operasi Masa Nyata , "setiap rutin perlu dijalankan dalam masa yang sesingkat mungkin, membebaskan sistem sehingga menjaga gangguan yang sangat kerap.
Tiada "menunggu sehingga" dan tiada penangguhan dalam kod. Setiap kali gangguan mungkin digunakan, terutamanya untuk operasi lambat seperti penghantaran atau penerimaan rentetan aksara. Komunikasi UART mengambil kelebihan keupayaan DMA dsPIC33F untuk menjimatkan masa CPU melakukan semua kerja "kotor" dalam perkakasan.
Peranti yang digunakan pada dsPIC33FJ128MC802:
- QEI untuk mengira laluan perjalanan.
- Input Capture (IC) untuk mengira kelajuan.
- Penukar A / D untuk membaca arus motor.
- PWM yang dipertingkat untuk memacu motor.
- UART untuk berkomunikasi dengan dunia luaran
Modul QEI digunakan untuk mengetahui sejauh mana roda telah berjalan dan ke arah mana. Nilai ini secara algebra merakam dalam pembolehubah setiap 1ms dan dihantar kepada fungsi penyelia atas permintaannya. Selepas nilai dihantar, pembolehubah diset semula.
Kelajuan diukur pada setiap nadi pengekod seperti yang dihuraikan di bawah. Setiap 1ms ia mengira kelajuan min dengan purata sampel, melaksanakan algoritma PID, dan membetulkan kelajuan motor yang sesuai dengan hasilnya, mengubah kitaran tugas PWM. Untuk penerangan terperinci mengenai aplikasi perpustakaan P30 CID, lihat Contoh Kod Microchip: CE019 - Menggunakan pengawal integratif terbitan berkadar (PID) dalam Sistem Kawalan Gelung Tertutup. http://ww1.microchip.com/downloads/en/DeviceDoc/CE019_PID.zip
Variasi laju motor dijalankan dengan lancar, mempercepat atau menurun dengan rampai naik atau jatuh, untuk mengelakkan ketegangan mekanikal berat dan gelincir roda yang dapat menyebabkan kesilapan dalam odometri. Kelajuan lebih cepat kemudian pecutan untuk mengelakkan lebam dengan halangan semasa brek.
KAD PENGENALAN , modul tangkapan input digunakan untuk mengukur masa yang berlalu antara dua denyutan yang dijana oleh pengekod, yang bermaksud apabila roda mengembara untuk jumlah ruang tetap yang terkenal (tetap SPACE_ENC ). Disambung secara selari dengan QEA (secara dalaman kepada DSC terima kasih kepada keupayaan Peripheral Pin Select dari dsPIC33F), mereka merakam masa yang berlalu pada peningkatan kelebihan isyarat pengekod. TIMER2 digunakan dalam mod berjalan bebas. Pada setiap gangguan IC, nilai semasa TMR2 disimpan dan nilai sebelumnya ditolak daripadanya; ini adalah tempoh nadi. Kemudian nilai semasa menjadi nilai sebelumnya, menunggu gangguan seterusnya. Bendera TMR2 perlu diperiksa untuk mengetahui jika limpahan berlaku dalam daftar 16-bit. Sekiranya ya, perbezaan antara 0xFFFF dan sampel terdahulu hendaklah ditambah kepada nilai semasa. Sampel secara algebra ditambah IcPeriod pembolehubah mengikut _UPDN bit, untuk menentukan juga arah kelajuan. Ini adalah salah satu kaedah yang disyorkan dalam Nota permohonan Microchip AN545 .
Pembolehubah IcIndx mengandungi bilangan sampel yang ditambah dalam IcPeriod .
Setiap 1ms kelajuan min dikira sebagai V = Ruang / Masa
di mana Ruang = SPACE_ENC • IcIndx
(= ruang yang diliputi dalam satu denyutan pengekod • bilangan denyutan)
dan Masa = TCY • IcPeriod
(= masa TMR tunggal • penjumlahan tempoh berlaku).
Single_TMR_period = TCY = 1 / FCY (kekerapan jam).
Jadi V = Kvel • (IcIndx / IcPeriod)
di mana Kvel = SPACE_ENC • FCY untuk mempunyai kelajuan dalam m / s.
Peralihan meninggalkan 15 bit Kvel const ( KvelLong = Kvel << 15 ) halaju dikira sudah dalam format pecahan (juga jika hanya pembolehubah integer digunakan) sedia untuk digunakan dalam rutin PID. Lihat fail "descrEng.txt" dalam projek MPLAB untuk penerangan yang lebih terperinci.
Penukar A / D secara berterusan mengukur motor semasa, menyimpan nilai-nilai dalam 16 kedudukan penampan ADCBUF. Apabila buffer penuh, gangguan berlaku dan nilai purata dikira kira-kira setiap 1ms.
UARTs digunakan untuk menerima arahan dari luar dan menghantar semula hasil pengukuran. Bahagian komunikasi program berjalan sebagai mesin negara. Pembolehubah status digunakan untuk melaksanakan tindakan mengikut urutan. Rangkaian Perkhidmatan Interrupt yang sangat mudah dan pantas (ISR) mendapatkan atau meletakkan setiap satu byte dari atau ke penyangga, dan menetapkan bendera yang betul untuk membiarkan fungsi yang betul dilaksanakan.
Jika apa-apa jenis ralat berlaku semasa menerima (UART, checksum, kesilapan parsing), pembolehubah status ditetapkan kepada nombor negatif dan yang dipimpin merah dikuasakan untuk menyampaikan secara eksternal keadaan kesalahan ini. Lihat fail "descrEng.txt" dalam projek MPLAB untuk senarai lengkap kemungkinan ralat.
Protokol yang digunakan untuk jabat tangan adalah lapisan fizikal bebas , dan boleh digunakan dengan bas I2C atau RS485 serta berkomunikasi.
The lapisan pertama dikawal oleh antara muka peranti dsPIC. Kesilapan bingkai atau serangan (UART) atau perlanggaran (I2C) dikesan oleh perkakasan, menetapkan bendera yang sesuai.
The lapisan kedua dikendalikan oleh rutin ISR. Mereka mengisi penimbal RX dengan bait yang diterima dari antara muka. Mereka juga mengesan limpahan penampan dan perintah mengatasi.
Fungsi UartRx atau UartRx2 mengurus lapisan ketiga . Seperti yang telah diterangkan (lihat juga carta aliran) rutin ini bertindak sebagai mesin negara, mendapatkan bait dari penampan dan menyahkod string perintah.
Bait ini ditukar antara lapisan kedua dan ketiga (fungsi ISR ​​dan UartRx) melalui penampan bulat. ISR menerima bait, menyimpannya dalam array dan bertambah penunjuk ke array, jika penunjuk mencapai hujung array ia dimulakan semula ke permulaan. Fungsi UartRx mempunyai penunjuk sendiri untuk membaca array yang sama, bertambah (dengan cara bulat juga) secepat bait itu dinyahkod dalam status RX semasa. Gelung utama memanggil fungsi UartRx setiap kali penunjuk "dalam" berbeza daripada "keluar" penunjuk.
Setiap paket arahan dibuat oleh:
0 - Header @
1 - ID 0-9 ASCII
2 - Cmd A-Z ASCII
3 - CmdLen N = 1-MAX_RX_BUFF # of bytes berikut (termasuk checksum)
4 - Data …

N-1 - Data
N - Checksum 0-255 diperoleh dengan hanya menambah dalam 8 pemboleh ubah bit, semua bait mengarang mesej (checksum sendiri dikecualikan).
Lapisan ini mengawal kesilapan masa dan kesilapan checksum, serta paket konsistensi (tajuk yang betul, panjang yang betul). Sekiranya semuanya ok, ia membolehkan rutin Parser (lapisan keempat ) untuk menyahkod mesej dan melaksanakan tindakan yang diperlukan. Rutin ini menetapkan bendera ralat yang sesuai jika kod mesej diterima tidak diketahui.
TMR1 menjana jam pemasaan 1000 Hz - denyutan jantung program. Pada setiap gangguan TMR1, pemasa dalaman dikemas kini, pengawas dibersihkan, dan bendera ditetapkan untuk membolehkan fungsi yang meminta nilai ruang perjalanan. Setiap 10ms fungsi "All_Parameters_Ask" (kelajuan, kedudukan, semasa) didayakan.

Langkah 6: Butiran Perisian: Odometri dan Pemetaan Bidang = Di mana saya?

Pengoptimuman algoritma umum untuk digunakan dalam sistem berasaskan DSC atau MCU
Sebaik sahaja kita mempunyai maklumat mengenai jarak yang dilalui oleh setiap roda dalam kemas kini masa yang diskret (odometri), kita dapat menganggarkan koordinat kedudukan robot dengan tempoh yang sama tanpa rujukan luaran (perhitungan mati).
Beberapa latar belakang teori mengenai perhitungan mati oleh odometry boleh didapati dalam buku oleh Johann Borenstein:
"Di mana saya? - Sensor Dan Kaedah Untuk Posisi Robot Bergerak"
dan pada laman web berikut:
http://www.seattlerobotics.org/encoder/200010/dead_reckoning_article.html
Latar belakang matematik dan penjelasan mendalam tentang kaedah umum yang digunakan, boleh didapati di G.W. Makalah Lucas Satu Model Lurus dan Elemen bagi Sistem Pemandu Ditarikal Para Penggerak Roda Robot, terdapat di Internet:
http://rossum.sourceforge.net/papers/DiffSteer/DiffSteer.html
Sesetengah algoritma yang mudah dipelajari boleh didapati dalam dokumentasi yang sama juga, jadi mungkin untuk mendapatkan kompromi yang betul antara ketepatan dan kelajuan penjelasan, menggunakan keupayaan matematik (trigonometri) siri dsPIC33F.
Penerangan mengenai matematik yang digunakan untuk mengira kedudukan boleh didapati dalam gambar yang dilampirkan pada langkah ini. Yang pertama menunjukkan makna simbol, yang kedua menunjukkan rumus yang digunakan dengan simbol tersebut. Mengklik kotak di sebelah setiap langkah pengiraan gambaran ringkas ditunjukkan.
Pada akhirnya kita tahu berapa robot bergerak dalam selang masa itu sebagai delta orientasi, delta pada paksi X dan delta pada paksi Y dalam medan rujukan carthesian.
Cumulating setiap nilai delta dalam pembolehubah sendiri kita tahu koordinat semasa (kedudukan dan orientasi) platform.
Untuk mengelakkan kesilapan pengiraan (dibahagikan dengan sifar) dan pembaziran masa pengawal, pemeriksaan perlu dibuat terlebih dahulu pada pembolehubah Sr dan Sl. Menentukan nilai kuasi-sifar yang mengurus perkiraan mekanikal dan pengiraan minima yang dapat memudahkan formula jika robot bergerak dalam garis lurus (ruang yang diliputi oleh roda kanan hampir sama dengan ruang yang dilalui oleh roda kiri) atau jika ia berputar di sekitar paksi menegak (ruang yang diliputi oleh roda kanan hampir sama dengan ruang yang dilalui oleh roda kiri tetapi dalam arah yang bertentangan), seperti yang terperinci dalam carta aliran yang ditunjukkan dalam gambar terakhir.

Video ini menunjukkan contoh ketepatan yang boleh kita perolehi:
http://www.youtube.com/watch?v=d7KZDPJW5n8


Pemetaan lapangan
Dengan data yang dikira oleh fungsi sebelumnya, pemetaan medan dilakukan.
Setiap Xms, selepas penjelasan kedudukan semasa, pemetaan lapangan dilakukan membahagikan medan yang tidak diketahui dalam grid sel 10 x 10cm. Menentukan dimensi medan maksimum 5 x 5m, kami memperoleh matriks 50 x 50 = 2500 sel. Setiap sel ditakrifkan dengan nibble, dengan jumlah memori sebanyak 1250 Bita. Enam belas nilai berbeza boleh diberikan kepada setiap sel:
n = 00 sel yang tidak diketahui
n = 01 - 10 sel dikunjungi n kali
n = 11 halangan yang dijumpai
n = 12 sasaran gas yang dijumpai
n = 13 sasaran cahaya dijumpai
n = 14 sasaran bunyi yang dijumpai
Robot boleh bermula dari mana-mana kedudukan di lapangan; ini akan menjadi koordinat rujukan (0,0) dalam sistem rujukannya.
Pemetaan medan berguna untuk mencari strategi penerokaan terbaik dalam bidang yang tidak diketahui. Robot boleh mengarahkan diri ke bahagian medan yang kurang diterokai (nilai "n" yang lebih rendah), boleh menjimatkan masa dengan tidak berhenti dua kali dalam sasaran yang telah ditemui, dapat mencari jalan terbaik untuk mencapai koordinat yang diberikan, dan banyak lagi.

Langkah 7: Konsol Jauh

Ini adalah aplikasi yang jauh mengawal papan dsNavCon dari Mac / PC melalui komunikasi siri melalui beberapa peranti XBee seperti yang diterangkan dalam gambarajah blok.
Untuk menjadi mudah untuk membangunkan dan baik untuk berjalan dalam mana-mana sistem operasi, ia ditulis dengan Pemprosesan bahasa:
http://www.processing.org/
Kod sumber untuk program ini juga tersedia sebagai sumber terbuka di Kod Google:
http://code.google.com/p/dsnavconconsole/
Dengan panel utama (gambar pertama) kita boleh melakukan telemetri dengan melihat grid laluan diikuti oleh robot (seperti yang dianggarkan oleh odometry) dalam medan saiz yang boleh dikonfigurasikan dan beberapa nilai penting lain yang dibaca di dsNav .
Tolok menunjukkan nilai diukur:
- MesSpeed ​​dalam lingkungan +/- 500 mm / s, nilai min kelajuan dua roda (kelajuan pusat platform).
- Mengukur Semasa dalam mA (jumlah semasa dari dua motors).
- Sudut Terukur, seperti dimanjakan oleh odometri.
Panel lain digunakan untuk mengkonfigurasi parameter robot dan untuk menyimpan ke robot jalan yang ditetapkan untuk mengikuti (jika diperlukan). Panel penting, sekurang-kurangnya semasa pembangunan robot, adalah panel terperinci (gambar kedua) yang menunjukkan kelajuan setiap roda dalam masa nyata, sangat berguna untuk penentukuran semua parameter.
Pandangan grid tengah boleh dihidupkan dengan pemandangan webcam untuk dikawal, walaupun menurut pandangan, laluan robot itu mengikuti.
Contoh penggunaan praktikal untuk konsol ini ditunjukkan dalam video ini:
http://www.youtube.com/watch?v=OPiaMkCJ-r0