Turinys:

„Raspberry Pi“lazerinis skaitytuvas: 9 žingsniai (su nuotraukomis)
„Raspberry Pi“lazerinis skaitytuvas: 9 žingsniai (su nuotraukomis)

Video: „Raspberry Pi“lazerinis skaitytuvas: 9 žingsniai (su nuotraukomis)

Video: „Raspberry Pi“lazerinis skaitytuvas: 9 žingsniai (su nuotraukomis)
Video: Leap Motion SDK 2024, Liepa
Anonim
Image
Image
Raspberry Pi lazerinis skaitytuvas
Raspberry Pi lazerinis skaitytuvas

Lazerinis skaitytuvas yra „Raspberry Pi“įterptosios sistemos įrenginys, galintis skaitmeninti objektus į.obj tinklelio failus, kad juos būtų galima atkurti naudojant 3D spausdinimą. Prietaisas tai daro naudodamas linijinį lazerį ir integruotą „PiCam“kompiuterio vizijai atlikti. Lazeris yra 45 laipsnių kampu nuo lazerio ir projektuoja ryškiai raudoną liniją ant vienos vertikalios objekto dalies. Fotoaparatas nustato pjūvio atstumą nuo centro, kad gautų tinklelio pjūvį. Objektas sukamas ant besisukančio dėklo ir procesas kartojamas tol, kol nuskenuojamas visas objektas. Sukurtas.obj failas galiausiai siunčiamas el. Paštu vartotojui, todėl sistema yra visiškai atskira ir įterpta.

Šioje instrukcijoje aprašoma, kaip buvo sukurtas įrenginys, kai kurie rezultatai ir būsimi veiksmai.

1 žingsnis: įkvėpimas

Įkvėpimas
Įkvėpimas
Įkvėpimas
Įkvėpimas

Kaip aistringas kūrėjas, jau keletą metų užsiimu 3D spausdinimu ir solidžiu modeliavimu. Dirbau su daugybe įvairių prototipų kūrimo įrankių - nuo CNC maršrutizatorių iki lazerinių pjaustytuvų iki 3D spausdintuvų. Vienas įrenginys, kurį mano vietinė kūrėjų erdvė dar neturi nusipirkti, buvo 3D skaitytuvas - ir galiu pasakyti, kodėl.

Pigesni (keli šimtai dolerių) buvo nepatikimi, reikalavo tobulų sąlygų ir vis tiek davė gana apleistus rezultatus. Brangiosios buvo … na, brangios, kainavo iki kelių tūkstančių dolerių, todėl daugeliu atvejų jos funkcija nebuvo verta. Be to, dažniau pasirenku atlikti matavimus ir suprojektuoti modelį nuo nulio, nei susidoroti su nuskaitymo metu sukurtu paviršiaus tinkleliu.

Dėl šios priežasties norėjau sukurti biudžetinį atskirą skaitytuvą, kad pamatyčiau, kaip gerai galiu nuskaityti objektą, naudodamas lentynos komponentus.

Atlikęs keletą tyrimų, pamačiau, kad daugeliui 3D skaitytuvų buvo naudojama besisukanti platforma ir įvairūs jutikliai atstumui nuo centro matuoti, kad būtų sukurtas sukimosi modelis. Daugelis jų naudojo dvigubas kameras, panašias į „Kinect“. Galiausiai atsitiktinai susidūriau su „Yscanner“- mažos skiriamosios gebos skaitytuvu, naudojančiu lazerį. Žvelgiant į paprastumą ir įgyvendinamumą, ši lazerio technika, kai lazeris yra nušviestas kameros atžvilgiu, kad būtų galima išmatuoti atstumą nuo centro, atrodė kaip aiškus kelias į priekį.

2 žingsnis: įrankiai ir dalys

Dalys:

  • „Raspberry Pi“35,00 USD
  • „Raspberry Pi“fotoaparatas V2 30,00 USD
  • Šviesos diodai, rezistoriai ir laidai
  • 3D spausdinimo siūlai
  • 12x12x0,125 medienos lakštų
  • M3 aparatinė įranga
  • Žingsninis variklis - 14 USD
  • Linijos lazeris - 8 USD
  • „LN298“žingsninių variklių tvarkyklės - 2,65 USD
  • Metalinis mygtukas - 5 USD

Įrankiai:

  • Lituoklis
  • Lazerinis pjoviklis
  • 3D spausdintuvas
  • Atsuktuvas
  • Replės

3 žingsnis: aukšto lygio dizainas

Aukšto lygio dizainas
Aukšto lygio dizainas
Aukšto lygio dizainas
Aukšto lygio dizainas

Pagrindinis šio dizaino komponentas yra linijinis lazeris, kuris išsikiša ant vertikalios objektų dalies. Ši projekcija gali būti užfiksuota „picamera“, pataisyta jos perspektyva ir filtruojama prieš apdorojant vaizdą. Vaizdo apdorojimo metu galima surinkti atstumą tarp kiekvieno linijos segmento nuo objekto centro. Radialinėmis koordinatėmis šis vaizdas gautų tiek r, tiek z komponentus. Tada trečiasis matmuo Θ pasiekiamas sukant objektą į naują pjūvį. Ši sąvoka parodyta pirmame paveikslėlyje.

Norėdami atlikti aukščiau aprašytus veiksmus, aš naudoju „Raspberry Pi“kaip mūsų centrinį skaičiavimo įrenginį. Prie „Pi“prijungiau žingsninį variklį ir variklio tvarkyklę, maitinamą iš išorinio 5 V maitinimo šaltinio ir valdomą „Pi“GPIO kaiščiais. Linijos lazeris buvo prijungtas prie „Pi“3,3 V linijos, o „PiCam“buvo prijungtas prie „Pi“kameros įvesties. Galiausiai buvo įdiegtas paprastas nuspaudžiamas mygtukas ir būsenos šviesos diodas, rodantis vartotojui, kokioje būsenoje sistema yra. Visa sistema yra apibendrinta sistemos blokinėje schemoje.

Nuo pat pradžių buvo planuojama elektroniką patalpinti į lazeriu supjaustytą dėžę, laikomą kartu su T formos angomis ir M3 aparatūra. Apatiniame skyriuje elektronika būtų paslėpta nuo akių, o dangtelis leistų lengvai patekti į besisukantį dėklą. Šis dangtelis yra būtinas siekiant sumažinti į sistemą patenkančios šviesos kiekį, nes galutinio nuskaitymo metu ši išorinė šviesa gali sukelti triukšmą.

4 žingsnis: aparatinė įranga

Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga

Kaip matyti aukščiau, prieš pradėdamas pjovimą lazeriu ar 3D spausdinimą, aš panaudojau „Autodesk Fusion 360“, kad sudarytų išsamų mūsų dizaino 3D modelį. Apibendrinant, prietaisas yra paprasta dėžutė su dangteliu su lazeriu supjaustytais vyriais. Yra du pagrindiniai prietaiso sluoksniai: elektroninė lova ir pagrindinė lova, su skylėmis laidams nutiesti tarp dviejų sluoksnių.

Dauguma mūsų dėžės buvo pagamintos naudojant lazerinį pjaustytuvą, dizainas buvo pagamintas naudojant „Fusion 360“ir supjaustytas „Epilog Zing 40 W“lazeriniu pjaustytuvu. Mūsų dizainas parodytas aukščiau esančiuose paveikslėliuose. Iš viršaus į kairę, judant į dešinę, dalys yra pagrindinė lova, elektronikos lova, dvi dangčio dalys, galinė dalis, priekinė dalis ir dvi šoninės dalys. Pagrindinėje lovoje yra trys pagrindinės iškirptės: viena skirta žingsninio variklio montavimui, kita - lazerio laidų nukreipimui, o kita - plačiam „PiCam“kabeliui. Lovos dalyje yra tvirtinimo angos, skirtos „Pi“, duonos lentos ir variklio tvarkyklės tvirtinimui, ir didesnė iškyša, skirta prieiti prie žingsninio variklio. Dangtelio dalys suspaudžiamos tiesiog taip, kad susidarytų aukščiau matomas trikampis gabalas, o vyris yra paprastas išspaudimas, kuris yra šoninių lentų skylės skersmens plotis. Galinė dalis ir viena iš šoninių dalių turi angas šone, kad būtų galima lengvai pasiekti „Pi“prievadus (HDMI, USB, Ethernet, maitinimas). Priekis yra paprastas gabalas, kurį galiausiai padariau skylutes rankiniu gręžtuvu, kad pritvirtinčiau mygtuką ir šviesos diodą. Kaip matyti iš visų dalių, mūsų dalys laikomos kartu su M3 aparatūra, naudojant T formos jungtis ir lizdus. Tai lazeriu supjaustytų gabalų laikymas stačiakampiai ir saugiai. Vienetų pelekai sutampa su kitų dalių plyšiais, o kraštuose esantis t formos pjūvis suteikia vietos M3 veržlei įstrigti be verpimo. Tai leidžia mums tada naudoti M3 varžtą, kad būtų galima užfiksuoti gabalus su labai maža judėjimo erdve, o surinkimas nebūtų visiškai pastovus.

Daugumą mūsų kūrinių pasirinkau lazeriniu pjaustytuvu dėl jo greičio ir lengvumo. Tačiau vis tiek turėjau 3D spausdinti kai kuriuos gabalus dėl jų 3D geometrijos, kuriuos būtų sunkiau sukurti ant pjaustytuvo. Pirmasis gabalas buvo linijinis lazerio laikiklis. Šis gabalas turėjo būti sumontuotas ant pagrindinės lovos 45 laipsnių kampu nuo fotoaparato žvilgsnio ir turėti tokią skylę, kad lazerį būtų galima tvirtai trinti. Aš taip pat turėjau sukurti variklio laikiklį, nes variklio velenas buvo toks ilgas. Montavimo trintis tilpo į lazeriu supjaustytas dalis ir nuleido variklio pritvirtinimo plokštumą taip, kad besisukanti platforma būtų lygi pagrindinei lovai.

5 žingsnis: Elektronika

Elektronika
Elektronika

Šio projekto laidų aparatūra buvo labai paprasta, nes 3D skaitytuvui nereikėjo per daug išorinių įrenginių. Prie „Pi“reikėjo prijungti variklį, mygtuką, šviesos diodą, lazerį ir fotoaparatą. Kaip parodyta, aš pasirūpinau, kad varžtai būtų nuosekliai prijungti prie kiekvieno mūsų naudojamo kaiščio, kad apsaugotume kaiščius. Vienas GPIO kaištis buvo skirtas valdyti būsenos šviesos diodą, kuris užsidegs, kai įrenginys bus paruoštas naudoti, ir pulsuos su PWM, kai įrenginys veikė. Kitas GPIO kaištis buvo prijungtas prie ištraukto mygtuko, užregistravęs HIGH, kai mygtukas nebuvo paspaustas, ir LOW, kai mygtukas buvo paspaustas. Galiausiai keturis GPIO kaiščius skyriau žingsninio variklio valdymui.

Kadangi mūsų variklis turėjo žengti tik tam tikrą ribą, nereikalaudamas valdyti greičio, mes pasirinkome paprastesnį žingsninio variklio valdiklį (L298N), kuris tiesiog padidina valdymo linijas, kad galėtų patekti į variklio įvestį. Norėdami sužinoti, kaip valdyti žingsninius variklius labai žemu lygiu, mes nurodėme L298N duomenų lapą ir „Arduino“biblioteką. Žingsninis variklis turi magnetinę šerdį su besikeičiančiais kintamo poliškumo pirštais. Keturi laidai yra suvynioti, kad būtų galima valdyti du elektromagnetus, kurie maitina kiekvieną kitą priešingą variklio pirštą. Taigi, pakeisdami pirštų poliškumą, mes galime stumti žingsnį vienu žingsniu. Turėdami šias žinias apie tai, kaip steperiai dirbo techninės įrangos lygiu, mes galėjome daug lengviau valdyti žingsnius. Mes pasirinkome išjungti savo žingsninį variklį iš 5 V maitinimo šaltinio laboratorijoje, o ne iš Pi, nes jo maksimali srovė yra apie 0,8 A, o tai yra daugiau nei Pi gali tiekti.

6 žingsnis: programinė įranga

Programinė įranga
Programinė įranga
Programinė įranga
Programinė įranga
Programinė įranga
Programinė įranga
Programinė įranga
Programinė įranga

Šio projekto programinę įrangą galima suskirstyti į keturis pagrindinius tarpusavyje sąveikaujančius komponentus: vaizdo apdorojimą, variklio valdymą, tinklelio kūrimą ir įterptąsias funkcijas.

Apibendrindami programinę įrangą, galime pažvelgti į pirmąjį paveikslą. Kai sistema paleidžiama,.bashrc automatiškai prisijungia prie Pi ir pradeda vykdyti mūsų python kodą. Sistema užsidega būsenos lempute, kad vartotojas žinotų, jog ji buvo tinkamai paleista, ir laukia mygtuko paspaudimo. Tada vartotojas gali įdėti nuskaitytiną elementą ir uždaryti dangtį. Paspaudus mygtuką, šviesos diodas impulsuoja, kad vartotojas žinotų, jog įrenginys veikia. Prietaisas veiks tarp vaizdo apdorojimo ir variklio valdymo, kol bus visiškai sukama ir bus surinkti visi objekto duomenys. Galiausiai sukuriamas tinklelis ir failas siunčiamas el. Paštu į iš anksto pasirinktą el. Laišką. Tai iš naujo paleidžia ciklą ir aparatas yra pasirengęs atlikti kitą nuskaitymą vienu mygtuko paspaudimu.

Vaizdo apdorojimas

Pirmasis įgyvendintas dalykas buvo užfiksuoto vaizdo apdorojimas, siekiant išgauti vaizde saugomą informaciją į formą, kuri galėtų būti naudojama erdvės taškų masyvui sukurti. Norėdami tai padaryti, aš pirmiausia nufotografavau objektą ant platformos kartu su visu foniniu triukšmu, kurį sukėlė lazerio spindėjimas ant dėžutės galo ir išsisklaidė. Ši nuotrauka turėjo dvi pagrindines problemas. Pirma, objektas buvo žiūrimas kampu su padidinta perspektyva, antra, buvo daug foninio triukšmo. Pirmas dalykas, kurį turėjau padaryti, buvo atsižvelgti į šį žiūrėjimo kampą, nes naudojant nuotrauką tokią, kokia ji yra, mes negalėtume nustatyti pastovaus objekto aukščio. Kaip matyti antrame paveiksle, apverstos „L“formos aukštis yra pastovus; tačiau dėl to, kad viena pusė yra ilgesnė už kitą, atrodo, kad jie yra skirtingo aukščio arčiausiai žiūrovo esančiame krašte.

Norėdami tai išspręsti, turėjau paversti paveikslėlyje esančią darbo vietą į stačiakampį iš trapecijos formos, kuri buvo anksčiau. Norėdami tai padaryti, naudoju šios nuorodos pateiktą kodą, kuris, gavęs vaizdą ir keturis taškus, apkarpo vaizdą tarp keturių taškų ir pakeičia apkarpytą vaizdą, kad kompensuotų perspektyvą. Ši transformacija naudoja keturis taškus, kad sukurtų stačiakampį, o ne trapecijos tipo formą, kaip parodyta trečiame paveikslėlyje.

Kita problema, kurią reikėjo išspręsti, buvo foninis triukšmas išorinės šviesos ir paties lazerio atspindimos šviesos pavidalu. Norėdami tai padaryti, aš filtravau šviesą naudodami „OpenCV“funkciją „inRange“(). Aš nustatiau slenkstį, kad tik tam tikru lygiu gautų raudoną šviesą. Norėdami gauti teisingą vertę, pradėjau nuo švelnaus slenksčio ir nuolat didinau slenksčio lygį, kol vienintelė skleidžiama šviesa buvo lazerio šviesa ant nuskaitomo objekto. Kai turėjau šį vaizdą, kiekvienoje eilutėje radau ryškiausią tašką gaukite po vieną tašką kiekvienoje eilutėje, kuri ribojasi su lazerio linijos kairiaja puse. Tada kiekvienas pikselis buvo konvertuotas į viršūnę 3D erdvėje ir saugomas masyve, kaip aprašyta tinklelio kūrimo skyriuje. Šių veiksmų rezultatus galima pamatyti ketvirtame paveikslėlyje.

Variklio valdymas

Gavęs sėkmingai apdoroti vieną vaizdą, kad gaučiau objekto gabalą, turėjau sugebėti pasukti objektą, kad galėčiau padaryti naują nuotrauką kitu kampu. Norėdami tai padaryti, aš valdiau žingsninį variklį po platforma, ant kurios yra nuskaitytas objektas. Sukūriau mūsų žingsnio funkcijos pagrindą sukurdamas kintamąjį, kuris seka variklio būseną ir mikroskopiją, perjungdamas kiekvieną iš keturių variklio įėjimų.

Norėdami sukurti tinklelį iš visų apdorotų vaizdų, pirmiausia turėjau kiekvieną apdoroto vaizdo baltą tašką paversti 3D erdvės viršūne. Kadangi renku atskiras objekto dalis su cilindrine simetrija, buvo prasminga pradėti rinkti cilindrines koordinates. Tai buvo prasminga, nes paveikslo aukštis gali pavaizduoti z ašį, atstumas nuo besisukančio stalo centro-R ašį, o žingsninio variklio sukimasis-teta ašį. Tačiau kadangi mūsų duomenis saugojau cilindrinėmis koordinatėmis, kiekvieną iš šių viršūnių turėjau paversti stačiakampėmis koordinatėmis.

Kai šios viršūnės buvo sukurtos, jos buvo saugomos sąraše, o minėtas sąrašas - kitame sąraše, kuriame buvo viršūnių sąrašai, sukurti kiekvienam užfiksuotam vaizdui. Kai visi vaizdai buvo apdoroti ir paversti viršūnėmis, turėjau pasirinkti viršūnes, kurias iš tikrųjų norėjau parodyti galutiniame tinkle. Norėjau, kad būtų įtraukta viršutinė ir apatinė viršūnės, o tada, atsižvelgdama į skiriamąją gebą, pasirinkau tolygiai išdėstytų viršūnių skaičių kiekvienam vaizdui. Kadangi ne visi viršūnių sąrašai buvo vienodo ilgio, turėjau juos sulyginti, suradęs sąrašą su mažiausiu viršūnių skaičiumi ir pašalindamas viršūnes iš visų kitų sąrašų, kol jie visi buvo lygūs. Su sukurtais viršūnių sąrašais dabar galėjau sukurti tinklelį. Aš nusprendžiau formatuoti mūsų tinklelį pagal.obj failo standartą, nes jis yra paprastas ir 3D spausdinamas.

Įterpta funkcija

Po to, kai įrenginys buvo funkcionalus, aš jį nušlifavau pridėdamas visas įterptas funkcijas. Tai reiškė, kad pašalinus klaviatūrą, pelę ir monitorių, belaidžiu būdu reikia atsiųsti mums.obj failą. Norėdami pradėti, pakeičiau.bashrc kodą, kad automatiškai prisijungčiau ir paleistumėte pagrindinę „python“programą. Tai buvo padaryta naudojant sudo raspi-config ir pasirinkus „Console Autologin“, o prie /home/pi/.bashrc pridėjus eilutę „sudo python /home/pi/finalProject/FINAL.py“. Be to, aš taip pat pridėtas mygtukas ir būsenos šviesos diodas vartotojo įvedimui ir išėjimui. Mygtukas leistų vartotojui pasakyti įrenginiui, kada pradėti nuskaityti, o šviesos diodas nurodytų naudotojui mašinos būseną. Jei šviesos diodas šviečia, įrenginys yra pasirengęs pradėti naują nuskaitymą. Jei šviesos diodas pulsuoja, prietaisas šiuo metu nuskaito. Jei šviesos diodas yra biuro, yra programinės įrangos klaida, reikalaujanti iš naujo paleisti sistemą. Galiausiai įgalinau įrenginį siųsti.obj failą el. Paštu. Tai buvo padaryta naudojant smtplib ir el. Pašto bibliotekas. Ši galimybė siųsti el. Laiškus suteikė mums labai patogų ir belaidį būdą pristatyti sukurtą failą vartotojui, kad jis galėtų pasiekti daugybę skirtingų platformų.

7 žingsnis: integracija

Integracija
Integracija

Pagaminęs įvairias prietaiso dalis, aš jį surinkau. Aukščiau pateiktame paveikslėlyje parodyta tvarka:

a) lauke surinkta dėžė

b) viduje sumontuota dėžutė su kamera ir lazeriu

c) elektroninės lovos vaizdas iš vidaus

d) „Pi“galinė dalis su prieiga prie „Pi“prievadų ir 5 V variklio įvestis

e) mygtukas su LED žiedu ir būsenos lempute prietaiso priekyje

8 žingsnis: Rezultatai

Rezultatai
Rezultatai
Rezultatai
Rezultatai
Rezultatai
Rezultatai
Rezultatai
Rezultatai

Lazerinis 3D skaitytuvas sugebėjo nuskaityti objektus tinkamu tikslumu. Objektų ypatybės yra skirtingos ir atpažįstamos, o dalis buvo labai lengva spausdinti 3D naudojant pjaustymo programinę įrangą, tokią kaip „Repetier“. Aukščiau pateikti skaičiai rodo kai kuriuos medžio gabalo ir gumos ančių skenavimo pavyzdžius.

Vienas didžiausių mūsų atradimų ir sėkmės, kurį atradau bandymų metu, buvo prietaiso nuoseklumas. Per kelis to paties objekto bandymus skaitytuvas sugebėjo sukurti.obj failą, kuris kiekvieną kartą buvo labai panašus, net jei šiek tiek pakeitėme objekto vietą. Kaip matyti iš trijų atskirų nuskaitymų, jie visi atrodo labai panašūs, fiksuojant tas pačias detales ir tą patį detalių kiekį. Apskritai mane labai sužavėjo mūsų sistemos nuoseklumas ir tvirtumas.

Vienas iš kintamųjų, kuriuos tikrai sugebėjau sureguliuoti, yra nuskaitymo skiriamoji geba. Kadangi žingsnyje yra 400 žingsnių, galiu pasirinkti, kokio dydžio kiekvienas ΔΘ diktuoti kampinę skiriamąją gebą. Pagal numatytuosius nustatymus aš turiu kampinę skiriamąją gebą 20 iteracijų, tai reiškia, kad kiekvienas kadras, variklis sukasi 20 žingsnių (400/20 = 20). Tai buvo pasirinkta daugiausia dėl laiko - tokiu būdu nuskaitymas užtrunka apie 45 sekundes. Tačiau, jei noriu daug kokybiškesnio nuskaitymo, galiu padidinti iteracijų skaičių iki 400. Tai suteikia daug daugiau taškų, su kuriais galima sukurti modelį, kad būtų galima atlikti daug detalesnį nuskaitymą. Be kampinės skiriamosios gebos, taip pat galiu reguliuoti vertikalią skiriamąją gebą arba tai, kiek skirtingų taškų pasirenku apklausai išilgai lazerio pjūvio. Kad susidomėčiau laiku, aš turiu numatytąjį 20, bet galiu jį padidinti, kad gautumėte geresnių rezultatų. Žaisdamas su šiais kampinės skiriamosios gebos ir erdvinės skiriamosios gebos parametrais, galėjau surinkti skirtingų nuskaitymų rezultatus žemiau paskutiniame paveikslėlyje. Kiekviena etiketė suformatuota taip, kad būtų kampinė raiška x erdvinė skiriamoji geba. Kaip matyti iš numatytųjų nuskaitymo nustatymų, anties ypatybės yra atpažįstamos, bet nėra išsamios. Tačiau, didinant skiriamąją gebą, pradeda ryškėti atskiros tikslios savybės, įskaitant akis, snapą, uodegą ir anties sparnus. Didžiausios raiškos vaizdą nuskaityti prireikė maždaug 5 minučių. Matyti tokį aukštą pasiekiamą sprendimą buvo labai sėkminga.

Apribojimai

Nepaisant sėkmingų projekto rezultatų, vis dar yra keletas projektavimo ir įgyvendinimo apribojimų. Naudojant lazerį kyla daug problemų, susijusių su šviesos išsklaidymu. Daugelis objektų, kuriuos bandžiau nuskaityti, buvo permatomi, blizgūs arba labai tamsūs, buvo varginantys, kaip šviesa atsispindi nuo paviršiaus. Jei objektas būtų permatomas, šviesa būtų sugeriama ir išsklaidyta, todėl būtų labai triukšmingas skiltelių skaitymas. Blizgančiuose ir tamsiuose objektuose šviesa atsispindėtų arba sugertų iki tos vietos, kurią būtų sunku sugauti. Be to, kadangi aš naudoju fotoaparatą objektų savybėms fiksuoti, jo jutimą riboja jo matymo linija, o tai reiškia, kad įgaubtus objektus ir aštrius kampus dažnai blokuoja kitos objekto dalys. Tai parodyta mūsų guminės anties pavyzdyje, nes skenuojant uodega kartais praranda savo kreivumą. Fotoaparatas taip pat gali aptikti tik paviršiaus struktūras, o tai reiškia, kad negalima užfiksuoti skylių ar vidinės geometrijos. Tačiau tai yra dažna problema, su kuria susiduria ir daugelis kitų nuskaitymo sprendimų.

Tolesni žingsniai

Nors buvau patenkintas mūsų projekto rezultatais, buvo keletas dalykų, kuriuos būtų galima įgyvendinti, kad jis būtų geresnis. Pradedantiesiems, esant dabartinei būsenai, nuskaitymo skiriamąją gebą galima pakeisti tik pakeitus mūsų kode griežtai koduotus skiriamosios gebos kintamuosius. Kad projektas būtų labiau įterptas, gali būti įtrauktas skiriamosios gebos potenciometras, kad vartotojas galėtų pakeisti skiriamąją gebą, neprijungdamas monitoriaus ir klaviatūros prie skaitytuvo. Be to, skaitytuvas sukuria vaizdus, kurie kartais gali atrodyti dantyti. Norėdami tai ištaisyti, galima išlyginti tinklelio išlyginimo būdus, kad būtų išlyginti nelygumai ir atšiaurūs kampai. Galiausiai pastebėjau, kad pikselių koordinatės nėra tinkamos realiam pasauliui. Mano sukurtos akys buvo 6–7 kartus didesnės nei tikrasis objektas. Ateityje būtų naudinga įdiegti akių mastelio keitimo būdą, kad jie būtų tikslesni tikrajam objekto dydžiui.

9 žingsnis: ištekliai

Įtraukiau kodą, STL failus spausdinimui ir DXF failus pjaustymui viso projekto metu.

Raspberry Pi konkursas 2020 m
Raspberry Pi konkursas 2020 m
Raspberry Pi konkursas 2020 m
Raspberry Pi konkursas 2020 m

Pirmasis prizas „Raspberry Pi“konkurse 2020 m

Rekomenduojamas: