O Car Simulator usa o sistema de controle difuso, algoritmo genético e otimização de enxame de partículas para simular o movimento do carro autônomo no mapa. Ele também suporta dispositivos VR, veja aqui para detalhes.
A entrada contém os três sensores de distância do carro (dianteiro, 45 graus à esquerda e à direita), que podem ser obtidos a partir da equação de movimento definida, a posição do carro e o ângulo entre o carro e o eixo horizontal. A saída é o ângulo de rotação do volante.
O objetivo é alcançar a linha final sem encontrar a parede e gerar a trajetória do movimento (incluindo a posição de cada ponto no tempo, o valor do sensor e o ângulo de rotação do volante) como um arquivo de texto e, em seguida, exibi-lo na interface gráfica.
A equação de movimento do carro simulado é a seguinte:
O sistema de controle difuso usa sete regras difusas personalizadas e defuzzificador discreto do centro de gravidade. Veja aqui os detalhes.
O Car Simulator usa o algoritmo genético de valor real (GA) para treinar a rede de função de base radial (RBFN) e o carro será controlado pelo RBFN. O gene é definido como os três parâmetros do RBFN (w, m, σ) do vetor de dimensão mista. A função de aptidão é a variância média da saída esperada do conjunto de dados e da saída RBFN no caso de entrada específico. O menor valor de fitness é o melhor parâmetro RBFN.
A estrutura da rede de funções de base radial é a seguinte:
O Car Simulator também pode usar a otimização de enxame de partículas (PSO) para treinar RBFN. A coordenada PSO é definida como os três parâmetros do RBFN (w, m, σ) do vetor de dimensão mista. A função de aptidão é a variância média da saída esperada do conjunto de dados e da saída RBFN no caso de entrada específico. O menor valor de fitness é o melhor parâmetro RBFN.
https://jasonnor.github.io/Car-Simulator/
O Car Simulator também suporta o dispositivo VR, abra esta página.
InputA1 InputB1 InputC1 Output1
InputA2 InputB2 InputC2 Output2
...
Onde InputA é o valor do sensor de distância central, InputB é o valor do sensor de distância direito, InputC é o valor do sensor de distância esquerdo e a saída é o ângulo de rotação do volante. Os conjuntos de dados padrão podem ser encontrados aqui.
InputA1 InputB1 InputC1 InputD1 InputE1 Output1
InputA2 InputB2 InputC2 InputD1 InputE1 Output2
...
Onde InputA é a coordenada X do carro, InputB é a coordenada Y do carro, InputC é o valor do sensor de distância central, InputD é o valor do sensor de distância direito, InputE é o valor do sensor de distância esquerdo e a saída é o ângulo de rotação do volante. Os conjuntos de dados padrão podem ser encontrados aqui.
Sinta-se à vontade para usá-lo se estiver interessado em corrigir problemas e contribuir diretamente para a base de código.
Car Simulator é lançado sob a licença do MIT. Consulte o arquivo LICENSE para obter detalhes.