Posts Tagged ‘beta01’

Robot beta01 – Diagrama de estados 2

1 de Janeiro de 2012

image

A adição dos dois sensores na frente do robot fez com que os estados possíveis aumentassem e “complicassem” um pouco o diagrama apesar do código que o implementa ser de aspecto simples. Estes dois sensores, um de cada lado, permitem saber onde se localizou a “colisão” pelo que o robot pode reagir de forma diferente em cada um dos casos.

Por exemplo, se a colisão for do lado direito, a reacção do robot será andar um pouco para trás e virar à esquerda, tentando assim fugir ao obstáculo. O mesmo se passa se a colisão for do lado esquerdo mas em vez de virar à esquerda, vira à direita.

Com a adição de mais sensores, as combinações possíveis de situações aumentam consideravelmente mas também tornam o robot mais “inteligente” e com capacidade de ultrapassar mais situações, isto sem complicar em demasia o código que implementa a lógica.

Anúncios

Robot beta01 – Montagem do chassis Magician

31 de Dezembro de 2011

O chassis Magician da Dagu, foi o melhor que encontrei tendo em conta dois objectivos, ser funcional e barato. Uma vez cumpridos estes objectivos e encontrado o lugar onde comprar, efectuei a encomenda na Sparkfun (ver a lista de material).

No mesmo dia em que recebi o chassis (e já estava em pulgas para que chegasse) montei-o seguindo as instruções incluídas. Não é difícil de montar e pode-se usar a chave estrela incluída embora seja melhor usar outra que encaixe melhor nos parafusos.

Deixo aqui algumas fotos da fase de montagem que foi rápida e sem problemas, no fim acabei por não colocar o suporte de baterias no local indicado (entre as duas placas) pois sempre que fosse necessário trocá-las, teria de desaparafusar a placa de cima.

Foto 1: os vários componentes do chassis

Foto 2: montagem dos motores e rodas

(more…)

Robot beta01 – Teste final

31 de Dezembro de 2011

Quem tem acompanhado o meu blog já teve oportunidade de ler sobre o projecto do robot beta01. Penso que cheguei a uma fase, em que de acordo com os sensores disponíveis e a minha capacidade de programar, está a funcionar perto da “perfeição”.

Para além do sensor de proximidade IR, adicionei dois interruptores na frente para colmatar o “ângulo morto” e os obstáculos que não são facilmente detectados. Desta forma consegue ultrapassar a totalidade do que se lhe atravessa à frente sem ficar preso.

Como é possível verificar no video e na consulta da listagem em baixo, o programa do robot acaba pode ser bastante simples e por se revelar eficaz. O robot também consegue desviar-se de objectos revestidos em tecido e naqueles casos em que se aproxima de uma parede num ângulo perto do raso, neste caso os sensores no parachoques fazem o robot recuar e virar no sentido oposto.

No programa, além da lógica para evitar obstáculos, foram definidas funções para fazer andar em frente, virar ou recuar o robot com a velocidade escolhida para cada uma das situações, alta para andar em frente e mais lenta para as manobras. Existe também algum código para ajudar no debug em algumas situações de dúvida, como a leitura do sensor de proximidade mas que para a versão final não é necessário nem compilado.

Para quem percebe um pouco de Arduino e de programação, creio que o código é fácil de seguir mas se tiverem alguma dúvida podem usar os comentários. De igual forma, se tiverem sugestões, agradeço que as façam sob a forma de comentário.

Video

Nota: reparei depois que o robot colide com os garrafões em alguns casos. Isto ocorre porque o plástico e água não reflectem os infravermelhos como no caso da parede ou outro obstáculo opaco.

Programa

/*
 * Robot beta01 - this is a wall avoiding robot using an IR distance sensor from Sharp
 *
 * 20111230 Luis Sismeiro
 */

//#define DEBUG

#ifdef DEBUG
  #define DEBUG_PRINT(x) Serial.print(x)
  #define DEBUG_PRINTLN(x) Serial.println(x)
#else
  #define DEBUG_PRINT(x)
  #define DEBUG_PRINTLN(x)
#endif

#define HIGHSPEED 255 // motors high speed
#define LOWSPEED 128 // motors low speed

(more…)

Robot beta01 – Lista de material

26 de Dezembro de 2011

Robot beta01

Já tenho mostrado aqui no blog programas e fotos do robot beta01 nas ainda não coloquei a lista de material usado. Aqui ficam os componentes:

O mais certo é tirar a ficha do suporte de pilhas e colocar um interruptor para ser mais fácil desligar o robot sem ter que desenfiar a ficha sempre que é necessário. Uma vez que quero alimentar o conjunto a 9 V, não estou a usar o suporte de pilhas que vinha com o chassis do robot que apenas leva 4 pilhas AA.