Orodha ya maudhui:

IRobot Unda-Mars Usafirishaji Rover Alama I: 4 Hatua
IRobot Unda-Mars Usafirishaji Rover Alama I: 4 Hatua

Video: IRobot Unda-Mars Usafirishaji Rover Alama I: 4 Hatua

Video: IRobot Unda-Mars Usafirishaji Rover Alama I: 4 Hatua
Video: Что с ними случилось? ~ Невероятный заброшенный особняк знатной семьи 2024, Novemba
Anonim
IRobot Unda-Mars Usafirishaji Rover Alama ya I
IRobot Unda-Mars Usafirishaji Rover Alama ya I

Mafundisho haya yatakufundisha jinsi ya kuanzisha iRobot Unda kwa kutumia uandishi wa MatLab. Roboti yako itakuwa na uwezo wa kutafuta madini kwa kutofautisha maumbo, kuendesha eneo lenye mwinuko kwa kutumia sensorer za mwamba, na ina uwezo wa kudhibitiwa kwa mikono kupitia lishe ya moja kwa moja.

Hatua ya 1: Vifaa

Vifaa
Vifaa

Kwa mradi huu, utahitaji iRobot Unda, ambayo ni toleo linaloweza kupangwa la kusafisha utupu wa roboti ya Roomba. Roboti huja ikiwa na vifaa vya sensorer zote zinazohitajika kwa mradi huu, haswa sensorer za mapema, sensorer za mwamba na sensorer za "Light Bump". Utahitaji pia Raspberry Pi na kamera ya video, inayotumiwa kwa mawasiliano bila waya, programu ya moja kwa moja, na malisho ya video ya moja kwa moja. Mwishowe, utahitaji mlima uliochapishwa wa 3D kwa Raspberry Pi na kamera.

Hatua ya 2: Endeleza Usimbuaji ili Kutosheleza Matokeo Yanayotamaniwa

Tengeneza Coding ili Kutosheleza Matokeo Yanayotamaniwa
Tengeneza Coding ili Kutosheleza Matokeo Yanayotamaniwa

Mara tu ukiunganisha Roomba yako, utahitaji kuunda nambari ya Matlab ambayo itakupa matokeo unayotaka baada ya pembejeo unazotaka.

Nambari inaweza kuonekana hapa:

Mradi wa Roomba% Brenten Arnold (barnol15); Julianne Korn (qdp218); Mike Heal (mheal)% 4/11/19% Maelezo ya Tatizo: Unda rover kusaidia wanadamu wakati wa% utafutaji / makao ya mars. Njia ya suluhisho: Tafuta vitu hai (kijani kibichi) kwa kutumia bumpers% nyepesi, sensorer za mwamba na kamera kuangalia vitu vya kikaboni. Ruhusu% rover kuvinjari maeneo mabaya kupitia utumiaji wa bumpers, sensorer% ya mwamba, na sensorer za urefu wa gurudumu. Wezesha wanadamu kudhibiti rover kutoka% umbali salama na kutafuta madini kwa mikono. uchaguzi = {'MAISHA', 'ROUGH TERRAIN', 'USER CONTROL'}; % Chaguzi tatu katika menyu ya mazungumzo Kuweka = menyu (", chaguzi) ikiwa Kuweka> 0% Ikiwa chaguo lililochaguliwa uliza chaguo la uthibitisho wa mtumiaji2 = {'Ndio', 'Hapana'}% Unda safu ya seli ya" ndiyo "au" Hapana "choice Confirm = menu (['You chose"' uchaguzi {Setting} '"mode.'], uchaguzi2)% Thibitisha chaguo la kuweka mtumiaji ikiwa Thibitisha == 1 ikiwa Kuweka == 1% Angalia ikiwa mipangilio ya" MAISHA "ilichaguliwa i = 0 wakati mimi Rejesha na uhifadhi maadili ya sensorer ya mwamba katika muundo wa seli "y" l = r.getLightBumpers% Pata na uhifadhi nambari nyepesi za muundo katika muundo "f" ikiwa l.kushoto> 100% Angalia ikiwa bumper nyepesi kushoto imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 r.turnAngle (20)% Zungusha roomba digrii 20 CCW img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani wa nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wa kiwango cha bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); mwisho mwingine ikiwa l. kushotoFront> 100% Angalia iko kushoto / mbele taa ya taa imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba na uhifadhi katika img ya kutofautisha 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani wa nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wa kiwango cha bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); end elseif l.leftCenter> 100% Angalia ikiwa bumper ya kushoto / katikati imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba na uhifadhi katika img ya kutofautisha 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani wa nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wastani wa bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); end elseif l.rightCenter> 100% Angalia ikiwa bumper ya kulia / katikati imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba na uhifadhi katika img ya kutofautisha 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani wa nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wastani wa bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); end elseif l.rightFront> 100% Angalia ikiwa bumper ya kulia / mbele imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba na uhifadhi katika img ya kutofautisha 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wastani wa bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); end elseif l.right> 100% Angalia ikiwa bumper nyepesi imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 r.turnAngle (-20)% Zungusha roomba digrii 20 CW img = r.getImage% Pata picha kutoka kamera ya pai ya rasberry kwenye roomba na uhifadhi katika 'img' rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wa kiwango cha bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); mwisho mwingine ikiwa y.leftFront <1500% Angalia ikiwa sehemu ya kushoto / mbele ya roomba imezimwa mwamba r.moveDistance (-0.1, 0.05)% Sogeza roomba nyuma mita 0.1 kwa 0.05 m / s r. TurnAngle (-5)% Zungusha roomba 5 digrii CW mwingineif y.rightFront <1500% Angalia ikiwa sehemu ya kulia / mbele ya roomba imezimwa mwamba r.moveDistance (-0.1, 0.05)% Sogeza roomba nyuma mita 0.1 kwa 0.05 m / s r. TurnAngle (5)% Zungusha roomba 5 digrii CCW elseif y.kushoto <1000% Angalia ikiwa upande wa kushoto wa roomba umezimwa mwamba r.moveDistance (-0.05, 0.05)% Sogeza roomba nyuma mita 0.05 kwa 0.05 m / s r. TurnAngle (-10)% Zungusha roomba digrii 10 CW elseif y.right0% Run ikiwa kitufe kinabanwa ikiwa Endelea == 1 i = 0% Endelea kutafuta maisha mengine i = 1% Mwisho wa mode ya MAISHA mwisho mwisho mwingineif Setting == 2% Angalia ikiwa mpangilio wa "ROUGH TERRAIN" ulichaguliwa i = 0 wakati i == 0 r.setLEDDigits (num2str ('RGH'))% Onyesha 'Mbaya' kwenye Uonyesho wa LED kwa i = 1: 1000 r.setDriveVelocity (0.05)% Weka kasi ya kuendesha roomba kuwa 0.05 m / sx = r.getBumpers% Rudisha na uhifadhi maadili ya sensa ya bumper katika muundo "x" y = r.get CliffSensors% Rudisha na uhifadhi viwango vya sensorer ya mwamba katika muundo "y" ikiwa x.right == 1% Angalia ikiwa bumper ya kulia imesisitizwa r.turnAngle (10)% Zungusha roomba digrii 10 CCW elseif x.left == 1% Angalia ikiwa imesalia bumper imesisitizwa r.turnAngle (-10)% Zungusha roomba nyuzi 10 CW elseif x.front == 1% Angalia ikiwa bumper ya mbele imebanwa r.turnAngle (20)% Zungusha roomba digrii 20 CCW elseif x.rightWheelDrop == 1% Angalia ikiwa gurudumu la kulia limeshuka r.turnAngle (-20)% Zungusha roomba digrii 20 CW elseif x.leftWheelDrop == 1% Angalia gurudumu la kushoto limeshuka r.turnAngle (20)% Zungusha roomba digrii 20 CCW elseif y.leftFront < 1500% Angalia ikiwa sehemu ya kushoto ya roomba iko mbali mwamba r.moveDistance (-0.05, 0.05)% Sogeza roomba nyuma mita 0.05 kwa 0.05 m / s r. TurnAngle (-5)% Zungusha roomba digrii 5 CW elseif y.rightFront < 1500% Angalia ikiwa sehemu ya mbele ya roomba imezimwa mwamba r.moveDistance (-0.05, 0.05)% Sogeza roomba nyuma mita 0.05 kwa 0.05 m / s r. TurnAngle (5)% Zungusha roomba digrii 5 CCW elseif y. kushoto <1000 % Angalia ikiwa sehemu ya kushoto o f roomba imezimwa mwamba r.moveDistance (-0.05, 0.05)% Sogeza roomba nyuma mita 0.05 kwa 0.05 m / s r.turnAngle (-10)% Zungusha roomba digrii 10 CW elseif y.right0 ikiwa Endelea == 1 i = 0 % Endelea eneo lenye ukali lingine i = 1% Mwisho wa eneo la mwisho mbaya mwisho mwingine% Njia ya Mwongozo i = 0 r.setLEDDigits (num2str ('USER'))% Onyesha 'USER' kwenye Uonyesho wa LED d = msgbox (['Funguo za Mshale - Hoja; S - Stop Rover; ESC - Udhibiti wa Mtumiaji wa Mwisho; A - Pata Rasilimali ']); subiri (d); wakati i == 0 r.showCamera% Fungua malisho ya moja kwa moja ya kamera ya rasberry kwenye dirisha tofauti D = getkey (1)% Rudisha ufunguo uliobanwa na mtumiaji, duka thamani ya ASCII kama D tofauti ikiwa D == 30% Angalia ikiwa mshale wa "juu" una imesisitizwa r.setDriveVelocity (0.1)% Tuma roomba mbele kwa 0.2 m / s elseif D == 28% Angalia ikiwa mshale wa "kushoto" ulibanwa r.setDriveVelocity (0)% Acha roomba kusonga mbele au nyuma r.turnAngle (15), 0.05)% Zungusha roomba digrii 45 CCW kwa 0.05 m / s mwingineif D == 31% Angalia ikiwa mshale "chini" ulibanwa r.setDriveVelocity (-0.1)% Sogeza roomba nyuma kwa 0.2 m / s elseif D == 29% Angalia ikiwa mshale wa "kulia" umesisitizwa r.setDriveVelocity (0)% Acha roomba kusonga mbele au nyuma r.turnAngle (-15, 0.05)% Zungusha roomba digrii 45 CW kwa 0.05 m / s kwingine ikiwa D == 27% Angalia ikiwa kitufe cha "esc" (kutoroka) kilibonyezwa i = 1% Badilisha thamani ya kutofautisha "i" kutoka kitanzi d = msgbox ('Inatoka "Udhibiti wa Mtumiaji")% Mjulishe mtumiaji kwamba hali ya mwongozo inatoka kwa mwingineif D == 115% Angalia ikiwa kitufe cha "s" kimesisitizwa r.setDriveVelocity (0)% Acha roomba kutoka kwenda mbele au kurudi nyuma vinginevyo D == 97% Angalia ikiwa "a" imesisitizwa image = r.getImage; imwrite (picha, 'image.png') W = Ainisha [picha] K = mode (W) ikiwa K == 3 d = msgbox ('Rasilimali imepatikana')% Onyesha ikiwa rasilimali ya mstatili imegunduliwa (d); Subiri kwa mtumiaji kufunga sanduku la ujumbe "d" elseif K == 0 d = msgbox ('Sio Rasilimali: (')% Onyesha ikiwa rasilimali ya mstatili haikugundulika (d);% Subiri mtumiaji afunge sanduku la ujumbe "d" end else d = msgbox ('Not a key input' mtumiaji kufunga sanduku la ujumbe "d" mwisho mwisho mwingine d = msgbox ('Kwaheri')% Anasema kwaheri ikiwa chaguzi zimefungwa mwisho subiri (d);

Hatua ya 3: Upimaji

Upimaji
Upimaji

Mara tu nambari yako ya maandishi imeandikwa, utahitaji kupima Roomba yako. Ingawa nambari yako inaweza kuonekana kuwa sahihi, maadili yako mengi, haswa kwa rangi au sura, itahitaji kubadilishwa ili kutambua vizuri vitu ambavyo ungetaka Roomba yako itambue.

Hatua ya 4: Angalia Matokeo ya Visual

Chunguza Matokeo ya Visual
Chunguza Matokeo ya Visual
Chunguza Matokeo ya Visual
Chunguza Matokeo ya Visual

Itakuwa dhahiri sana ikiwa umefanikiwa kusanidi Roomba yako kulingana na matokeo yake ya kuona.

Matokeo ni pamoja na:

  • Kugundua Umbo: Uwezo wa Roomba kutofautisha vizuri maumbo ili kupata madini sahihi
  • Njia Mbaya za Ardhi: Huepuka miamba au maeneo yenye giza
  • Njia ya Mwongozo: Malisho ya moja kwa moja na uwezo wa kudhibiti Roomba
  • Picha: Picha za madini
  • Maisha Yapatikana !: Sanduku la maandishi la MatLab linaloashiria kuwa mmea wako umetambua maisha ya kikaboni.

Ndio mwisho wa mafunzo yetu, furahiya Rover yako mpya ya Mars Expedition!

Ilipendekeza: