Menu

guimag-beaglemodule

Victor Aldecoa Henrique de Souza Nery André Abrami

Compilação e execução do programa

Esse programa roda na BeagleBoard, que possui uma arquitetura diferente da de um PC, e portanto precisa de um compilador especial. Para compilar abra o artigo [Cross-compilando e gravando um programa em C para a BeagleBoard].
Para executar o programa, podendo fazê-lo rodar embarcado no carro por exemplo, veja o artigo [Executando o programa da Guiagem na BeagleBoard]

Descrição do programa

O guimag-beaglemodule é o programa que roda na BeagleBoard. Ele é responsável pelas seguintes tarefas:

  • Comunicação serial com o [microcontrolador de aquisição de dados], utilizando o protocolo de comunicação ([communication protocol]). Este microcontrolador é responsável pelas medidas dos sensores e controle dos atuadores
  • [Telemetria] com um PC-base, utilizando os tranceptores RF com protocolo ANT em comunicação serial RS232.
  • [Verificao da posição magnetica do ímã], que analisa com que pólo o ímã esta virado para cima.
  • [Cálculo do desvio lateral], que analisa o valor dos sensores magnéticos e obtém o desvio lateral através do método dos mínimos quadrado utilizando a curva teórica dos ímãs.
  • [Controle de esterçamento], controlador PI+D, bumpless baseado no desvio lateral desejado (normalmente nulo) e no desvio lateral calculado.
  • [Cálculo de velocidade], de acordo com o intervalo entre o último e penúltimo pulso do sensor da roda e o tempo decorrido desde o último pulso.
  • [Cálculo de distância total percorrida], que é baseado no número de pulsos que ocorreram desde que o programa foi iniciado.
  • [Controle de velocidade], controlador PI+D, bumpless baseado na velocidade desejada e a velocidade lida.

Entradas de configuração

O programa faz uso dos seguintes arquivos de configuração:
[parametros-gerais.txt]
parametros-fisicos.txt
parametros-controle.txt

Um exemplo deles está na pasta inputs/, mas é necessário fazer uma cópia deles para o diretório onde se encontra o binário (bin/, Debug/ ou Release/)

Modelo do veículo

Para efetuar o controle de esterçamento é utilizado um modelo matemático que calcula a posição do veículo:

L: distancia entre as rodas
d: distancia que o veículo vai andar
Estado atual: x, y, theta
alfa: ângulo de esterçamento

Angulo de viragem B = d/L * tan(alfa)

R = L / tan(alfa) = d / B

Caso B >= 0,001
Cx = x - R sen(theta)
Cy = y + R cos(theta)
x' = Cx + R sen(B + theta)
y' = Cy - R cos(B + theta)
theta' = (theta+B) mod 2pi
caso B < 0,001
x' = x + d cos(theta)
y' = y + d sen(theta)
theta' = (theta+B) mod 2pi

Bibliotecas
-------------a
Este programa faz uso da biblioteca RS232 for Linux and WIN32, que está licenciada sob GPLv2.


Related

Wiki: Cálculo do desvio lateral
Wiki: Cross-compilando e gravando um programa em C para a BeagleBoard
Wiki: Executando o programa da Guiagem na BeagleBoard
Wiki: Telemetria
Wiki: communication protocol
Wiki: microcontrolador de aquisição de dados
Wiki: parametros-gerais.txt
Wiki: placa de processamento central
Wiki: vehicle

MongoDB Logo MongoDB