Სარჩევი:

ასტრონავტების დამხმარე რუმბა: 4 ნაბიჯი
ასტრონავტების დამხმარე რუმბა: 4 ნაბიჯი

ვიდეო: ასტრონავტების დამხმარე რუმბა: 4 ნაბიჯი

ვიდეო: ასტრონავტების დამხმარე რუმბა: 4 ნაბიჯი
ვიდეო: მოსწავლე ახალგაზრდობის სასახლეს ახალი ტელესკოპები გადაეცა 2024, ივლისი
Anonim
ასტრონავტთა დამხმარე რუმბა
ასტრონავტთა დამხმარე რუმბა

ეს პროექტი დამზადებულია Raspberry Pi 3 -ის გამოყენებით iRobot ვერსიის შექმნისას 2. MATLAB გამოიყენება რობოტის დასაპროგრამებლად, რათა დაიცვას კონკრეტული მითითებები მისი სენსორებისა და კამერის გამოყენებით. სენსორები და კამერები გამოიყენება კონკრეტული ამოცანების შესასრულებლად, რომლებიც ასტრონავტს მოჰყვება და მისცემს მას შესაძლებლობას, დაუკავშირდეს საკუთარ ბაზას, თუ რამე არასწორედ წავა.

ნაბიჯი 1: საჭირო ნაწილები

საჭირო ნაწილები
საჭირო ნაწილები
საჭირო ნაწილები
საჭირო ნაწილები
საჭირო ნაწილები
საჭირო ნაწილები
საჭირო ნაწილები
საჭირო ნაწილები

1. iRobot შექმნა ვერსია 2

IRobot Create არის ამ პროექტის ყველაზე მნიშვნელოვანი ნაწილი, ვინაიდან ის არის პროგრამირებადი და შეიძლება იყოს შესანიშნავი წარმომადგენელი ნამდვილი როვერისთვის, რომელიც მიჰყვება ასტრონავტებს და ეხმარება მათ მომავალში

2. ჟოლო პი 3

Raspberry Pi იყო პროგრამირებადი, რომელიც გამოიყენებოდა ამ პროექტისათვის. კოდი განკუთვნილია Pi- სთვის და Pi- ის თანდართული ვერსია არის 3 (მოდელი B). სხვა პროგრამირებადი დაფები, როგორიცაა არდუინო, გამოსაყენებელია, თუმცა, არდუინოსა და სხვა დაფების უმეტესობას დასჭირდება განსხვავებული კოდირება, ვიდრე აღწერილია სხვა საფეხურზე

3. ჟოლო Pi კამერის მოდული

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

4. MATLAB 2018 ა

MATLAB– ის მეორე უახლესი ვერსია, 2018a, გამოიყენებოდა ამ კონფიგურაციაში ჩართული კოდირებისათვის. სავარაუდოა, რომ MATLAB– ის მრავალი სხვა ვერსია იმუშავებს ამით, რადგან roomba პროგრამირება უკვე დიდი ხანია რაც არსებობს

ნაბიჯი 2: ფაილები და კამერის კონფიგურაცია

ფაილები და კამერის კონფიგურაცია
ფაილები და კამერის კონფიგურაცია

1. ჟოლოს Pi და კამერის კავშირი ოთახთან

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

2. ფაილები

  • ყველაფრის დაყენებისა და დაკავშირების შემდეგ, დარწმუნდით, რომ რობოტი გადატვირთულია და მზად არის წასასვლელად, 10 წამის ერთად დაჭერით "Spot" და "Dock" ღილაკები.
  • სწორედ აქ არის საჭირო MATLAB. Roomba– ს ფაილები ჯერ უნდა იყოს დაინსტალირებული და ამ ფაილების გასაშვებად საჭიროა მხოლოდ ამ ბმულზე მოცემული კოდი:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

ნაბიჯი 3: საწყისი ოთახის ტესტირება

რამოდენიმე პირველადი შემოწმებაა ჩასატარებელი რუმბაზე იმისათვის რომ დავრწმუნდეთ რომ მუშაობს.

1. დარწმუნდით, რომ დაკავშირებული ხართ იმავე WiFi ქსელთან, როგორც roomba. ამის გარეშე, თქვენ არასოდეს დაუკავშირდებით MATLAB– ის საშუალებით.

2. გაარკვიეთ რა ნომერზეა დანიშნული თქვენი roomba, ასე რომ თქვენ შეგიძლიათ კონკრეტულად დაუკავშიროთ თქვენს მიერ არჩეულ roombaba- ს. მაგალითად, თუ თქვენი ოთახის ნომერი არის 30, თქვენ დაუკავშირდებით მას ოთახის (30) აკრეფით ბრძანების ფანჯარაში MATLAB.

3. ოთახის კონტროლი შესაძლებელია MATLAB- ის სტრუქტურების საშუალებით. მაგალითად, თუ თქვენ დააყენებთ თქვენს კოდს roomba (30) ცვლადზე 'r', რობოტი შეიძლება წინ წაიწიოს r.moveDistance ბრძანებით (0.2, 0.1).

4. არსებობს მრავალი განსხვავებული ბრძანება, რომელთა გადაცემა შესაძლებელია ოთახის ოთახთან და მათი ნახვა შესაძლებელია ბრძანების ფანჯარაში „doc roomba“აკრეფით.

5. სინათლის, დარტყმის და კლდის კითხვის სენსორები შეიძლება წაიკითხოთ „doc roomba“- ში ნაჩვენები ბრძანებების გამოყენებით, მაგრამ სენსორის მონაცემების სანახავად მუდმივი, სისუფთავე მენიუ შეგიძლიათ იხილოთ „r.testSensors“- ის გამოყენებით. '.

6. ამ ყველაფრის შემოწმების შემდეგ, რობოტის გამოსახულების შეგროვების პროგრამული უზრუნველყოფა შეიძლება გამოყენებულ იქნას გადაღებული სურათების წასაკითხად და სანახავად. ამის ძირითადი კოდი იქნება img = r.getImage და imshow (img); რა

7. სურათის RGB მნიშვნელობები გვხვდება კოდებით red_mean = საშუალო (საშუალო (საშუალო (img (:,,, 1))));

green_mean = საშუალო (საშუალო (img (:,,, 2))); და blue_mean = საშუალო (საშუალო (img (:,,, 3))); რა

ნაბიჯი 4: მაგალითი MATLAB კოდი

მაგალითი MATLAB კოდი
მაგალითი MATLAB კოდი

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

for i = 1:.1: 3 img = r.getImage; სურათი (img) red_mean = საშუალო (საშუალო (img (:,:, 1))); green_mean = საშუალო (საშუალო (img (:,,, 2))); blue_mean = საშუალო (საშუალო (img (:,,, 3))); თუ red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.left წინა <10 || cliff.right წინა <10 || cliff.right700 || მსუბუქი. მარცხენა წინა> 700 || light.leftCenter> 700 || light.rightCenter> 700 || მსუბუქი. მარჯვნივ წინა> 700 || light.right> 700 r.epep () r.beep () r.beep () r.beep () r.beep () r. შეაჩერე სხვა i = 1: 2 r.move დისტანცია (0.2, 0.1) r setDriveVelocity (.3,.2) r. შეაჩერე ბოლომდე დასრულება, თუ მწვანე_მნიშვნელობა <35 && blue_mean <35 %კანის ფერი გამოჩნდება (საჭიროა ასტრონავტის კანის ფერის მიხედვით მორგება) r.beep (); r. beep (); r. beep (); ფოსტა = '[email protected]'; %აგზავნის ელ.წერილს, რომ სარჩელი გამორთულია psswd = 'ჰო'; მასპინძელი = 'smtp.gmail.com'; პორტი = '465'; emailto = '[email protected]'; m_subject = 'საგანი'; m_text = 'ტესტი'; setpref ('ინტერნეტი', 'E_mail', ფოსტა); setpref ("ინტერნეტი", "SMTP_Server", მასპინძელი); setpref ("ინტერნეტი", "SMTP_Username", ფოსტა); setpref ("ინტერნეტი", "SMTP_Password", psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', ფოსტა); props.setProperty ('mail.smtp.host', მასპინძელი); props.setProperty ('mail.smtp.port', პორტი); 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', პორტი); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'ასტრონავტების ფორმა გამორთულია!', img); დასრულდება, თუკი red_mean 135 || მწვანე_მნიშვნელობა 135 || blue_mean 135 j = 1: 2 %თუ თეთრი ვერ მოიძებნება რობოტის მიერ r.turnAngle (360) mail = '[email protected]'; psswd = 'კი'; მასპინძელი = 'smtp.gmail.com'; პორტი = '465'; emailto = '[email protected]'; m_subject = 'საგანი'; m_text = 'ტესტი'; setpref ('ინტერნეტი', 'E_mail', ფოსტა); setpref ("ინტერნეტი", "SMTP_Server", მასპინძელი); setpref ("ინტერნეტი", "SMTP_Username", ფოსტა); setpref ("ინტერნეტი", "SMTP_Password", psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', ფოსტა); props.setProperty ('mail.smtp.host', მასპინძელი); props.setProperty ('mail.smtp.port', პორტი); 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', პორტი); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'ასტრონავტი ვერ მოიძებნა!', img); r.stop ბოლოს დასასრული დასასრული

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

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

გირჩევთ: