Სარჩევი:

მარს რუმბა: 6 ნაბიჯი
მარს რუმბა: 6 ნაბიჯი

ვიდეო: მარს რუმბა: 6 ნაბიჯი

ვიდეო: მარს რუმბა: 6 ნაბიჯი
ვიდეო: კახი კალაძე დატროლეს 😀🤣🤣 2024, ნოემბერი
Anonim
მარს რუმება
მარს რუმება

ეს ინსტრუქცია გაგიძღვებათ Raspberry Pi კონტროლირებადი Roomba ვაკუუმ ბოტის მუშაობის მიმართულებით. ოპერაციული სისტემა, რომელსაც ჩვენ ვიყენებთ, არის MATLAB.

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

რა უნდა შეაგროვოთ ამ პროექტის განსახორციელებლად:

  • iRobot's Create2 Roomba მტვერსასრუტი ბოტი
  • ჟოლო პი
  • ჟოლო პი კამერა
  • MATLAB- ის უახლესი ვერსია
  • Roomba დააინსტალირეთ ინსტრუმენტები MATLAB– ისთვის
  • MATLAB პროგრამა ფიჭური მოწყობილობისთვის

ნაბიჯი 2: პრობლემის განცხადება

პრობლემის განცხადება
პრობლემის განცხადება

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

ნაბიჯი 3: Bluetooth დისტანციური მართვა

Bluetooth დისტანციური მართვა
Bluetooth დისტანციური მართვა

ეს სლაიდი გაივლის კოდს, რომ გააკონტროლოს Roomba– ს მოძრაობა თქვენი სმარტფონის მოწყობილობის Bluetooth შესაძლებლობების გამოყენებით. დასაწყებად, ჩამოტვირთეთ MATLAB პროგრამა თქვენს სმარტფონში და შედით თქვენს მათემატიკის ანგარიშზე. სისტემაში შესვლისთანავე გადადით "მეტი", "პარამეტრები" და დაუკავშირდით თქვენს კომპიუტერს მისი IP მისამართის გამოყენებით. დაკავშირების შემდეგ დაუბრუნდით "სხვას" და აირჩიეთ "სენსორები". შეეხეთ ეკრანის ზედა პანელის მესამე სენსორს და შეეხეთ დაწყებას. ახლა, თქვენი სმარტფონი არის დისტანციური მართვა!

კოდი ასეთია:

ხოლო 0 == 0

პაუზა (.5)

PhoneData = M. ორიენტაცია;

Azi = PhoneData (1);

მოედანი = PhoneData (2);

გვერდი = PhoneData (3);

მუწუკები = r.getBumpers;

თუ გვერდი> 80 || მხარე <-80

რ. გაჩერება

r.beep ('C, E, G, C^, G, E, C')

შესვენება

elseif გვერდი> 20 && მხარე <40

r.turnAngle (-5);

elseif გვერდი> 40

r.turnAngle (-25);

elseif გვერდი -40

r.turnAngle (5);

elseif გვერდი <-40

r.turnAngle (25);

დასასრული

თუ Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

დასასრული

დასასრული

ნაბიჯი 4: ზემოქმედების აღიარება

ზემოქმედების აღიარება
ზემოქმედების აღიარება

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

კოდი ნაჩვენებია ქვემოთ:

ხოლო 0 == 0

მუწუკები = r.getBumpers;

r.setDriveVelocity (.1)

თუ bumps.left == 1

msgbox ('ოფ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('ოფ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('ოფ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('ოფ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('ოფ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

დასასრული

დასასრული

ნაბიჯი 5: სიცოცხლის აღიარება

სიცოცხლის აღიარება
სიცოცხლის აღიარება

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

კოდი ასეთია:

t = 10;

i = 0;

ხოლო t == 10

img = r.getImage; ჩვენება (img)

პაუზა (0.167)

i = i + 1;

red_mean = საშუალო (საშუალო (img (:,:, 1)));

blue_mean = საშუალო (საშუალო (img (:,,, 3)));

green_mean = საშუალო (საშუალო (img (:,,, 2)));

თეთრი_მნიშვნელ = (ცისფერი_მნიშვნელობა + მწვანე_სიცოცხლისფერი + წითელი_სიტყვაობა) / 3; %-ს სურს ეს ღირებულება დაახლოებით 100

ცხრა_პლუს_თენი = 21;

მწვანე_ბარიერი = 125;

ლურჯი_ბარიერი = 130;

თეთრი_ბარიერი = 124;

წითელი_ბარიერი = 115;

ხოლო nine_plus_ten == 21 %მწვანე - სიცოცხლე

თუ green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('სიცოცხლის სავარაუდო წყარო ნაპოვნია, მდებარეობა შედგენილია');

პაუზა (2)

წაშლა (ა)

[y2, Fs2] = აუდიო გაცნობა ('z_speak2.wav');

ხმა (y2, Fs2)

პაუზა (2)

%მცენარე = r.getImage; %imshow (მცენარე);

%დაზოგვა ('plant_img.mat', მცენარე ');

ნაკვეთის ადგილმდებარეობა მწვანეში

i = 5;

შესვენება

სხვა

ცხრა_პლუს_თენი = 19;

დასასრული

დასასრული

ცხრა_პლუს_თენი = 21;

ხოლო nine_plus_ten == 21 %ცისფერი - მეწამული

თუ blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ("წყლის წყარო ნაპოვნია, ადგილმდებარეობა ნაჩვენებია");

პაუზა (2)

წაშლა (ა)

[y3, Fs3] = აუდიოროდი ('z_speak3.wav');

ხმა (y3, Fs3);

%woder = r.getImage; %imshow (woder)

%დაზოგვა ('water_img.mat', woder)

ნაკვეთის მდებარეობა ლურჯში

i = 5;

შესვენება

სხვა

ცხრა_პლუს_თენი = 19;

დასასრული

დასასრული

ცხრა_პლუს_თენი = 21;

ხოლო nine_plus_ten == 21 %თეთრი - უცხოპლანეტელები monkaS

თუ white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = აუდიო გაცნობა ('z_speak5.wav');

ხმა (y5, Fs5);

პაუზა (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

ხმა (ys, Fss);

პაუზა (3)

რ. გაჩერება

% alien = r.getImage; %imshow (უცხო);

% დაზოგვა ('alien_img.mat', უცხო);

i = 5;

შესვენება

სხვა

ცხრა_პლუს_თენი = 19;

დასასრული

დასასრული

თუ მე == 5

a = 1; %ბრუნვის კუთხე

t = 9; %შეწყვეტა დიდი მარყუჟი

i = 0;

დასასრული

დასასრული

ნაბიჯი 6: გაუშვით

მას შემდეგ, რაც ყველა კოდი დაიწერება, შეაერთეთ ეს ყველაფერი ერთ ფაილში და voila! თქვენი Roomba ბოტი ახლა იქნება სრულად ფუნქციონირებული და იმუშავებს როგორც რეკლამირებულია! ამასთან, Bluetooth კონტროლი უნდა იყოს ცალკე ფაილში ან გამოყოფილი დანარჩენი კოდისგან %%.

ისიამოვნეთ თქვენი რობოტის გამოყენებით !!

გირჩევთ: