Lição 7: Robô de Desvio de Obstáculos com Medição de Distância em Múltiplos Pontos

No cotidiano, frequentemente nos deparamos com situações que exigem desvio de obstáculos. Por exemplo, ao dirigir um carro em ruas estreitas, é necessário estar atento aos obstáculos ao redor para evitar colisões. Em ambientes domésticos, os aspiradores robóticos precisam navegar de forma inteligente ao redor de móveis e obstáculos para realizar tarefas de limpeza com eficiência. Então, como podemos utilizar a tecnologia para dotar robôs com essa capacidade de evitação inteligente?

 

A seguir, implementaremos um robô de evitação de obstáculos com medição de distância multiponto, utilizando o carrinho Maqueen Plus V3 e um sensor de medição a laser matricial. Com 64 pontos laser cobrindo um campo de 60°, o veículo pode realizar detecção de desníveis, desvio de obstáculos e seguimento de linha com evitação de obstáculos. Este não é apenas um projeto envolvente, mas também nos ajuda a entender melhor as aplicações práticas da tecnologia inteligente de evitação de obstáculos. Vamos explorar juntos como realizar isso!

 

 

Objetivos da Tarefa

Utilizar os dois modos distintos do sensor de medição a laser matricial (modo matricial e modo de evitação de obstáculos) para implementar a função de desvio inteligente do carrinho em diferentes ambientes.

 

Modo Matricial: Usar 1 feixe de laser para permitir que o carrinho realize detecção de desníveis (bordas de precipício).Usar 2 feixes de laser para permitir que o carrinho realize contorno de obstáculos.

 

Modo de Evitação de Obstáculos: Combinar o modo de evitação com a função de seguimento de linha, fazendo com que o carrinho gire automaticamente quando detectar um obstáculo à frente durante o percurso.

 

 

Conhecimentos Teóricos

1. Aprender a utilizar o sensor de medição a laser matricial para medição de distância multiponto.

2. Implementar estratégias de evitação de obstáculos, como detecção de desníveis e contorno de barreiras.

3. Compreender o conceito da tecnologia de controle PID para ajuste de ângulo.

4. Explorar cenários de aplicação do sensor de medição a laser matricial.

 

Lista de Materiais

Hardware necessário:

 

HARDWARE LIST
1 Maqueen Plus V3
1 UNIHIKER K10
1 Mapa complexo

Software necessário

Software de programação Mind+ (versão V1.8.1 RC1.0 ou superior) ×1

Link para download: https://mindplus.cc/

 

 

Prática

Este projeto utiliza os dois modos distintos do sensor de medição a laser matricial para implementar diferentes funcionalidades. No modo matricial, empregaremos um feixe de laser para detecção de desníveis e dois feixes para contornar obstáculos. No modo de evitação de obstáculos, combinaremos com a função de seguimento de linha, permitindo que o carrinho execute uma inversão automática ao encontrar obstáculos durante o percurso. A implementação concreta divide-se nas três tarefas a seguir.

 

Tarefa 1: Detecção de Desníveis

Utilizar o modo matricial do sensor de medição a laser matricial para verificar se há um desnível à frente. Caso seja detectado um desnível, o carrinho deverá virar à direita para evitá-lo; caso contrário, seguirá em frente.

 

Tarefa 2: Contorno de Obstáculos

Empregar o modo matricial do sensor de medição a laser matricial para verificar a presença de obstáculos nos lados esquerdo e direito, ajustando a direção do carrinho conforme os resultados obtidos. Se for detectado um obstáculo à esquerda, o carrinho deverá deslocar-se para a direita; se for detectado um obstáculo à direita, deverá deslocar-se para a esquerda.

 

Tarefa 3: Evitação de Obstáculos durante Seguimento de Linha

Utilizar o modo de evitação de obstáculos do sensor de medição a laser matricial, em conjunto com a função de seguimento de linha, para que o carrinho realize uma inversão automática ao se deparar com obstáculos durante o trajeto.

 

Tarefa 1: Detecção de Precipícios

1. Conexão de Hardware

Utilize um cabo de dados USB 3.0 para Type-C para conectar o robô montado ao computador. Observação: A extremidade Type-C deve ser conectada à placa UNIHIKER K10.

 

 

2. Preparação do Software

Abra o Mind+ e siga as ilustrações abaixo para concluir a preparação do software.

 

 

3. Programação

(1) Inicialização do sensor

No bloco "UNIHIKER K10 na partida", utilize as instruções "Inicialização do sistema" e "Inicializar sensor laser endereço I2C 0x30 modo Modo de matriz" para configurar o robô e o módulo de laser matricial.

Observação: A instrução oferece quatro endereços configuráveis (0x30, 0x31, 0x32, 0x33), sendo 0x33 o padrão. Para detalhes sobre como confirmar o endereço I2C, consulte a seção "Conhecimentos".

 

 

Criação da variável "distância" Crie uma variável denominada "distância" para armazenar a distância detectada em tempo real. Esta variável deve ser inicializada com o valor da distância medida pelo sensor laser matricial durante a inicialização do veículo.

 

 

Utilize o comando "Medir distância no ponto x: y: (mm) modo matriz" com o feixe de laser especificado (x:3, y:3) para realizar a detecção de distância. O sensor de medição a laser matricial emprega um arranjo de 8x8, totalizando 64 feixes de laser para pontos de medição, conforme ilustrado abaixo:

 

 

Esta tarefa tem como objetivo principal a identificação de precipícios, sendo recomendável utilizar o feixe de laser central para medição de distância. O feixe nas coordenadas x3y3 é particularmente adequado para esta finalidade. Portanto, atribua o valor retornado pelo comando "Medir distância no ponto x:3 y:3 (mm) modo matriz" à variável "distância".

 

 

Crie uma nova variável denominada "iniciar_distância" e inicialize-a com o valor contido na variável "distância".

 

 

(2) Medição de distância em tempo real

Após a conclusão da inicialização, dentro do bloco de instrução "repita sempre", utilize o comando "Medir distância no ponto x:3 y:3 (mm) modo matriz" para realizar a detecção contínua da distância medida pelo feixe de laser x3y3. Atribua o valor obtido à variável "distância".

 

 

(3) Detecção de Precipício

Para simular um ambiente com precipício, selecione uma caixa de papel com área moderada e altura aproximada de 5cm (a altura deve ser ajustada conforme a caixa disponível). Posicione o veículo sobre a caixa, considerando a área externa como o precipício.

 

 

Durante a inicialização, é realizada uma medição inicial armazenada na variável "iniciar_distância". Quando a distância atual detectada pelo sensor laser matricial variável "distância" exceder o valor de "iniciar_distância" + 50 (altura da caixa de papel), isso indica que o veículo atingiu a borda do precipício.

Observação: Caso a altura da caixa utilizada seja de 10cm, ajuste este valor para 100.

 

 

Se a condição for verdadeira (borda do precipício detectada), utilize os comandos "Configurar Esquerda motor direção Girar para frente velocidade 150" e "Configurar Direita motor direção Girar para frente velocidade 0" para fazer o veículo virar à direita.

 

 

Se a condição for falsa (precipício não detectado), utilize o comando "Configurar Tudo motor direção Girar para frente velocidade 100" para manter o veículo em movimento reto.

 

 

4. Execução do programa

Antes de executar o program a, por favor assegure que o UNIHIKER K10 está corretamente conectado ao computador através de um cabo USB. Após confirmar a precisão, clique no botão "Executar" no software. Após o programa ser carregado com sucesso, coloque o carro na caixa de papel preparada. Quando o sensor de intervalo laser da matriz detecta a borda do muro, o carro gira à direita; Caso contrário, avance.

 

Observações importantes:

1. O sensor de medição a laser matricial requer aproximadamente 3 segundos para inicialização. Durante este período, o veículo permanecerá inativo. Aguarde pacientemente a conclusão da inicialização do sensor.

2. Evite ao máximo realizar operações de exibição de imagens na tela do UNIHIKER K10 dentro de instruções de loop. A atualização da tela pode consumir tempo de processamento significativo, prejudicando o desempenho da detecção de distância pelo sensor laser.

 

 

Tarefa 2: Desvio de Obstáculos

1. Programação

(1) Inicialização do sensor No bloco "UNIHIKER K10 na partida", utilize as instruções "Inicialização do sistema" e "Inicializar sensor laser endereço I2C 0x30 modo de matriz" para configurar o veículo e o módulo de laser matricial.

 

 

Crie as variáveis "Esquerda" e "Direita", inicializando ambas com valor 0.

 

 

(2) Medição de distância em tempo real

Utilize o comando "Medir distância no ponto x: y: (mm) modo matriz" para selecionar os feixes de laser esquerdo (x:6 y:6) e direito (x:7 y:6) para detecção de distância. Atribua a distância medida à esquerda à variável "Esquerda" e a distância medida à direita à variável "Direita".

 

 

(3) Desvio de obstáculos

Em seguida, utilize a estrutura condicional "se...então...senão se ...então...senão" para implementar a lógica de desvio de obstáculos.

 

 

Primeiro, verifique se há obstáculos no lado esquerdo. Quando o valor da variável "Esquerda" for menor que 200 e maior que 0, isso indica a presença de um obstáculo à esquerda.

 

 

Se a condição for verdadeira (obstáculo detectado), utilize os comandos "Configurar Esquerda motor direção Girar para frente velocidade 150" e "Configurar Direita motor direção Girar para frente velocidade 0" para direcionar o veículo para a direita.

 

 

Caso contrário, verifique se há obstáculos no lado direito. Quando o valor da variável "Direita" for menor que 200 e maior que 0, isso indica a presença de um obstáculo à direita. Utilize os comandos "Configurar Esquerda motor direção Girar para frente velocidade 0" e "Configurar Direita motor direção Girar para frente velocidade 150" para direcionar o veículo para a esquerda.

Observação: A condição da variável "left" ser maior que 0 serve para filtrar possíveis detecções falsas.

 

 

Caso contrário, se nenhum obstáculo for detectado nem à esquerda nem à direita, utilize o comando "Configurar Tudo motor direção Girar para frente velocidade 150" para fazer o veículo avançar. O programa completo é mostrado abaixo:

 

 

2. Execução do programa

Antes de executar o programa, certifique-se que o UNIHIKER K10 está corretamente conectado ao computador via cabo USB. Após verificação, clique no botão "Executar" no software. Com o programa carregado com sucesso, posicione o veículo no solo. Quando o sensor de medição a laser matricial detectar um obstáculo à esquerda, o veículo se moverá para a direita; quando detectar um obstáculo à direita, mover-se-á para a esquerda.

 

Tarefa 3: Seguimento de linha com desvio de obstáculos

Nas tarefas anteriores, já aprendemos como utilizar o sensor de medição a laser matricial para detecção de precipícios e identificação de obstáculos. Agora, vamos utilizar o modo de desvio de obstáculos do sensor laser matricial para implementar a função de seguimento de linha com desvio. A seguir, vamos explorar as diferenças entre esses dois modos!

1. Programação

(1) Função de seguimento de linha Nesta tarefa, é necessário programar o veículo para seguir uma linha. Portanto, utilize o comando "Inicialização do sistema" para realizar a configuração inicial do sistema.

 

 

Utilize o comando "Configurar velocidade 3 para seguir linha" para definir a velocidade de seguimento do veículo como 3. Em seguida, use o comando "Seguir linha Ativar" para iniciar a função de seguimento.

 

 

(2) Função de desvio de obstáculos

No bloco "UNIHIKER K10 na partida", utilize o comando "Inicializar sensor laser endereço I2C 0x30 modo de desvio de obstáculos" para ativar a função de desvio do sensor laser matricial.

 

 

Dentro da instrução "repita sempre", utilize o comando "Obter dados de evitação de obstáculos" para adquirir em tempo real a distância detectada pelo sensor de medição a laser matricial em relação aos obstáculos.

 

 

Crie uma nova variável "distância" e inicialize seu valor como 0. Utilize o comando "Detecção de distância Frente (mm) no modo evitação" para obter continuamente a distância frontal e armazenar o resultado na variável "distância".

 

 

(3) Seguimento de linha com desvio de obstáculos

Durante o seguimento de linha, o veículo verifica se a distância frontal é inferior à distância de segurança (20cm). Caso a distância frontal seja menor que 20cm, indica a presença de um obstáculo à frente.

Utilize a instrução condicional "Se...então" para avaliar a existência de obstáculos. Quando o valor da variável "distância" for menor que 200 e maior que 0, a condição é verdadeira, confirmando a detecção de obstáculo frontal. Neste caso, execute o comando "Seguir linha Parar" para interromper o movimento de seguimento do veículo.

 

 

Após interromper o seguimento de linha, é necessário controlar a inversão de direção do veículo. Utilize o comando "Controle PID de ângulo 180° Não permitir interrupção" para executar uma rotação de 180 graus, completando assim a inversão de marcha.

 

Observação: A opção "não permitir interrupção" significa que nenhuma outra operação poderá ser executada até que o veículo complete a rotação de 180 graus.

 

 

Após a conclusão da inversão de direção, utilize o comando "Seguir linha Ativar" para retomar a função de seguimento. O programa completo é apresentado a seguir:

 

 

2. Execução do programa

Antes de executar o programa, certifique-se que o UNIHIKER K10 está corretamente conectado ao computador via cabo USB. Após verificação, clique no botão "Executar" no software. Após o carregamento bem-sucedido do programa, posicione o veículo no mapa de seguimento de linha. Durante o seguimento, ao detectar um obstáculo à frente, o veículo realizará uma inversão de direção no local; após completar a inversão, retomará o seguimento de linha.

 

 

Conhecimentos Técnicos

1. Como escanear endereços I2C

Como a interface do sensor de medição a laser matricial utiliza protocolo I2C, e o veículo possui 3 portas I2C disponíveis, podemos conectá-lo a qualquer uma delas. Porém, após a conexão, como determinar o endereço I2C correspondente ao pino utilizado? O comando "Inicializar sensor laser endereço I2C modo" oferece quatro opções de endereço: 0x30, 0x31, 0x32 e 0x33. A seguir estão os passos detalhados para determinar o endereço I2C correspondente ao pino conectado:

 

Passo 1: Criar novo projeto e preparar ambiente de software

Abra o software Mind+ e crie um novo projeto.

Conclua os preparativos do software conforme ilustrado abaixo, garantindo que todos os módulos e bibliotecas necessários estejam corretamente carregados.

 

 

Passo 2: Adicionar função de varredura de endereço I2C

Clique em "Extensões", localize o módulo "Varredura de endereço I2C" na seção "Módulos funcionais" e complete sua adição.

 

 

Passo 3: Programar a rotina de varredura de endereços

Desenvolva um programa simples para varredura de endereços I2C, configurando-o para exibir os endereços detectados na área de impressão serial.

 

 

Passo 4: Carregar programa e verificar resultados

Após o carregamento bem-sucedido do programa, abra o monitor serial. A área de impressão serial exibirá os endereços I2C detectados na varredura.

 

 

Passo 5: Identificar o endereço I2C correto

No monitor serial, serão exibidos múltiplos endereços I2C. Estes podem incluir todos os endereços dos dispositivos I2C conectados ao veículo. Dentre eles, apenas o endereço 0x30 corresponde à opção disponível no comando "Inicializar sensor laser endereço I2C modo". Portanto, o endereço I2C atribuído ao sensor laser matricial é 0x30.

 

 

 

2. Compreendendo a tecnologia de controle PID

O controle PID (Proporcional-Integral-Derivativo) é um algoritmo de controle em malha fechada amplamente utilizado em automação industrial e controle robótico. Ele ajusta em tempo real a variável de controle para garantir que a saída do sistema atinja com precisão o valor desejado.

 

 

Embora possa parecer complexo, na verdade encontramos aplicações de PID no cotidiano: como no controle de temperatura de chaleiras elétricas, veículos auto-equilibrados, máquinas de chá e controle térmico em impressoras 3D - sempre que há necessidade de "manter uma variável estável", o PID pode ser aplicado.

 

 

(1) Princípio de controle de temperatura em aquecedores

Tomemos como exemplo o controle de um aquecedor para manter a água a 50℃. O método mais simples seria: aquecer quando abaixo de 50℃; desligar quando atingir ou ultrapassar 50℃. Isso é chamado de "controle ON-OFF" - embora simples, possui baixa estabilidade. Aplicado ao controle de velocidade de veículos, resultaria em variações bruscas, causando desconforto.

Por que isso ocorre? Porque: o sistema possui inércia (calor residual na temperatura, impulso do veículo); sensores e controladores possuem tempo de resposta limitado, não podendo ajustar instantaneamente. É nestes casos que se faz necessário um algoritmo mais inteligente - o PID.

 

(2) Breve descrição das três componentes do PID:

P (Proporcional): Quanto maior o erro, mais rápida a correção; erros pequenos resultam em ajustes suaves. Proporciona um controle "gradual", evitando variações bruscas.

I (Integral): Corrige pequenos erros persistentes através de acumulação, eliminando situações como "não aquecer por diferença mínima".

D (Derivativo): Antecipa tendências para prevenir excessos, como reduzir o aquecimento antecipadamente quando a temperatura se aproxima do valor desejado.

 

 

Desta forma, o sistema consegue controlar grandezas físicas como temperatura e velocidade de maneira mais suave e precisa. O PID é, em essência, um método clássico que torna o controle "inteligente".

 

 

3. Compreendendo os cenários de aplicação do sensor de medição a laser matricial

O sensor de medição a laser matricial é um dispositivo capaz de obter simultaneamente informações de distância em múltiplas direções. Em comparação com métodos tradicionais como infravermelho, ultrassom ou medição a laser de ponto único, ele pode formar um "campo de visão bidimensional" dentro de um ângulo específico, funcionando como "olhos" com visão espacial, realizando varreduras rápidas e precisas do ambiente circundante.

 

(1) Como ele é e o que pode fazer?

Geralmente composto por um arranjo de emissores e receptores laser, nosso sensor de medição a laser matricial utiliza uma matriz 8×8, capaz de obter valores de distância em 64 direções simultaneamente dentro de um setor de 60°. Ele percebe em tempo real a posição e distância de objetos dentro de seu ângulo de cobertura. Com vantagens como rapidez, precisão e independência de condições luminosas, equivale à capacidade humana de perceber obstáculos em múltiplas direções simultaneamente, ao invés de "medir uma direção, girar, e medir outra".

 

 

(2) Quais são os cenários de aplicação na vida real?

 

 

Tomando nosso veículo como exemplo: anteriormente utilizávamos sensores infravermelhos ou ultrassônicos que mediam apenas uma direção, limitando-se à detecção frontal. Agora, com o sensor de medição a laser matricial, o veículo "ganha visão", identificando obstáculos a 20cm na frente esquerda e ausência de barreiras à direita; decide automaticamente que "o lado direito está livre" e desvia com sucesso. Com essa "visão" bidimensional, a evitação de obstáculos torna-se mais precisa e o trajeto mais lógico, como se adquirisse verdadeira percepção espacial.

 

 

Desafio

Nas tarefas 1 e 2, aprendemos como utilizar 1 feixe de laser para detecção de precipícios e 2 feixes para detecção de obstáculos laterais. Agora, vamos expandir essa funcionalidade utilizando 3 feixes de laser para detectar obstáculos nas direções esquerda, central e direita, permitindo que o veículo se mova automaticamente na direção livre de obstáculos. Isso proporcionará ao veículo maior capacidade de desvio em ambientes complexos.

Observação: Os 3 feixes de laser utilizados estão devidamente marcados no diagrama.

 

icon Lição 7 Programa.zip 665KB Download(0)

Quer explorar mais?

Lição 2: Pet Digital Personalizado

Lição 3: Definir o Modo de Interação com Pets

Liçao 4: Robô Inteligente de Monitoramento Ambiental

Lição 5: Robô Seguidor de Linha Autônomo

Lição 6: Robô de Navegação em Vias Complexas

 

💬 Já criamos uma comunidade WhatsApp exclusiva para usuários de língua portuguesa do Brasil! Entre para o grupo e receba as informações mais atualizadas, novidades incríveis de projetos, descontos e muitas outras surpresas!

 

Whatsapp comunidade: https://chat.whatsapp.com/KTCdPBQDDWTGHlS5LoO8HC

License
All Rights
Reserved
licensBg
0