INHOUDSOPGAWE:

Ruimte-assisterende Roomba: 4 stappe
Ruimte-assisterende Roomba: 4 stappe

Video: Ruimte-assisterende Roomba: 4 stappe

Video: Ruimte-assisterende Roomba: 4 stappe
Video: Detroit Lions #1 Team in NFL Free Agency? | Detroit Lions Podcast 2024, Julie
Anonim
Ruimte-assistent Roomba
Ruimte-assistent Roomba

Hierdie projek word gemaak deur gebruik te maak van die Raspberry Pi 3 aan boord van die iRobot Create Version 2. MATLAB word gebruik om die robot te programmeer om spesifieke instruksies te volg met behulp van sy sensors en kamera. Die sensors en kameras word gebruik om spesifieke take uit te voer wat 'n ruimtevaarder volg en hom/haar die geleentheid bied om met sy/haar tuisbasis te kommunikeer as iets verkeerd loop.

Stap 1: Benodigde onderdele

Benodigde onderdele
Benodigde onderdele
Benodigde onderdele
Benodigde onderdele
Benodigde onderdele
Benodigde onderdele
Benodigde onderdele
Benodigde onderdele

1. iRobot Skep weergawe 2

Die iRobot Create is die belangrikste deel van hierdie projek, aangesien dit programmeerbaar is en 'n uitstekende voorstelling kan wees vir 'n werklike rover wat ruimtevaarders volg en hulle in die toekoms help

2. Framboos Pi 3

Die Raspberry Pi was die programmeerbare program wat vir hierdie projek gebruik is. Die kode is ontwerp vir die Pi en die weergawe van die aangehegte Pi is die 3 (model B). Ander programmeerbare borde soos arduino is bruikbaar, maar arduino en die meeste ander borde benodig ander kodering as wat in 'n ander stap beskryf word

3. Framboos Pi -kameramodule

Die enigste vreemde verbinding met die Raspberry Pi wat nodig is vir hierdie projek, is die kameramodule. Die kameramodule is die integrale deel van hierdie projek, aangesien die roomba slegs take sal verrig op grond van wat dit in die kamera sien

4. MATLAB 2018a

MATLAB se tweede mees onlangse weergawe, 2018a, is gebruik vir die kodering wat by hierdie opset betrokke is. Dit is waarskynlik dat baie ander weergawes van MATLAB hiermee sal werk, aangesien die roomba -programmering al 'n rukkie bestaan

Stap 2: Lêers en kamerakonfigurasie

Lêers en kamerakonfigurasie
Lêers en kamerakonfigurasie

1. Raspberry Pi en kamera verbindings met die roomba

  • Die Pi kan direk met die iRobot verbind word met 'n mikro -USB. Dit is al wat dit nodig het om gereed te wees om te gebruik. Dit word egter aanbeveel dat dit veilig op die roomba geplaas word, soos op die prente tot dusver op die foto's getoon is.
  • Die kamera het 'n direkte verbinding met die Raspberry Pi en dit word sterk aanbeveel dat iets gekoop of gemaak word om die kamera regop te hou. Daar is geen regte punt vir die kamera as dit nie vasgehou kan word om te wys wat die kamerba sien nie.

2. Lêers

  • Nadat u alles opgestel en gekoppel het, moet u seker maak dat die robot herstel en gereed is deur die knoppies "Spot" en "Dock" 10 sekondes bymekaar te hou.
  • Dit is waar MATLAB eers nodig is. Die lêers vir die roomba moet eers geïnstalleer word, en al wat nodig is om hierdie lêers uit te voer, is die kode wat op hierdie skakel verskaf word:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Stap 3: Aanvanklike Roomba -toetsing

Daar is baie aanvanklike kontrole wat op die roomba uitgevoer moet word om seker te maak dat dit werk.

1. Maak seker dat u aan dieselfde WiFi -netwerk as die roomba gekoppel is. Sonder dit sal u nooit via MATLAB konnekteer nie.

2. Vind uit na watter nommer u roomba toegewys is, sodat u spesifiek kan skakel met die roomba wat u gekies het. As u roomba se nommer byvoorbeeld 30 is, kan u daaraan koppel deur roomba (30) in die opdragvenster in MATLAB in te tik.

3. Die roomba kan beheer word deur strukture in MATLAB. As u byvoorbeeld u kode vir roomba (30) op die veranderlike 'r' stel, kan die robot vorentoe geskuif word met die opdrag r.moveDistance (0.2, 0.1).

4. Daar is baie verskillende opdragte wat aan die roomba gekommunikeer kan word, en dit kan gesien word deur 'doc roomba' in die opdragvenster in te tik.

5. Die sensors vir lig-, stamp- en kranslesings kan almal gelees word met behulp van die opdragte in 'doc roomba', maar 'n manier om 'n konstante, netjiese spyskaart te hê om die sensordata te sien, kan met behulp van 'r.testSensors' gesien word '.

6. Nadat u dit alles getoets het, kan u die beeldversamelingsagteware van die robot gebruik om foto's wat geneem is, te lees en te sien. Die basiese kode hiervoor is img = r.getImage en imshow (img);.

7. Die RGB -waardes van die prent kan gevind word met die kodes red_mean = mean (gemiddelde (img (:,:, 1)));

green_mean = gemiddelde (gemiddelde (img (:,:, 2))); en blue_mean = gemiddelde (gemiddelde (img (:,:, 3)));.

Stap 4: Voorbeeld MATLAB -kode

Voorbeeld MATLAB -kode
Voorbeeld MATLAB -kode

Op hierdie punt is u nou gereed om die sensors en sagteware vir die neem van foto's te gebruik om u eie draai op 'n mens-ondersteunende prototipe Mars Rover te skep. Ons voorbeeld is om die ruimtevaarder te volg deur die kleur wit op te spoor en daarheen te beweeg. Die robot sal piep as die sensors hoë waardes lees, sodat die ruimtevaarder die robot kan herstel as hy vas is, of dit kan optel en terugstel as hy op 'n krans vassteek. Dit lees egter slegs hierdie foute solank dit wit is. Sonder om die kleur wit te sien, gaan die robot in die foutmodus. Dit is geprogrammeer om twee verskillende soorte e -posse terug te stuur na die tuisbasis, afhangende van wat dit sien. As dit die velkleur van die ruimtevaarder sien, is dit natuurlik nie goed nie, so dit sal die tuisbasis waarsku as die ruimtevaarder vel vertoon met 'n pakpak. Die ander boodskap word voorberei as die ruimtevaarder eenvoudig uit die oog verdwyn. As daar geen wit of velkleur vir die kameras verskyn nie, draai die robot om en stuur 'n ander, maar ander e -pos. Die beelde waar die roomba die ruimtevaarder nie kan sien nie, word saam met die boodskap in die e -posse gestuur. Die kode vir ons projek word hieronder getoon:

vir i = 1:.1: 3 img = r.getImage; beeld (img) red_mean = gemiddelde (gemiddelde (img (:,:, 1))); green_mean = gemiddelde (gemiddelde (img (:,:, 2))); blue_mean = gemiddelde (gemiddelde (img (:,:, 3)))); as red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || stamp.links> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || krans.linksVoor <10 || cliff.rightFront <10 || cliff.right700 || lig.linksVoor> 700 || lig.sentrum> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop anders vir i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end if green_mean <35 && blue_mean <35 %velkleur vertoon (moet aangepas word volgens astronaut se velkleur) r.beep (); r.biep (); r.biep (); mail = '[email protected]'; %stuur e -pos met die teken dat die pak af is psswd = 'yeah'; host = 'smtp.gmail.com'; poort = '465'; emailto = '[email protected]'; m_subject = 'onderwerp'; m_text = 'toets'; setpref ('Internet', 'E_mail', pos); setpref ('Internet', 'SMTP_Server', gasheer); setpref ('Internet', 'SMTP_Username', pos); setpref ('Internet', 'SMTP_Password', psswd); rekwisiete = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pos); props.setProperty ('mail.smtp.host', gasheer); props.setProperty ('mail.smtp.port', poort); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', poort); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'The astronauts uniform is off!', afb); eindig as red_mean 135 || groen_middel 135 || blue_mean 135 vir j = 1: 2 %as wit nie deur die robot gevind kan word nie r.turnAngle (360) mail = '[email protected]'; psswd = 'ja'; host = 'smtp.gmail.com'; poort = '465'; emailto = '[email protected]'; m_subject = 'onderwerp'; m_text = 'toets'; setpref ('Internet', 'E_mail', pos); setpref ('Internet', 'SMTP_Server', gasheer); setpref ('Internet', 'SMTP_Username', pos); setpref ('Internet', 'SMTP_Password', psswd); rekwisiete = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pos); props.setProperty ('mail.smtp.host', gasheer); props.setProperty ('mail.smtp.port', poort); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', poort); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'Die ruimtevaarder kan nie gevind word nie!', img); r.stop end end end

Dit is duidelik rommelig hier, maar dit moet uitgehaal word sodra dit gekopieer is. Wagwoorde en e -posse hiervoor moet natuurlik verskaf word deur diegene wat hierdie projek doen.

Ons voorbeeld is egter net een van die vele maniere waarop u met hierdie robot kan mors, sodat dit by almal pas. Daar is baie verskillende dinge wat u moet doen, wat u by uself kan pas.

Aanbeveel: