Სარჩევი:

Roomba MATLAB პროექტი: 5 ნაბიჯი
Roomba MATLAB პროექტი: 5 ნაბიჯი

ვიდეო: Roomba MATLAB პროექტი: 5 ნაბიჯი

ვიდეო: Roomba MATLAB პროექტი: 5 ნაბიჯი
ვიდეო: პროპაგანდა / Propaganda.network - ოლეგ ტიმჩენკო / Oleg Timchenko 2024, ივლისი
Anonim
Roomba MATLAB პროექტი
Roomba MATLAB პროექტი

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

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

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

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

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

თქვენ დაგჭირდებათ:

  1. რუმბა
  2. MATLAB
  3. ეს ფაილი roomba- ს გასაშვებად
  4. ბრტყელი ზედაპირი
  5. მაგიდის ზედაპირი, რომელიც მოქმედებს როგორც "კლდე"

ნაბიჯი 2: ნაბიჯი 2: Roomba– ს კოდის დაყენება/მიღება

ნაბიჯი 2: Roomba– ს კოდის დაყენება/მიღება
ნაბიჯი 2: Roomba– ს კოდის დაყენება/მიღება

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

ნაბიჯი 3: ნაბიჯი 3: კლდის სენსორების/LED ნათურების დაყენება

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

% try rob.setLEDDigits ('') x = 0; y = 0; თეტა = 0; დაბრკოლება = ; ციკლი = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %შემობრუნების კუთხეების გასწორების ფუნქცია rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %გადადით %შეამოწმეთ პირი თუ AA_checkperson (ძარცვა) rob.beep დასასრული %შეამოწმეთ კლდის სენსორი თუ AA_cliffcheck (ძარცვა) rob.stop rob.setLEDDigits ('Cliff') პაუზა (0.5) დაბრკოლება (ციკლი) = 2; AA_cliffbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) დასასრული

ნაბიჯი 4: ნაბიჯი 4: დაბრკოლებების შემოწმება

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

%შეამოწმეთ სინათლის სენსორი, თუ AA_lightcheck (ძარცვა) rob.stop rob.setLEDDigits ('კედელი') პაუზა (0.5) დაბრკოლება (ციკლი) = 1; %კედელი AA_wallbeep (ძარცვა) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %შეამოწმეთ დარტყმის სენსორი, თუ AA_bumpcheck (ძარცვა) rob.stop rob.setLEDDigits ('კედელი') პაუზა (0.5) დაბრკოლება (ციკლი) = 1; %კედელი AA_wallbeep (ძარცვა) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) ბოლოს %თუ არცერთი არ არის თუ არა დაბრკოლება (ციკლი) = 0; elseif სიგრძე (დაბრკოლება) <ციკლის დაბრკოლება (ციკლი) = 0; დასასრული

ნაბიჯი 5: ნაბიჯი 5: შეთქმულება

ნაბიჯი 5: შეთქმულება
ნაბიჯი 5: შეთქმულება

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

%მიიღეთ პოზიცია d = rob.getDistance; თუ ციკლი == 1 თეტა (ციკლი) = 0; x (ციკლი) = დ.*cosd (თეტა (ციკლი)); % მთლიანი დისტანცია x y (ციკლი) = d.*sind (theta (ციკლი)); % მთლიანი დისტანცია ი სხვაში თეტა (ციკლი) = თეტა (ციკლი -1) + rob.getAngle; x (ციკლი) = დ.*cosd (თეტა (ციკლი)) + x (ციკლი -1); % მთლიანი დისტანცია x y (ციკლი) = d.*sind (theta (ციკლი)).*d + y (ციკლი -1); სულ მთლიანი დისტანცია y ბოლოს %შესვენების მდგომარეობა rob.getButtons.clean break end %ციკლის გაზრდის ციკლი = ციკლი + 1; ბოლოს rob.stop for i = 1: ციკლი თუ დაბრკოლება (i) == 1 %კედლის ნაკვეთი (x (i), y (i), "მარკერი", "კვადრატი", "MarkerEdgeColor", "r") სხვა წინააღმდეგობა (i) == 2 %კლდის ნაკვეთი (x (i), y (i), 'მარკერი', 'o', 'MarkerEdgeColor', 'k') ბოლო ტექსტი (.9, 0.9, sprintf ('მოედანი = კედელი / n წრე = კლდე '),' ერთეულები ',' ნორმალიზებულია ') ბოლომდე დაიჭირეთ % distress სიგნალი სანამ ნამდვილი rob.beep პაუზა (3) თუ rob.getButtons.clean break end end % catch % rob.stop % end

გირჩევთ: