Um ano depois do primeiro robot

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.