Índice:

Roomba Parking Pal: 6 degraus
Roomba Parking Pal: 6 degraus

Vídeo: Roomba Parking Pal: 6 degraus

Vídeo: Roomba Parking Pal: 6 degraus
Vídeo: Roomba I3 freaking rocks 2024, Novembro
Anonim
Roomba Parking Pal
Roomba Parking Pal

Este projeto usa um roomba programável iRobot Create, MATLAB r2018a e MATLAB mobile. Ao usar esses três meios e nosso conhecimento de codificação, programamos o iRobot Create para interpretar cores e usar sensores integrados para concluir tarefas. Este projeto depende da comunicação Raspberry Pi e MATLAB para realizar essas tarefas.

Etapa 1: Materiais

Materiais
Materiais
Materiais
Materiais

1. iRobot Create Robot

2. MATLAB r2018a

3. Raspberry Pi

4. Módulo de câmera

5. Suporte estabilizador de câmera impresso em 3-D

6. Smartphone com MATLAB móvel instalado

7. Laptop / Computador com MATLAB instalado

Etapa 2: Conexão

Esta etapa é sobre como conectar o Raspberry Pi ao robô, em segundo lugar conectar o robô ao seu computador e conectar o smartphone ao computador.

A parte mais fácil deste processo é conectar o Raspberry Pi ao seu robô, já que o Raspberry Pi é montado na parte superior do robô. Há um cabo do robô que tudo que você precisa fazer é conectá-lo na lateral do Raspberry Pi.

A próxima etapa é conectar o robô ao seu computador para que você possa executar comandos para o robô executar. A primeira coisa que você deve fazer é conectar seu computador à rede sem fio que o roomba está criando. Agora, é recomendável usar o ícone Definir caminho no MATLAB para definir o caminho para que você possa usar as funções na caixa de ferramentas do Roomba do MATLAB. Cada vez que você está começando e terminando o uso com o robô, você deve fazer uma "Saudação de Dois Dedos" reinicializando o robô, o que significa que você mantém pressionados os botões dock e spot por dez segundos até que a luz apague indicando para liberar. Você teve sucesso com este hard reset se ouvir o robô tocar uma pequena escala. Em seguida, você deve se conectar ao roomba usando uma linha de código como "r = roomba (x)", onde 'x' é o número designado ao robô que você possui.

Por último, você precisa baixar o MATLAB mobile em qualquer dispositivo móvel que você irá usar para este projeto, e este aplicativo está disponível em dispositivos Android e Apple. Assim que o aplicativo estiver instalado, você terá que fazer o login usando suas credenciais. Então você deve conectar este dispositivo ao seu computador, usando a guia rotulada "Mais" -> a seguir clique em "configurações" -> a seguir clique em "Adicionar um computador", isso deve abrir a tela mostrada nas imagens acima. a próxima etapa que você deve seguir é apenas conectar e chugging as informações que ele solicita. Assim que estiver conectado com êxito, você será capaz de chamar funções que você define em seu computador em seu telefone para controlar seu robô.

Etapa 3: Criação lógica de um código MATLAB para usar sensores

Criação lógica de um código MATLAB para usar sensores
Criação lógica de um código MATLAB para usar sensores

O código será mais fácil de criar quando a maior parte dele estiver dentro do loop while, para que o roomba possa atualizar constantemente os valores válidos que está procurando. Se houver um erro, o MATLAB exibirá um erro e onde ele aparece no código, tornando a solução de problemas relativamente simples.

Projetado no r2018a MATLAB, este código faz uso das caixas de ferramentas padrão, a caixa de ferramentas iRobot Create, bem como a caixa de ferramentas móvel MATLAB. O roomba usado neste exemplo é designado como 26 e r = roomba (26) precisa ser executado apenas uma vez para se comunicar totalmente com o roomba.

Código:

função parkassist (x) se x == 1

r = roomba (26)% conecta-se ao roomba

enquanto verdadeiro

r.setDriveVelocity (.05,.05)% define o roomba para uma velocidade de direção mais lenta

bump = r.getBumpers% obtém os dados dos sensores de impacto

cliff = r.getCliffSensors% obtém os dados dos sensores de penhasco

light = r.getLightBumpers% obtém os dados dos sensores de colisão de luz

img = r.getImage;% lê a câmera do robô

red_mean = mean (mean (img (:,:, 1)))% lê a quantidade média de pixels vermelhos

green_mean = mean (mean (img (:,:, 2)))% lê a quantidade média de pixels verdes

blue_mean = mean (mean (img (:,:, 3)))% lê a quantidade média de pixels azuis

if bump.front == 1% lê os sensores de colisão frontais

r.stop% para o roomba

msgbox ('Path Obscured!', 'Parking Assistant Message')% exibe mensagem dizendo que o caminho está obscurecido break% termina o loop

elseif green_mean> 150

r.stop% para o roomba

cont = questdlg ('Continuar?', 'Caminho concluído')% exibe uma caixa de pergunta pedindo para continuar

if cont == 'Sim'

parkassist (1)% reinicia o código

outro

fim

break% termina o loop

elseif red_mean> 140

r.turnAngle (45)% gira o roomba 45 graus

r.timeStart% inicia um contador de tempo

enquanto verdadeiro

r.setDriveVelocity (.05,.05)% define a velocidade do roomba

time = r.timeGet% atribui o tempo a uma variável

bump = r.getBumpers% obtém os dados dos sensores de impacto

cliff = r.getCliffSensors% obtém os dados dos sensores de penhasco

light = r.getLightBumpers% obtém os dados dos sensores de colisão de luz

img = r.getImage;% lê a câmera do robô

red_mean = mean (mean (img (:,:, 1)))% lê a quantidade média de pixels vermelhos

green_mean = mean (mean (img (:,:, 2)))% lê a quantidade média de pixels verdes

blue_mean = mean (mean (img (:,:, 3)))% lê a quantidade média de pixels azuis

se média_ azul> 120

r.moveDistance (-0,01)% move o roomba para trás uma distância definida songPlay (r, 'T400, C, R, E, F, G, A, B, C ^', 'true')% reproduz uma escala musical crescente

msgbox ('Água encontrada!', 'Mensagem do assistente de estacionamento')% exibe uma mensagem dizendo que água foi encontrada r.turnAngle (-80)% gira o roomba 80 graus

break% termina o loop atual

elseif light.rightFront> 25 || light.leftFront> 25% lê sensores de colisão de luz

r.moveDistance (-0,01)% move o roomba para trás uma distância definida

r.turnAngle (-35)% gira o roomba 35 graus

break% termina o loop atual

elseif cliff.rightFront <2500 && cliff.leftFront <2500% lê os dois sensores de penhasco

r.moveDistance (-0,1)% move o roomba para trás uma distância definida

r.turnAngle (-80)% gira o roomba 80 graus

break% termina o loop atual

elseif tempo> = 3

r.stop% para o roomba

contin = questdlg ('Station Free, Continue?', 'Parking Assistant Message')% pergunta se o roomba deve continuar se contin == 'Yes'

r.turnAngle (-90)% gira o roomba 90 graus

parkassist (1)% reinicia a função

outro

r.stop% para o roomba

fim

outro

fim

fim

elseif cliff.rightFront <2500 && cliff.leftFront <2500% lê os dois sensores de penhasco

r.moveDistance (-0,1)% move o roomba para trás uma distância definida

r.turnAngle (-90)% gira o roomba 90 graus

elseif cliff.rightFront <2500% lê o sensor de penhasco correto

r.turnAngle (-5)% gira levemente o roomba na direção oposta do sensor de penhasco

elseif cliff.leftFront <2500% lê o sensor de precipício esquerdo

r.turnAngle (5)% gira ligeiramente o roomba na direção oposta do sensor de penhasco

outro

fim

fim

fim

Etapa 4: Testar o código e o robô

Testando o Código e o Robô
Testando o Código e o Robô
Testando o Código e o Robô
Testando o Código e o Robô
Testando o Código e o Robô
Testando o Código e o Robô

Depois que o código foi desenvolvido, a próxima etapa foi testar o código e o robô. Como há muitos ajustes diferentes que podem ser feitos no código, como o ângulo que o robô gira, a velocidade em que se move e os limites para cada cor, a melhor maneira de descobrir esses valores para o seu robô é testando eles e mudam conforme você avança. Para cada dia de trabalho que tínhamos, mudávamos constantemente esses valores, já que alguns deles dependem do ambiente em que seu robô está operando. A melhor maneira que encontramos foi colocar o roomba no caminho que você deseja que ele siga, e ter uma barreira alta o suficiente para que a câmera não detecte cores indesejadas. A próxima etapa é deixá-lo funcionar e mostrar as cores que você quiser, quando quiser que ele conclua a tarefa. Conforme você avança, se você encontrar um problema, a melhor coisa a fazer é empurrar o para-choque dianteiro, fazendo-o parar, e alterar o parâmetro com o qual você teve problemas.

Etapa 5: reconhecimento de erro

Com cada projeto concluído, sempre há fontes de erro. Para nós, experimentamos um erro com o simples fato de que o robô não é preciso com o ângulo em que ele gira, então se você disser para ele girar em 45 graus, não vai ser exato. Outra fonte de erro para nós era que às vezes o robô não funcionava bem e você o reinicializava antes de funcionar novamente. A principal fonte de erro para nós foi que o mesmo código não terá o mesmo efeito em robôs diferentes, portanto, você deve ter paciência e fazer os ajustes necessários.

Etapa 6: Conclusão

Agora você tem todas as ferramentas para brincar com seu roomba, o que significa que você pode manipular o código da maneira que quiser para atingir os objetivos que deseja. Esta deve ser a melhor parte do seu dia, então divirta-se e dirija com segurança!

Recomendado: