Um ano depois do primeiro robot continuo longe dos meus objectivos: um robot capaz de auto localização e mapeamento simultaneo do ambiente.
Pelo caminho ficaram várias experiências de construção de robots, em pelo menos 2 fases. Na primeira adquiri o conhecimento básico para sistemas simples, na segunda fase elaborei sistemas distribuidos.
Todos os robots que fiz até ao momento nunca passaram de baratas tontas, e a aprendizagem necessária para dar um salto significativo bastante elevada.
Insatisfeito com os resultados resolvi dedicar algum tempo a avançar para coisas mais complicadas e experimentar:
- o opencv
- o tensorflow
- o ros
No stretch consegui instalar o opencv pelo repositório e o opencv3 pelas fontes (excepto no rpi),
Consegui instalar o tensorflow:
- num pc x86_64 (dualcore)
- num raspberry pi 3+
Não consegui instalar nem no banana pi nem num portatil x86 (atom N270)
Consegui instalar várias versões do ros
- O melodic a partir das fontes num banana pi, e num x86.
- O kinetic num banana pi com o armbian ubuntu xenial next,
- O indigo num pc x86
A exploração do tensor flow foi a implementação do reconhecimento de objectos num x86 _64 e no raspberry pi 3+.
A exploração do ros tem sido mais extensa e desde já faço notar que necessita de uma maquina potente. Como uso pis e um x86_64 dualcore antigo, o processamento é um problema.
Após uma aprendizagem básica inicial, comecei por explorar o rosserial e o rosserial-arduino, e desenvolvi uns demos funcionais para os componentes básicos no arduino (motores e sensores).
No entanto não tinha nenhuma pista em como juntar as peças e programar um robot simples em ros.
Para aprender a fazer um robot com o ros segui parcialmente o descrito no livro: Learning Python for Robotics, que descreve a construção do robot chefbot, no ubunto 14.04 com o ros indigo.
A instalação do ros indigo deveu-se a necessidade de procurar seguir o livro. mais tarde consegui instalar o chefbot no kinetic.
Tambem clonei o chefbot para um novo pacote diybot, para experimentar como poderia reutilizar o pacote do chefbot.
Como nao tenho a camara microsoft kinetic, o projecto ficou muito comprometido, no entanto ficou suficientemente implementado para perceber que não é muito funcional num pi, e que, pelo menos a minha implementação sofre dos seguintes problemas:
- O mpu6050 em modo DMP acaba por congelar o arduino
- A ocupação da cpu no pi é muito elevada, em particular a do node de comunicação com o arduino
- Por vezes o arduino interrompe o processamento (noto porque o led deixa de piscar), e julgo que essa interrupção está associada a momentos em que o pi está com uma carga muito elevada.
Uma das coisas que nao gosto nesta implementação é que o calculo pwm de cada um dos motores é efectuado no pi, comunicado por um topico. Parece-me ineficiente e o controlo dos motores deixa muito a desejar.
Para além do chefbot tambem experimentei o pacote ros-arduino-brige, mas apesar de o conseguir compilar não tive sucesso na execução.
Portanto, no momento actual considero o chefbo uma boa base para a aprendizagem mas não se adequa as minhas necessidades.
Pelo que entrei numa nova fase, vou tentar desenvolver um robot simples em ros, o rospibot.