Sisällysluettelo:

Rpibot - Tietoja robotiikan oppimisesta: 9 vaihetta
Rpibot - Tietoja robotiikan oppimisesta: 9 vaihetta

Video: Rpibot - Tietoja robotiikan oppimisesta: 9 vaihetta

Video: Rpibot - Tietoja robotiikan oppimisesta: 9 vaihetta
Video: Korkeakoulujen ja tiedelaitosten johdon seminaari 30.11.2021- tallenne 2024, Heinäkuu
Anonim
Rpibot - Tietoja robotiikan oppimisesta
Rpibot - Tietoja robotiikan oppimisesta

Olen sulautetun ohjelmiston insinööri saksalaisessa autoyrityksessä. Aloitin tämän projektin sulautettujen järjestelmien oppimisalustana. Projekti peruutettiin aikaisin, mutta nautin siitä niin paljon, että jatkoin vapaa -ajallani. Tämä on tulos…

Minulla oli seuraavat vaatimukset:

  • Yksinkertainen laitteisto (painopiste on ohjelmistossa)
  • Halvat laitteet (noin 100 €)
  • Laajennettavissa (jotkut vaihtoehdot ovat jo osa kuvausta)
  • Syöttöjännite kaikille komponenteille yhdestä 5 V: n lähteestä (powerbank)

Oppimisen lisäksi ei ollut oikeastaan mitään tavoitetta. Alusta voidaan käyttää oppimiseen, valvontaan, robottikilpailuihin,…

Se ei ole aloittelijan opetusohjelma. Tarvitset perustiedot:

  • Ohjelmointi (Python)
  • Peruselektroniikka (moduulien yhdistämiseen oikealla jännitteellä)
  • Perusohjausteoria (PID)

Lopulta kohtaat todennäköisesti ongelmia kuten minä. Uteliaisuudella ja kestävyydellä lähdet läpi projektin ja ratkaiset haasteet. Koodini on mahdollisimman yksinkertainen ja kriittiset koodirivit kommentoidaan vihjeiden antamiseksi.

Koko lähdekoodi ja tiedostot ovat saatavilla täältä:

Tarvikkeet:

Mekaniikka

  • 1x vanerilevy (A4 -koko, 4 mm paksu)
  • 3x M4 x 80 Ruuvi ja mutteri
  • 2x Hammaspyörämoottorit toisiolähtöakselilla anturille. Pyörät.
  • 1x vapaa pyörä

1x panorointi- ja kallistuskamerakiinnitys (valinnainen)

Elektroniikka

  • 1x Raspberry Pi Zero otsikon ja kameran kanssa
  • 1x PCA 9685 servo -ohjaus
  • 2x optinen anturipyörä ja piiri
  • 1x naarashyppyjohdot
  • 1x USB -tehopankki
  • 1x DRV8833 -kaksimoottorinen ohjain
  • 2x mikroservot SG90 kameran panorointiin ja kallistukseen (valinnainen)
  • 1x MPU9250 IMU (valinnainen)
  • 1x HC-SR04-ultraääni-etäisyysanturi (valinnainen)
  • 1x rei'itetty levy ja juotoslanka, otsikot,…

Vaihe 1: Rakenna runko

Rakenna runko
Rakenna runko
Rakenna runko
Rakenna runko
Rakenna runko
Rakenna runko

En ole hyvä mekaanikko. Myös hankkeiden tavoite ei ole viettää liikaa aikaa alustassa. Määritin joka tapauksessa seuraavat vaatimukset:

  • Halvat materiaalit
  • Nopea kokoaminen ja purkaminen
  • Laajennettavissa (esim. Tilaa lisätyille antureille)
  • Kevyet materiaalit säästävät elektroniikan energiaa

Helppo ja halpa runko voidaan valmistaa vanerista. Se on helppo työstää vapaasahalla ja käsiporalla. Voit liimata pieniä puisia osia antureita ja moottoreita varten.

Ajattele viallisten osien vaihtamista tai sähköistä virheenkorjausta. Pääosat tulee kiinnittää ruuveilla vaihdettaviksi. Kuuma liimapistooli voi olla yksinkertainen, mutta luultavasti ei paras tapa rakentaa alusta … Tarvitsin paljon aikaa miettiäkseni helppoa konseptia osien purkamiseksi helposti. 3D -tulostus on hyvä vaihtoehto, mutta se voi olla melko kallista tai aikaa vievää.

Vapaa pyörä on lopulta erittäin kevyt ja helppo asentaa. Vaihtoehdot olivat kaikki raskaita tai täynnä kitkaa (kokeilin pari niistä ennen kuin löysin lopullisen).

Pyörän ominaisuudet (ohjelmistolaskelmia varten)

Ympärysmitta: 21, 5 cm Pulssit: 20 pulssia/kierros Resoluutio: 1, 075 cm (lopuksi 1 pulssi on noin 1 cm, mikä on helppoa ohjelmistolaskelmille)

Vaihe 2: Elektroniikka ja johdotus

Elektroniikka ja johdotus
Elektroniikka ja johdotus
Elektroniikka ja johdotus
Elektroniikka ja johdotus
Elektroniikka ja johdotus
Elektroniikka ja johdotus

Projekti käyttää erilaisia moduuleja kaavion mukaisesti.

Raspberry Pi Zero on pääohjain. Se lukee antureita ja ohjaa moottoreita PWM -signaalilla. Se on yhdistetty etätietokoneeseen wifi -yhteyden kautta.

DRV8833 on kaksimoottorinen H-silta. Se tarjoaa riittävän virran moottoreille (mitä Raspberry Pi ei voi tehdä, koska lähdöt voivat antaa vain osan mA: sta).

Optinen kooderi antaa neliön muotoisen signaalin aina, kun valo kulkee anturipyörien läpi. Käytämme Raspberry Pi: n HW -keskeytyksiä saadaksemme tiedot joka kerta, kun signaali vaihtuu.

Pca9695 on servo -ohjauskortti. Se kommunikoi I2C -sarjaväylän kautta. Tämä kortti tarjoaa PWM -signaaleja ja syöttöjännitettä, jotka ohjaavat nokan panorointia ja kallistusta.

MPU9265 on 3-akselinen kiihtyvyys, 3-akselinen kulman pyörimisnopeus ja 3-akselinen magneettivuon anturi. Käytämme sitä pääasiassa kompassin suunnan saamiseen.

Kaikki moduulit on kytketty yhteen hyppyjohdolla. Leipälauta toimii lähettäjänä ja tarjoaa syöttöjännitteet (5 V ja 3,3 V) ja maadoitukset. Kaikki liitännät on kuvattu kytkentätaulukossa (katso liite). 5 V: n liittäminen 3,3 V: n tuloon tuhoaa todennäköisesti sirusi. Ole varovainen ja tarkista kaikki johdot kahdesti ennen toimitusta (tässä on erityisesti otettava huomioon anturi). Ennen kuin liität kaikki levyt, sinun on mitattava lähetyslevyn pääjännitteet yleismittarilla. Moduulit kiinnitettiin nailonruuveilla runkoon. Myös täällä olin iloinen, että sain ne korjattua, mutta myös irrotettavia vian sattuessa.

Ainoa juotos oli lopulta moottorit ja leipälauta ja otsikot. Ollakseni rehellinen, pidän hyppyjohdoista, mutta ne voivat johtaa löysään yhteyteen. Joissakin tilanteissa jotkin ohjelmiston seurannat voivat auttaa sinua analysoimaan yhteyksiä.

Vaihe 3: Ohjelmiston infrastruktuuri

Ohjelmistojen infrastruktuuri
Ohjelmistojen infrastruktuuri
Ohjelmistojen infrastruktuuri
Ohjelmistojen infrastruktuuri

Mekaniikan saavuttamisen jälkeen perustamme ohjelmistoinfrastruktuurin, joka tarjoaa mukavat kehitysolosuhteet.

Git

Tämä on ilmainen ja avoimen lähdekoodin versionhallintajärjestelmä. Sitä käytetään suurten projektien hallintaan Linuxina, mutta sitä voidaan helposti käyttää myös pieniin projekteihin (katso Github ja Bitbucket).

Projektimuutoksia voidaan seurata paikallisesti ja siirtää myös etäpalvelimelle jakamaan ohjelmistoja yhteisön kanssa.

Tärkeimmät käytetyt komennot ovat:

git -klooni https://github.com/makerobotics/RPIbot.git [Hae lähdekoodi ja git -määritys]

git pull origin master [saat uusimmat tiedot etävarastosta]

git status [saat paikallisen arkiston tilan. Onko tiedostoja muutettu?] Git log [hanki luettelo sitoumuksista] git add. [lisää kaikki muutetut tiedostot vaiheeseen, joka on otettava huomioon seuraavaa sitoutumista varten] git sitoutua -m "kommentoi sitoutumista" [tee muutokset paikalliseen arkistoon] git push alkuperän master [työnnä kaikki sitoumukset etärekisteriin]

Kirjaaminen

Python tarjoaa joitakin sisäänrakennettuja lokitoimintoja. Ohjelmiston rakenteen tulisi määritellä jo kaikki lokikehykset ennen jatkokehityksen aloittamista.

Loggeri voidaan konfiguroida kirjautumaan määritetyssä muodossa päätteeseen tai lokitiedostoon. Esimerkissämme loggeri on verkkopalvelinluokan konfiguroima, mutta voimme tehdä sen myös itse. Tässä asetamme vain lokitason DEBUG:

logger = logging.getLogger (_ nimi_)

logger.setLevel (logging. DEBUG)

Mittaus ja piirtäminen

Signaalien analysoimiseksi ajan mittaan on parasta piirtää ne kaavioon. Koska Raspberry Pi -laitteessa on vain konsoliterminaali, jäljitämme tiedot puolipisteellä erotetussa csv -tiedostossa ja piirtämme sen etätietokoneesta.

Puolipisteellä erotettu jäljitystiedosto luodaan python -pääkoodimme avulla, ja siinä on oltava tällaiset otsikot:

aikaleima; yawCorr; anturiR; I_L; odoDistance; ax; encoderL; I_R; yaw; eSpeedR; eSpeedL; pwmL; speedL; CycleTimeControl; wz; pwmR; speedR; Iyaw; hdg; m_y; m_x; eYaw; cycleT

1603466959.65;0;0;25;0.0;-0.02685546875;0;25;0;25;25;52;0.0;23;0.221252441406;16;0.0;0;252.069366413;-5.19555664062;-16.0563964844;0;6; 1603466959.71;0;0;50;0.0;0.29150390625;0;50;0;25;25;55;0.0;57;-8.53729248047;53;0.0;0;253.562118111;-5.04602050781;-17.1031494141;0;6; 1603466959.76;0;-1;75;0.0;-0.188232421875;1;75;2;25;25;57;0;52;-24.1851806641;55;0;0;251.433794171;-5.64416503906;-16.8040771484;2;7;

Ensimmäinen sarake sisältää aikaleiman. Seuraavat sarakkeet ovat ilmaisia. Piirtoskripti kutsutaan luettelona piirrettävistä sarakkeista:

kauko@pc: ~/python rpibot_plotter -f trace.csv -p speedL, speedR, pwmL, pwmR

Kaavio on käytettävissä työkalukansiossa:

Piirturi käyttää mathplotlibia Pythonissa. Sinun on kopioitava se tietokoneellesi.

Mukavuuden lisäämiseksi python -skriptiä kutsutaan bash -skriptillä (plot.sh), jota käytetään Raspberry Pi -jälkitiedoston kopioimiseen etätietokoneeseen ja soittamiseen plotterille signaalin valinnalla. Bash -skripti "plot.sh" kysyy jos tiedosto on kopioitava. Tämä oli kätevämpää sen sijaan, että kopioisin käsin joka kerta. "sshpass" käytetään tiedoston kopioimiseen Raspberry Pi: stä etätietokoneeseen scp: n kautta. Se pystyy kopioimaan tiedoston kysymättä salasanaa (se välitetään parametrina).

Lopuksi avataan ikkuna, jossa on juoni kuvan mukaisesti.

Etäviestintä

Raspberry Pi: n kehitysrajapinta on SSH. Tiedostoja voidaan muokata suoraan kohteeseen tai kopioida scp: llä.

Robotin hallitsemiseksi Pi: llä on käynnissä verkkopalvelin, joka tarjoaa hallinnan Websocketsin kautta. Tämä käyttöliittymä kuvataan seuraavassa vaiheessa.

Asenna Raspberry Pi

Lähdekoodin (doc_) -kansiossa (setup_rpi.txt) on tiedosto, joka kuvaa Raspberry Pi: n asennusta. Selityksiä ei ole paljon, mutta monia hyödyllisiä komentoja ja linkkejä.

Vaihe 4: Käyttöliittymä

Käyttöliittymä
Käyttöliittymä

Käytämme kevyttä Tornado -verkkopalvelinta käyttöliittymän isännöintiin. Se on Python -moduuli, jota kutsumme käynnistäessämme robotin ohjausohjelmiston.

Ohjelmistoarkkitehtuuri

Käyttöliittymä on rakennettu seuraavien tiedostojen avulla: gui.html [Verkkosivun säätimien ja asettelun kuvaaminen] gui.js [Sisältää JavaScript -koodin, joka käsittelee ohjaimet ja avaa verkkoyhteyden robottiin] gui.css [Sisältää html -ohjaimet. Säätimien asennot määritellään tässä]

Websocket -viestintä

Käyttöliittymä ei ole tyylikkäin, mutta se tekee työnsä. Keskityin tässä tekniikoihin, jotka olivat minulle uusia, kuten Websockets.

Web -sivusto kommunikoi robottiverkkopalvelimen kanssa Websocketsin avulla. Tämä on kaksisuuntainen viestintäkanava, joka pysyy auki yhteyden muodostamisen yhteydessä. Lähetämme robotin komennot Websocketin kautta Raspberry Pi: hen ja saamme tiedot (nopeus, sijainti, kameran virta) takaisin näytettäväksi.

Käyttöliittymän asettelu

Käyttöliittymässä on manuaalinen komentojen syöttö. Tätä käytettiin alussa lähetettäessä komentoja robotille. Valintaruutu kytkee kameran virran päälle ja pois päältä. Kaksi liukusäädintä ohjaavat kameran panorointia ja kallistusta. Käyttöliittymän oikea yläosa ohjaa robottien liikettä. Voit hallita nopeutta ja tavoiteetäisyyttä. Telemetrian perustiedot näkyvät robotin piirustuksessa.

Vaihe 5: Robotialustan ohjelmointi

Robotialustan ohjelmointi
Robotialustan ohjelmointi
Robotialustan ohjelmointi
Robotialustan ohjelmointi
Robotialustan ohjelmointi
Robotialustan ohjelmointi

Tämä osa oli hankkeen päätavoite. Asensin paljon ohjelmistoja uudelleen esitellessäni uuden alustan tasavirtamoottoreilla ja käytin Pythonia ohjelmointikielenä eri syistä:

  • Se on Raspberry Pi -kieli
  • Se on korkean tason kieli, jossa on monia sisäänrakennettuja ominaisuuksia ja laajennuksia
  • Se on olio -suuntautunut, mutta sitä voidaan käyttää myös peräkkäiseen ohjelmointiin
  • Kokoonpanoa tai työkaluketjua ei tarvita. Muokkaa koodia ja suorita se.

Tärkein ohjelmistoarkkitehtuuri

Ohjelmisto on objektipohjainen, jaettu muutamaan kohteeseen. Ajatukseni oli jakaa koodi kolmeen toiminnalliseen lohkoon:

Sense Think Actuate

Sense.py

Pääanturin hankinta ja käsittely. Tiedot tallennetaan sanakirjaan käytettäväksi seuraavassa vaiheessa.

Control.py

Toimilaitteiden alaluokka ohjaa moottoreita ja servoja jonkin verran abstraktion jälkeen. Pääohjausobjekti käsittelee moottorin korkean tason komentoja ja myös ohjausalgoritmeja (PID).

rpibot.py

Tämä pääobjekti on Tornado -verkkopalvelimen hallinta ja aisti- ja ohjausluokkien luominen eri säikeissä.

Jokainen moduuli voidaan suorittaa yksin tai osana koko projektia. Voit vain havaita ja tulostaa anturitiedot tarkistaaksesi, että anturit on kytketty oikein ja antavat oikeat tiedot.

PID -säätö

Ensimmäinen tehtävä on selvittää, mitä haluamme hallita. Aloitin yrittämällä hallita asentoa, joka oli hyvin monimutkainen eikä auttanut paljon.

Lopuksi haluamme hallita jokaisen pyörän nopeuden ja myös robotin suunnan. Tätä varten meidän on ryhdyttävä kahteen ohjauslogiikkaan.

Monimutkaisuuden lisäämiseksi askel askeleelta robottia tulee ohjata:

avoin silmukka (jatkuvalla teholla)

pwm = K.

lisää sitten suljetun silmukan algoritmi

pwm = Kp.speedError+Ki. Integration (speedError)

ja lisää lopuksi suunnanohjaus viimeiseksi vaiheeksi.

Nopeuden säädössä käytin "PI" -säädintä ja "P" vain kääntöä. Asetin parametrit manuaalisesti kokeilemalla. Tässä voisi käyttää paljon parempia parametreja. Tavoitteeni oli vain suora viiva ja melkein sain sen. Tein ohjelmistoon käyttöliittymän kirjoittaakseni muuttujia käyttöliittymän avulla. Parametrin Kp asettaminen arvoon 1.0 edellyttää seuraavaa komentoa käyttöliittymässä:

SET; Kp; 1.0

Voisin asettaa P -parametrin juuri niin pieneksi, että vältytään ylikuumenemiselta. Jäljellä oleva virhe korjataan I -parametrilla (integroitu virhe)

Minun oli vaikea selvittää, miten molemmat säätimet voidaan kaskadoida. Ratkaisu on yksinkertainen, mutta kokeilin monia muita tapoja ennen… Joten lopulta muutin pyörien nopeustavoitteen kääntyäkseen suuntaan tai toiseen. Nopeudensäätimen lähdön muuttaminen suoraan oli virhe, kun nopeudensäädin yritti poistaa tämän häiriön.

Käytetty ohjauskaavio on liitteenä. Se näyttää vain robotin ohjaimen vasemman puolen.

Vaihe 6: Anturin kalibroinnit

Anturin kalibroinnit
Anturin kalibroinnit
Anturin kalibroinnit
Anturin kalibroinnit
Anturin kalibroinnit
Anturin kalibroinnit

Ensimmäinen asia, joka on otettava huomioon, on, että koko IMU: n on toimittava kunnolla. Tilasin 3 osaa ja lähetin ne takaisin, kunnes minulla oli täysi toimiva anturi. Jokaisessa edellisessä anturissa jotkin anturin osat eivät toimineet kunnolla tai eivät ollenkaan. Testasin perusnäytteitä perusskripteillä ennen kuin asennin sen robottiin.

IMU -anturisignaalit on kalibroitava ennen käyttöä. Jotkut anturisignaalit riippuvat asennuskulmasta ja asennosta.

Kiihtyvyys- ja pyörimisnopeuden kalibroinnit

Helpoin kalibrointi on pitkittäiskiihtyvyydelle (A_x). Paikalla pitäisi olla noin 0 m/s². Jos kierrät anturia oikein, voit mitata painovoiman (noin 9,8 m/s²). Kalibroidaksesi a_x, sinun on vain asennettava se oikein ja määritettävä sitten siirtymä saadaksesi 0 m/s² pysähtyneenä. Nyt A_x on kalibroitu. Voit saada pyörimisnopeuden siirtymät samalla tavalla pysähtyneenä.

Kompassin magnetometrin kalibrointi

Monimutkaisempi kalibrointi on tarpeen magneettikenttäantureille. Käytämme m_x ja m_y saadaksemme magneettikentän vaakasuoralle tasolle. M_x: n ja m_y: n saaminen antaa meille mahdollisuuden laskea kompassisuunta.

Yksinkertaista tarkoitustamme varten kalibroimme vain kovan raudan poikkeaman. Tämä on tehtävä, kun anturi on lopullisessa asennossa, koska se riippuu magneettikentän häiriöistä.

Tallennamme m_x ja m_y samalla kun käännämme robottia z-akselin ympäri. Piirrämme m_x vs m_y XY -kaavioon. Tuloksena on ellipsis, kuten kuvassa. Ellipsi on keskitettävä alkuperään. Tässä tarkastellaan m_x: n ja m_y: n enimmäis- ja vähimmäisarvoja, jotta saadaan offsetit molempiin suuntiin. Lopuksi tarkistamme kalibroinnin ja näemme, että ellipsi on nyt keskitetty.

Pehmeän raudan kalibrointi tarkoittaisi sitä, että muutamme kuvan ellipsistä ympyräksi. Tämä voidaan tehdä lisäämällä tekijä kuhunkin anturin arvoon.

Testirutiini voidaan nyt koodata uudelleenkalibroimiseksi tai ainakin sen tarkistamiseksi, että anturit ovat edelleen kalibroituja.

Kompassin otsikko

Magnetometrin tietoja käytetään nyt kompassin suunnan laskemiseen. Tätä varten meidän on muunnettava m_x- ja m_y -signaalit kulmaksi. Python tarjoaa suoraan math.atan2 -funktion, jolla on tämä tavoite. Koko laskutoimitus on määritetty tiedostossa mpu9250_i2c.py ("calcHeading (mx, my, mz)").

Vaihe 7: Vaihtoehtoiset mallit

Vaihtoehtoiset mallit
Vaihtoehtoiset mallit
Vaihtoehtoiset mallit
Vaihtoehtoiset mallit
Vaihtoehtoiset mallit
Vaihtoehtoiset mallit

Projekti vei paljon aikaa, koska suunnittelu oli täysin avoin. Tein jokaiselle osalle prototyyppitoteutuksen ja koin järjestelmän rajat.

Monimutkaisin aihe oli pyöränkooderi. Testasin kolmea eri vaihtoehtoa ennen kuin löysin tällä hetkellä käytetyn optisen kooderin. Uskon, että keskeytetyt ratkaisut ovat myös erittäin mielenkiintoisia tällaisessa projektissa. Se koskee osia, joista olen oppinut eniten.

Jatkuvan pyörimisen servo kytketty pca 9695: een

Välttääkseni DC-moottorin ylimääräisen H-sillan, aloitin ensin jatkuvalla pyörimispalvelulla. Näitä ajoi jo olemassa oleva pca 9695 -servo -ohjain. Kaikki propulsiomekaniikka ja vastaava elektroniikka olivat paljon yksinkertaisempia. Tällä suunnittelulla oli kaksi haittaa:

  • Servojen huono ohjausalue.
  • Puuttuva kooderin säilytyspaikka

Servot alkavat liikkua 50% pwm ja ovat täydellä nopeudella noin 55%. Tämä on erittäin huono säätöalue.

Ilman enkooderin pitoa oli hyvin vaikeaa löytää käyttövalmis anturi. Testasin kolmea erilaista heijastuskooderia, jotka asennettiin runkoon. Teipasin itse tehdyn anturipyörän pyörän ulkopuolelle mustavalkoisilla osilla. Käytin QTR-1RC-antureita, jotka tarvitsevat paljon signaalinkäsittelyä oikean signaalin saamiseksi. Raspberry Pi ei pystynyt suorittamaan tällaista reaaliaikaista käsittelyä. Joten päätin lisätä NodeMCU D1 minin reaaliaikaiseksi ohjaimeksi robottiin. Sarjan UART yhdisti sen vadelma Pi: hen käsiteltyjen anturitietojen toimittamiseksi. NodeMCU hallitsi myös HC-SR04-anturia. Mekaniikka oli vaikeaa eikä kovin kestävää, sarjalinja sai melua I2C-linjalta ja moottoreilta, joten lopulta rakensin rungon toisen version yksinkertaisilla hammaspyörillä varustetuilla DC-moottoreilla H-silta. Näissä moottoreissa on toissijainen lähtöakseli optisen anturin sijoittamiseksi.

Vaihe 8: Kuvankäsittely

Kuvankäsittely
Kuvankäsittely
Kuvankäsittely
Kuvankäsittely
Kuvankäsittely
Kuvankäsittely
Kuvankäsittely
Kuvankäsittely

Autonomisen ajamisen parantamiseksi voimme tehdä kuvankäsittelyä.

Opencv -kirjasto on viite siihen. Python voi käyttää sitä esteiden havaitsemisen nopeaan käyttöönottoon.

Otamme kuvan ja käytämme joitain kuvankäsittelytehtäviä:

Ensimmäiset testit tehtiin Canny- ja Sobel -muunnoksilla. Canny voi olla hyvä ehdokas, mutta ei tarpeeksi järkevä. Sobel on liian järkevä (liikaa esineitä havaittu).

Lopuksi tein oman suodattimen sekoittamaan kaikki vaaka- ja pystysuuntaiset kaltevuudet (havaitsemaan huonekalut):

  • Muunna värikuva harmaan tason kuvaksi
  • Häivytä kuva poistaaksesi pienen kohinan
  • Rajaa kuva mustavalkoiseksi kuvaksi
  • Nyt havaitsemme vaaka- ja pystysuuntaiset kaltevuudet kohteiden tunnistamiseksi seininä ja huonekaluina
  • Suodatamme vain suuret jäljellä olevat ääriviivat (katso värilliset ääriviivat kuvassa)

Nyt voimme käyttää tätä uutta tietoa esteiden havaitsemiseen …

Vaihe 9: Seuraavat vaiheet…

Seuraavat vaiheet…
Seuraavat vaiheet…
Seuraavat vaiheet…
Seuraavat vaiheet…

Nyt meillä on yksinkertainen robottialusta, jossa on antureita, toimilaitteita ja kamera. Tavoitteeni on liikkua itsenäisesti ja palata asemalle lisäämättä muita antureita. Tätä varten tarvitsen seuraavat vaiheet:

  • Kääntymisen ja magneettisen suunnan signaalien fuusio
  • Kameran kuvankäsittely (vain alhainen suoritin käytettävissä)
  • Törmäyksen tunnistus (ultraäänietäisyys ja kamera)
  • Kartan rakentaminen tai suunta

Mene ja luo omat haasteet tai tavoitteet…

Suositeltava: