Projecto OOZ2Mars — Construção do Rover (hardware)

Tal como tinha sido prometido durante a Lisbon Maker Faire, vamos descrever o nosso Rover (hardware).

Brevemente será publicado o artigo sobre o software que faz o Rover andar.

 

A nossa réplica do Mars Rover inspira-se nas dimensões dos Rovers da NASA, Spirit e Opportunity, tendo sido escolhida a escala 14 . O elemento que achamos fascinante (e que não nos cansamos de ver) é o modelo de suspensão. Esta suspensão dá pelo nome de “rocker-bogie” e é essencialmente um design que a NASA tem usado em todas as missões de exploração a Marte.

Decidimos usar um misto das tecnologias existentes, e se a parte “rocker-bogie” é inspirada pelos rovers gémeos Spirit e Opportunity, o diferencial é inspirado no rover Curiosity. Podem ver uma excelente explicação destes tipos de suspensões neste link.

A ideia por trás desta suspensão sem molas nem amortecedores é permitir que o rover ultrapasse obstáculos maiores do que o diâmetro de uma roda, tolerando inclinações laterais até 45º. O diferencial mantém o chassis do rover o mais horizontal possível. Por erro na montagem das peças, o segmento “rocker-bogie” acabou por ficar montado ao contrário do que os rovers originais.

Depois de várias considerações, escolhemos construir o chassis do Rover numa estrutura em madeira. Embora não seja leve, é de fácil construção e, em caso de algum erro, podemos facilmente corrigir.

 

As três gerações do nosso Mars Rover

As três gerações do nosso Mars Rover

A electrónica do Rover tem duas facetas, por um lado, obter dados de telemetria, por outro controlar o movimento. No exterior, o Rover tem uma câmara de vídeo, a placa wireless e três sensores de ultrassons para detectar e (na maioria das vezes) evitar colisões. Estes sensores estão ligados ao Arduino Makerfaire Edition, que também lê a tensão das duas baterias, enviando os valores quatro vezes por segundo para o Raspberry Pi 2 (raspi2).

O raspi2 é o cérebro do nosso rover e as funções principais são: enviar dados de telemetria para o “Mission Control”, manter um livestream da câmara frontal, receber e processar os comandos vindos do Comandante da Missão. a câmera e a placa wireless estão ligadas directamente ao raspi2. Usamos o módulo de câmera específico do Raspberry Pi pois o tratamento de imagem é efectuado pelo GPU, reduzindo a carga no processador do raspi2. A placa wireless utiliza a norma 802.11n para conseguirmos melhor largura de banda para transmissão de dados.

O Arduino MakerFaire Edition 2014 é responsável pela leitura dos três sensores de ultrasons que nos informam da distância para os obstáculos. Este Arduino também lê as tensões das baterias. A informação de telemetria recolhida é enviada para o raspi2 através da porta série interna, usando um “level shifter”, pois os dois dispositivos usam tensões de funcionamento diferentes.

O Arduino Leonardo recebe e processa a lista de comandos vindos do raspi2. Os comandos são executados em sequência, sendo apenas interrompidos em caso de colisão iminente. O rover executa comandos para evitar o obstéculo, retomando a sequência logo que não tiver mais nenhum obstáculo à sua volta.

Para comando dos motores, usamos um circuito baseado no chip L298 que é o mais indicado para o tipo de motores que temos no nosso rover. Ao contrário dos multicopters que utilizam motores trifásicos com controladores bastante complexos, os motores de escovas podem ser comandados com quatro transístores de potência. O chip L298 contém dentro dois conjuntos de quatro transistores de potência capazes de fornecer a corrente suficiente.

 

Exemplo de implementação

Exemplo de implementação

Construímos dois módulos idênticos em protoboard e usámos um dissipador que tínhamos por aqui para dissipar algum calor extra. Nunca notámos alguma espécie de aquecimento anormal durante os três dias da feira. O nosso Rover movimenta-se da mesma forma que um tanque de guerra, sendo que os motores são controlados aos pares como se fossem apenas dois, o motor esquerdo e motor direito.

As peças azuis foram modeladas e impressas pelo Basílio Vieira que foi o nosso convidado especial para este projecto. Os modelos foram criados no Sketchup e impressas numa BEETHEFIRST da BeeVeryCreative.

Em antecipação da explicação mais detalhada do software, juntamos aqui os links para todos os módulos que usámos para criar esta Experiência de condução de um Rover “em Marte”.

 

Código fonte do projecto

 

Bibliotecas adicionais

  • mosquitto.org — Linux, Servidor de Mensagens MQTT
  • paho-mqtt — Linux, ligações python para MQTT
  • RunningMedian — Arduino, obter mediana de uma série de valores
  • NewPing — Arduino, ler distância de objectos com sensores ultrasons
  • LMotorController — Arduino, controlador de motores

 

Lista de componentes

  • Raspberry Pi 2
  • Câmara Interna para Raspberry Pi
  • * Arduino PTH + Atmega 328p * Arduino Leonardo * Controlador de motores L298 * Level shifter * Motor com caixa redutora * Sensores de ultrasons

    Glossário:

    • level-shifter — adaptador de sinais que permite que o Arduino (5V) comunique com o Raspberry Pi (3.3v)
    • shield — placa que liga nos pinos do Arduino e que permite expansão
    • GPU — processador gráfico
    • Protoboard — Placa de circuito impresso para prototipagem com furação e ilhas para soldar componentes

    Nota: links válidos a 4 de novembro de 2015