Table des matières:

Projet Roomba MATLAB : 5 étapes
Projet Roomba MATLAB : 5 étapes

Vidéo: Projet Roomba MATLAB : 5 étapes

Vidéo: Projet Roomba MATLAB : 5 étapes
Vidéo: Make a robot in GAZEBO from scratch | under 8 minutes simulation 2024, Novembre
Anonim
Projet Roomba MATLAB
Projet Roomba MATLAB

Le plan actuel de la NASA pour le rover martien est qu'il soit un collecteur de données et qu'il se déplace autour de Mars, collectant des échantillons de sol à ramener sur Terre afin que les scientifiques puissent voir s'il y avait eu des formes de vie antérieures sur la planète. De plus, le rover renvoie des images aux scientifiques, afin qu'ils puissent aider à naviguer dans le rover et résoudre les problèmes qu'il pourrait avoir.

L'idée de notre groupe pour notre projet est que le rover fasse la même chose que le rover de la NASA qui quittera la terre en 2020, mais qu'il cartographie également la géographie du territoire. Le roomba serait capable de détecter les falaises et de s'arrêter avant de tomber, puis de reculer, de tourner et de changer de cap afin qu'il ne tombe pas et ne soit pas endommagé. Notre autre idée intégrée à notre projet est que le roomba puisse tracer les points de repère qu'il voit, et montrer un tracé à chaque fois que la boucle est terminée et que son parcours a été effectué.

Cette instructable est pour toute autre personne qui souhaite créer le même type de code pour leur roomba.

Étape 1: Étape 1: Matériel nécessaire

Étape 1: Matériel nécessaire
Étape 1: Matériel nécessaire
Étape 1: Matériel nécessaire
Étape 1: Matériel nécessaire

Tu auras besoin de:

  1. Un roomba
  2. MATLAB
  3. Ce fichier pour exécuter le roomba
  4. Une surface plane
  5. Une surface de table pour faire office de "falaise"

Étape 2: Étape 2: Configuration/obtention du code pour Roomba

Étape 2: Configuration/Obtention du code pour Roomba
Étape 2: Configuration/Obtention du code pour Roomba

Votre écran ressemblera à ceci une fois que vous aurez saisi les fichiers.

Étape 3: Étape 3: Configuration des capteurs Cliff/lumières LED

Ce code indiquera à votre roomba exactement quel angle tourner, vérifiera les informations sur la batterie, indiquera à votre roomba à quelle vitesse aller et vérifiera la présence d'une personne via la caméra du roomba. Il émettra également un bip s'il identifie une personne et s'arrêtera avant de descendre d'une falaise.

% essayez rob.setLEDDigits('') x=0; y=0; thêta=0; obstacle = ; cycle = 1; AngCorr = @(x)x + 3.059.*x.^0.4205; %Fonction pour corriger les angles de virage pendant que rob.getBatteryInfo.percent > 15 rob.setLEDDigits('') rob.setDriveVelocity(0.1) %Go %Check For Person if AA_checkperson(rob) rob.beep end %Check Cliff Sensor if AA_cliffcheck(rob) rob.stop rob.setLEDDigits('falaise') pause(0,5) obstacle(cycle) = 2; AA_cliffbeep(rob) % Sauvegarder et tourner rob.moveDistance(-.15) rob.turnAngle(30) end

Étape 4: Étape 4: Vérification des obstacles

Ce code permettra au roomba de vérifier les objets qui l'entourent et vérifiera le capteur de choc pour s'assurer qu'il s'arrête avant de s'endommager.

% Vérifier le capteur de lumière si AA_lightcheck(rob) rob.stop rob.setLEDDigits('Mur') pause(0,5) obstacle(cycle) = 1; %Wall AA_wallbeep(rob) %Back Up And Turn rob.moveDistance(-.15) rob.turnAngle(30) end %Check Bump Sensor if AA_bumpcheck(rob) rob.stop rob.setLEDDigits('Wall') pause(0.5) obstacle(cycle) = 1; %Wall AA_wallbeep(rob) %Back Up And Turn rob.moveDistance(-.15) rob.turnAngle(30) end %Si aucun si est vide(obstacle) obstacle(cycle) = 0; elseif longueur(obstacle) < cycle obstacle(cycle) = 0; finir

Étape 5: Étape 5: Tracer

Étape 5: Tracer
Étape 5: Tracer

Ce code indiquera à votre roomba de tracer ce qu'il rencontre au cours de son voyage. Un tracé comme celui-ci apparaîtra après l'arrêt du roomba.

%Obtenir la position d = rob.getDistance; si cycle == 1 thêta(cycle) = 0; x(cycle) = d.*cosd(thêta(cycle)); % distance totale parcourue en x y(cycle) = d.*sind(theta(cycle)); % de la distance totale parcourue dans y else theta(cycle) = theta(cycle-1) + rob.getAngle; x(cycle) = d.*cosd(thêta(cycle)) + x(cycle-1); % distance totale parcourue en x y(cycle) = d.*sind(theta(cycle)).*d + y(cycle-1); % distance totale parcourue en fin y % Condition de rupture si rob.getButtons.clean fin de rupture %Incrément cycle cycle = cycle + 1; end rob.stop for i = 1:cycle if obstacle(i) == 1 %Wall plot(x(i), y(i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif obstacle (i) == 2 %Cliff plot(x(i), y(i), 'Marker', 'o', 'MarkerEdgeColor', 'k') end text(.9, 0.9, sprintf('Square = Wall \nCircle = Cliff'), 'Units', 'normalized') hold on end %Distress Signal while true rob.beep pause(3) if rob.getButtons.clean break end end % catch % rob.stop % end

Conseillé: