Სარჩევი:

IRobot Create-Mars Expedition Rover Mark I: 4 ნაბიჯი
IRobot Create-Mars Expedition Rover Mark I: 4 ნაბიჯი

ვიდეო: IRobot Create-Mars Expedition Rover Mark I: 4 ნაბიჯი

ვიდეო: IRobot Create-Mars Expedition Rover Mark I: 4 ნაბიჯი
ვიდეო: How Robots Will Take Over Mars! 2024, ნოემბერი
Anonim
IRobot Create-Mars Expedition Rover Mark I
IRobot Create-Mars Expedition Rover Mark I

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

ნაბიჯი 1: მარაგი

მარაგები
მარაგები

ამ პროექტისთვის დაგჭირდებათ iRobot Create, რომელიც არის Roomba რობოტის მტვერსასრუტის პროგრამირებადი ვერსია. რობოტი აღჭურვილია ამ პროექტისათვის საჭირო ყველა სენსორით, კერძოდ დარტყმის სენსორებით, კლდის სენსორებით და "Light Bump" სენსორებით. თქვენ ასევე დაგჭირდებათ ჟოლო Pi და ვიდეო კამერა, რომელიც გამოიყენება უკაბელო კომუნიკაციისთვის, პირდაპირი პროგრამირებისთვის და ცოცხალი ვიდეო არხისთვის. დაბოლოს, თქვენ დაგჭირდებათ 3D დაბეჭდილი სამონტაჟო Raspberry Pi და კამერისთვის.

ნაბიჯი 2: შეიმუშავეთ კოდირება სასურველი შედეგის დასაკმაყოფილებლად

შეიმუშავეთ კოდირება სასურველი შედეგის დასაკმაყოფილებლად
შეიმუშავეთ კოდირება სასურველი შედეგის დასაკმაყოფილებლად

მას შემდეგ რაც დააკავშირებთ თქვენს Roomba– ს, თქვენ უნდა შექმნათ Matlab კოდი, რომელიც მოგცემთ სასურველ შედეგებს თქვენი სასურველი შეყვანის შემდეგ.

კოდი შეგიძლიათ ნახოთ აქ:

Roomba პროექტი ბრენტენ არნოლდი (ბარნოლი 15); ჯულიანა კორნი (qdp218); მაიკ ჰილი (მეჰალ) %4/11/19 %პრობლემის აღწერა: შექმენით როვერი, რომელიც დაეხმარება ადამიანებს მარსის კვლევის/საცხოვრებლის დროს. ამოხსნის მეთოდი: მოძებნეთ ორგანული (მწვანე) მატერია სინათლის ბამპერების, კლდის სენსორების და კამერის გამოყენებით ორგანული ნივთიერებების შესამოწმებლად. ნება მიეცით როვერს ნავიგაცია უხეშ რელიეფზე ბამპერების, კლდის სენსორების და ბორბლის სიმაღლის სენსორების გამოყენებით. მიეცით ადამიანს საშუალება გააკონტროლოს როვერი უსაფრთხო მანძილიდან და ხელით მოიძიოს მინერალები. არჩევანი = {'LIFE', 'ROUGH TERRAIN', 'USER CONTROL'}; %სამი ვარიანტი დიალოგის მენიუში პარამეტრი = მენიუ ('', არჩევანი) თუ პარამეტრი> 0 %თუ არჩეული ვარიანტი მოითხოვეთ მომხმარებლის დადასტურების არჩევანი 2 = {'დიახ', 'არა'} %უჯრედის მასივის შექმნა "დიახ" ან "არა" "არჩევანი დადასტურება = მენიუ (['თქვენ აირჩიეთ"' არჩევანი {Setting} '"რეჟიმი.'], არჩევანი 2) %მომხმარებლის პარამეტრების არჩევანის დადასტურება თუ დაადასტურეთ == 1 თუ დაყენება == 1 %შეამოწმეთ თუ არა" LIFE "პარამეტრი = 0 ხოლო i == 0 r.setLEDDigits (num2str ('LIFE')) %ჩვენება 'LIFE' LED- ზე i = 1: 100 r.setDriveVelocity (0.05) %roombaba- ს წინსვლა 0.05 მ/sy = r.getCliff %ამოიღეთ და შეინახეთ კლდის სენსორის მნიშვნელობები უჯრედის სტრუქტურაში "y" l = r.getLightBumpers %ამოიღეთ და შეინახეთ სინათლის ამომრჩევი მნიშვნელობები სტრუქტურაში "f", თუ l. მარცხენა> 100 %შეამოწმეთ არის თუ არა დაფარული შუქის ბამპერი r.moveDistance (-0.05) %გადაადგილება roomba უკან 0.05 მეტრი r.turnAngle (20) %როტაცია roomba 20 გრადუსი CCW img = r.getImage %სურათის მიღება ჟოლოს ტორტის კამერიდან roomba rect = [100 0 150 150]; img = imcrop (img, rect) %მოჭრილი სურათი ფოკუსირება ცენტრალურ წითელზე = საშუალო (საშუალო (საშუალო (img (:,,, 1))) საშუალო წითელი ინტენსივობის მწვანე = საშუალო (საშუალო (img (:,,, 2))) %საშუალო მწვანე ინტენსივობა ლურჯი = საშუალო (საშუალო (img (:,,, 3))) %საშუალო ლურჯი ინტენსივობა თუ მწვანე> წითელი და & მწვანე> ლურჯი %შეამოწმეთ არის თუ არა მცენარე სურათზე d = msgbox (['სიცოცხლე ნაპოვნია! ']); აჩვენეთ შეტყობინების ყუთი, რომელშიც ნათქვამია "სიცოცხლე ნაპოვნია!" ლოდინი (დ); ბოლოს სხვა 'rect = [100 0 150 150]; img = imcrop (img, rect) %მოჭრილი სურათი ფოკუსირება ცენტრში წითელზე = საშუალო (საშუალო (საშუალო (img (:,,, 1))) %საშუალო წითელი ინტენსივობის მწვანე = საშუალო (საშუალო (img (:,,, 2))) %საშუალო მწვანე ინტენსივობა ლურჯი = საშუალო (საშუალო (img (:,,, 3))) %საშუალო ლურჯი ინტენსივობა თუ მწვანე> წითელი და & მწვანე> ლურჯი %შეამოწმეთ არის თუ არა მცენარე სურათზე d = msgbox (['სიცოცხლე ნაპოვნია! ']); აჩვენეთ შეტყობინების ყუთი, რომელშიც ნათქვამია "სიცოცხლე ნაპოვნია!" ლოდინი (დ); ბოლოს სხვა 'rect = [100 0 150 150]; img = imcrop (img, rect) %მოჭრილი სურათი ფოკუსირება ცენტრალურ წითელზე = საშუალო (საშუალო (საშუალო (img (:,,, 1))) საშუალო წითელი ინტენსივობის მწვანე = საშუალო (საშუალო (img (:,,, 2))) %საშუალო მწვანე ინტენსივობა ლურჯი = საშუალო (საშუალო (img (:,,, 3))) %საშუალო ლურჯი ინტენსივობა თუ მწვანე> წითელი და & მწვანე> ლურჯი %შეამოწმეთ არის თუ არა მცენარე სურათზე d = msgbox (['სიცოცხლე ნაპოვნია! ']); აჩვენეთ შეტყობინების ყუთი, რომელშიც ნათქვამია "სიცოცხლე ნაპოვნია!" ლოდინი (დ); ბოლოს სხვა 'rect = [100 0 150 150]; img = imcrop (img, rect) %მოჭრილი სურათი ფოკუსირება ცენტრალურ წითელზე = საშუალო (საშუალო (საშუალო (img (:,,, 1))) საშუალო წითელი ინტენსივობის მწვანე = საშუალო (საშუალო (img (:,,, 2))) %საშუალო მწვანე ინტენსივობა ლურჯი = საშუალო (საშუალო (img (:,,, 3))) %საშუალო ლურჯი ინტენსივობა თუ მწვანე> წითელი და & მწვანე> ლურჯი %შეამოწმეთ არის თუ არა მცენარე სურათზე d = msgbox (['სიცოცხლე ნაპოვნია! ']); აჩვენეთ შეტყობინების ყუთი, რომელშიც ნათქვამია "სიცოცხლე ნაპოვნია!" ლოდინი (დ); ბოლოს სხვა 'rect = [100 0 150 150]; img = imcrop (img, rect) %მოჭრილი სურათი ფოკუსირება ცენტრალურ წითელზე = საშუალო (საშუალო (საშუალო (img (:,,, 1))) საშუალო წითელი ინტენსივობის მწვანე = საშუალო (საშუალო (img (:,,, 2))) %საშუალო მწვანე ინტენსივობა ლურჯი = საშუალო (საშუალო (img (:,,, 3))) %საშუალო ლურჯი ინტენსივობა თუ მწვანე> წითელი და & მწვანე> ლურჯი %შეამოწმეთ არის თუ არა მცენარე სურათზე d = msgbox (['სიცოცხლე ნაპოვნია! ']); აჩვენეთ შეტყობინების ყუთი, რომელშიც ნათქვამია "სიცოცხლე ნაპოვნია!" ლოდინი (დ); ბოლოს სხვა ჟოლოს ტორტის კამერა roomba- ზე და შეინახეთ ცვლადი 'img' rect = [100 0 150 150]; img = imcrop (img, rect) %მოჭრილი სურათი ფოკუსირება ცენტრალურ წითელზე = საშუალო (საშუალო (საშუალო (img (:,,, 1))) საშუალო წითელი ინტენსივობის მწვანე = საშუალო (საშუალო (img (:,,, 2))) %საშუალო მწვანე ინტენსივობა ლურჯი = საშუალო (საშუალო (img (:,,, 3))) %საშუალო ლურჯი ინტენსივობა თუ მწვანე> წითელი && მწვანე> ლურჯი %შეამოწმეთ არის თუ არა მცენარე სურათზე d = msgbox (['სიცოცხლე ნაპოვნია! ']); აჩვენეთ შეტყობინების ყუთი, რომელშიც ნათქვამია "სიცოცხლე ნაპოვნია!" ლოდინი (დ); ბოლოს სხვა <უკან გრადუსი CW სხვა გრადუსი CCW სხვა y. მარცხენა <1000 %შეამოწმეთ არის თუ არა ოთახის მარცხენა მხარე კლდიდან r. გადაადგილება მანძილი (-0.05, 0.05) %ოთახის გადატანა უკან 0.05 მეტრით 0.05 მ/წმ r.turnAngle (-10) %მბრუნავი ოთახი 10 გრადუსი CW სხვა i = 0 ხოლო i == 0 r.setLEDDigits (num2str ('RGH')) %ჩვენება 'Rough' LED ეკრანზე i = 1: 1000 r.setDriveVelocity (0.05) %roomba დისკის სიჩქარის დაყენება 0.05 მ/წმ = r.getBumpers %ვიღებ და ვინახავთ ბამპერის სენსორის მნიშვნელობებს სტრუქტურაში "x" y = r.get CliffSensors %ამოიღეთ და შეინახეთ კლდის სენსორის მნიშვნელობები სტრუქტურაში "y", თუ x.right == 1 %შეამოწმეთ თუ არა მარჯვენა ბამპერი დაჭერილი r.turnAngle (10) %ოთახის როტაცია 10 გრადუსი CCW elseif x.left == 1 %შეამოწმეთ მარცხნივ ბამპერი დაჭერილია r.turnAngle (-10) %Rotate roomba 10 გრადუსი CW სხვა თუ x.front == 1 %შეამოწმეთ არის თუ არა წინა ბამპერი დაჭერილი r.turnAngle (20) %Rotate roomba 20 გრადუსი CCW სხვაგან x.rightWheelDrop == 1 % შეამოწმეთ მარჯვენა ბორბალი დაეცა r.turnAngle (-20) %Rotate roomba 20 გრადუსი CW სხვა თუ x.leftWheelDrop == 1 %შემოწმება მარცხენა ბორბალი დაეცა r.turnAngle (20) %Rotate roomba 20 გრადუსი CCW სხვაგან y.leftFront < 1500 %შეამოწმეთ თუ არა ოთახის წინა მარცხენა ნაწილი კლდიდან r.move გადაადგილება მანძილი (-0.05, 0.05) %გადაადგილება roomba უკან 0.05 მეტრი 0.05 მ/წმ r.turnAngle (-5) %Rotate roomba 5 გრადუსი CW სხვაგვარად y.rightFront < 1500 %შეამოწმეთ თუ არა ოთახის მარჯვენა წინა ნაწილი კლდიდან r.move გადაადგილება მანძილი (-0.05, 0.05) %გადაადგილება roomba უკან 0.05 მეტრი 0.05 მ/წმ r.turnAngle (5) %Rotate roomba 5 გრადუსი CCW სხვაგან y. მარცხენა <1000 %შეამოწმეთ თუ დარჩა ნაწილი o f roomba off cliff r.move დისტანცია (-0.05, 0.05)%გადაადგილება roomba უკან 0.05 მეტრი 0.05 მ/წმ r.turnAngle (-10)%Rotate roomba 10 გრადუსი CW elseif y.right0 თუ გაგრძელდება == 1 i = 0 %უხეში რელიეფის გაგრძელება სხვა i = 1 %დასრულება უხეში რელიეფის დასასრული დასრულება სხვაგან %სახელმძღვანელო რეჟიმი i = 0 r.setLEDDigits (num2str ('USER')) %ჩვენება 'USER' LED ეკრანზე d = msgbox (

ნაბიჯი 3: ტესტირება

ტესტირება
ტესტირება

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

ნაბიჯი 4: დააკვირდით ვიზუალურ შედეგებს

დააკვირდით ვიზუალურ შედეგებს
დააკვირდით ვიზუალურ შედეგებს
დააკვირდით ვიზუალურ შედეგებს
დააკვირდით ვიზუალურ შედეგებს

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

შედეგები მოიცავს:

  • ფორმის გამოვლენა: Roomba– ს უნარი სწორად განასხვავოს ფორმები, რათა იპოვოს სწორი მინერალები
  • უხეში რელიეფის მანევრები: თავს არიდებს კლდეებს ან ბნელ ადგილებს
  • მექანიკური რეჟიმი: ცოცხალი კვება და Roomba- ს კონტროლის უნარი
  • სურათები: მინერალების სურათები
  • სიცოცხლე ნაპოვნია!

ეს არის ჩვენი გაკვეთილის დასასრული, ისიამოვნეთ თქვენი ახალი Mars Expedition Rover– ით!

გირჩევთ: