Mündəricat:

Robotun Ardınca Qabaqcıl Xətt: 22 Adım (Şəkillərlə birlikdə)
Robotun Ardınca Qabaqcıl Xətt: 22 Adım (Şəkillərlə birlikdə)

Video: Robotun Ardınca Qabaqcıl Xətt: 22 Adım (Şəkillərlə birlikdə)

Video: Robotun Ardınca Qabaqcıl Xətt: 22 Adım (Şəkillərlə birlikdə)
Video: RTX 3090 Ti vs RTX 3060 Ultimate Showdown for Stable Diffusion, ML, AI & Video Rendering Performance 2024, Iyul
Anonim
Image
Image
Prototipləşdirmə - Perfboard
Prototipləşdirmə - Perfboard

Bu, uzun müddətdir qurduğum və üzərində işlədiyim Teensy 3.6 və QTRX xətt sensoruna əsaslanan inkişaf etmiş bir xəttdir. Robotu izlədiyim əvvəlki xəttdən dizaynda və performansda bəzi böyük irəliləyişlər var. Robotun sürəti və reaksiyası yaxşılaşdı. Ümumi quruluş yığcam və yüngüldür. Komponentlər açısal momentumu minimuma endirmək üçün təkər oxuna yaxın yerləşdirilmişdir. Yüksək güclü mikro metal dişli mühərriklər, kifayət qədər fırlanma anı təmin edir və alüminium hub silikon təkərlər yüksək sürətlə çox lazımlı tutuş təmin edir. Qalxan və təkər kodlayıcıları robotun mövqeyini və istiqamətini təyin etməyə imkan verir. Gəmiyə quraşdırılmış Teensyview ilə bütün müvafiq məlumatlar görüntülənə bilər və düymələrdən istifadə edərək proqramın vacib parametrləri yenilənə bilər.

Bu robotun hazırlanmasına başlamaq üçün aşağıdakı təchizatlara ehtiyacınız olacaq (və çox vaxt və səbr sizin ixtiyarınızdadır).

Təchizat

Elektronika

  • Teensy 3.6 İnkişaf Şurası
  • Hərəkət Sensorlu Prop Shield
  • Sparkfun TeensyView
  • Pololu QTRX-MD-16A Yansıtma Sensor Dizisi
  • 15x20 sm ölçülü iki tərəfli PCB
  • Pololu Step-Up/Step-Down Voltaj Regülatörü S9V11F3S5
  • Pololu Ayarlanabilir 4-5-20V Yüksəldici Gərginlik Tənzimləyicisi U3V70A
  • MP12 6V 1580 rpm enkoderli mikro ötürücü motor (x2)
  • DRV8833 İkili Motor Sürücü Daşıyıcısı (x2)
  • 3.7V, 750mAh Li-Po batareyası
  • ON/OFF açarı
  • Elektrolitik kondansatör 470 uF
  • Elektrolitik kondansatör 1000uF (x2)
  • Seramik kondansatör 0.1uF (x5)
  • Düymələr (x3)
  • 10 mm Yaşıl LED (x2)

Avadanlıq

  • Atom Silikon Təkər 37x34mm (x2)
  • 3/8 "Metal Topu olan Pololu Ball Caster
  • N20 motor montajı (x2)
  • Bolt və qoz -fındıq

Kabellər və bağlayıcılar

  • 24AWG çevik tellər
  • 24 pinli FFC -dən DIP qırılmasına və FFC kabelinə (Tip A, uzunluğu 150 mm)
  • Dairəvi qadın pin başlığı
  • Dairəvi dişi pin başlığı uzun terminal
  • Sağ açılı cüt sıra qadın başlıq
  • Sağ açılı cüt sıra kişi başlığı
  • Kişi pin başlığı
  • Kişi iynə pin başlığı

Alətlər

  • Multimetr
  • Lehimleme dəmir
  • Lehim teli
  • Tel çıxarıcı
  • Tel kəsici

Addım 1: Sistemlərə Baxış

Əvvəllər özünü balanslaşdıran bir robot dizaynımda olduğu kimi, bu robot da bir quruluş məqsədinə xidmət edən bir pervaz taxtasına quraşdırılmış qırılma lövhələrindən ibarətdir.

Robotun əsas sistemləri aşağıda verilmişdir.

Mikro nəzarətçi: 32 bit 180MHz ARM Cortex-M4 prosessoruna malik Teensy 3.6 inkişaf lövhəsi.

Xətt sensoru: Pololu'nun QTRX-MD-16A 16 kanallı orta sıxlıqlı düzülüşlü analog çıxış xətti sensoru dizisi (8 mm sensor pitch).

Sürücü: 6V, 1580 rpm, alüminium göbəklərə quraşdırılmış maqnit təkər kodlayıcısı və silikon təkərləri olan yüksək güclü mikro metal dişli mühərriklər.

Odometriya: Qapalı koordinatları və məsafəni hesablamaq üçün maqnit təkər kodlayıcı cütləri.

İstiqamət sensoru: Robotun mövqeyini və istiqamətini təxmin etmək üçün hərəkət sensoru olan dayaq qalxanı.

Enerji təchizatı: 3.7V, 750mAh lipo batareya enerji mənbəyi kimi. 3.3V aşağı/yuxarı tənzimləyicisi mikrokontrolörə, sensorlara və ekran cihazına güc verir. Ayarlanabilir artırıcı tənzimləyici iki mühərriki gücləndirir.

İstifadəçi interfeysi: Məlumatı göstərmək üçün Teensyview. İstifadəçi girişlərini qəbul etmək üçün üç düyməli düymə. İşlədikdə vəziyyətin göstərilməsi üçün 10 mm diametrli iki ədəd yaşıl LED.

Addım 2: Prototip hazırlamağa başlayaq

Image
Image

Yuxarıdakı dövrəni perfboardda tətbiq edəcəyik. Əvvəlcə başlıqları lehimləyərək qırılma lövhələrimizi hazır saxlamalıyıq. Videoda hansı başlıqların hansı qırılma lövhələrində lehimlənməsi lazım olduğuna dair fikir veriləcək.

Başlıqları qırılma lövhələrində lehimlədikdən sonra Teensyview və düymələrin qırılmasını Teensy -nin üstünə yığın.

Addım 3: Prototipləşdirmə - Perfboard

Prototipləşdirmə - Perfboard
Prototipləşdirmə - Perfboard

15x20 sm ölçüsündə iki tərəfli prototip taxtası alın və sərhədi şəkildə göstərildiyi kimi daimi bir markerlə işarələyin. Ağ dairə ilə işarələnmiş yerlərdə sensor silsiləsini, təkər çarxını və mikro metal dişli mühərrikləri quraşdırmaq üçün M2 ölçülü deliklər qazın. Daha sonra bütün komponentləri lehimlədikdən və sınaqdan keçirdikdən sonra sərhəd boyunca perfboardu kəsəcəyik.

Prototip hazırlamağa, başlıq sancaqlarını və yuvalarını mükəmməl lövhədə lehimləməklə başlayacağıq. Qırılma lövhələri daha sonra bu başlıqlara daxil ediləcək. Mükəmməl taxtadakı başlıqların mövqeyinə diqqət yetirin. Bu başlıq düzeni əsasında bütün telləri birləşdirəcəyik.

Addım 4: Prototipləşdirmə - Prop Shield

Prototipləşdirmə - Prop Shield
Prototipləşdirmə - Prop Shield
Prototipləşdirmə - Prop Shield
Prototipləşdirmə - Prop Shield
Prototipləşdirmə - Prop Shield
Prototipləşdirmə - Prop Shield
Prototipləşdirmə - Prop Shield
Prototipləşdirmə - Prop Shield

Əvvəlcə dayaq qalxanına olan bağlantıları lehimləyəcəyik. Yalnız dayaq qalxanının hərəkət sensörlərindən istifadə etdiyimiz üçün, 3V və dayaq qalxanının torpaq pinlərindən başqa yalnız SCL, SDA və IRQ pinlərini birləşdirməliyik.

Bağlantı tamamlandıqda, Teensy və dayaq qalxanı daxil edin və burada göstərilən addımları izləyərək hərəkət sensorlarını kalibr edin.

Addım 5: Prototipləşdirmə - Güc və Zəmin

Prototipləşdirmə - Güc və Zəmin
Prototipləşdirmə - Güc və Zəmin

Şəkilə istinad edərək bütün güc və torpaq əlaqələrini lehimləyin. Bütün qırılma lövhələrini yerə qoyun və multimetrdən istifadə edərək davamlılığı təmin edin. Gəmidəki fərqli gərginlik səviyyələrini yoxlayın.

  • Li-po çıxış gərginliyi (ümumiyyətlə 3V ilə 4.2V arasında)
  • Yuxarı/aşağı tənzimləyicinin çıxış gərginliyi (3.3V)
  • Tənzimlənən yüksəldici tənzimləyicinin çıxış gərginliyi (6V-a təyin olunur)

Addım 6: Prototipləşdirmə - Motor Sürücü Taşıyıcısı

Prototipləşdirmə - Motor Sürücü Taşıyıcısı
Prototipləşdirmə - Motor Sürücü Taşıyıcısı
Prototipləşdirmə - Motor Sürücü Taşıyıcısı
Prototipləşdirmə - Motor Sürücü Taşıyıcısı
Prototipləşdirmə - Motor Sürücü Taşıyıcısı
Prototipləşdirmə - Motor Sürücü Taşıyıcısı

DRV8833 ikili motorlu sürücü daşıyıcı lövhəsi, kanal başına 1.2A davamlı və 2A pik cərəyanlar verə bilər. Bir motoru idarə etmək üçün iki kanalı paralel olaraq bağlayacağıq. Aşağıdakı addımları yerinə yetirərək əlaqələri lehimləyin.

  • Şəkildə göstərildiyi kimi motor sürücüsü daşıyıcısının iki girişi və iki çıxışı paralel olaraq.
  • Giriş nəzarət tellərini motor sürücüsünə qoşun.
  • İki daşıyıcı lövhənin Vin və Gnd terminalları arasında 1000 uF elektrolitik kondansatör və 0.1 uF keramika kondansatörü bağlayın.
  • Motor sürücüsünün çıxış terminallarına 0.1uF keramika kondansatörü bağlayın.

Addım 7: Prototipləşdirmə - Line Sensor Array Header

Prototipləşdirmə - Line Sensor Array Başlığı
Prototipləşdirmə - Line Sensor Array Başlığı
Prototipləşdirmə - Line Sensor Array Başlığı
Prototipləşdirmə - Line Sensor Array Başlığı
Prototipləşdirmə - Line Sensor Array Başlığı
Prototipləşdirmə - Line Sensor Array Başlığı
Prototipləşdirmə - Line Sensor Array Başlığı
Prototipləşdirmə - Line Sensor Array Başlığı

Teensy 3.6 -nın iki ADC -si var - ADC0 və ADC1, 25 əlçatan sancağa multipleksləşdirilir. Eyni zamanda iki ADC -dən istənilən iki sancağa daxil ola bilərik. Hər biri ADC0 və ADC1 -ə səkkiz xətt sensoru bağlayacağıq. Cüt ədəd sensorlar ADC1 -ə, tək ədəd sensorlar ADC0 -a bağlanacaq. Aşağıdakı addımları yerinə yetirərək əlaqələri lehimləyin. Daha sonra FFC istifadə edərək xətt sensorunu DIP adapterə və kabelə bağlayacağıq.

  • Şəkildə göstərildiyi kimi bütün cüt pinləri (16, 14, 12, 10, 8, 6, 4, 2) bağlayın. Sensor pimini 12 bağlamaq üçün teli perfboardun arxa tərəfindən keçirin.
  • Emitter nəzarət pinini (EVEN) Teensy pin 30 -a qoşun.
  • Bütün tək sensor pinlərini (15, 13, 11, 9, 7, 5, 3, 1) şəkildə göstərildiyi kimi bağlayın.
  • Vcc və Gnd arasında 470uF elektrolitik kondansatör bağlayın.

Perboarddakı xətt sensoru pinlərini və onlara uyğun başlıq pinlərini yaxından müşahidə etsəniz, xətt sensörünün üst sətrinin perboarddakı başlığın alt sətrinə və əksinə uyğun olduğunu görürsünüz. Bunun səbəbi, iki sıra düzbucaqlı başlıqlardan istifadə edərək xətt sensorunu perfboarda qoşduğumuzda satırların düzgün hizalanmasıdır. Bunu anlamaq və proqramdakı pin tapşırıqlarını düzəltmək mənim üçün çox vaxt apardı.

Addım 8: Prototipləşdirmə - Mikro Ötürücü Motor və Kodlayıcı

Prototipləşdirmə - Mikro Gear Motor və Enkoder
Prototipləşdirmə - Mikro Gear Motor və Enkoder
  • N20 mühərrik bağlayıcılarından istifadə edərək mikro metal dişli motoru kodlayıcı ilə düzəldin.
  • Motorda və enkoder tellərini şəkildə göstərildiyi kimi bağlayın.
  • Sol kodlayıcı - Teensy pinləri 4 və 0
  • Sağ kodlayıcı - Teensy pinləri 9 və 27

Addım 9: Prototipləşdirmə - LEDlər

Prototipləşdirmə - LEDlər
Prototipləşdirmə - LEDlər
Prototipləşdirmə - LEDlər
Prototipləşdirmə - LEDlər

İki LED, robotun dönüş gördüyünü və ya etmədiyini göstərir. LEDləri Teensy-yə bağlamaq üçün 470 ohm seriyalı bir rezistor istifadə etdim.

  • Teensy pin 6 -da sol LED anod
  • Teensy pin 8 üçün sağ LED anod

Addım 10: Prototip hazırlama - Breakouts

Image
Image
Prototip hazırlama - Breakouts
Prototip hazırlama - Breakouts

Perfor taxtasında bütün lehimləmə işimizi başa vurduqdan sonra, perforator taxtasında qeyd olunan sərhəd boyunca diqqətlə kəsə və perfboardun əlavə hissələrini çıxara bilərik. Ayrıca, iki təkər və təkər çarxını bağlayın.

Bütün kəsmə lövhələrini müvafiq yuvalarına daxil edin. FFC-DIP kəsilməsini daxil etmək və QTRX-MD-16A xətt sensorunu düzəltmək üçün videoya baxın.

Addım 11: Proqram Kitabxanalarına Baxış

Proqram Kitabxanalarına Baxış
Proqram Kitabxanalarına Baxış

Teensy -ni Arduino IDE -də proqramlaşdıracağıq. Başlamazdan əvvəl bəzi kitabxanalara ehtiyacımız olacaq. İstifadə edəcəyimiz kitabxanalar bunlardır:

  • Kodlayıcı
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

Və bu robot üçün xüsusi olaraq yazılanlardan bəziləri,

  • PushButton
  • LineSensor
  • Teensyview Menyu
  • Motorlar

Bu robot üçün xüsusi kitabxanalar ətraflı müzakirə olunur və sonrakı addımlarda yüklənə bilər.

Addım 12: Kitabxanalar Açıqlandı - PushButton

Bu kitabxana, Teensy ilə düymə kəsmə lövhəsini birləşdirmək üçündür. İstifadə olunan funksiyalardır

PushButton (int leftButtonPin, int centreButtonPin, int rightButtonPin);

Bir obyekt yaratmaqla bu konstruktoru çağırmaq, düymələri sancaqları INPUT_PULLUP rejiminə uyğunlaşdırır.

int8_t waitForButtonPress (etibarsız);

Bu funksiya bir düyməni basıb buraxana qədər gözləyir və açar kodunu qaytarır.

int8_t getSingleButtonPress (etibarsız);

Bu funksiya düymənin basıldığını və buraxıldığını yoxlayır. Əgər belədirsə, açar kodunu qaytarar, başqa sıfır qaytarar.

Addım 13: Kitabxanalar Açıqlandı - Xətt Sensoru

LineSensor, Teensy ilə xətt sensoru dizisini birləşdirmək üçün bir kitabxanadır. İstifadə olunan funksiyalar aşağıdakılardır.

LineSensor (etibarsız);

Bir obyekt yaratmaqla bu konstruktoru çağırmaq ADC0 və ADC1 -i işə salır, EEPROM -dan eşik, minimum və maksimum dəyərləri oxuyur və sensor pinlərini giriş rejiminə və emitör idarəetmə pinini çıxış rejiminə qurur.

boş kalibrləmə (uint8_t calibrationMode);

Bu funksiya xətt sensorlarını kalibr edir. CalibrationMode ya MIN_MAX ya da MEDIAN_FILTER ola bilər. Bu funksiya sonrakı mərhələdə ətraflı izah ediləcəkdir.

etibarsız getSensorsAnalog (uint16_t *sensorValue, uint8_t rejimi);

Arqument olaraq ötürülən üç rejimdən hər hansı birində sensorlar massivini oxuyur. Rejim yayıcıların vəziyyətidir və ON, OFF və ya TOGGLE ola bilər. TOGGLE rejimi, ətrafdakı işıq səbəbiylə sensorun əks olunma oxunuşlarını kompensasiya edir. ADC0 və ADC1 -ə qoşulan sensorlar sinxron oxunur.

int getLinePosition (uint16_t *sensorValue);

Sensor massivinin xəttin üzərindəki mövqeyini ağırlıqlı orta üsulla hesablayır.

uint16_t getSensorsBinary (uint16_t *sensorValue);

Sensorların vəziyyətinin 16 bitlik təsvirini qaytarır. İkili bir sensorun xəttin üzərində olduğunu, ikili sıfır isə sensorun xətdən kənarda olduğunu göstərir.

uint8_t countBinary (uint16_t binaryValue);

Sensor dəyərlərinin 16 bitlik təsvirini bu funksiyaya ötürmək, xəttin üzərindəki sensorların sayını qaytarır.

void getSensorsNormalized (uint16_t *sensorValue, uint8_t rejimi);

Sensor dəyərlərini oxuyur və hər bir sensor dəyərini ona uyğun minimum və maksimum dəyərlərlə məhdudlaşdırır. Sensor dəyərləri, uyğun minimumdan maksimum aralığına 0 ilə 1000 aralığına qədər xəritələnir.

Addım 14: Kitabxanalar Açıqlandı - TeensyviewMenu

TeensyviewMenu, ekran menyusu funksiyalarına daxil ola biləcəyiniz kitabxanadır. İstifadə olunan funksiyalar aşağıdakılardır.

TeensyViewMenu (boş);

Bu konstruktoru çağırmaq LineSensor, PushButton və TeensyView sinifli bir obyekt yaradır.

boş giriş (boşluq);

Bu menyu üzərində gəzmək üçündür.

boş test (boş);

Xətt sensoru dəyərlərinin sınanması üçün Teensyview -da göstərildiyi zaman buna menyu daxilində deyilir.

Addım 15: Kitabxanalar izah edildi - Motorlar

Motors, iki mühərriki idarə etmək üçün istifadə olunan kitabxanadır. İstifadə olunan funksiyalar aşağıdakılardır.

Motorlar (boş);

Bir obyekt yaratmaqla bu konstruktoru çağırmaq, motor istiqaməti nəzarətini və PWM idarəetmə pinlərini çıxış rejiminə uyğunlaşdırır.

boşluq setSpeed (int solMotorSpeed, int sağMotorSpeed);

Bu funksiyanın çağırılması iki mühərriki arqument olaraq verilən sürətlə idarə edir. Sürətin dəyəri -255 ilə +255 arasında dəyişə bilər ki, bu da fırlanma istiqamətinin tərsinə çevrildiyini göstərən mənfi işarədir.

Addım 16: Test - Kodlayıcı Odometriyası

Maqnit təkər kodlayıcılarını sınayacağıq və robotun keçdiyi mövqeyi və məsafəni göstərəcəyik.

DualEncoderTeensyview.ino yükləyin. Proqram Teensyview -də kodlayıcı işarələrini göstərir. Robotu irəli hərəkət etdirdiyiniz zaman kodlayıcı artım, geriyə doğru hərəkət etsəniz azalma ilə işarələnir.

İndi EncoderOdometry.ino yükləyin. Bu proqram x-y koordinatları baxımından robotun mövqeyini göstərir, ümumi məsafəni santimetrlə və bucağı dərəcələrlə çevirir.

Enoder gənələrindən mövqe təyin etmək üçün Seattle Robotics Society tərəfindən R/C Servo Diferensial Sürücü olan bir Robotda Odometry tərəfindən həyata keçirilən Ölü Hesablamaya istinad etdim.

Addım 17: Test - Prop Shield Motion Sensorları

Burada göstərilən addımları izləyərək hərəkət sensorlarını kalibr etdiyinizə əmin olun.

İndi PropShieldTeensyView.ino yükləyin. Teensyview -da hər üç oxun akselerometrini, girro və maqnitometrini görə bilməlisiniz.

Addım 18: Proqrama Baxış

Qabaqcıl xətt izləyicisi üçün proqram Arduino IDE -də yazılmışdır. Proqram aşağıda izah edilən ardıcıllıqla işləyir.

  • EEPROM -da saxlanılan dəyərlər oxunur və menyu göstərilir.
  • LAUNCH düyməsini basdıqda proqram döngəyə daxil olur.
  • Normallaşdırılmış xətt sensoru dəyərləri oxunur.
  • Xətt mövqeyinin ikili dəyəri normallaşdırılmış sensor dəyərləri istifadə edərək əldə edilir.
  • Xəttin üzərində olan sensorların sayı xəttin mövqeyinin ikili dəyərindən hesablanır.
  • Enkoder gənələri yenilənir və ümumi məsafə, x-y koordinatları və bucaq yenilənir.
  • 0 -dan 16 -a qədər olan ikili sayının fərqli dəyərləri üçün bir sıra təlimatlar yerinə yetirilir. İkili say 1 ilə 5 aralığındadırsa və xəttin üzərindəki sensorlar bir -birinə bitişikdirsə, PID rutini çağırılır. Dönmə, ikili dəyər və ikili sayın digər birləşmələrində aparılır.
  • PID rejimində (PD rejiminə görə), mühərriklər səhv, səhv dəyişikliyi, Kp və Kd dəyərləri əsasında hesablanan sürətlə idarə olunur.

Hal -hazırda proqram, dəstək qalxanından oriyentasiya dəyərlərini ölçmür. Bu davam edən bir işdir və yenilənir.

TestRun20.ino yükləyin. Menyuda necə hərəkət edəcəyimizi, parametrləri necə düzəldəcəyimizi və robotu sınayacağımız növbəti addımlarda xətt sensorlarını necə kalibr edəcəyimizi görəcəyik.

Addım 19: Menyu və Parametrlərdə gedin

Menyu, sol və sağ düymələri ilə gedə bilən və mərkəzi düyməni istifadə edərək seçilə bilən aşağıdakı parametrlərə malikdir. Ayarlar və onların funksiyaları aşağıda təsvir edilmişdir.

  1. KALİBRAT: Xətt sensorlarını kalibr etmək üçün.
  2. TEST: Xətt sensoru dəyərlərini göstərmək üçün.
  3. BAŞLAT: Aşağıdakı xətti başlamaq üçün.
  4. MAX SPEED: Robotun sürətinin yuxarı həddini təyin etmək üçün.
  5. DÖNDÜRMƏ HIZI: Robot bir dönüş edərkən, yəni hər iki təkər əks istiqamətdə bərabər sürətlə döndükdə, sürətinin yuxarı həddini təyin etmək üçün.
  6. KP: mütənasib sabit.
  7. KD: Törəmə sabit.
  8. ÇALIŞMA MODU: İki iş rejimi arasında seçim etmək üçün - NORMAL və ACCL. NORMAL rejimində robot, xətt mövqeyi dəyərlərinə uyğun olaraq əvvəlcədən təyin edilmiş sürətlə işləyir. ACCL rejimində, robotun MAX SPEED -i, trekin əvvəlcədən təyin edilmiş mərhələlərində ACCL SPEED ilə əvəz olunur. Bu, robotu yolun düz hissələrində sürətləndirmək üçün istifadə edilə bilər. Aşağıdakı parametrlərə yalnız ÇALIŞMA MODU ACCL olaraq təyin edildikdə əldə edilə bilər.
  9. LAP DISTANCE: Yarış yolunun ümumi uzunluğunu təyin etmək üçün.
  10. ACCL SPEED: Robotun sürətlənmə sürətini təyin etmək üçün. Bu sürət, trekin müxtəlif mərhələlərində aşağıda müəyyən edildiyi kimi MAX SPEED -in yerini tutur.
  11. YOX. MƏRHƏLƏLƏR: ACCL SPEED -in istifadə edildiyi mərhələlərin sayını təyin etmək üçün.
  12. Mərhələ 1: MAX SPEED -in ACCL SPEED ilə əvəz olunduğu mərhələnin başlanğıc və son məsafələrini təyin etmək üçün. Hər bir mərhələ üçün başlanğıc və bitiş məsafələri ayrıca təyin edilə bilər.

Addım 20: Xətt Sensorunun Kalibrlənməsi

Image
Image

Xətt sensorunun kalibrlənməsi, 16 sensordan hər birinin eşik dəyərinin təyin olunduğu bir prosesdir. Bu eşik dəyəri, müəyyən bir sensorun xəttin üzərində olub -olmamasına qərar vermək üçün istifadə olunur. 16 sensörün eşik dəyərlərini təyin etmək üçün iki üsuldan birini istifadə edirik.

MEDIAN FİLTRESİ: Bu üsulda xətt sensörleri ağ səthin üstünə qoyulur və bütün 16 sensorlar üçün əvvəlcədən müəyyən edilmiş sayda sensorlar oxunur. Bütün 16 sensorun orta dəyərləri müəyyən edilir. Xətt sensorlarını qara səthin üzərinə yerləşdirdikdən sonra eyni proses təkrarlanır. Eşik dəyəri, qara və ağ səthlərin orta dəyərlərinin ortalamasıdır.

MIN MAX: Bu üsulda, istifadəçi dayanma tələb edənə qədər sensor dəyərləri dəfələrlə oxunur. Hər bir sensorun qarşılaşdığı maksimum və minimum dəyərlər saxlanılır. Eşik dəyəri minimum və maksimum dəyərlərin ortalamasıdır.

Bu şəkildə əldə edilən eşik dəyərləri 0 ilə 1000 aralığında eşleştirilir.

Videoda MIN MAX metodu ilə xətt sensorlarının kalibrlənməsi göstərilir. Xətt sensorlarını kalibr etdikdən sonra məlumatlar şəkildəki kimi görüntülənə bilər. Aşağıdakı məlumatlar göstərilir.

  • Müvafiq xətt sensorunun xəttin üzərində olduğunu göstərən ikili 1 və xətt sensorunun xətdən kənarda olduğunu göstərən ikili 0 olan xətt mövqeyinin 16 bitlik ikili təsviri.
  • Xəttin üzərində olan sensorların ümumi sayının sayı.
  • 16 sensordan minimum, maksimum və sensor dəyərləri (xam və normallaşdırılmış), bir anda.
  • -7500 ilə +7500 aralığında xətt mövqeyi.

Minimum və maksimum xətt sensoru dəyərləri daha sonra EEPROM -da saxlanılır.

Addım 21: Test Çalışması

Image
Image

Video, robotun bir dövrəni tamamladıqdan sonra dayanması üçün proqramlaşdırıldığı bir sınaqdan ibarətdir.

Addım 22: Son Düşüncələr və Təkmilləşdirmələr

Robotlar Yarışması
Robotlar Yarışması

Bu robotu hazırlamaq üçün bir araya gətirilən avadanlıq, işləyən proqram tərəfindən tam istifadə edilmir. Proqram hissəsində çoxlu təkmilləşdirmələr edilə bilər. Qalxanın hərəkət sensoru hazırda mövqeyi və istiqaməti təyin etmək üçün istifadə edilmir. Enoderlərdən gələn odometriya məlumatları, robotun mövqeyini və istiqamətini dəqiq müəyyən etmək üçün dayaq qalxanındakı oriyentasiya məlumatları ilə birləşdirilə bilər. Bu məlumatlar daha sonra robotu birdən çox dövrə ilə öyrənməyi proqramlaşdırmaq üçün istifadə edilə bilər. Bu hissəni sınamağı və nəticələrinizi bölüşməyi məsləhət görürəm.

Uğurlar.

Robotlar Yarışması
Robotlar Yarışması

Robotlar Yarışmasında İkinci Mükafat

Tövsiyə: