Índice:

Roomba Scout Explorer: 8 etapas
Roomba Scout Explorer: 8 etapas

Vídeo: Roomba Scout Explorer: 8 etapas

Vídeo: Roomba Scout Explorer: 8 etapas
Vídeo: 🚘 Ajustar HOLGURA o JUEGO del DIFERENCIAL - BACKLASH | MANTENIMIENTO BÁSICO 2024, Novembro
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Como um dos projetos americanos mais esperados e pesquisados, os projetos do Mars rover se tornaram realizações humanas na produção cada vez mais avançada de sistemas autônomos de alta tecnologia com o único propósito de investigar e interpretar as massas de terra e superfícies do planeta vermelho por trás a Terra. Como parte de um projeto mais pessoal em homenagem às missões de Marte, nosso objetivo era criar um robô roomba que pudesse atuar de forma autônoma por um determinado período de tempo e reagir de acordo com certos critérios dentro de sua vizinhança.

Quanto à exclusividade, nos concentramos em criar um diagrama que mostrasse cada caminho que o robô percorre desde suas origens. Além disso, o robô será capaz de contar o número de objetos em sua vizinhança em um estilo panorâmico.

Etapa 1: Equipamento

-Roomba com câmera acoplável (com nome específico conhecido)

- Servidor conectado

-Windows 10 / Mac com conectividade com a Internet

- Plataforma brilhante

-Piso escuro

- Quaisquer objetos perdidos de design monocromático

Etapa 2: configuração do MATLAB

Configuração do MATLAB
Configuração do MATLAB

Para criar tarefas e funções para o seu roomba, você deve ter os códigos e kits de ferramentas específicos que contêm os comandos do roomba.

Com o download do MATLAB 2016a e posteriores, crie uma pasta para conter esses arquivos do robô e insira o seguinte arquivo MATLAB abaixo na pasta e execute-o para instalar os arquivos roomba necessários restantes.

Depois disso, clique com o botão direito na janela da Pasta Atual, passe o mouse sobre "Adicionar um Caminho" e clique em "Pasta Atual". Agora, um caminho deve ser configurado de forma que cada um desses arquivos seja usado para ativar o roomba.

Agora, use o comando abaixo na janela de comando para configurar o roomba:

r = roomba (#).

O símbolo # é o 'número' do roomba especificado; no entanto, se você deseja apenas um simulador do roomba, basta digitar o seguinte comando:

r = roomba (0).

A simulação seria recomendada para testar padrões de movimento.

Se você está curioso para saber quais comandos o roomba pode seguir, digite o seguinte na janela de comando:

doc roomba.

Para obter mais detalhes, visite o seguinte site:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Etapa 3: Função: Movimento

Função: Movimento
Função: Movimento
Função: Movimento
Função: Movimento

Em relação ao movimento, o roomba deve se mover automaticamente por um determinado período de tempo fornecido nas entradas. O objetivo do movimento do robô é reagir adequadamente quando seus sensores (pára-choques, pára-choques de luz e sensores de penhasco) mudam na presença de vários obstáculos. Esta parte funcionaria como a base para todos os comandos do roomba, à medida que mais recursos ao código fossem adicionados posteriormente. Algumas especificações eram necessárias:

-Para reduzir o dano, o robô deve reduzir a velocidade para uma velocidade menor.

- Ao se aproximar de um penhasco ou parede, o robô se moverá para trás e alterará seu ângulo dependendo do ponto de impacto

- Depois de algum tempo de condução, o roomba irá eventualmente parar e tirar fotos da área circundante

Observe que os valores usados foram em relação ao simulador; valores como as velocidades de giro dos ângulos de giro e as predefinições do sensor do robô devem ser modificados ao usar o robô real para garantir estabilidade e contabilização de erros de equipamento.

Etapa 4: Função: Processamento de imagem

Função: Processamento de Imagem
Função: Processamento de Imagem

A pedido, fomos incumbidos de modificar os dados de uma imagem (ou várias imagens) que foi recebida pela câmara do robô, para a qual decidimos fazer o roomba "contar" a quantidade de objetos que vê na imagem.

Seguimos a técnica de fazer com que o MATLAB desenhe limites ao redor de objetos enegrecidos que contrastam com um fundo branco. No entanto, esta função tende a ter dificuldade em uma área aberta devido às diferentes formas e cores percebidas pela câmera, resultando em contagens excepcionalmente altas.

Observe que esta função não pode funcionar no simulador, pois a câmera não é fornecida; se houver tentativa, ocorrerá um erro declarando que apenas uma matriz (:,:, 3) pode ser usada.

Etapa 5: Função: Mapeamento

Função: Mapeamento
Função: Mapeamento
Função: Mapeamento
Função: Mapeamento
Função: Mapeamento
Função: Mapeamento
Função: Mapeamento
Função: Mapeamento

Um recurso adicional que queríamos que o robô tivesse era mapear suas localizações conforme ele interage diretamente com o ambiente. Assim, o código abaixo busca abrir um mapa e configurar um sistema de coordenadas que detalha cada local em que os sensores do pára-choque do robô são pressionados. Esta provou ser a parte mais longa das três partes para testar individualmente, mas provou ser muito mais simples quando aplicada ao script final.

Para adicionar um limite à duração do tempo de execução da função, o limite n <20 no loop while foi usado para fins de teste.

Lembre-se de que, devido à complexidade do código, mais erros ocorrem à medida que o segmento de código é executado por um longo tempo; em testes anteriores, dez saliências parecem ser o número de pontos antes da ocorrência de erros significativos.

Etapa 6: justaposição

Justaposição
Justaposição
Justaposição
Justaposição
Justaposição
Justaposição
Justaposição
Justaposição

Como tudo isso será colocado em um único arquivo, criamos uma função usando cada uma das duas etapas anteriores como suas subfunções. Um rascunho final foi feito com a seguinte modificação na função redux chamada "recon". Para evitar confusão para o MATLAB, os scripts "counter" e "rombplot3" foram renomeados como funções embutidas "CountR" e "plotr", respectivamente.

Várias mudanças tiveram que ser feitas na versão final, ao contrário dos scripts anteriores:

-A origem será sempre marcada com um círculo vermelho

- Toda vez que o roomba para de seus pára-choques, a localização é marcada com um círculo preto

- Toda vez que o roomba para de seus sensores de penhasco, a localização é marcada com um círculo azul

- Sempre que o roomba para de investigar a área, o local é marcado com um círculo verde

- As imagens são modificadas para que a parte superior seja removida devido ao carimbo de data / hora, potencialmente interferindo nos resultados

- As encomendas não serão contadas como um objeto devido ao grande número adquirido

-Várias variáveis foram alteradas, portanto, para evitar confusão, use as versões acima como referência.

Etapa 7: Teste

Testando
Testando

Os testes para cada componente individual provaram ser um tanto misturados às vezes, razão pela qual foram necessárias modificações em certos valores predefinidos. O fundo temático no qual queríamos testar as capacidades do robô em uma área fechada consistia simplesmente em um quadro branco colocado em um chão muito mais escuro. Você pode espalhar os objetos pela área; faça-os atuar como objetos a serem batidos ou objetos distantes da área móvel do robô.

Depois de definir o tempo regulado e a velocidade base, o roomba demonstrou comportamento de movimento adequado, parando e recuando de cada "penhasco" ou objeto em que se choca, bem como desacelerando ao detectar algo próximo. Ao atingir a distância desejada de viagem de três metros, o robô irá parar e avaliar a área, tirando imagens de cada região de 45 graus, e seguir em frente se o tempo permitir. No entanto, suas curvas pareceram maiores do que as solicitadas, o que significa que os dados das coordenadas seriam obscurecidos.

Cada vez que ele para, um novo ponto é colocado na região aproximada de sua posição no sistema de coordenadas; no entanto, é notado que a direção inicial na qual o roomba começa desempenha um papel central no design do mapa. Se um recurso de bússola pudesse ser implementado, ele teria sido usado como uma parte crucial do design do mapa.

O tempo real que a função leva para funcionar totalmente sempre ultrapassa o tempo solicitado, o que faz sentido considerando que ela não pode parar no meio de uma de suas recuperações. Infelizmente, esta versão de contagem de imagens tem seus problemas, especialmente em áreas que são principalmente monocromáticas ou com brilho variável; porque tenta distinguir entre dois tons, tende a perceber objetos que não são desejados, portanto, sempre conta até números absurdamente altos.

Etapa 8: Conclusão

Conclusão
Conclusão

Embora essa tarefa tenha sido um trabalho muito aventureiro e criativo que trouxe alegria e alívio, eu, a partir de minhas observações pessoais, pude ver um grande número de erros que poderiam ser problemáticos, tanto no código quanto no comportamento do robô.

A limitação de usar a especificação de tempo no loop while faz com que a quantidade total de tempo seja maior do que o desejado; o processo da técnica de panorama e processamento de imagem poderia de fato levar mais tempo se executado por um computador lento ou não fosse usado de antemão. Além disso, o roomba que foi utilizado em nossa apresentação atuou com um grande número de erros, principalmente de movimento, em comparação com o simulador. O robô usado infelizmente tinha uma tendência a se inclinar ligeiramente para a esquerda, pois dirigia em linha reta e fazia curvas maiores do que o desejado. Por esse motivo e muitos outros, é altamente recomendável que, para compensar esses erros, sejam feitas alterações nos ângulos de giro.

No entanto, este é um projeto longo, mas intelectualmente estimulante, que funcionou como uma experiência de aprendizado interessante para a aplicação de códigos e comandos que afetam diretamente o comportamento de um robô real.

Recomendado: