Índice:

Projeto Roomba MATLAB: 5 etapas
Projeto Roomba MATLAB: 5 etapas

Vídeo: Projeto Roomba MATLAB: 5 etapas

Vídeo: Projeto Roomba MATLAB: 5 etapas
Vídeo: Tech Talk: Robótica com MATLAB em Smart Factories 2024, Novembro
Anonim
Projeto Roomba MATLAB
Projeto Roomba MATLAB

O plano atual que a NASA tem para o Mars rover é que ele seja um coletor de dados e vagueie ao redor de Marte, coletando amostras do solo para trazer de volta à Terra para que os cientistas possam ver se houve alguma forma de vida anterior no planeta. Além disso, o rover envia de volta imagens aos cientistas, para que eles possam ajudar a navegar no rover e consertar quaisquer problemas que ele possa ter.

A ideia do nosso grupo para o nosso projeto é que o rover faça o mesmo que o rover da NASA que deixará a Terra em 2020, mas também para mapear a geografia da terra. O roomba seria capaz de sentir penhascos e parar a si mesmo antes de cair, e então voltar, virar e mudar seu curso para que não caia e seja danificado. Nossa outra ideia integrada em nosso projeto é que o roomba seja capaz de traçar os pontos de referência que vê e mostrar um gráfico cada vez que o loop for concluído e seu curso tiver sido executado.

Isso pode ser instruído para qualquer pessoa que queira criar o mesmo tipo de código para seu roomba.

Etapa 1: Etapa 1: Materiais necessários

Etapa 1: Materiais necessários
Etapa 1: Materiais necessários
Etapa 1: Materiais necessários
Etapa 1: Materiais necessários

Você vai precisar de:

  1. Um roomba
  2. MATLAB
  3. Este arquivo para executar o roomba
  4. Uma superfície plana
  5. Uma superfície de mesa para atuar como um "penhasco"

Etapa 2: Etapa 2: configurar / obter o código do Roomba

Etapa 2: configurar / obter o código do Roomba
Etapa 2: configurar / obter o código do Roomba

Sua tela ficará assim assim que você inserir os arquivos.

Etapa 3: Etapa 3: Configurar Sensores Cliff / Luzes LED

Esse código dirá ao roomba exatamente em que ângulo virar, verificará as informações da bateria, informará ao roomba a velocidade de deslocamento e verificará se há uma pessoa pela câmera do roomba. Ele também emitirá um bipe se identificar uma pessoa e parará antes de cair de um penhasco.

% try rob.setLEDDigits ('') x = 0; y = 0; teta = 0; obstáculo = ; ciclo = 1; AngCorr = @ (x) x + 3,059. * X. ^ 0,4205; % Função para corrigir ângulos de giro enquanto rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0,1)% Go% Verificar Pessoa se AA_checkperson (rob) rob.beep end% Verificar Sensor Penhasco se AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pausa (0,5) obstáculo (ciclo) = 2; AA_cliffbeep (rob)% Backup e giro rob.moveDistance (-. 15) rob.turnAngle (30) end

Etapa 4: Etapa 4: Verificação de obstáculos

Esse código fará com que o roomba verifique os itens ao seu redor e verificará o sensor de colisão para garantir que ele pare antes de se danificar.

% Verifique o sensor de luz se AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') pausa (0,5) obstáculo (ciclo) = 1; % Wall AA_wallbeep (rob)% Back Up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Verifique o sensor de colisão se AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0,5) obstáculo (ciclo) = 1; % Wall AA_wallbeep (rob)% Back Up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Se nenhum se isempty (obstáculo) obstáculo (ciclo) = 0; elseif comprimento (obstáculo) <obstáculo do ciclo (ciclo) = 0; fim

Etapa 5: Etapa 5: Plotagem

Etapa 5: plotagem
Etapa 5: plotagem

Este código dirá ao seu roomba para traçar o que ele encontrará em sua jornada. Um enredo como este aparecerá depois que o roomba for interrompido.

% Obter posição d = rob.getDistance; se ciclo == 1 teta (ciclo) = 0; x (ciclo) = d. * cosd (teta (ciclo)); % distância total percorrida em x y (ciclo) = d. * sind (theta (ciclo)); % da distância total percorrida em y else theta (ciclo) = theta (ciclo-1) + rob.getAngle; x (ciclo) = d. * cosd (teta (ciclo)) + x (ciclo-1); % distância total percorrida em x y (ciclo) = d. * sind (theta (ciclo)). * d + y (ciclo-1); % distância total percorrida no final de y% Condição de quebra se rob.getButtons.clean break end% Ciclo de incremento de ciclo = ciclo + 1; fim rob.stop para i = 1: ciclo se obstáculo (i) == 1% Gráfico de parede (x (i), y (i), 'Marcador', 'quadrado', 'MarkerEdgeColor', 'r') outro obstáculo (i) == 2% Gráfico de penhasco (x (i), y (i), 'Marcador', 'o', 'MarkerEdgeColor', 'k') texto final (0,9, 0,9, sprintf ('Quadrado = Parede / nCircle = Cliff '),' Units ',' normalized ') manter no final% Sinal de socorro enquanto verdadeiro rob.beep pause (3) se rob.getButtons.clean break end end% catch% rob.stop% end

Recomendado: