Мазмұны:

Roomba MATLAB жобасы: 5 қадам
Roomba MATLAB жобасы: 5 қадам

Бейне: Roomba MATLAB жобасы: 5 қадам

Бейне: Roomba MATLAB жобасы: 5 қадам
Бейне: Roomba Control (ROS & MATLAB) 2024, Шілде
Anonim
Roomba MATLAB жобасы
Roomba MATLAB жобасы

НАСА -ның Марс роверіне арналған қазіргі жоспары - бұл деректерді жинау және Марсты айналып өту, топырақтың үлгілерін жинау, ғалымдар планетада бұрынғы тіршілік формаларының бар -жоғын білу үшін. Сонымен қатар, ровер суреттерді ғалымдарға жібереді, осылайша олар роверді басқаруға және ондағы мәселелерді шешуге көмектеседі.

Біздің топтың біздің жобаның идеясы - бұл ровер NASA -ның 2020 жылы Жерден кететіні сияқты, бірақ сонымен бірге жердің географиясын картадан шығару. Roomba жартастарды сезіп, құлап кетпес бұрын өзін тоқтата алады, содан кейін артқа қарай бұрылып, бағытын өзгерте алады, сонда ол құлап кетпейді және зақымдалмайды. Біздің жобаға кіріктірілген басқа идея - бұл бөлмедегі көрнекті жерлерді құра білу және цикл аяқталған сайын оның бағыты орындалған сайын сюжетті көрсету.

Бұл нұсқаулық бөлме бөлмелері үшін бірдей код түрін жасағысы келетіндерге арналған.

1 -қадам: 1 -қадам: Қажетті материалдар

1 -қадам: Қажетті материалдар
1 -қадам: Қажетті материалдар
1 -қадам: Қажетті материалдар
1 -қадам: Қажетті материалдар

Саған қажет болады:

  1. Бөлме
  2. MATLAB
  3. Бұл файл бөлмені іске қосады
  4. Тегіс беті
  5. Үстел беті «жартастың» рөлін атқарады

2 -қадам: 2 -қадам: Roomba үшін кодты орнату/алу

2 -қадам: Roomba кодын орнату/алу
2 -қадам: Roomba кодын орнату/алу

Файлдарды енгізгеннен кейін экраныңыз осылай көрінеді.

3 -қадам: 3 -қадам: Жарық сенсорларын/жарықдиодты шамдарды орнату

Бұл код сіздің бөлмеңізге қай бұрышқа бұру керектігін айтады, батарея туралы ақпаратты тексереді, сіздің бөлмеңізге қаншалықты жылдам жүру керектігін айтады және адамды камераның камерасы арқылы тексереді. Сондай -ақ, егер ол адамды анықтаса, жартастан шықпас бұрын өзін тоқтататын болса, ол дыбысты шығарады.

% көріңіз 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) %бұрылу бұрыштарын түзету функциясы) 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) rob.stop rob.setLEDDigits ('Wall') кідіріс (0,5) кедергі (цикл) = 1; %Қабырға AA_wallbeep (rob) %Back Up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') кідіртілсе (0.5) кедергі (цикл) = 1; %Қабырға AA_wallbeep (rob) %Back.m And Turn rob.moveDistance (-. 15) rob.turnAngle (30) соңы %Егер жоқ болса (кедергі) кедергі (цикл) = 0; elseif ұзындығы (кедергі) <цикл кедергі (цикл) = 0; Соңы

5 -қадам: 5 -қадам: Сызба салу

5 -қадам: Сызба салу
5 -қадам: Сызба салу

Бұл код сіздің бөлмеңізге саяхатта не кездесетінін жоспарлауға нұсқау береді. Мұндай сюжет Roomba тоқтағаннан кейін пайда болады.

%Позицияны алу d = rob.getDistance; егер цикл == 1 тета (цикл) = 0; x (цикл) = d.*cosd (тета (цикл)); % жалпы жүру уақыты x y (цикл) = d.*sind (тета (цикл)); % басқа жолда жүріп өткен жалпы қашықтық teta (цикл) = тета (цикл-1) + rob.getAngle; x (цикл) = d.*cosd (тета (цикл)) + x (цикл-1); % жалпы жүріп өткен жол x x (цикл) = d.*sind (тета (цикл)).*d + y (цикл-1); %жалпы жол д соңында %үзіліс жағдайы, егер rob.getButtons.clean break end %Өсу циклінің циклы = цикл + 1; end rob.stop for i = 1: цикл егер кедергі (i) == 1 %Қабырға сюжеті (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') басқа кедергі болса (i) == 2 %Cliff сюжеті (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') соңғы мәтін (.9, 0.9, sprintf ('Square = Wall) nCircle = Cliff '),' Units ',' Normalized ') % Distress Signal -ді ұстап тұрыңыз, егер rob.getButtons. таза үзілу соңы % catch % rob.stop % end болса, шынымен rob.beep кідірту (3)

Ұсынылған: