Devreler

Kendi Kendine Gezinme Robotu Nasıl Kurulur: 7 Adım

Yusuf tembel olmuş, kendi süpüren robot süpürgeye işlerini yaptırıyor😂

Yusuf tembel olmuş, kendi süpüren robot süpürgeye işlerini yaptırıyor😂

İçindekiler:

Anonim

Bu, bir robotun sıfırdan başlayarak nasıl gerçekleştirileceği ve kendisine bilinmeyen bir ortamda özerk bir şekilde gezinme yeteneği verilmesi hakkında ayrıntılı bir eğitimdir.
Robotik ile ilgili tüm tipik argümanlar ele alınacaktır: mekanik , elektronik ve programlama .
Bütün robot, evde profesyonel (yani pahalı) alet ve ekipman olmadan herkes tarafından üretilecek şekilde tasarlanmıştır.
Beyin kuruludsNav ) kodlayıcı ve motor kontrol özelliğine sahip bir Microchip dsPIC33 DSC'ye dayanmaktadır. Konum, herhangi bir harici referans olmadan (ölü hesaplamaları) kilometre sayacı (enkoder) ile hesaplanır.
Son versiyonda bazı diğer kontrolörler sensörleri (Arduino) kontrol etmek ve analog sensörleri (PSoC) yönetmek için kullanılır.

Gereçler:

1. Adım: Temel Platform

Her yerde kolayca bulabileceğiniz, profesyonel alet veya ekipmana ihtiyaç duymadan ve mekanik işlerde özel bir beceriye sahip olmayan çok basit bir robot platformun nasıl oluşturulduğuna bir örnek.
Tabanın büyüklüğü, birçok farklı robotik yarışma kategorisinde kullanımına izin verir: Explorer, Çizgi İzleyici, Kutu Toplayıcı, vb.

Adım 2: Ne Almak İstiyoruz? ve nasıl?

Bu robotlar, hobistler tarafından yapılan robotların çoğu gibi, farklı bir direksiyon sistemine dayanıyor ve robotun konum koordinatlarını herhangi bir anda bilmemize izin veriyor, her bir tekerleğin kapladığı alanı periyodik olarak yeterince hassasiyetle biliyoruz.
Bu ölü hesaplaşma navigasyon sistemi kümülatif hatadan etkilenir; Uzun bir yoldan sonra küçük bir hata çemberi sağlamak için ölçüm hassasiyeti yüksek olmalıdır. Bu nedenle, ev yapımı kodlayıcılarla yapılan bazı iyi sonuçlardan sonra, daha iyi bir şeyler kullanmaya karar verdim: her ikisi de birçok İnternet robot mağazasında bulunan birkaç 300-Devir / Dakika sayım kodlayıcıya bağlanmış birkaç adet 12V-200 rpm dişli motor.
Temel prensipler
3000 d / d motorda 300 cpr kodlayıcı tarafından 4x kod çözme yönteminde (120 kHz) üretilen tüm darbeleri yakalamak için, her kodlayıcı için özel bir donanıma ihtiyacımız var (QEI = Quadrature Encoder Interface). Bir çift PIC18F2431 ile bazı deneyler yaptıktan sonra, doğru yükseltmenin bir dsPIC için olduğunu belirledim. Başlangıçta, tekerleklerin konumunu ve hızını kontrol etmek, kilometre sayacını gerçekleştirmek ve iki motorun verilerini bir dsPIC30F3013'e sağlamak için iki dsPIC30F4012 motor kontrol cihazıydı. Bu genel amaç DSC, veri koordinatlarını hesaplamak için veri toplama, bazı trigonometri yapma ve alanın haritasını elde etmek için kapsanan yolla ilgili verileri, çok yüksek bir hızda saklamaya yetecek kadar güçlüdür.
Anakart ve programlar neredeyse tamamlandığında, Microchip dsPIC33F serisinde hem motor kontrol ünitesi (MC) hem de genel amaçlı (GP) versiyonlar için yeni ve güçlü bir 28-pin SPDIP çıkardı. DsPIC30F'den çok daha hızlıdırlar, daha fazla kullanılabilir program hafızasına ve RAM'e (alan haritalaması için faydalıdır) daha az güç gerektirir (pille çalışan bir robot için iyi) ve DMA yetenekleri birçok G / Ç işlemini kolaylaştırır.
En önemlisi, bunlar aynı çipte iki QEI'ye sahip ilk Microchip motor kontrolörleridir. Yeniden yeni bir limana başlayalım! mantıksal blok şeması önceki pano için birine benzer. , ancak donanım ve yazılım beri çok daha kolaydır Bir tanesini sadece üç taneden oluşan DSC kullanabilirim . Navigasyon parametrelerini değiştirmek için amir ve motor kontrolörleri arasında yüksek hızlı iletişime gerek yoktur. Her işlem senkronize etmek kolaydır, çünkü aynı çiptedir. DsPIC33F serisinin çevresel pim seçme kabiliyeti PCB'yi daha da basitleştirir, çevre birimlerin iç bağlantısını ve daha fazla esnekliği sağlar.
Bu bizi “dsPIC Tabanlı Navigasyon Kontrol Panosuna” veya dsNavCon kısaca. Bu kart daha karmaşık bir sistemin parçası olarak tasarlanmıştır. Tam bir keşif robotunda, diğer kartlar hedefleri bulmak ve engelleri önlemek için ses, ışık, gaz sensörlerinin yanı sıra tamponları ve ultrasonik mesafe bulucuları kontrol eder.
Bağımsız bir kurul olarak dsNavCon basit bir "hat takipçisi" robotu için, bir kilometre sayacı ve ölü sayma yarışması için bir robot gibi daha karmaşık bir şey ya da “olabilir robot” (yarışmalar toplamak için) olarak da kullanılabilir. Bu tür görevler için kod eklemek için hala birçok boş program belleği vardır. Yazılımda küçük veya hiç değişiklik olmadığında, bir çeşit akıllı uzaktan kumanda ile çift yönlü RF modem kullanarak uzaktan kumandalı bir araç için bağımsız olarak da kullanılabilir. Bu uzaktan kumanda “FWD 1m hareket ettir”, “15 ° sola dön”, “FWD'yi 50 cm / s'de çalıştır”, “X'e git, Y koordinatlarına git” veya benzeri bir komut verebilir.
Tahta ve robot da, evde profesyonel aletler ve ekipmanlar olmadan herkes tarafından yapılacak şekilde tasarlanmıştır.

Adım 3: Açık Kaynak Donanımı

Blok şeması
Navigasyon kontrol alt sistemi; dsNav Sistemin “akıllı” kartı ve dişli 12V motorları (Hsiang Neng HN-GH12-1634TR) kontrol etmek için L298 tabanlı çift H köprü kartı olarak kullanıldı. Hareket geri bildirimi birkaç 300 cpr enkoderden geliyor (ABD dijital e4p-300-079-ht).
Dış dünyayla iletişim, iki UART seri arayüzü üzerinden gerçekleştirilir; Biri telemetri için, diğeri ise sensör kartından veri almak için. XBee modülü UART1 veya UART2'ye JP1 ve JP2 atlama telleri üzerinden bağlanabilir. J1 ve J16 soketleri diğer bağlantılar için kullanılabilir. COMM1 portu (J16), dsPIC33F serisinin periferik pin seçme özelliği sayesinde bir I2C iletişimi için de kullanılabilir.
Eagle formatında orijinal şematik diyagramı burada bulabilirsiniz:
http://www.guiott.com/Rino/dsNavCon33/dsNavCon33_Eagle_project/DsPid33sch.zip
Gördüğünüz gibi şematik o kadar basittir ki benim yaptığım gibi bir perfboard üzerine uygulanabilir. Bu sistemi kullanmak istemiyorsanız ve kendi PCB'nizi gerçekleştirmek istemiyorsanız, orijinal çalışmamı temel alan ve açık kaynaklı yazılımımla tamamen uyumlu bir ticari pano şu adresten temin edilebilir: http: //www.robot-italy com / product_info.php? products_id = 1564

Adım 4: Açık Kaynak Yazılım

Yazılım MPLAB® içermeyen IDE ile geliştirilmiştir ve MPLAB® C30 derleyicisiyle (ücretsiz veya öğrenci sürümünde bile) Microchip tarafından yazılmıştır (tabii ki):
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=81
Tüm proje Google Code’da açık kaynak kodlu
http://code.google.com/p/dspid33/
Lütfen en son sürüm, yorum, açıklama vb. Bilgileri burada bulabilirsiniz.
Program kod içinde adım adım açıklanmaktadır. Yüksek seviyede bir yorum ve daha okunaklı bir kod elde etmek için, her önemli noktada, MPLAB projesinde harici bir dosyaya (yani: descrEng.txt) referans olarak parantez içinde bir sayı (örn: 7) vardır. .
Diyagram, dsNav panosunun kontrol prosedürlerinin genel mimarisini ve proje temelinde uygulanan navigasyon stratejilerini gösterir.
Motor kontrolörleri, tekerleklerin hızına dikkat eden siyah kutular olarak görülebilir. Programın denetleyici kısmı onlara referans hızını gönderir (VeldDesX: istenen hız). Mikrodenetleyicinin Giriş Yakalama modülleri, motor eksenine bağlı enkoderlerden darbeler alır ve motorların dönme hızını alır (VelMesX: ölçülen hız). Her 1 ms'de bir bu hızları PID kontrolünde "Speed ​​PID" olarak birleştirerek, her bir tekerleğin istenen hızını korumak için doğru PWM değerini elde ederiz.
QEI (Quadrature Encoder Interface) modülleri, hem A hem de B darbelerini kodlayıcılardan alır ve denetleyici işlevine geri dönüş yönünü ve 4x modundaki darbe sayısını (A ve B sinyalinin yükselen ve düşen kenarlarını sayarak) verir: 2 x 2 = 4).
Her bir kodlayıcı darbesi için harcanan alanı belirten bir K değeri ile çarpma sayısını çarparak, her 10ms'de bir sağ ve sol tekerleklerle kat edilen mesafeyi elde ederiz. Denetim otoritesi bu seyahat bilgilerini birleştirir ve botun ölçülen pozisyon koordinatlarını elde etmek için ölü hesaplaşma prosedürünü uygular: Xmes, Ymes, θMes (oryantasyon açısı).
Denetim otoritesi seri arayüz (telemetri) ile dışarıdan navigasyon komutu alır.
Farklı stratejiler uygulanabilir:
bir - Belli bir hızda belirli bir yöne gidiniz (VelDes, θDes).
B - XDes, YDes koordinatlarıyla verilen bir noktaya doğru hareket edin.
C - belirli bir yönde belirli bir mesafede seyahat etmek (DistDes, θDes).
A modu : "mantıksal kontrol anahtarları" 1 konumundayken, sadece PID kontrol "Açı PID" denetleyici işlevleri tarafından kullanılır. Bu, istenen açı θDes'i, ölçülen açı comb ile birleştirir. Yönlendirme hatasını düzeltmek için gerekli olan aracın dikey ekseni etrafında dönme açısal hızının ω değerini elde etmek için, odometri prosedürü ile hesaplanır.
DeltaV değeri ω ile orantılıdır. Robotun merkezi VelDes hızında hareket ederken, sol tekerleğin hızını elde etmek için VelDes'e eklenir ve θDes değerine karşılık gelen başlığı tutmak için sağ tekerleğin hızını elde etmek için VelDes'e çıkarılır.
Mod b : Konum 2'deki "mantıksal kontrol anahtarları" ile istenen hız VelDes, PID kontrol "Dist PID" ile hesaplanır ve A modunda olduğu gibi kullanılır. Bu PID (DistMes) için ölçülen giriş, bir fonksiyon olarak hesaplanır. Geçerli koordinatlar ve hedef koordinatlar. İstenilen oryantasyon açısı θDes de aynı prosedürden gelir ve "Açı PID" için referans girişi olarak kullanılır. "Dist PID" için referans girişi 0'dır, yani varış noktasına ulaşılmıştır. Ω ve VelDes mevcutken, tekerleklerin hız kontrolü A modunda olduğu gibi çalışır.
Mod c : "mantıksal kontrol anahtarları" 2 konumundayken, hedef Xdes'i koordine eder, Ydes başlangıçta DistDes, θDes giriş parametrelerinin bir fonksiyonu olarak hesaplanır. Bundan sonra her şey B modunda olduğu gibi gider

Adım 5: Yazılımın Ayrıntıları: Hız Kontrolü ve Diğer Temel İşlevler

Program dolu tahrik tahrik . Başlangıçta, başlattıktan sonra, program durum makinesi olarak görev yapan çok basit bir ana döngüye girer. Ana döngüde, program harici olayların etkinleştirdiği bayrakları kontrol eder ve değerlerine göre göreli duruma girer.
Bir tür çok basit bir kooperatif olduğundan "Gerçek Zamanlı İşletim Sistemi "Her bir rutinin mümkün olan en kısa sürede yapılması ve sistemin çok sık kesintilere dikkat etmesi için serbest bırakılması gerekiyor.
“Bekleyene kadar” ve kodda gecikme yok. Mümkün olan her kesintide, özellikle karakter dizilerinin iletimi veya alımı gibi yavaş işlemler için kullanıldığında. UART iletişimi, donanımdaki tüm "kirli" işi yaparak CPU zamanından tasarruf etmek için dsPIC33F'nin DMA yeteneklerinin değerlendirmesini alır.
DsPIC33FJ128MC802'de kullanılan çevre birimleri:
- QEI seyahat edilen yolu hesaplamak için kullanılır.
- Hızı hesaplamak için Giriş Yakalama (IC).
- A / D motor akımını okumak için dönüştürür.
- Motorları çalıştırmak için geliştirilmiş PWM'ler.
- UART'lar dış dünyayla iletişim kuruyor
QEI modülleri tekerleklerin ne kadar gittiğini ve hangi yönde hareket ettiğini bilmek için kullanılır. Bu değer, her 1ms'de bir değişkende cebirsel olarak biriktirilir ve istek üzerine gözetmen işlevlerine gönderilir. Değer gönderildikten sonra değişkenler sıfırlanır.
Hız, her kodlayıcı nabzında aşağıda açıklandığı şekilde ölçülür. Her 1ms'de ortalama hızı numunelerle ortalama hesaplar, PID algoritmasını uygular ve motor hızını PWM görev çevrimini değiştirerek sonucuna göre düzeltir. C30 PID kitaplığı uygulamasının ayrıntılı açıklaması için, bkz. Mikroçip Kodu Örnek: CE019 - Kapalı Çevrim Kontrol Sistemlerinde Oransal İntegral Türev (PID) kontrol cihazlarının kullanılması. http://ww1.microchip.com/downloads/en/DeviceDoc/CE019_PID.zip
Ağır mekanik zorlanma ve kilometre sayacında hatalara neden olabilecek tekerlek kaymasını önlemek için, motorların hız değişimleri, düzgün bir şekilde yapılır, yükselen veya düşen eğimli bir rampa ile hızlanır veya yavaşlar. Yavaşlama, frenleme sırasında engellerle çarpmalardan kaçınmak için hızlanmadan daha hızlıdır.
IC Giriş yakalama modülleri, kodlayıcı tarafından üretilen iki darbe arasında geçen süreyi ölçmek için kullanılır, yani tekerlekler iyi bilinen bir sabit miktarda yer için hareket ettiğinde (sabit SPACE_ENC ). QEA'ya paralel olarak bağlanır (dsPIC33F'nin Periferik Pin Seçme yetenekleri sayesinde dahili olarak DSC'ye), kodlayıcı sinyallerinin yükselen kenarı boyunca geçen süreyi yakalarlar. TIMER2 serbest çalışma modunda kullanılır. Her IC kesintisinde, TMR2’nin geçerli değeri saklanır ve önceki değeri ondan çıkarılır; Bu nabız süresi. Ardından, mevcut değer bir sonraki kesmeyi bekleyen önceki değer haline gelir. TMR2'nin bayrağının, 16 bitlik kayıtta bir taşma olup olmadığını bilmek için kontrol edilmesi gerekir. Eğer evet ise, 0xFFFF ile önceki örnek arasındaki fark mevcut değere eklenmelidir. Örnekler cebirsel olarak eklenir IcPeriod göre değişken _UPDN bit, ayrıca hız yönünü belirlemek için. Bu önerilen yöntemlerden biridir. Mikroçip uygulama notu AN545 .
Değişken IcIndx içine eklenen örneklerin sayısını içerir IcPeriod .
Her 1ms'de bir ortalama hız olarak hesaplanır. V = Yer / Zaman
nerede Uzay = SPACE_ENC • IcIndx
(= bir kodlayıcı darbesinde • kaplanan alan • darbe sayısı)
ve Zaman = TCY • IcPeriod
(= tek TMR dönemi • dönemlerin toplamı gerçekleşti).
Single_TMR_period = TCY = 1 / FCY (saat frekansı).
Yani V = KVEL • (IcIndx / IcPeriod)
nerede KVEL = SPACE_ENC FCY • m / s olarak hıza sahip olmak.
15 bit sola kaydırma KVEL const ( KvelLong = KVEL << 15 ) PID yordamında kullanılmaya hazır olan sürat zaten kesirli bir formatta (sadece tamsayı değişkenleri kullanılıyorsa) hesaplanır. Daha ayrıntılı bir açıklama için MPLAB projesindeki “descrEng.txt” dosyasına bakın.
A / D dönüştürücüler ADCBUF tamponlarında 16 konumdaki değerleri saklayarak sürekli motor akımını ölçün. Tamponlar dolduğunda, bir kesinti meydana gelir ve yaklaşık olarak her 1ms'de bir ortalama değer hesaplanır.
UARTs dışarıdan komut almak ve ölçüm sonuçlarını geri göndermek için kullanılır. Programın iletişim kısmı bir durum makinesi olarak çalışır. Durum değişkenleri sırayla eylemleri yürütmek için kullanılır. Çok basit ve hızlı Interrupt Servis Rutinleri (ISR), her byte'ı bir tampondan veya tampon belleğe alır veya koyar ve uygun işlevin yürütülmesine izin vermek için doğru bayrakları ayarlar.
Alma sırasında herhangi bir hata oluşursa (UART, sağlama toplamı, ayrıştırma hataları), durum değişkeni negatif bir sayıya ayarlanır ve bu hata durumunu harici olarak bildirmek için kırmızı led açılır. Olası hataların tam bir listesi için MPLAB projesindeki “descrEng.txt” dosyasına bakın.
El sıkışma için kullanılan protokol bağımsız fiziksel katman ve I2C veya RS485 veriyolu ile iletişim kurmak için de kullanılabilir.
ilk katman dsPIC çevre arabirimi tarafından kontrol edilir. Çerçeve veya aşma hataları (UART) veya çarpışmalar (I2C) donanım tarafından algılanarak uygun bayrağın ayarlanması.
ikinci katman ISR rutinleri tarafından yönetilir. RX tamponunu arabirimlerden alınan baytlarla doldururlar. Ayrıca arabellek taşması ve komut taşması algıladılar.
UartRx veya UartRx2 işlevleri üçüncü katman . Daha önce tarif edildiği gibi (akış çizelgelerine de bakınız) bu rutinler durum makinesi olarak işlev görür, tampondan bayt alır ve komut dizisinin kodunu çözer.
Baytlar, ikinci ve üçüncü katmanlar (ISR ve UartRx işlevi) arasında dairesel bir tampon aracılığıyla paylaşılır. ISR bir bayt alır, onu bir dizide saklar ve işaretçi dizinin sonuna ulaşırsa diziye bir işaretçi yükseltir, yeniden başlatılır. UartRx işlevi, aynı diziyi okumak için kendi göstergeye sahiptir, mevcut RX durumunda bayt kodu çözülür çözülmez artmış (dairesel bir şekilde). Ana döngü UartRx işlevini çağırır, "giriş" işaretçisi "çıkış" işaretleyiciden farklı olduğunda.
Her komut paketi aşağıdakilerden oluşur:
0 - Başlık @
1 - Kimlik 0-9 ASCII
2 - Cmd A-Z ASCII
3 - CmdLen N = 1-MAX_RX_BUFF İzleyen bayt sayısı (sağlama toplamı dahil)
4 - Veri …

N-1 - Veri
N - Checksum 0-255, 8 bitlik bir değişkene basitçe eklenerek elde edilir, mesajı oluşturan tüm baytlar (checksum'un kendisi hariç).
Bu katman, zaman aşımı ve sağlama toplamı hatalarının yanı sıra paket tutarlılığını da (doğru başlık, doğru uzunluk) kontrol eder. Her şey yolunda giderse, Parser rutinini etkinleştirir (dördüncü katman ) mesajın kodunu çözmek ve gereken işlemi yapmak için. Alınan mesaj kodu bilinmiyorsa, bu rutin uygun hata işaretini belirler.
TMR1 Programın kalp atışı - 1000 Hz zamanlama saati oluşturur. Her TMR1'in kesilmesinde, dahili zamanlayıcılar güncellenir, bekçi temizlenir ve seyahat edilen alan değerini soran işlevi etkinleştirmek için bir bayrak ayarlanır. Her 10ms “All_Parameters_Ask” işlevi (hız, konum, akım) etkindir.

Adım 6: Yazılımın Ayrıntıları: Kilometre Sayacı ve Saha Eşlemesi = Neredeyim?

DSC veya MCU tabanlı bir sistemde kullanım için genel algoritmanın optimizasyonu
Ayrı bir zaman güncellemesinde (odometri) her bir tekerleğin kat ettiği mesafe hakkında bilgi edindikten sonra, herhangi bir harici referans olmadan (ölü hesaplaşma) robotun konum koordinatlarını aynı periyodiklik ile tahmin edebiliriz.
Kilometre sayacı tarafından ölü sayma ile ilgili bazı teorik bilgiler Johann Borenstein'ın kitabında bulunabilir:
"Neredeyim? - Mobil Robot Konumlandırmada Sensörler ve Yöntemler"
ve aşağıdaki web sayfalarında:
http://www.seattlerobotics.org/encoder/200010/dead_reckoning_article.html
Matematiksel arka plan ve kullanılan genel yöntemin derin bir açıklaması, G.W. Lucas’ın makalesi İnternette mevcut olan Robot Tekerlek Aktüatörlerinin Diferansiyel Direksiyon Sistemi için Öğretici ve İlköğretim Yörünge Modeli:
http://rossum.sourceforge.net/papers/DiffSteer/DiffSteer.html
Bazı basitleştirilmiş algoritmalar da aynı belgelerde bulunabilir, bu nedenle dsPIC33F serisinin matematik (trigonometrik) özelliğini kullanarak detaylandırma hassasiyeti ile detaylandırma hızı arasında doğru bir uzlaşma elde etmek mümkündür.
Konumu hesaplamak için kullanılan matematiğin açıklaması bu adıma eklenen resimlerde bulunabilir. Birincisi sembollerin anlamını, ikincisi ise bu sembollerle kullanılan formülleri gösterir. Her hesaplama adımının yanındaki kutuları tıklatarak kısa bir açıklama gösterilir.
Sonunda, robotun o zaman aralığında oryantasyonun bir deltası, X eksenindeki bir delta ve carthesian referans alanındaki Y eksenindeki bir delta olarak ne kadar hareket ettiğini biliyoruz.
Her delta değerini kendi değişkeninde toplayarak, platformun geçerli koordinatlarını (konum ve yönlendirme) biliyoruz.
Hesaplama hatalarını (sıfıra bölme) ve denetleyici zamanının israfını önlemek için, hem Sr hem de Sl değişkenlerinde önceden bir kontrol yapılması gerekir. Minimal mekanik ve hesaplamalı yaklaşıma önem veren yarı sıfır bir değer tanımlayarak, robotun düz bir çizgide hareket etmesi durumunda formülleri basitleştirebiliriz (sağ tekerleğin kapladığı alan, sol tekerleğin hareket ettiği alanla hemen hemen aynıdır) ya da dikey ekseni etrafında dönüyorsa (sağ tekerleğin kapladığı alan, soldaki tekerleğin hareket ettiği alanla hemen hemen aynıdır, ancak tam tersi yönde), son resimde gösterilen akış şemasında detaylandırıldığı gibi.

Bu video hangi hassasiyeti alabileceğimize bir örnek gösteriyor:
http://www.youtube.com/watch?v=d7KZDPJW5n8


Alan haritalama
Önceki fonksiyonlarla hesaplanan verilerde bir alan haritalaması gerçekleştirilir.
Her Xms, mevcut pozisyon detaylandırma işleminden sonra, bilinmeyen alanı 10 x 10 cm hücre ızgarasında bölen bir alan eşlemesi yapılır. 5 x 5m maksimum alan boyutu tanımlayarak, 50 x 50 = 2500 hücre matriksi elde ediyoruz. Her bir hücre toplam 1250 Byte'lık bir bellek kullanımı ile bir nibble ile tanımlanır. Her hücreye on altı farklı değer atanabilir:
n = 00 bilinmeyen hücre
n = 01 - 10 hücre n kere ziyaret edildi
n = 11 engel bulundu
n = 12 gaz hedefi bulundu
n = 13 hafif hedef bulundu
n = 14 ses hedefi bulundu
Robot sahadaki herhangi bir yerden başlayabilir; bunlar referans sistemindeki referans koordinatları (0,0) olacaktır.
Alan haritalama, bilinmeyen bir alanda en iyi keşif stratejisini bulmak için kullanışlıdır. Robot, kendisini alanın daha az keşfedilmiş kısmına yönlendirebilir (düşük “n” değeri), önceden keşfedilmiş bir hedefte iki kez durmayarak zaman kazanabilir, verilen bir koordinata ulaşmak için en iyi yolu bulabilir ve daha fazlasını yapabilir.

Adım 7: Uzak Konsol

Bu, dsNavCon panosunu bir Mac / PC'den seri iletişim yoluyla, blok şemasında açıklandığı gibi bir çift XBee cihazı üzerinden uzaktan kontrol eden bir uygulamadır.
Geliştirilmesi kolay ve herhangi bir işletim sisteminde çalıştırılması iyi olması için, İşleme dil:
http://www.processing.org/
Bu programın kaynak kodu da Google Kodunda açık kaynak olarak bulunmaktadır:
http://code.google.com/p/dsnavconconsole/
İle ana panel (ilk resim) yapılandırılabilir bir büyüklükteki alanda ızgaraya ve ardından robotun (odometri tarafından tahmin edildiği şekilde) izlediği yolu ve cihazda okunan diğer önemli değerleri kullanarak telemetri yapabiliriz. dsNav .
Göstergeler ölçülen değerleri gösterir:
- +/- 500 mm / s aralığında MesSpeed, iki tekerleğin hızının ortalama değeri (platformun merkezinin hızı).
- mA cinsinden ölçülen akım (iki motordaki akımın toplamı).
- Kilometre sayacı ile ekstrakte edilen Ölçülen Açı.
Robotun parametrelerini yapılandırmak ve takip etmek için (gerekirse) robota belirli bir yolu depolamak için diğer paneller kullanılır. En azından robotun gelişimi sırasında önemli bir panel, detay paneli (ikinci resim) gerçek zamanlı olarak her tekerleğin hızını gösterir, tüm parametrelerin kalibrasyonu için çok yararlıdır.
Merkezi ızgara görünümü, robotun izlediği yolu görüntülemesine rağmen kontrol etmek için bir web kamerası görünümü ile değiştirilebilir.
Bu videoda bu konsolun kullanımına ilişkin pratik bir örnek gösterilmektedir:
http://www.youtube.com/watch?v=OPiaMkCJ-r0