Nota Técnica #65

Por Dimitris Triantafyllos
Dezembro 2021

O que é o API Aimsun Next?

O Aimsun Next API é uma coleção de funções, em Python ou C++, que permitem ler informações e realizar ações durante uma simulação mesoscópica, microscópica ou híbrida mesoscópica e microscópica. Com a API, você pode fazer alterações enquanto a simulação está sendo executada, enquanto que com o scripting, você tem que fazer quaisquer alterações antes de iniciar a simulação.

Você também pode usar a API para conectar uma aplicação externa à simulação. Internamente, dentro do Aimsun Next, o API pode se comunicar com o mecanismo de simulação, e externamente, com a aplicação externa.

Onde usar o Aimsun Next API?

A aplicação mais comum do Aimsun Next API é emular aplicações de Sistemas Inteligentes de Transporte (ITS), Sistemas Avançados de Assistência ao Motorista (ADAS) e Veículos Conectados (CV): por exemplo, implementar prioridade de semáforo personalizado e algoritmos adaptativos de controle de tráfego; aplicar gerenciamento de tráfego dinamicamente/em tempo de execução; controlar parâmetros de comportamento de direção de veículos, etc. A funcionalidade que a API fornece depende do mecanismo de simulação:

Tanto em simulações mesoscópicas como microscópicas, você pode:

  1. Leia as estatísticas de saída,
  2. Leia o estado dos semáforos,
  3. Mudar o estado dos semáforos.

Em uma simulação microscópica (ou na área microscópica de uma simulação híbrida meso-micro), você pode:

  1. Ler os dados do detector,
  2. Ler o estado de cada veículo (origem, destino, parâmetros comportamentais, caminho atual, posição, velocidade, aceleração, etc.),
  3. Introduzir novos veículos,
  4. Assumir o controle dos veículos (definir posição e velocidade, mudar seu destino ou seu caminho),
  5. Acionar ações de gerenciamento de tráfego.

Em uma simulação mesoscópica, você pode:

  1. Ler o estado de cada veículo (origem, destino, seção atual ou movimento, horário de entrada, horário de saída)
  2. Introduzir novos veículos.

Exemplo: implemente uma aplicação Connected Vehicle controlando os veículos via API

No exemplo a seguir, usaremos o API para controlar a velocidade e a faixa dos veículos que se aproximam de uma junção. Isto representa uma implementação muito simples (provavelmente simplista) de uma aplicação cooperativa de merge para Veículos Conectados.

Passo 1: Configuramos todos os veículos que entram na seção a montante da junção como rastreados para que possamos modificar sua velocidade e faixa de destino quando necessário. Isto é conseguido chamando a função

no callback AAPIEnterVehicleSection

Copiar
no AAPIEnterVehicleSection callback
Passo 2: Em cada etapa de simulação, obtemos o número de veículos nas seções selecionadas usando a seguinte função:

Copiar
Passo 3: Depois lemos o estado desses veículos usando

Copiar
Passo 4: A seguir modificamos a velocidade dos veículos a montante da junção com

Passo 4: Em seguida, modificamos a velocidade dos veículos a montante do merge com

Copiar

Note que esta função só permite definir uma velocidade inferior à velocidade calculada pelo modelo de seguimento veicular (car-following). Se você não quiser ser limitado pela velocidade de seguimento veicular, você pode usar em vez disso a seguinte função:

Copiar

Passo 5: Na seção da junção, definimos a faixa mais à esquerda como faixa de destino, chamando

Copiar

Passo 6: Quando os veículos saem da seção da junção, nós colocamos os veículos de volta em não rastreados, chamando

Copiar

no callback AAPIExitVehicleSection

Executando a API de amostra

  1. Baixe os arquivos de amostra abaixo e certifique-se de que todos os arquivos estejam localizados no mesmo diretório:
  1. Copiar-colar o arquivo py de Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro OR Meso/AAPI.py no mesmo diretório onde o arquivo controlling-vehicles.py é armazenado.

Nota: Lembre-se de que o arquivo Aimsun AAPI deve ser consistente com a versão Aimsun atualmente em uso. Você pode recuperá-lo aqui:

Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro/AAPI.py

  1.  Procedimento:
    1. Inicie o Aimsun e depois abra o arquivo controlling-vehicles.ang fornecido
    2. Executar a Replicação. Consulte a janela Log para obter informações detalhadas sobre o funcionamento do CACC

A extensão Aimsun Next Application Programming Interface (API) pode ser implementada usando um script Python. Esse script Python é um arquivo ASCII (com extensão .py), que pode ser editado em qualquer editor de texto, e é fornecido com o Aimsun Next na pasta de instalação.

  • Copie o arquivo sample.py de Aimsun_Next_installation_folder/programming/Aimsun Next API/python/samples/Micro OR Meso/sample.py para o diretório de trabalho; recomenda-se colocá-lo no mesmo diretório do arquivo ANG para que o Aimsun Next reconheça caminhos relativos caso o projeto seja movido.
  • Copie o arquivo AAPI.py de Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro OR Meso/AAPI.py para o mesmo diretório onde sample.py está armazenado.
  • Você pode salvar o arquivo Python (.py) com o nome de sua preferência. Mantenha sample.py como backup caso precise codificar outra API.
  • Abra o script Python renomeado. Na parte superior, o módulo AAPI é importado para permitir a interpretação das funções de C++ para Python. O módulo AAPI funciona como interface entre o script Python e o Aimsun Next.
  • Consulte no Manual do Aimsun Next a lista completa de funções para gerenciar planos de controle e aplicar alterações em simulações microscópicas ou mesoscópicas, bem como as instruções passo a passo e exemplos de API.

Para testar o código, carregue a API no Aimsun Next e abra um Cenário Dinâmico.

  • Acesse a aba Aimsun Next APIs.
  • Adicione o arquivo .py em Aimsun Next APIs e selecione-o.
  • Pressione OK e clique com o botão direito na Replicação > Run Animated Simulation (para simulação microscópica). Observe as mensagens impressas pelo código na janela Log (Main Menu > Window > Windows > Log).

Licença: Note que você precisa de uma licença API para executar este exemplo. Para maiores informações, favor contatar info@aimsun.com