Índice:
- Etapa 1: peças necessárias
- Etapa 2: Arquivos e configuração da câmera
- Etapa 3: teste inicial do Roomba
- Etapa 4: Exemplo de código MATLAB
Vídeo: Astronauta-Assisting Roomba: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Este projeto é feito utilizando o Raspberry Pi 3 a bordo do iRobot Create Versão 2. O MATLAB é usado para programar o robô para seguir instruções específicas usando seus sensores e câmera. Os sensores e câmeras são utilizados para realizar tarefas específicas que seguiriam um astronauta e forneceriam a ele a capacidade de se comunicar com sua base doméstica se algo der errado.
Etapa 1: peças necessárias
1. iRobot Create Versão 2
O iRobot Create é a parte mais essencial deste projeto, pois é programável e pode ser uma ótima representação para um rover real que segue os astronautas e os auxilia no futuro
2. Raspberry Pi 3
O Raspberry Pi foi o programável usado para este projeto. O código é projetado para o Pi e a versão do Pi anexado é o 3 (modelo B). Outras placas programáveis, como o arduino, são utilizáveis; no entanto, o arduino e a maioria das outras placas exigirão uma codificação diferente da descrita em outra etapa
3. Módulo de câmera Raspberry Pi
A única conexão externa com o Raspberry Pi necessária para este projeto é o módulo da câmera. O módulo da câmera é parte integrante deste projeto, já que o roomba só executará tarefas com base no que vê na câmera
4. MATLAB 2018a
A segunda versão mais recente do MATLAB, 2018a, foi usada para a codificação envolvida nesta configuração. É provável que muitas outras versões do MATLAB funcionem com isso, já que a programação do roomba já existe há algum tempo
Etapa 2: Arquivos e configuração da câmera
1. Conexões do Raspberry Pi e da câmera com o roomba
- O Pi pode se conectar ao iRobot diretamente com um micro USB. É tudo o que precisa para estar pronto para uso. No entanto, é recomendável que ele seja colocado com segurança no roomba, como mostrado nas fotos ao longo da apresentação até agora.
- A câmera tem uma conexão direta com o Raspberry Pi e é altamente recomendável que algo seja comprado ou feito para segurar a câmera diretamente para cima. Não há nenhum ponto real para a câmera se ela não puder ser mantida no lugar para mostrar o que o roomba vê.
2. Arquivos
- Depois de ter tudo configurado e conectado, certifique-se de que o robô está reiniciado e pronto para funcionar, segurando os botões "Spot" e "Dock" por 10 segundos juntos.
- É aqui que o MATLAB é necessário pela primeira vez. Os arquivos para o roomba precisam ser instalados primeiro e tudo o que é necessário para esses arquivos executar é o código fornecido neste link:
- https://ef.engr.utk.edu/ef230-2017-08//projects/ro…
Etapa 3: teste inicial do Roomba
Há muitas verificações iniciais a serem realizadas no roomba para garantir que ele está funcionando.
1. Certifique-se de que está conectado à mesma rede WiFi que o roomba. Sem isso, você nunca se conectará por meio do MATLAB.
2. Descubra a qual número seu roomba está atribuído para que você possa se conectar especificamente ao roomba que você escolheu. Por exemplo, se o número do seu roomba for 30, você se conectaria a ele digitando roomba (30) na janela de comando do MATLAB.
3. O roomba pode ser controlado através de structs no MATLAB. Por exemplo, se você definir seu código para roomba (30) para a variável 'r', o robô pode ser movido para frente com o comando r.moveDistance (0.2, 0.1).
4. Existem muitos comandos diferentes que podem ser comunicados ao roomba e podem ser vistos digitando 'doc roomba' na janela de comando.
5. Os sensores para leituras de luz, colisão e penhasco podem ser lidos usando os comandos vistos no 'doc roomba', mas uma maneira de ter um menu constante e limpo para ver os dados do sensor pode ser visto usando 'r.testSensors '.
6. Depois de testar tudo isso, o software de coleta de imagens do robô pode ser utilizado para ler e ver as fotos tiradas. O código básico para isso seria img = r.getImage e imshow (img);.
7. Os valores RGB da imagem podem ser encontrados com os códigos red_mean = mean (mean (img (:,:, 1)));
média_verde = média (média (img (:,:, 2))); e azul_média = média (média (img (:,:, 3)));.
Etapa 4: Exemplo de código MATLAB
Neste ponto, você está pronto para utilizar os sensores e o software de captura de imagens para criar seu próprio giro em um Protótipo de Ajuda Humana do Mars Rover. Nosso exemplo é seguir o astronauta rastreando a cor branca e movendo-se em sua direção. O robô emitirá um bipe se seus sensores estiverem lendo valores altos para que o astronauta possa reiniciar o robô se ele estiver preso ou ir buscá-lo e reiniciá-lo se ele estiver preso em um penhasco. No entanto, ele só lê esses erros enquanto vê o branco. Sem ser capaz de ver a cor branca, o robô entrará no modo de erro. Ele é programado para enviar dois tipos diferentes de e-mails de volta para a base, dependendo do que vê. Se ele vir a cor da pele do astronauta, isso obviamente não é bom, então ele alertará a base local se o astronauta tiver a pele aparecendo com um mau funcionamento do traje. A outra mensagem é preparada se o astronauta simplesmente desaparecer de vista. Se não houver branco ou cor de pele nas câmeras, o robô girará e enviará outro e-mail, mas diferente. As imagens onde o roomba não consegue ver o astronauta serão enviadas junto com a mensagem nos e-mails. O código do nosso projeto é mostrado abaixo:
para i = 1:.1: 3 img = r.getImage; imagem (img) red_mean = média (média (img (:,:, 1))); média_verde = média (média (img (:,:, 2))); média_ azul = média (média (img (:,:, 3))); if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.esquerdo> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else para i = 1: 2 r.moveDistance (0,2, 0,1) r. setDriveVelocity (.3,.2) r.stop end end end se green_mean <35 && blue_mean <35% da cor da pele mostrando (precisa ser ajustado com base na cor da pele do astronauta) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; % envia e-mail mostrando que o terno está desativado psswd = 'sim'; host = 'smtp.gmail.com'; porta = '465'; emailto = '[email protected]'; m_subject = 'assunto'; m_text = 'teste'; setpref ('Internet', 'E_mail', mail); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', porta); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', porta); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Socorro!', 'O uniforme dos astronautas está desligado!', img); end if red_mean 135 || green_mean 135 || blue_mean 135 for j = 1: 2% se o branco não puder ser encontrado pelo robô r.turnAngle (360) mail = '[email protected]'; psswd = 'sim'; host = 'smtp.gmail.com'; porta = '465'; emailto = '[email protected]'; m_subject = 'assunto'; m_text = 'teste'; setpref ('Internet', 'E_mail', mail); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', porta); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', porta); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Ajuda!', 'O astronauta não pode ser encontrado!', img); r.stop end end end
Obviamente, é uma bagunça aqui, mas deve melhorar uma vez copiado. As senhas e e-mails para isso devem ser fornecidos por aqueles que fazem este projeto, obviamente.
No entanto, nosso exemplo é apenas uma das muitas maneiras de mexer com este robô para torná-lo adequado a todos. Há muitas coisas diferentes a serem feitas, nas quais você pode se adequar.
Recomendado:
Transformando seu Roomba em um Mars Rover: 5 etapas
Transformando seu Roomba em um Mars Rover:
Cosmo Clock - muda de cor sempre que um astronauta entra no espaço: 8 etapas (com fotos)
Cosmo Clock - muda de cor sempre que um astronauta entra no espaço: Hi! Você é um entusiasta do espaço? Se sim, então oi-fi! Amo espaço e astronomia. Obviamente, não sou um astronauta para subir lá e dar uma olhada no universo mais de perto. Mas toda vez que descubro que uma pessoa da Terra viajou para o céu, me inspiro
Roomba Bot the Bulider: 5 etapas (com imagens)
Roomba Bot the Bulider: Bot the Builder é um roomba, que com " grabbers " anexado à frente será capaz de mover objetos. O código com ele é configurado para registrar o primeiro movimento com uma caixa GUI que você pode controlar com apenas um clique do mouse. Afte
Roomba controlado por MATLAB: 5 etapas
Roomba controlado por MATLAB: O objetivo deste projeto é utilizar o MATLAB, bem como um robô programável iRobot modificado. Nosso grupo combinou nossas habilidades de codificação para criar um script MATLAB que usa muitas funções do iRobot, incluindo os sensores de penhasco, sensores de pára-choques
Do Roomba ao Rover em apenas 5 etapas !: 5 etapas
De Roomba a Rover em apenas 5 passos!: Os robôs Roomba são uma forma divertida e fácil de mergulhar no mundo da robótica. Neste Instructable, iremos detalhar como converter um Roomba simples em um rover controlável que analisa simultaneamente seus arredores.Lista de peças1.) MATLAB2.) Roomb