Съдържание:

Проект Roomba MATLAB: 5 стъпки
Проект Roomba MATLAB: 5 стъпки

Видео: Проект Roomba MATLAB: 5 стъпки

Видео: Проект Roomba MATLAB: 5 стъпки
Видео: Основы ЦОС: 05. Создаем аккорд в MATLAB (ссылки на скачивание скриптов в описании) 2024, Ноември
Anonim
Проект Roomba MATLAB
Проект Roomba MATLAB

Настоящият план, който НАСА има за марсохода, е той да бъде събирач на данни и да обикаля около Марс, събирайки проби от почвата, за да се върне на Земята, за да могат учените да видят дали на планетата е имало предишни форми на живот. Освен това, марсоходът изпраща образни изображения на учените, за да могат те да помогнат при навигацията му и да отстранят всички проблеми, които може да има.

Идеята на нашата група за нашия проект е марсоходът да направи същото като марсохода на НАСА, който ще напусне Земята през 2020 г., но също така и да очертае географията на сушата. Roomba би могъл да усети скали и да се спре, преди да падне, а след това да се върне назад, да се обърне и да промени курса си, така че да не падне и да се повреди. Другата ни идея, интегрирана в нашия проект, е roomba да може да очертае забележителностите, които вижда, и да показва сюжет всеки път, когато цикълът е завършен и неговият курс е изпълнен.

Тази инструкция е за всеки друг, който би искал да създаде същия тип код за своята румба.

Стъпка 1: Стъпка 1: Необходими материали

Стъпка 1: Необходими материали
Стъпка 1: Необходими материали
Стъпка 1: Необходими материали
Стъпка 1: Необходими материали

Ще имаш нужда:

  1. Румба
  2. MATLAB
  3. Този файл за стартиране на roomba
  4. Плоска повърхност
  5. Повърхност на маса, която да действа като "скала"

Стъпка 2: Стъпка 2: Настройка/Получаване на код за Roomba

Стъпка 2: Настройка/Получаване на код за Roomba
Стъпка 2: Настройка/Получаване на код за Roomba

Екранът ви ще изглежда така, след като въведете файловете.

Стъпка 3: Стъпка 3: Настройка на сензори за скали/LED светлини

Този код ще каже на вашия roomba точно под какъв ъгъл да се обърне, ще провери информацията за батерията, ще каже на вашия roomba колко бързо да върви и да провери за човек през камерата на roomba. Той също така ще издаде звуков сигнал, ако идентифицира човек, и ще спре, преди да слезе от скала.

% опитайте 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) %Go %Проверете за лице, ако AA_checkperson (rob) rob.beep end %Проверете сензора за скали, ако AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') пауза (0.5) препятствие (цикъл) = 2; AA_cliffbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) край

Стъпка 4: Стъпка 4: Проверка за препятствия

Този код ще накара roomba да провери за елементи около него и ще провери сензора за удар, за да се увери, че спира, преди да се повреди.

%Проверете сензора за светлина, ако 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 %Ако няма, ако е празно (препятствие) препятствие (цикъл) = 0; иначе дължина (препятствие) <препятствие на цикъла (цикъл) = 0; край

Стъпка 5: Стъпка 5: Начертаване

Стъпка 5: Начертаване
Стъпка 5: Начертаване

Този код ще каже на вашата румба да начертае какво среща при пътуването си. Сюжет като този ще се появи, след като roomba е спрял.

%Получаване на позиция d = rob.getDistance; ако цикъл == 1 тета (цикъл) = 0; x (цикъл) = d.*cosd (тета (цикъл)); % общо изминато разстояние в x y (цикъл) = d.*sind (тета (цикъл)); % общо изминато разстояние в y else theta (цикъл) = theta (цикъл-1) + rob.getAngle; x (цикъл) = d.*cosd (тета (цикъл)) + x (цикъл-1); % общо изминато разстояние в x y (цикъл) = d.*sind (тета (цикъл)).*d + y (цикъл-1); %общо изминато разстояние в y края %Състояние на прекъсване, ако rob.getButtons.clean break end %Прирастване на цикъла на цикъла = цикъл + 1; край rob.stop за i = 1: цикъл, ако препятствие (i) == 1 %Графика на стената (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') иначе препятствие (i) == 2 %Графика на скалите (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') краен текст (.9, 0.9, sprintf ('Square = Wall) nCircle = Cliff '),' Units ',' normalized ') задръжте край % сигнал за бедствие, докато е истинско rob.beep пауза (3) ако rob.getButtons.clean break end end % catch % rob.stop % end

Препоръчано: