terça-feira, janeiro 02, 2007

Esquema 1


Primeiro esquema onde entramos em conta com o acelerador e o travão do condutor, cruzamos a informação dos 2 para saber se sempre quer acelerar ou travar.
Temos também como input para o control system o estado actual do simulador, posições dos outros carros e velocidades.
Depois de receber essa informação vai correr o sistema de controlo e decidir o que vai acontecer ao carro. De seguida transmite isso para o carro e o carro envia os seus dados para o simulador de forma a ser utilizado pelos outros.

Férias

Depois de umas férias merecidas ( pelo menos eu acho que sim :) ) estou de volta ao trabalho e ao mestrado.

quarta-feira, dezembro 13, 2006

Aleatoriedade

Num modelo baseado em veículos e troços de auto-estrada o que fazer para introduzir aleatoriedade no simulador?

Existem modelos que o fazem através da modelação do comportamento do condutor, no meu penso usar isso e usar as características de cada veículo para o fazer.

Ou seja, o condutor pode ser respeitador da lei ou não, nervoso ou não, etc.
Cada veículo pode ter potência, poder de aceleração, travagem e massa diferentes.

Tornando-se assim possível tornar a amostra do simulador mais de encontro ao que se passa na vida real.

Sendo assim tenho que deixar de pensar num simulador constituído por 3 entidades principais em vez de 2.

Burro

É como me sinto hoje :(((((.

Depois de olhar para mil e uma fórmulas com integrais e primitivas que nunca tinha visto na vida.

terça-feira, dezembro 12, 2006

Matlab, Física

E assim se passa uma boa noite de estudo a aprender a trabalhar com MATLAB e a estudar física para representar os vários elementos do simulador.

Antes de se programar deve criar-se todo o "kernel", conjunto de funções, que deverão ser testadas no MATLAB.

segunda-feira, dezembro 11, 2006

Upgrades

Há uma infinidade de pequenas coisas que podem ser controladas por um computador de bordo, um dos upgrades possiveis seria ter sensores de luz instalados na frente do carro e consoante era de dia ou de noite ligava os faróis sozinho e numa última versão se fosse ver se pode ir em máximos ou médios.

Dúvidas para começar a implementar

Dúvidas existenciais de um programador:

C# ou Java? Para a parte de algoritmos e processamento do simulador.

OpenGL ou DirectX ? Para a representação gráfica e interacção com o utilizador.

Estas são as minhas dúvidas do momento, estou inclinado para misturar C# e OpenGL.

O que à partida é parvo visto que utilizando C# deveria usar DirectX (Microsoft-Microsoft).

Mas:

  1. Gosto mais de C# que Java;
  2. Queria usar OpenGL que é mais fácil de utilizar em todas as plataformas (Windows, Linux, etc).
Vou pensar um pco mais sobre o assunto e amanhã decido.

sábado, dezembro 09, 2006

Dia de compras

Hoje interrompi o meu estudo para ir fazer as belas das compras de Natal.
Eu sei que devia estar a trabalhar mas a vida não é só trabalho.

Assim até pode ser que tenha algumas ideias interessantes enquanto ando distraido de centro comercial em centro comercial.

sexta-feira, dezembro 08, 2006

Ultrapassagem

Em primeiro lugar eu quero ultrapassar o carro à minha frente porquê?
Normalmente porque ele vai a uma velocidade mais baixa que aquela que eu quero ir.

Em termos informáticos como é que o computador sabe que está na altura de fazer uma ultrapassagem? Uma resposta possível é que o carro passou a distância de segurança entre ele e o carro da frente mas ainda não atingiu a velocidade máxima possível, daí querer efectuar a manobra.

Que regras tenho que seguir quando estou a fazer uma ultrapassagem?

Tenho que me certificar que:

  • nenhum condutor que venha atrás haja começado uma manobra para me ultrapassar;
  • quem me precede na mesma faixa de trânsito não haja indicado o propósito de ultrapassar um terceiro;
  • a faixa de trânsito que vai tomar esteja livre numa extensão suficiente para que sua manobra não ponha em perigo ou obstrua o trânsito que venha em sentido contrário;( no caso da auto-estrada só preciso preocupar-me em saber se a faixa da esquerda está livre ou não )

Quando for a ultrapassar devo:

  • indicar com antecedência a manobra pretendida, accionando a luz indicadora de direcção do veículo ( nestes casos podemos ter a intervenção do computador, quando o condutor virar o volante apartir de um certo ângulo e não tiver o pisca ligado o pc pode fazê-lo por ele )
  • afastar-me do carro que estava a ultrapassar, de tal forma que fique com uma distância lateral de segurança;
  • retomar a faixa de rodagem de origem com a respectiva sinalética luminosa.
Portanto um carro comandado pelo motor deverá respeitar todas estas regras e se possível melhorar a sua implementação (piscas, distâncias, etc).

O que pode fazer com que o computador opte por não ultrapassar e reduzir a velocidade? Quando a diferença entre este e o carro da frente em termos de velocidade seja menor ou igual a 10 Km/h e esteja a menos desse valor de atingir a velocidade máxima.

E porque os 10 Km/h? Porque temos que limitar o espaço ocupado pelo carro na faixa da esquerda. É óbvio que em termos teoricos basta andar a mais 1 Km/h que o carro que segue à minha frente para o conseguir ultrapassar mas para isso teria que ter uma pista muito longa.

Carro

Um carro a andar numa auto-estrada...
Que tipo de acções terá que conseguir realizar?

  • Manter a velocidade dentro dos limites legais (tanto máxima como mínima);
  • Manter a distância de segurança (numa fase mais avançada até ter em conta as condições cimatéricas para os cálculos);
  • Mudar de faixa, quer seja para ultrapassar quer seja por haver um estreitamento na auto-estrada, passar de 3 faixas para 2 ou de 3 para 4;
Manter a velocidade

É a parte fácil, basta ter a informação dos limites a cumprir num dado ponto e gerir a aceleração( positiva ou negativa) para manter a velocidade.

V= V0 + at em que V é a velocidade actual, V0 é a velocidade no momento zero, t é o momento actual e a é a aceleração a aplicar para que esta velocidade não ultrapasse os limites.

Distância de segurança

Normalmente quando estamos a conduzir a distância que para nós é de segurança para outra pessoa pode não o ser, é calculada a "olho" tendo em conta a experiência de condução que temos, o conhecimento dos limites do nosso carro e o estado da estrada.
Ora para o motor isso não é possivel, portanto é necessário encontrar uma fórmula matemática que me permita exprimir a distância de segurança de uma forma genérica.

Para calcular a distância de segurança temos que considerar 2 aspectos principais: tempo de reacção e a dsitância de travagem.
Neste cálculo vou desprezar várias variáveis e usar as fórmulas básicas, assim,

Vf*Vf = V0*V0 - 2ad

Numa travagem podemos considerar Vf = 0 pois o que se pretende é parar o carro e num carro parado a velocidade é igual a zero.

Assim a distância d é igual a V0*V0 / 2a. Já temos a distância de travagem mas a esta temos que acrescentar o tempo de reacção.

D = d + dist. tempo reacção, D = d + V0 * t em que t é o tempo que se demora a reagir, normalmente 1,5 segundos.

Portanto a fórmula final para a distância é D = d + V0 * 1,5.

A questão de ultrapassar será abordada no seguinte post. Agora vou ver de qualquer coisa para lanchar :))


P.S. - Se se lembrarem de mais alguma coisa que um carro tenha que fazer na auto-estrada por favor digam.

Modelar

Primeiro que tudo tem que se tentar perceber quais os elementos a incluir no simulador, como o dividir em partes de forma a ser mais fácil o seu controlo e programação.
Um elemento óbvio é o carro, vai haver n instâncias de carros ao mesmo tempo numa auto-estrada que terão que conseguir interagir uns com os outros através da informação dos vários sensores.
Portanto também vamos ter algo que represente os sensores, ou alguma forma de os introduzir no sistema.
Ora, já temos carros e sensores mas os carros não podem andar se não tiverem uma estrada para o fazer, certo?
Então e como é que vamos representar uma auto-estrada? É apenas considerado uma estrada, ou considera-se cada faixa como sendo uma estrada? E se assim for como é o seu tamanho? Infinito ou posso dividir ainda cada faixa em troços de a-b de forma a ser mais fácil gerir os carros e a posição relativa entre eles e a estrada.
Posso também considerar uma auto-estrada como uma matriz e colocar lá os vários elementos.

De seguida vou falar de acções que o carro pode ter que realizar.

Começo

Bem quer dizer isto não é bem o dia zero mas decidi considerá-lo o dia zero e criar este blog para ir divagando sobre a minha tese de mestrado.

E em que consiste essa tese?

A ideia é criar um simulador de um carro inteligente a andar numa auto-estrada que depois irá transmitir as informações que obtém de vários sitios para o condutor.
Isto será feito através de uma realidade "semi-aumentada", ou seja, o simulador terá imagens em 3D às quais irei sobrepor a informação dos sensores dando assim uma ideia de como poderia funcionar num carro real.

E porque é que eu digo que é um carro inteligente quando ele teoricamente apenas transmite a informação que recebe ao condutor?...

Na verdade a minha tese não vai só fazer isso, vou criar um motor que vai alimentar cada um dos carros com informações diversas que são apresentadas ao utilizador e consoante a decisão deste o carro reage e informa-o, por exemplo, se é seguro fazer uma ultrapassagem ou não, etc.