Სარჩევი:

Roomba ერთად MATLAB: 4 ნაბიჯი (სურათებით)
Roomba ერთად MATLAB: 4 ნაბიჯი (სურათებით)

ვიდეო: Roomba ერთად MATLAB: 4 ნაბიჯი (სურათებით)

ვიდეო: Roomba ერთად MATLAB: 4 ნაბიჯი (სურათებით)
ვიდეო: Mr. Roombato - A MATLAB-Driven Roomba Project 2024, ნოემბერი
Anonim
Roomba MATLAB– ით
Roomba MATLAB– ით

ეს პროექტი იყენებს MATLAB- ს და iRobot Create2 პროგრამირებადი რობოტს. MATLAB- ის ცოდნის გამოცდაში ჩვენ შეგვიძლია დავპროგრამოთ Creat2 სურათების ინტერპრეტაციისა და სიგნალების გამოვლენის მიზნით. რობოტის ფუნქციონირება ძირითადად დამოკიდებულია MATLAB მობილური აპლიკაციაზე და Raspberry Pi კამერის მოდულზე.

ნაბიჯი 1: ნაწილები და მასალები

ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები

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

- ეს არის პროგრამირებადი რობოტი, რომელიც ჰგავს რუმბას. იცოდეთ, რომ iRobot– ის ეს პროდუქტი არ არის ვაკუუმი. ის განკუთვნილია მომხმარებლის მიერ პერსონალური პროგრამირებისთვის.

2. MATLAB 2017a

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

3. ჟოლო Pi 3 მოდელი B, ვერსია 1.2

- შეამოწმეთ რომელი Raspberry Pi თავსებადია თქვენს iRobot– თან. იხილეთ ეს ბმული შემდგომი დახმარებისთვის: https://www.irobotweb.com/~/media/MainSite/PDFs/A… ეს გასაგები ვარაუდია თქვენ მუშაობთ წინასწარ დაპროგრამებულ Raspberry Pi– თან. გთხოვთ გაითვალისწინოთ, რომ თქვენ დაგჭირდებათ წინასწარ დაპროგრამებულ Pi– სთან მუშაობა, რათა შემდგომი ნაბიჯები იმუშაოს. წინასწარ დაპროგრამებული Pi– ს გამოყენება საშუალებას მოგცემთ შეასრულოთ მთელი თქვენი კოდირება მხოლოდ MATLAB– ში.

4. კამერის მოდული V2 (ჟოლოს პიისთვის)

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

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

ნაბიჯი 2: კონფიგურაცია

კონფიგურაცია
კონფიგურაცია
კონფიგურაცია
კონფიგურაცია

1. ჟოლოს Pi და კამერის მოდულის დაკავშირება (აპარატურა)

- Raspberry Pi- ს გასაძლიერებლად, თქვენ დაგჭირდებათ მამრობითი სქესის მიკრო USB- ის გაშვება მიკროკონტროლერის მდედრობითი კვების პორტზე. სურვილისამებრ: ძაბვის რეგულატორი შეიძლება გამოყენებულ იქნას იმის უზრუნველსაყოფად, რომ ძაბვა არ აღემატება 5 ვ. მას შემდეგ, რაც Raspberry Pi იკვებება, შეგიძლიათ დაუკავშიროთ იგი თქვენს რობოტს, მამრობითი სქესის USB a დედაპლატიდან მიკროკონტროლერზე USB პორტ A– ზე გაშვებით.

- Pi– ს Roomba– სთან დაკავშირების შემდეგ, კამერა მზადაა დასაყენებლად. კამერის მოდული იქნება ბევრად უფრო მცირე ვიდრე თქვენ ელით. გაითვალისწინეთ, რომ ობიექტივი დამონტაჟებულია სენსორზე და თეთრი ლენტი ვრცელდება კამერიდან. არ ამოიღოთ ან გაანადგუროთ ლენტი! ეს არის კაბელი, რომელიც გჭირდებათ Raspberry Pi– თან დასაკავშირებლად. პირველი, დაიჭირეთ ლენტის ბოლო და იპოვნეთ ვერცხლის კონექტორები და ლურჯი კაბელი. ესენი მოპირდაპირე მხარეს არიან. შემდეგი, იპოვეთ სლოტი Ethernet და HDMI პორტებს შორის თქვენს Raspberry Pi– ზე. გაითვალისწინეთ, რომ პატარა, თეთრი საკეტი ფარავს მას. ნელა აწიეთ საკეტი, მაგრამ არ ამოიღოთ იგი ჭრილობიდან, რადგან ის გაიჭედება და სამუდამოდ დაზიანდება. მას შემდეგ რაც საკეტი ამოიღეთ, აიღეთ ლენტი და შეხედეთ ვერცხლის კონექტორებს HDMI პორტისკენ. ლურჯი მხარე იქნება Ethernet პორტისკენ. ნელა გადაიტანეთ ლენტი სლოტში, სანამ ის ჯერ კიდევ გახსნილია. თქვენ არ გჭირდებათ მისი ძალით ჩადება ჭრილში. ჩასმის შემდეგ, უკან დააბრუნეთ საკეტი. თუ თქვენი კამერა სათანადოდ არის დაცული, თქვენ უნდა შეძლოთ (ნაზად) დაიჭიროთ ლენტი და იგრძნოთ დაძაბულობა. ლენტი არ უნდა იყოს ფხვიერი. კამერის Pi- სთან დაკავშირების შემდეგ შეიძლება შეამჩნიოთ რამდენად ფხვიერია. ამიტომაც ჩვენ გამოვიყენეთ სამგანზომილებიანი დაბეჭდილი სამაგრი მის დასამაგრებლად. თქვენი არჩევანია განსაზღვროთ რა მასალის გამოყენება გსურთ თქვენი კამერის მაღალი ხარისხის გამოსახულების შესანარჩუნებლად.

2. სათანადო ფაილების დაინსტალირება და Roomba- ს კომპიუტერთან დაკავშირება მას შემდეგ, რაც თქვენი აპარატურა იქნება კონფიგურირებული, ახლა თქვენ შეგიძლიათ გადახვიდეთ MATLAB– ის ინსტალაციაზე და მასთან დაკავშირებულ m ფაილებთან ერთად, რაც საშუალებას მოგცემთ დაუკავშირდეთ რობოტს. ამისათვის გახსენით MATLAB და შექმენით ახალი საქაღალდე, რომ შეინახოთ ყველა დაკავშირებული ფაილი ერთად. გამოიყენეთ ეს სკრიპტი საჭირო ფაილების ინსტალაციის/განახლებისთვის:

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

3. ფაილების დაყენების შემდეგ, თქვენ შეგიძლიათ დაიწყოთ თქვენი რობოტის დაკავშირება. დაიწყეთ თქვენი რობოტის ჩართვით და შემდეგ მყარი გადატვირთვით პირდაპირ გაშვების შემდეგ (არ დაგავიწყდეთ რობოტის მყარი გადატვირთვა ყოველ ჯერზე გამოყენებამდე და მის შემდეგ). მეორე, დაუკავშირეთ თქვენი რობოტი და ლეპტოპი ერთსა და იმავე wifi ქსელს. ამის შემდეგ, ჩვენ ვესაუბრებით წინასწარ დაპროგრამებულ Raspberry Pi– ს MATLAB– ის საშუალებით, Roomba– ს გამოძახებით მისი სახელისა და ფუნქციის roomba გამოყენებით. მაგალითად, მე დავუკავშირდები რობოტს 28 შემდეგი ხაზის გამოყენებით: R = roomba (28).

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

- R.turnAngle (90) თუ ყველაფერი კარგად წარიმართა, მუსიკალური ტონი უნდა ჟღერდეს, რომელიც ადასტურებს კავშირს.

ნაბიჯი 3: MATLAB ლოგიკა

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

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

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

ქვემოთ მოცემულია ჩვენი კოდი (დასრულებულია MATLAB 2017 ა)

%შეყვანა: ორიენტაციის მონაცემები wifi დაკავშირებული მოწყობილობიდან, კამერადან

%ინფორმაცია, სენსორის მონაცემები

%შედეგები: მოძრაობას აკონტროლებს wifi დაკავშირებული მოწყობილობა და მოძრაობა

% შემოწმებულია სენსორის მონაცემების წაკითხვით. თუ კამერა აღმოაჩენს

უცხოელის დროშა მაშინ roomba პასუხობს tweeting მტრის დროშა

% შენიშნულია.

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

% შექმნა იგი, ის ემსახურება მის შემქმნელს და აკეთებს

ზუსტად ის, რაც ნათქვამია.

გამოყენება: არსებითად პროგრამა იმუშავებს საკუთარი.

გასუფთავება ყველა, ყველა დახურვა, clc

ობიექტების და ცვლადების ინიციალიზაცია

r = roomba (28);

m = mobiledev;

%use response = ვებ -წერა (მასპინძლის სახელი, მონაცემები)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop არის ოპერატიული … ელოდება ბრძანებას';

მონაცემები = strcat ('api_key =', API, '& status =', ტვიტი);

რეაგირება = ვებ - წერა (მასპინძლის სახელი, მონაცემები);

მუდმივად გაშვებული მარყუჟი

ხოლო 1 == 1

სტრუქტურები შეიცავს Relavent მონაცემები

o = m. ორიენტაცია; მობილური მოწყობილობის ორიენტაცია

მსუბუქი = r.getLightBumpers (); %მსუბუქი ბამპერის ღირებულებები

a = r.getCliffSensors (); კლიფის სენსორის მნიშვნელობები

bump = r.getBumpers (); ბამპერის სენსორები

%გამშვები ბამპერები

თუ bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

შეამოწმეთ სინათლის სენსორები

elseif light.left> 60 || მსუბუქი. მარცხენა წინა> 60 || light.leftCenter> 60 || მსუბუქი. მარჯვნივ> 60 || მსუბუქი. მარჯვნივ წინა> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

შეამოწმეთ Cliff სენსორები

ქურდობის საწინააღმდეგო სიგნალი და შეტყობინება

elseif a.left <300 && a.right <300 && a.left წინა <300 && a.right წინა <300

r.stop ();

r. beep ();

tweet = 'RoboCop მოხსნილია!'

მონაცემები = strcat ('api_key =', API, '& status =', ტვიტი);

რეაგირება = ვებ - წერა (მასპინძლის სახელი, მონაცემები);

ჩვეულებრივი Cliff თავიდან აცილების ოპერაცია

elseif a.left <300 || ა. უფლება <300 || a.leftFront <300 || a.right Front <300

r.moveDistance (-. 2,.2);

Roomba გაიარა შემოწმება და ახლა აწარმოებს ნორმალური ოპერაცია.

თავდაპირველად მოწყობილობის როლი იზომება და ხდება ბაზა

%სიჩქარე, რომელიც გამოიყენება ბორბლის სიჩქარის გამოსათვლელად

წინ მოძრაობა

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-.. 5/60)*(o (3) -60);

თუ o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

სხვა r.stop

დასასრული

უკან მოძრაობა

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r. beep ();

r. beep ();

დანარჩენი roomba მოძებნის უცხო დროშას, რომელიც მონიშნულია როგორც ფლუორესცენტი

მწვანე ნაჭერი ქაღალდი

სხვა

რ. გაჩერება

img = r.getImage (); %სურათის გადაღება

ბარიერი = ნაცრისფერი (img (200: 383,:, 2))+. 1; %მწვანე მწვანე დონე

თუ ბარიერი>.42

tweet = 'მტერი მყიფე !!'

მონაცემები = strcat ('api_key =', API, '& status =', ტვიტი);

რეაგირება = ვებ - წერა (მასპინძლის სახელი, მონაცემები);

სხვა

რ. გაჩერება

დასასრული

დასასრული

დასასრული

ნაბიჯი 4: დასკვნა

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

გირჩევთ: