Resumo da semana do dia 10/09
- Para configurar o ambiente de execução dos algoritmos de aprendizado de máquina numa RaspberryPi, tentamos instalar o
python3
,miniconda
epytorch
adaptando os passos desse tutorial para uma RaspberryPi Zero. Tivemos sucesso instalando o python3.6.4 e o miniconda para armv6l (arquitetura do processador presente na Pi Zero) mas, devido ao miniconda armv61 usar o python2 e o miniconda armv7l usar o python3, decidimos não continuar tentando instalar o pytorch na Raspberry Zero. Encomendamos uma RaspberryPi 3B e, assim que ela chegar, instalaremos o pytorch nela.[3h15min]
Resumo da semana do dia 17/09
- Obtivemos uma placa RaspberryPi modelo B, mas não prosseguimos com a configuração do ambiente de desenvolvimento ainda.
Resumo da semana do dia 24/09
- Testamos um algoritmo de processamento de imagens usando OpenCV.
Resumo da semana do dia 01/10
- Avanços no programa de reconhecimento de linhas e tomada de decisão do carrinho.
Resumo da semana do dia 08/10
- Avanços no programa de reconhecimento de linhas e tomada de decisão do carrinho.
Resumo da semana do dia 15/10
-
Carrinho batizado como Tommy.
-
(Marcelo) Configuração de um roteador wifi para comunicação remota com o carrinho usando SSH.
[1h]
- Sexta-feira à noite fizemos alguns testes com o Tommy na FAU.
[2h30min]
- Nesse dia percebemos que o ciclo envolvendo aquisição da imagem da câmera, processamento da imagem para obtenção das linhas da pista, cálculo do ponto de fulga, e tomada de decisão estava demorando muito tempo visto que o Tommy (carrinho) avançava cerca de 4 metros por segundo na velocidade mínima. Como todo o ciclo descrito acima estava levando cerca de 220 milisegundos para ser processado isso dava uma média de 5 ciclos por segundo contudo, nesse tempo o Tommy já havia percorrido 4 metros, isto é, em média o Tommy avançava 80 centímetros a cada ciclo de tomada de decisão. Precisamos otimizar o código para que o ciclo fosse mais rápido.
Resumo da semana do dia 22/10
- (Marcelo) Instalei o Raspbian Stretch Lite, uma versão mais enxuta do sistema operacional usado na RaspberryPi. Nesse SO instalei a biblioteca do OpenCV3 seguindo esse tutorial. A ideia era livrar o SO de processos dispensáveis como interface gráfica para aumentar o poder de processamento disponível para o ciclo de tomada de decisão do Tommy.
[4h]
- Infelizmente os testes posteriores mostraram que o ganho de poder de processamento (cerca de apenas 7% da CPU) e de memória (apenas 20MB de uso a menos) foram irrelevantes para o tempo de processamento do ciclo de tomada de decisão do Tommy.
Resumo da semana do dia 29/10
- Fizemos mais testes e constatamos que a maior demora no processamento do ciclo de tomada de decisão do Tommy está na obtenção da imagem mais atual por meio do OpenCV3!. Em números os tempos aproximados são: aquisição da imagem da câmera (140ms), processamento da imagem para obtenção das linhas da pista (80ms), cálculo do ponto de fulga (menos de 10ms), e tomada de decisão (menos de 10ms). Mais especificamente percebemos que a maior demora ocorre em chamadas à função grab da classe VideoCapture. Percebemos também que uma única chamada à função grab não retorna o frame mais atual da câmera. Não sabemos exatamente porque isso acontece, se há um buffer interno do OpenCV3 ou do SO do qual uma imagem menos recente é obtida, mas o efeito disso é que fazendo menos (uma) chamadas à função grab a aquisição da imagem é mais rápida porém a iteração ocorre sobre uma imagem que não a obtida na posição atual do carrinho no início do ciclo de tomada de decisão.
[8h]
- Tivemos a ajuda de um amigo nosso da engenharia mecatrônica da poli que fez uma cremalheira para o Tommy.
- Fizemos um vídeo mostrando o Tommy executando o nosso programa de direção autônoma.
-
Infelizmente decidimos por não participar da competição da RoboCar por dois motivos principais: 1º por causa do problema com obteção de imagens o Tommy ainda estava demorando muito para tomar uma ação de virar as rodas diante de uma curva e 2º porque interpretamos de maneira equivocada a descrição das faixas que estariam presentes na pista da competição, pensamos que haveriam duas faixas laterais quando na verdade haveria apenas uma faixa tracejada no centro da pista.
-
Mesmo passada essa edição do RoboCar Race, o projeto deve continuar pois a técnica de processamento de imagens pode ser aperfeiçoada para melhorar o tempo de resposta do carrinho assim como outras técnicas de reconhecimento de imagens (redes convolucionais, deep learning, etc.) podem vir a ser utilizadas e testadas no carrinho no futuro.
Resumo da semana do dia 05/11
- (Marcelo) Configurada a raspberryPi do carrinho para acessar a Internet pela rede eduroam.
[1h]
Resumo da semana do dia 12/11
- Sem avanços no projeto durante esta semana.
Mais novidades em breve.