Мазмуну:

Roomba MATLAB долбоору: 5 кадам
Roomba MATLAB долбоору: 5 кадам

Video: Roomba MATLAB долбоору: 5 кадам

Video: Roomba MATLAB долбоору: 5 кадам
Video: Roomba Control (ROS & MATLAB) 2024, Июль
Anonim
Roomba MATLAB долбоору
Roomba MATLAB долбоору

NASAнын Марс роверине карата учурдагы планы - бул маалымат чогултуучу жана Марстын айланасында жүрүү, Жерге кайра алып келүү үчүн топурактын үлгүлөрүн чогултуу, илимпоздор планетада мурунку жашоо формалары бар -жогун көрүш үчүн. Мындан тышкары, ровер илимпоздорго сүрөттөрдү кайра жөнөтөт, алар роверде навигацияга жана андагы көйгөйлөрдү чечүүгө жардам берет.

Биздин топтун биздин долбоор боюнча идеясы - бул 2020 -жылы жерди таштап кете турган NASAнын ровериндей эле, бирок ал жердин географиясын картага түшүрүү. Roomba аскаларды сезе алат жана кулай электе өзүн токтото алат, анан артка кайрылып, бурулуп, багытын өзгөртө алат, ошондо ал кулап кетпейт жана бузулбайт. Долбоорубузга киргизилген башка идеябыз - бул бөлмө көргөн жерлерди пландаштырып, цикл бүткөндө жана анын жүрүшү ишке ашкан сайын сюжетти көрсөтө алат.

Бул көрсөтмө, алардын Roomba үчүн бир эле түрдөгү кодду түзүүнү каалагандар үчүн.

1 -кадам: 1 -кадам: Керектүү материалдар

1 -кадам: Керектүү материалдар
1 -кадам: Керектүү материалдар
1 -кадам: Керектүү материалдар
1 -кадам: Керектүү материалдар

Сага керек болот:

  1. Roomba
  2. MATLAB
  3. Бул файл Roomba иштетүү үчүн
  4. Тегиз бет
  5. Столдун үстү "жар" катары иштейт

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

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

Файлдарды киргизгенден кийин экраныңыз ушундай болот.

3 -кадам: 3 -кадам: Cliff сенсорлорун/LED чырактарын орнотуу

Бул код сиздин бөлмөңүзгө кайсы бурчту буруш керектигин, батареянын маалыматын текшерүүнү, бөлмөнүн ылдамдыгын жана камеранын камерасы аркылуу адамды текшерүүнү айтат. Ошондой эле, эгер ал адамды аныктап, жардан чыгып кетүүдөн мурун өзүн токтотсо, сигнал берет.

% аракет rob.setLEDDigits ('') x = 0; y = 0; тета = 0; тоскоолдук = ; цикл = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %Function rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %AA_checkperson (rob) rob.beep end %In Check for Cliff Sensor if AA_cliffcheck (rob)) rob.stop rob.setLEDDigits ('Cliff') тыным (0,5) тоскоолдук (цикл) = 2; AA_cliffbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end

4 -кадам: 4 -кадам: Тоскоолдуктарды текшерүү

Бул код бөлмөдө анын тегерегиндеги нерселерди текшерип турат жана өзүнө зыян келтирүүдөн мурун анын токтоп калганын текшерүү үчүн дөмпөк сенсорун текшерет.

%Жарык сенсорун текшериңиз, эгер AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') пауза (0.5) тоскоолдук (цикл) = 1; %Wall 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; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %If if if if isempty (тоскоолдук) тоскоолдук (цикл) = 0; elseif узундугу (тоскоолдук) <цикл тоскоолдук (цикл) = 0; аяктоо

5 -кадам: 5 -кадам: Чийүү

5 -кадам: Чийүү
5 -кадам: Чийүү

Бул код сиздин бөлмөңүзгө саякатында эмнелер менен жолугушаарын айтып берет. Мындай сюжет Roomba токтогондон кийин пайда болот.

%Ордун алуу d = rob.getDistance; эгер цикл == 1 тета (цикл) = 0; x (цикл) = d.*cosd (тета (цикл)); x жалпы саякаттын бардык жолу (цикл) = d.*sind (тета (цикл)); % башка аралыкта саякаттын жалпы узактыгы тета (цикл) = тета (цикл-1) + rob.getAngle; x (цикл) = d.*cosd (тета (цикл)) + x (цикл-1); x жалпы саякаттын % д (цикл) = d.*sind (тета (цикл)).*d + y (цикл-1); %жалпы аралык y аягында %Break абалы rob.getButtons.clean break end %Artүү цикл цикли = цикл + 1; end rob.stop for i = 1: цикл эгерде тоскоолдук болсо (i) == 1 %Wall сюжети (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif (i) == 2 %Cliff сюжети (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') акыркы текст (.9, 0.9, sprintf ('Square = Wall) nCircle = Cliff '),' Units ',' normalized ') % Кыйроонун Сигналын кармап туруңуз, эгер чыныгы rob.beep пауза (3) эгер rob.getButtons. таза үзүлүүнүн аягы % кармоо % rob.stop % end

Сунушталууда: