Სარჩევი:

ჟოლოს ლაზერული სკანერი: 9 ნაბიჯი (სურათებით)
ჟოლოს ლაზერული სკანერი: 9 ნაბიჯი (სურათებით)

ვიდეო: ჟოლოს ლაზერული სკანერი: 9 ნაბიჯი (სურათებით)

ვიდეო: ჟოლოს ლაზერული სკანერი: 9 ნაბიჯი (სურათებით)
ვიდეო: Laser cut a Raspberry Pi pumpkin for Halloween 2024, ივლისი
Anonim
Image
Image
ჟოლოს ლაზერული სკანერი
ჟოლოს ლაზერული სკანერი

ლაზერული სკანერი არის Raspberry Pi ჩამონტაჟებული სისტემის მოწყობილობა, რომელსაც შეუძლია 3D ბეჭდვის გამოყენებით. მოწყობილობა ამას აკეთებს ხაზოვანი ლაზერის და ინტეგრირებული PiCam– ის გამოყენებით კომპიუტერული ხედვის შესასრულებლად. ლაზერი განლაგებულია ლაზერისგან 45 გრადუსით დაშორებით და ასახავს ნათელ წითელ ხაზს ობიექტის ერთ ვერტიკალურ ნაჭერზე. კამერა ამოიცნობს ნაჭრის მანძილს ცენტრიდან ბადისებრი ნაჭრის მისაცემად. ობიექტი ტრიალებს მბრუნავ უჯრაზე და პროცესი მეორდება მანამ, სანამ ობიექტის სრული სკანირება არ მოხდება. გენერირებული.obj ფაილი საბოლოოდ იგზავნება მომხმარებლისთვის, რაც სისტემას სრულად დამოუკიდებელს ხდის.

ეს ინსტრუქცია გაეცნობა როგორ შეიქმნა მოწყობილობა, ზოგიერთი შედეგი და მომავალი ნაბიჯები.

ნაბიჯი 1: შთაგონება

Შთაგონების
Შთაგონების
Შთაგონების
Შთაგონების

როგორც მგზნებარე შემქმნელი, უკვე რამდენიმე წელია 3D ბეჭდვით და მყარი მოდელირებით ვარ დაკავებული. მე ვმუშაობ სხვადასხვა პროტოტიპირების სხვადასხვა ინსტრუმენტებით, დაწყებული CNC მარშრუტიზატორებით დამთავრებული, ლაზერული საჭრელებით დამთავრებული 3D პრინტერებით. ერთი მოწყობილობა, რომელიც ადგილობრივმა მწარმოებელმა ჯერ არ შეიძინა, იყო 3D სკანერი - და მე შემიძლია გითხრათ, რატომ.

უფრო იაფები (რამდენიმე ასეული დოლარი) არასაიმედო იყო, მოითხოვდა სრულყოფილ პირობებს და მაინც საკმაოდ სავალალო შედეგებს იძლეოდა. ძვირადღირებული იყო … კარგად, ძვირი, რამოდენიმე ათას დოლარამდე, რის გამოც მისი ფუნქცია ხშირ შემთხვევაში არ ღირს. უფრო მეტიც, არაერთხელ, მე ავირჩევ გაზომვების ჩატარებას და ნულიდან მოდელის შემუშავებას, ვიდრე სკანირების შედეგად წარმოქმნილ ზედაპირულ ბადეს.

ამის გამო, მინდოდა ავაშენო ბიუჯეტის დამოუკიდებელი სკანერი, რომ მენახა რამდენად კარგად შემიძლია საგნის სკანირება თაროების კომპონენტების გამოყენებით.

კვლევის ჩატარების შემდეგ მე დავინახე, რომ ბევრმა სამგანზომილებიანმა სკანერმა გამოიყენა მბრუნავი პლატფორმა და შემდეგ სხვადასხვა სენსორები ცენტრიდან დაშორების გასაზომად, ბრუნვის მოდელის შესაქმნელად. ბევრმა მათგანმა გამოიყენა ორმაგი კამერა Kinect– ის მსგავსი. მე საბოლოოდ წავაწყდი Yscanner– ს, რომელიც არის დაბალი რეზოლუციის სკანერი, რომელიც იყენებს ლაზერს. სიმარტივისა და მიზანშეწონილობის გათვალისწინებით, ეს ლაზერული ტექნიკა, რომლის დროსაც ლაზერი ანათებს კამერასთან შედარებით ცენტრიდან მანძილის გასაზომად, მკაფიოდ გამოიყურებოდა წინ.

ნაბიჯი 2: ინსტრუმენტები და ნაწილები

ნაწილები:

  • ჟოლო Pi $ 35.00
  • ჟოლო Pi კამერა V2 30,00 $
  • LED- ები, რეზისტორები და მავთულები
  • 3D ბეჭდვის ძაფები
  • 12x12x0.125 ხის ფურცლები
  • M3 ტექნიკა
  • სტეპერ მოტორი - 14 დოლარი
  • ლაზერული ხაზი - 8 დოლარი
  • LN298 სტეპერიანი დრაივერები - $ 2.65
  • რკინის ღილაკი - $ 5

ინსტრუმენტები:

  • გასაყიდი რკინა
  • ლაზერული საჭრელი
  • 3D პრინტერი
  • Screwdriver
  • ფანქარი

ნაბიჯი 3: მაღალი დონის დიზაინი

მაღალი დონის დიზაინი
მაღალი დონის დიზაინი
მაღალი დონის დიზაინი
მაღალი დონის დიზაინი

ამ დიზაინის ცენტრალური კომპონენტია ხაზოვანი ლაზერი, რომელიც აისახება ობიექტების ვერტიკალურ ნაჭერზე. ეს პროექცია შეიძლება გადაღებულ იქნას კამერაზე, შეცვალოს მისი ხედვა და შემდეგ გაფილტრული იქნას სურათის დამუშავებამდე. სურათის დამუშავებისას შესაძლებელია ობიექტის ცენტრიდან ხაზის თითოეულ სეგმენტს შორის შეგროვება. რადიალური კოორდინატებით, ეს სურათი გამოიღებს როგორც r, ასევე z კომპონენტებს. მესამე განზომილება, Θ, მიიღწევა ობიექტის ახალ ნაჭერზე ბრუნვით. ეს კონცეფცია ნაჩვენებია პირველ ფიგურაში.

ზემოთ აღწერილი მოქმედებების შესასრულებლად მე გამოვიყენე ჟოლო Pi როგორც ჩვენი ცენტრალური გამოთვლითი ერთეული. მე დავამატე სტეპერიანი ძრავა და ძრავის მძღოლი Pi- სთან, რომელიც იკვებება გარე 5V წყაროს საშუალებით და კონტროლდება Pi- ს GPIO ქინძისთავებით. Pi– ზე 3.3 V ხაზზე დაიდო ლაზერული ხაზი, ხოლო Pi– ზე კამერის შეყვანაზე PiCam. დაბოლოს, დამონტაჟდა მარტივი ღილაკი და სტატუსის LED, რომელიც მომხმარებელს აჩვენებს რა მდგომარეობაშია სისტემა. სრული სისტემა შეჯამებულია სისტემის ბლოკ დიაგრამაში.

თავიდანვე დაგეგმილი იყო ელექტრონიკის განთავსება ლაზერულ ჭურჭელში, რომელიც მოთავსებული იყო T- სლოტებთან და M3 ტექნიკასთან ერთად. ელექტრონიკა დაიმალება მხედველობიდან ქვედა ნაწილში და სახურავი საშუალებას მისცემს ადვილად მისადგომ ობიექტს მბრუნავ უჯრაზე. ეს სახურავი აუცილებელია იმისათვის, რომ მინიმუმამდე შემცირდეს სინათლის რაოდენობა, რომელიც შემოდის სისტემაში, რადგან ამ გარე შუქმა შეიძლება გამოიწვიოს ხმაური საბოლოო სკანირებისას.

ნაბიჯი 4: აპარატურა

ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა

როგორც ზემოთ ვნახეთ, სანამ დავიწყებდი ლაზერულ ჭრას ან 3D ბეჭდვას, მე გამოვიყენე Autodesk Fusion 360 ჩვენი დიზაინის დეტალური 3D მოდელის შესაქმნელად. როგორც მიმოხილვა, მოწყობილობა არის მარტივი ყუთი სახურავით, რომელსაც აქვს ლაზერული ჭრა. მოწყობილობის ორი ძირითადი ფენაა: ელექტრონიკის საწოლი და მთავარი საწოლი, ორ ფენას შორის მავთულის ხვრელებით.

ჩვენი ყუთის უმეტესი ნაწილი დამზადებულია ლაზერული საჭრელით, დიზაინი დამზადებულია Fusion 360 -ში და მოჭრილია Epilog Zing 40 W ლაზერულ საჭრელზე. ჩვენი დიზაინი ნაჩვენებია ზემოთ მოცემულ ფიგურებში. ზემოდან მარცხნივ მარჯვნივ მარჯვნივ, ცალი არის მთავარი საწოლი, ელექტრონიკის საწოლი, ორი ცალი სახურავისთვის, უკანა ნაწილი, წინა ნაწილი და ორი გვერდითი ნაჭერი. ძირითად საწოლში არის სამი ძირითადი გათიშვა: ერთი სტეპერიანი ძრავის დასაყენებლად, ერთი ლაზერული ხაზებიდან მავთულხლართებისთვის და ერთი PiCam– ის ფართო კაბელის გასავლელად. საწოლის ნაწილს აქვს სამონტაჟო ხვრელები Pi, breadboard და საავტომობილო დრაივერის უზრუნველსაყოფად და უფრო დიდი გათიშვა სტეპერ ძრავაზე წვდომისათვის. სახურავის ნაჭრები იჭრება ერთმანეთთან ერთად, რათა შეიქმნას სამკუთხა ნაჭერი, რომელიც ზემოთ ჩანს, ხოლო სახსარი არის მარტივი ექსტრუზია, რომელიც არის გვერდითი დაფების ხვრელის დიამეტრის სიგანე. უკანა ნაწილს და ერთ გვერდით ნაწილს აქვს სლოტი გვერდით ისე, რომ Pi- ს პორტებზე (HDMI, USB, Ethernet, Power) ადვილად იყოს წვდომა. წინ არის მარტივი ნაჭერი, რომელიც მე საბოლოოდ გავაკეთე ხვრელებით ხელით საბურღი ღილაკზე და LED- ზე. როგორც ჩანს ყველა ნაწილზე, ჩვენი ნაწილები ერთმანეთთან არის გამართული M3 ტექნიკით T- სახსრებისა და სლოტების გამოყენებით. ეს არის ლაზერული მოჭრილი ნაჭრების ორთოგონალურად და უსაფრთხოდ შენახვის მეთოდი. ნაჭრების ფარფლები შეესაბამება ნაჭრებს სხვა ნაჭრებით და კიდეებზე t- ფორმის გაჭრა იძლევა სივრცეს M3 თხილის შესაჭრელად მათ დატრიალების გარეშე. ეს გვაძლევს საშუალებას გამოვიყენოთ M3 ხრახნი, რათა დავაკეტოთ ნაჭრები ძალიან პატარა ოთახთან ერთად, შეკრების გარეშე, რომ ის იყოს მუდმივი.

მე ავირჩიე ჩვენი ნაჭრების უმეტესობის გაკეთება ლაზერული საჭრელით მისი სიჩქარისა და სიმარტივის გამო. თუმცა, მე მაინც მომიწია 3D ნაწილის დაბეჭდვა მათი 3D გეომეტრიის გამო, რაც უფრო რთული იქნებოდა საჭრელზე შექმნა. პირველი ნაჭერი იყო ხაზის ლაზერული დამჭერი. ეს ნაჭერი უნდა დამონტაჟებულიყო ძირითად საწოლზე კამერის ხედიდან 45 გრადუსზე და ჰქონოდა ისეთი ხვრელი, რომ ლაზერს შეეძლო მჭიდროდ ხახუნის ჯდება მასში. მე ასევე უნდა შევქმნა ძრავის საყრდენი, რადგან ძრავის ლილვი იმდენად გრძელი იყო. სამონტაჟო ხახუნის ჯდება ლაზერული მოჭრილი ნაწილები და შეამცირა თვითმფრინავი, რომელზეც ძრავა იყო დამაგრებული ისე, რომ მბრუნავი პლატფორმა თანაბარი იყო ძირითად საწოლთან.

ნაბიჯი 5: ელექტრონიკა

ელექტრონიკა
ელექტრონიკა

ამ პროექტის გაყვანილობის აპარატურა ძალიან მარტივი იყო, რადგან 3D სკანერს არ სჭირდებოდა ძალიან ბევრი პერიფერიული მოწყობილობა. ძრავა, ღილაკი, LED, ლაზერი და კამერა საჭირო იყო Pi- სთან დაკავშირება. როგორც ნაჩვენებია, მე დავრწმუნდი, რომ დავამყარო რეზისტორები სერიულად თითოეულ პინთან, რომელსაც ვიყენებდით ქინძისთავების დასაცავად. ერთი GPIO პინი მიეძღვნა სტატუსის LED- ის კონტროლს, რომელიც ანათებდა, როდესაც მოწყობილობა მზად იქნებოდა გამოსაყენებლად და PWM- ით პულსი აპარატის მუშაობისას. კიდევ ერთი GPIO პინი უკავშირდებოდა გაშლილ ღილაკს, რომელიც რეგისტრირდებოდა HIGH როდესაც ღილაკი არ იყო დაჭერილი და LOW როდესაც ღილაკზე დაჭერილი იყო. და ბოლოს, მე მივუძღვენი ოთხი GPIO ქინძისთავი სტეპერიანი ძრავის მართვას.

მას შემდეგ, რაც ჩვენს ძრავას მხოლოდ გარკვეული საფეხურის გადადგმა მოუწია სიჩქარის კონტროლის მოთხოვნის გარეშე, ჩვენ ავირჩიეთ უფრო მარტივი სტეპერიანი ძრავის მძღოლი (L298N), რომელიც უბრალოდ აძლიერებს საკონტროლო ხაზებს ძრავის შესასვლელში შესასვლელად. იმის გასაგებად, თუ როგორ მუშაობს სტეპერიანი ძრავები ძალიან დაბალ დონეზე, ჩვენ მივმართეთ როგორც L298N მონაცემთა ფურცელს, ასევე არდუინოს ბიბლიოთეკას. სტეპერ ძრავას აქვს მაგნიტური ბირთვი ცვალებადი პოლარობის თითებით. ოთხი მავთული შეფუთულია ორი ელექტრომაგნიტის გასაკონტროლებლად, რომლებიც ძრავის ყველა სხვა საპირისპირო თითს აძლიერებს. ამრიგად, თითების პოლარობის შეცვლით, ჩვენ შეგვიძლია გადავაბიჯოთ სტეპერი ერთი ნაბიჯით. ამ ცოდნით, თუ როგორ მუშაობდნენ სტეპერები ტექნიკის დონიდან, ჩვენ შევძელით სტეპერების გაკონტროლება ბევრად უფრო ადვილად. ჩვენ ავირჩიეთ ჩვენი სტეპერიანი ძრავის გამორთვა 5V დენის წყაროს ლაბორატორიაში და არა Pi, რადგან მისი მაქსიმალური მიმდინარე გათბობაა დაახლოებით 0.8 A, რაც უფრო მეტია ვიდრე Pi- ს მომარაგება.

ნაბიჯი 6: პროგრამული უზრუნველყოფა

პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა

ამ პროექტის პროგრამული უზრუნველყოფა შეიძლება დაიყოს ოთხ მთავარ კომპონენტად, რომლებიც ერთმანეთთან ურთიერთქმედებენ: გამოსახულების დამუშავება, ძრავის კონტროლი, ბადის შექმნა და ჩამონტაჟებული ფუნქციები.

როგორც პროგრამული უზრუნველყოფის შეჯამება, ჩვენ შეგვიძლია შევხედოთ პირველ ფიგურას. სისტემის ჩატვირთვისას.bashrc ავტომატურად შევა Pi- ში და იწყებს ჩვენი პითონის კოდის გაშვებას. სისტემა ანათებს სტატუსის შუქს, რათა მომხმარებელს აცნობოს, რომ ის სწორად არის ჩატვირთული და ელოდება ღილაკის დაჭერას. მომხმარებელს შეუძლია განათავსოს შესამოწმებელი ნივთი და დახუროს სახურავი. ღილაკზე დაჭერის შემდეგ, LED პულსირებს, რათა მომხმარებელს აცნობოს მოწყობილობა მუშაობს. მოწყობილობა წავა სურათის დამუშავებასა და ძრავის კონტროლს შორის, სანამ არ მოხდება სრული ბრუნვა და არ შეიკრიბება ყველა ობიექტის მონაცემი. დაბოლოს, ბადე იქმნება და ფაილი ელექტრონული ფოსტით გადადის წინასწარ არჩეულ ელ. ეს განაახლებს ციკლს და მანქანა მზად არის განახორციელოს კიდევ ერთი სკანირება ღილაკის დაჭერით.

სურათის დამუშავება

პირველი რაც განხორციელდა იყო გადაღებული სურათის დამუშავება სურათზე შენახული ინფორმაციის გამოსაყვანად იმ ფორმაში, რომელიც შეიძლება გამოყენებულ იქნას სივრცეში წერტილების მასივის შესაქმნელად. ამის გაკეთება დავიწყე პლატფორმაზე ობიექტის სურათის გადაღებით, ლაზერის მიერ შექმნილ ფონურ ხმაურთან ერთად, რომელიც ანათებდა ყუთის უკანა მხარეს და იფანტებოდა. ამ სურათს ორი ძირითადი პრობლემა ჰქონდა თავისი ნედლი სახით. პირველი, ობიექტი განიხილებოდა კუთხეზე ამაღლებული პერსპექტივით და მეორე, იყო ბევრი ფონური ხმაური. პირველი, რაც უნდა გამეკეთებინა, იყო მხედველობის ამ კუთხის გათვალისწინება, რადგან ფოტოს ისეთი, როგორიც არის, არ მოგვცემს საშუალებას, განვსაზღვროთ ობიექტის თანმიმდევრული სიმაღლე. როგორც მეორე ფიგურაში ჩანს, თავდაყირა "L" ფორმის სიმაღლე თანმიმდევრულია; თუმცა იმის გამო, რომ ერთი მხარე მეორეზე გრძელია, როგორც ჩანს, განსხვავებული სიმაღლე აქვთ მნახველთან ყველაზე ახლოს.

ამის გამოსასწორებლად, მე მომიწია სურათის სამუშაო ადგილის გადაკეთება მართკუთხედში ტრაპეციული ფორმისგან, რომელიც ადრე იყო. ამისათვის მე გამოვიყენე კოდი, რომელიც მოცემულია ამ ბმულით, რომელიც გამოსახულების და ოთხი წერტილის მიცემისას გამოსახულებას ათავსებს ოთხ წერტილს შორის და გარდაქმნილ სურათს გადააჭარბებს პერსპექტივის კომპენსაციისთვის. ეს ტრანსფორმაცია იყენებს ოთხ წერტილს მართკუთხედის შესაქმნელად ტრაპეციული ტიპის ფორმის ნაცვლად, როგორც ჩანს მესამე ფიგურაში.

შემდეგი პრობლემა, რომლის მოგვარებაც საჭირო იყო, იყო ფონური ხმაური გარე შუქისა და შუქის სახით, რომელსაც ლაზერი თავად ასახავდა. ამისათვის გავფილტრო სინათლე OpenCV inRange () ფუნქციის გამოყენებით. მე დავადგინე ბარიერი, რომ მხოლოდ აეღო წითელი შუქი გარკვეულ დონეზე. სწორი მნიშვნელობის მისაღებად დავიწყე შემამსუბუქებელი ბარიერი და გავზარდე ზღურბლის დონე მანამ, სანამ ერთადერთი შუქი, რომელიც აიღეს, იყო ლაზერული შუქი ობიექტზე, რომელიც დასკანერდა. მას შემდეგ რაც ეს სურათი მივიღე, ვიპოვე ყველაზე ნათელი პიქსელი თითოეულ რიგში მიიღეთ თითო პიქსელის ხაზი თითო რიგში, რომელიც ესაზღვრებოდა ლაზერული ხაზის მარცხენა მხარეს. ყოველი პიქსელი შემდეგ გადაკეთდა მწვერვალზე 3D სივრცეში და ინახებოდა მასივში, როგორც ეს აღწერილია mesh შექმნის განყოფილებაში. ამ ნაბიჯების შედეგები ჩანს მეოთხე ფიგურაში.

ძრავის კონტროლი

მას შემდეგ რაც შევძელი ერთი სურათის წარმატებით დამუშავება ობიექტის ნაჭრის მისაღებად, მე მჭირდებოდა ობიექტის ბრუნვა ახალი სურათის სხვა კუთხის გადასაღებად. ამისათვის მე გავაკონტროლე სტეპერიანი ძრავა პლატფორმის ქვემოთ, რომელზედაც სკანირებული ობიექტი ზის. მე შევქმენი ჩვენი საფეხურის ფუნქციის საფუძველი ცვლადის შექმნით ძრავის მდგომარეობის თვალყურის დევნისა და მიკროსტეპინგისათვის ოთხი საავტომობილო შეყვანის თითოეული გადართვით.

Mesh შექმნა ყველა დამუშავებული სურათის ქსელის შესაქმნელად, მე პირველად უნდა გადავიყვანო დამუშავებული გამოსახულების თითოეული თეთრი პიქსელი 3D სივრცეში წვეროდ. რადგანაც მე ვაგროვებ ობიექტის ინდივიდუალურ ნაჭრებს ცილინდრული სიმეტრიით, აზრი ჰქონდა ცილინდრული კოორდინატების შეგროვებას. ამას ჰქონდა აზრი, რადგან სურათის სიმაღლე შეიძლება წარმოადგენდეს z ღერძს, მბრუნავი მაგიდის ცენტრიდან დაშორება შეიძლება იყოს R ღერძი, ხოლო სტეპერიანი ძრავის ბრუნვა წარმოადგენს თეტა ღერძს. თუმცა, ვინაიდან ჩვენ ვინახავდი ჩვენს მონაცემებს ცილინდრულ კოორდინატებში, მე მომიწია თითოეული ამ წვერო კარკასის კოორდინატებად გადაყვანა.

მას შემდეგ რაც შეიქმნა ეს წვეროები, ისინი ინახებოდა სიაში და აღნიშნული სია ინახებოდა სხვა სიაში, რომელიც შეიცავდა თითოეული გადაღებული სურათისთვის შექმნილ ვერტექს სიებს. მას შემდეგ რაც ყველა სურათი დამუშავდა და გადაიქცა წვეროებად, მე უნდა ავირჩიო ის წვეროები, რომლებიც მე რეალურად მინდოდა წარმოდგენილი ყოფილიყო ბოლო ბადეში. მე მინდოდა, რომ ზედა წვერი და ქვედა წვერი ყოფილიყო ჩართული და შემდეგ რეზოლუციის საფუძველზე ავირჩიე თანაბრად დაშორებული წვეროების რაოდენობა თითოეული სურათისთვის გამოსაყენებლად. იმის გამო, რომ ყველა ვერტიკალური სია არ იყო ერთი და იგივე სიგრძის, მე მომიწია მათი აღმოჩენა სიის ყველაზე მცირე რაოდენობის მწვერვალებით და ყველა სხვა სიიდან მწვერვალების ამოღებით, სანამ ისინი ყველა თანაბარი არ გახდებოდა. ბადის შექმნა. მე ავირჩიე ფორმატირება ჩვენი mesh.obj ფაილის სტანდარტით, რადგან ეს არის მარტივი და 3D დასაბეჭდი.

ჩაშენებული ფუნქცია

მას შემდეგ რაც მოწყობილობა ფუნქციონირებდა, მე გავპრიალებდი მას სრული ჩამონტაჟებული ფუნქციონირების დამატებით. ეს გულისხმობდა კლავიატურის, მაუსის და მონიტორის ამოღებას და დამუშავების დასრულების შემდეგ უსადენოდ გამოგვიგზავნის.obj ფაილს. დასაწყებად, მე შევცვალე.bashrc კოდი, რომ ავტომატურად შეხვიდე სისტემაში და გავუშვა მთავარი პითონის პროგრამა გაშვებისას. ეს გაკეთდა sudo raspi-config– ის გამოყენებით და „Console Autologin“-ის არჩევით და ხაზის „sudo python /home/pi/finalProject/FINAL.py“დამატებით /home/pi/.bashrc– ზე. ამის გარდა, მე ასევე დაამატა ღილაკი და სტატუსის LED მომხმარებლის შეყვანისა და გამოსვლისთვის. ღილაკი საშუალებას მისცემს მომხმარებელს აცნობოს მოწყობილობას როდის დაიწყოს სკანირება და LED აცნობებს მომხმარებელს აპარატის მდგომარეობას. თუ LED ჩართულია, მოწყობილობა მზად არის დაიწყოს ახალი სკანირება. თუ LED პულსირებს, მოწყობილობა ამჟამად სკანირდება. თუ LED არის საოფისე, არის პროგრამული უზრუნველყოფის შეცდომა, რომელიც მოითხოვს სისტემის გადატვირთვას. დაბოლოს, მე ჩავრთე მოწყობილობა.obj ფაილის გაგზავნა ელექტრონული ფოსტით. ეს გაკეთდა smtplib და ელ ბიბლიოთეკების გამოყენებით. ელ.ფოსტის გაგზავნის ამ უნარმა მოგვცა ძალიან მოსახერხებელი და უკაბელო გზა, რომ მივაწოდოთ წარმოებული ფაილი მომხმარებელს სხვადასხვა პლატფორმებზე წვდომისათვის.

ნაბიჯი 7: ინტეგრაცია

ინტეგრაცია
ინტეგრაცია

მოწყობილობის სხვადასხვა ნაწილის დამზადების შემდეგ, მე ერთად შევკრიბე. ფიგურა ზემოთ ნაჩვენებია თანმიმდევრობით:

(ა) აწყობილი ყუთი გარეთ

(ბ) აწყობილი ყუთი შიგნით კამერით და ლაზერით

გ) ელექტრონული საწოლის შიდა ხედი

(დ) Pi- ს უკანა მხარეს Pi პორტებზე წვდომით და 5V ძრავის შეყვანით

(ე) დააჭირეთ ღილაკს LED ბეჭდით და სტატუსის შუქით მოწყობილობის წინა ნაწილში

ნაბიჯი 8: შედეგები

შედეგები
შედეგები
შედეგები
შედეგები
შედეგები
შედეგები
შედეგები
შედეგები

ლაზერულმა 3D სკანერმა შეძლო საგნების სკანირება ღირსეული სიზუსტით. ობიექტების მახასიათებლები მკაფიო და ცნობადია და ნაწილები იყო 3D მარტივად დასაბეჭდი ისეთი პროგრამული უზრუნველყოფის გამოყენებით, როგორიცაა Repetier. ზემოთ მოყვანილ ფიგურებში ნაჩვენებია ხის ნაწილისა და რეზინის იხვის რამოდენიმე ნიმუშის სკანირება.

ჩვენი ერთ -ერთი ყველაზე დიდი აღმოჩენა და წარმატება, რომელიც ტესტირების დროს აღმოვაჩინე, იყო მოწყობილობის თანმიმდევრულობა. ერთიდაიგივე ობიექტის მრავალჯერადი ცდის განმავლობაში, სკანერმა შეძლო.obj ფაილის შექმნა, რომელიც ძალიან ჰგავდა ყოველ ჯერზე, თუნდაც ოდნავ შევცვალოთ ობიექტის განთავსება. როგორც სამი ცალკეული სკანირებისას ჩანს, ისინი ძალიან ჰგვანან ერთმანეთს, იტაცებენ ერთსა და იმავე დეტალს და ერთნაირ დეტალს. საერთო ჯამში ძალიან დიდი შთაბეჭდილება მოახდინა ჩვენი სისტემის თანმიმდევრულობამ და გამძლეობამ.

ერთ -ერთი ცვლადი, რომლის რეგულირებაც ნამდვილად შევძელი, არის სკანირების გარჩევადობა. იმის გამო, რომ სტეპერში არის 400 საფეხური, მე შემიძლია ავირჩიო რამდენად დიდია თითოეული ΔΘ რომ უკარნახოს კუთხის გარჩევადობა. სტანდარტულად, მე მაქვს კუთხის გარჩევადობა 20 გამეორებაზე, რაც იმას ნიშნავს, რომ თითოეული ჩარჩო, ძრავა ბრუნავს 20 საფეხურით (400/20 = 20). ეს შეირჩა ძირითადად დროის ინტერესებიდან გამომდინარე - დაახლოებით 45 წამი სჭირდება ამ გზით სკანირების დასრულებას. თუმცა, თუ მსურს გაცილებით მაღალი ხარისხის სკანირება, შემიძლია გამეორების რაოდენობა გავზარდო 400 – მდე. ეს იძლევა ბევრად მეტ ქულას მოდელის შესაქმნელად, რაც გაცილებით დეტალური სკანირების საშუალებას იძლევა. გარდა კუთხოვანი გარჩევადობისა, ასევე შემიძლია შეცვალო ვერტიკალური გარჩევადობა, ან რამდენი განსხვავებული პუნქტი გამოვარჩიო ლაზერული ნაწილის გასწვრივ. დროთა განმავლობაში მსგავსი ინტერესის გამო, მე მაქვს ეს ნაგულისხმევი 20, მაგრამ შემიძლია გავზარდო ის უკეთესი შედეგისთვის. კუთხის გარჩევადობისა და სივრცითი გარჩევადობის ამ პარამეტრებთან თამაშისას, მე შემეძლო შემეგროვებინა სხვადასხვა სკანირების შედეგები ქვემოთ მოცემულ ფიგურაში. თითოეული ეტიკეტი არის ისეთი ფორმატირებული, რომ ეს არის კუთხის გარჩევადობა x სივრცული გარჩევადობა. როგორც ნაჩვენებია სკანირების ნაგულისხმევ პარამეტრებში, იხვის მახასიათებლები ცნობადია, მაგრამ დეტალური არ არის. თუმცა, რაც მე გაზრდის გარჩევადობას, იწყება ინდივიდუალური ზუსტი მახასიათებლების ჩვენება, მათ შორის თვალები, წვერი, კუდი და ფრთები იხვიზე. ყველაზე მაღალი გარჩევადობის სურათს დაახლოებით 5 წუთი დასჭირდა. ამ მაღალი დონის მიღწევადი რეზოლუციის დანახვა ძალიან დიდი წარმატება იყო.

შეზღუდვები

პროექტის წარმატებული შედეგების მიუხედავად, ჯერ კიდევ არსებობს შეზღუდვები დიზაინსა და განხორციელებაში. ლაზერის გამოყენებასთან ერთად წარმოიქმნება მრავალი საკითხი, თუ როგორ იფანტება შუქი. ბევრი ობიექტი, რომლის შემოწმებაც შევეცადე გამჭვირვალე, მბზინავი ან ძალიან ბნელი იყო, შემაშფოთებელი იყო, თუ როგორ ირეკლავდა შუქი ზედაპირზე. თუ ობიექტი გამჭვირვალე იყო, შუქი შეიწოვებოდა და გაიფანტებოდა, რაც ნაჭრების ძალიან ხმაურიან კითხვას გამოიწვევდა. ბრწყინვალე და ბნელ საგნებში სინათლე ან აისახებოდა ან შეიწოვებოდა იქამდე, რომლის აღებაც ძნელი იქნებოდა. გარდა ამისა, ვინაიდან მე ვიყენებ კამერას ობიექტების თვისებების დასაფიქსირებლად, მისი შეგრძნება შეზღუდულია მისი მხედველობის ხაზით, რაც იმას ნიშნავს, რომ ჩაზნექილი საგნები და მკვეთრი კუთხეები ხშირად იბლოკება ობიექტის სხვა ნაწილებით. ეს ნაჩვენებია ჩვენს რეზინის იხვის მაგალითზე, რადგან კუდი ზოგჯერ დაკარგავს თავის გამრუდებას სკანირებისას. კამერას შეუძლია მხოლოდ ზედაპირული სტრუქტურების გამოვლენა, რაც იმას ნიშნავს, რომ ხვრელების ან შიდა გეომეტრიების დაფიქსირება შეუძლებელია. თუმცა, ეს არის საერთო პრობლემა, რომელსაც მრავალი სხვა სკანირების გადაწყვეტაც აქვს.

Შემდეგი ნაბიჯები

მიუხედავად იმისა, რომ მე კმაყოფილი ვიყავი ჩვენი პროექტის შედეგებით, იყო რამოდენიმე რამ, რისი განხორციელებაც შესაძლებელი გახდა მისი უკეთესობისკენ. დამწყებთათვის, მიმდინარე მდგომარეობაში, სკანირების გარჩევადობა შეიძლება შეიცვალოს მხოლოდ ჩვენს კოდში მყარი კოდირებული გარჩევადობის ცვლადების შეცვლით. იმისათვის, რომ პროექტი უფრო ინტეგრირებული იყოს, შეიძლება შეიცავდეს რეზოლუციის პოტენომეტრს, ასე რომ მომხმარებელს შეუძლია შეცვალოს რეზოლუცია სკანერთან მონიტორისა და კლავიატურის ჩართვის გარეშე.გარდა ამისა, სკანერი ქმნის სურათებს, რომლებიც ზოგჯერ გარეგნულად გამოიყურება. ამის გამოსასწორებლად, ბადის დაგლუვების ტექნიკა შეიძლება განხორციელდეს დარღვევებისა და მკაცრი კუთხეების გასასუფთავებლად. დაბოლოს, მე აღმოვაჩინე, რომ პიქსელის კოორდინატები კარგად არ ვრცელდება რეალურ სამყაროში. ჩემს მიერ შექმნილი ბადეები 6 -დან 7 -ჯერ აღემატებოდა რეალურ ობიექტს. მომავალში მომგებიანი იქნება ბადეების გაფართოების მეთოდის განხორციელება, რათა ისინი უფრო ზუსტი იყოს ობიექტის რეალურ ზომასთან.

ნაბიჯი 9: რესურსები

მე ჩავრთე კოდი, STL ფაილები დასაბეჭდად და DXF ფაილები პროექტის მთლიანი ჭრისთვის.

ჟოლოს კონკურსი 2020
ჟოლოს კონკურსი 2020
ჟოლოს კონკურსი 2020
ჟოლოს კონკურსი 2020

პირველი პრიზი ჟოლოს კონკურსში 2020

გირჩევთ: