Informação sobre Veículos da API Aimsun Next¶
Funções relacionadas à Informação sobre Veículos¶
Ler Número de Veículos em uma Seção¶
Em C++ e Python¶
Explicação¶
Ler o número total de veículos em uma seção.
Formato¶
int AKIVehStateGetNbVehiclesSection(int aidSec, bool considerAllSegments)
Parâmetros¶
- aidSec: Identificador da Seção
- considerAllSegments: este parâmetro deve sempre ser definido como verdadeiro.
Saída¶
- ≥ 0: Número total de veículos.
- < 0: Erro.
Ler o Número de Veículos em uma Interseção¶
Em C++ e Python¶
Explicação¶
Ler o número total de veículos em uma interseção.
Formato¶
int AKIVehStateGetNbVehiclesJunction(int aidJunction)
Parâmetros¶
- aidJunction: Identificador da Interseção
Saída¶
- ≥ 0: Número total de veículos
- < 0: Erro
Ler a Informação de um Veículo em uma Seção¶
Em C++ e Python¶
Explicação¶
Ler a informação de um veículo em uma seção. Esta função requer que o número de veículos na seção seja obtido chamando AKIVehStateGetNbVehiclesSection para a mesma seção sem chamadas adicionais a AKIVehStateGetNbVehiclesSection para outras seções.
Formato¶
InfVeh AKIVehStateGetVehicleInfSection(int aidSec, int indexveh)
Parâmetros¶
- aidSec: Identificador da Seção
- indexveh: Índice do Veículo, de 0 a (Número Total de Veículos na Seção – 1)
Saída¶
struct InfVeh{
int report;
int idVeh;
int type;
// Informação no Veículo quando está em uma seção
int idSection;
int segment;
int numberLane;
// Informação no Veículo quando está em um nó
int idJunction;
int idSectionFrom;
int idLaneFrom;
int idSectionTo;
int idLaneTo;
double CurrentPos;
double distance2End;
double xCurrentPos, yCurrentPos, zCurrentPos;
double xCurrentPosBack, yCurrentPosBack, zCurrentPosBack;
double CurrentSpeed, PreviousSpeed;
double TotalDistance;
double SystemGenerationT;
double SystemEntranceT;
double SectionEntranceT;
double CurrentStopTime;
bool stopped;
uint mNbLostTurnings;
double energyState;
bool isLost;
};
onde:
- report: 0, OK, senão código de erro
- idVeh: o identificador do veículo
- type: é a posição do tipo de veículo na lista de tipos de veículos sendo usados. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo específico de veículo.
- idSection: o identificador da seção
- segment: o número do segmento da seção onde o veículo está localizado (de 0 a n-1)
- numberLane: o número da faixa no segmento (de 1, a faixa mais à direita, a N, a faixa mais à esquerda)
- CurrentPos: a posição dentro da seção = distância (m ou pés, dependendo das unidades definidas na rede) do início da seção.
- distance2End: a distância até o final da seção (m ou pés, dependendo das unidades definidas na rede)
- xCurrentPos, yCurrentPos, zCurrentPos: coordenadas do mundo do ponto médio do para-choque frontal do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: coordenadas do mundo do ponto médio do para-choque traseiro do veículo.
- CurrentSpeed: a velocidade atual (em km/h ou mph, dependendo das unidades definidas na rede)
- PreviousSpeed: a velocidade no passo de simulação anterior (em km/h ou mph, dependendo das unidades definidas na rede.
- TotalDistance: a distância total percorrida (m ou pés) pelo veículo.
- SystemGenerationT: o tempo absoluto de geração do veículo no sistema. Se nenhuma fila virtual foi encontrada em sua seção de entrada, será o mesmo que o SystemEntranceT.
- SystemEntranceT: o tempo absoluto de entrada do veículo no sistema, ou seja, em sua seção de entrada. Se nenhuma fila virtual foi encontrada em sua seção de entrada, será o mesmo que o SystemGenerationT.
- SectionEntranceT: o tempo absoluto de entrada do veículo na seção atual.
- CurrentStopTime: o tempo de parada atual.
- stopped: Verdadeiro se o veículo permanecer parado.
- mNbLostTurnings O número de viradas perdidas.
- energyState Nível atual do tanque de combustível em veículos de combustão (l) ou estado atual da carga da bateria em veículos elétricos (kW)
- isLost Verdadeiro se o veículo está perdido e não pode alcançar seu destino.
Os outros campos ou atributos não têm significado; seu valor é definido como -1.
Ler a informação de um veículo em uma interseção¶
Em C++ e Python¶
Explicação¶
Ler a informação de um veículo em uma interseção. Esta função requer que o número de veículos na interseção seja obtido chamando a função AKIVehStateGetNbVehiclesJunction para a mesma interseção sem chamadas adicionais a AKIVehStateGetNbVehiclesJunction para outras interseções.
Formato¶
InfVeh AKIVehStateGetVehicleInfJunction(int aidJunction, int indexveh)
Parâmetros¶
- aidJunction: o identificador da interseção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na interseção – 1)
Saída¶
struct InfVeh{
int report;
int idVeh;
int type;
// Informação no Veículo quando está em uma seção
int idSection;
int segment;
int numberLane;
// Informação sobre o Veículo quando está em um nó
int idJunction;
int idSectionFrom;
int idLaneFrom;
int idSectionTo;
int idLaneTo;
double CurrentPos;
double distance2End;
double xCurrentPos, yCurrentPos, zCurrentPos;
double xCurrentPosBack, yCurrentPosBack, zCurrentPosBack;
double CurrentSpeed, PreviousSpeed;
double TotalDistance;
double SystemGenerationT;
double SystemEntranceT;
double SectionEntranceT;
double CurrentStopTime;
bool stopped;
uint mNbLostTurnings;
double energyState;
bool isLost;
};
onde:
- report: 0, OK, senão código de erro
- idVeh: o identificador do veículo
- type: a posição do tipo de veículo na lista dos tipos de veículos utilizados. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- idSectionFrom: o identificador da seção de origem
- idLaneFrom: faixa da seção de origem onde o veículo entra na interseção. 1 sendo a faixa mais à direita e N a faixa mais à esquerda, sendo N o número de faixas na seção de origem.
- idSectionTo: identificador da seção de destino
- idLaneTo: faixa da seção de destino onde o veículo sai da interseção. 1 sendo a faixa mais à direita e N a faixa mais à esquerda, sendo N o número de faixas na seção de destino.
- CurrentPos: a posição dentro da interseção = distância (m ou pés, dependendo das unidades definidas na rede) da entrada à interseção.
- distance2End: a distância até o final da virada (m ou pés, dependendo das unidades definidas na rede).
- xCurrentPos, yCurrentPos, zCurrentPos: coordenadas do mundo do ponto médio do para-choque frontal do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: coordenadas do mundo do ponto médio do para-choque traseiro do veículo.
- CurrentSpeed: a velocidade atual (em km/h ou mph, dependendo das unidades definidas na rede).
- PreviousSpeed: a velocidade no passo de simulação anterior (em km/h ou mph, dependendo das unidades definidas na rede).
- TotalDistance: a distância total percorrida (m ou pés)
- SystemGenerationT: o tempo absoluto de geração do veículo no sistema. Se nenhuma fila virtual foi encontrada em sua seção de entrada, será o mesmo que o SystemEntranceT.
- SystemEntranceT: o tempo absoluto de entrada do veículo no sistema, ou seja, em sua seção de entrada. Se nenhuma fila virtual foi encontrada em sua seção de entrada, será o mesmo que o SystemGenerationT.
- CurrentStopTime: o tempo de parada atual.
- stopped: Verdadeiro se o veículo permanecer parado.
- mNbLostTurnings O número de viradas perdidas.
- energyState Nível atual do tanque de combustível em veículos de combustão (l) ou estado atual da carga da bateria em veículos elétricos (kW)
- isLost Verdadeiro se o veículo está perdido e não consegue chegar ao seu destino.
Ler a Informação Estática de um Veículo em uma Seção¶
Em C++ e Python¶
Explicação¶
Ler a informação estática de um veículo em uma seção. Informação estática significa as características do veículo que foram definidas quando o veículo entrou no sistema. Esta função requer que o número de veículos na seção seja encontrado chamando AKIVehStateGetNbVehiclesSection.
Formato¶
StaticInfVeh AKIVehGetVehicleStaticInfSection(int aidSec, int indexveh)
Parâmetros¶
- aidSec: Identificador da seção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na seção – 1)
Saída¶
struct StaticInfVeh{
int report;
int idVeh;
int type;
double length;
double width;
double maxDesiredSpeed;
double maxAcceleration;
double normalDeceleration;
double maxDeceleration;
double speedAcceptance;
double minDistanceVeh;
double giveWayTime;
double guidanceAcceptance;
int enrouted;
int equipped;
int tracked;
bool keepfastLane;
double safetyMarginFactor;
double headwayMin;
double sensitivityFactor;
double reactionTime;
double reactionTimeAtStop;
double reactionTimeAtTrafficLight;
bool laneChangingCooperation;
double laneChangingAggressivenessLevel;
double distanceZoneFactor;
int centroidOrigin;
int centroidDest;
int idsectionExit;
int idLine;
void * internalInfo;
int engineTypeId;
int vehicleSegmentId;
int EUEmissionId;
double energyCapacity;
};
onde:
- report: 0, OK, senão código de erro
- idVeh: identificador do veículo
- type: é a posição do tipo de veículo na lista dos tipos de veículos utilizados. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- length: comprimento do veículo (m ou pés, dependendo das unidades definidas na rede).
- width: largura do veículo (m ou pés, dependendo das unidades definidas na rede).
- maxDesiredSpeed: velocidade máxima desejada do veículo (km/h ou mph, dependendo das unidades definidas na rede).
- maxAcceleration: aceleração máxima do veículo (m/s² ou ft/s², dependendo das unidades definidas na rede).
- normalDeceleration: desaceleração máxima do veículo que pode ser aplicada em condições normais (m/s² ou ft/s², dependendo das unidades definidas na rede).
- maxDeceleration: desaceleração máxima do veículo que pode ser aplicada em condições especiais (m/s² ou ft/s², dependendo das unidades definidas na rede).
- speedAcceptance: grau de aceitação dos limites de velocidade.
- minDistanceVeh: distância que o veículo mantém entre si e o veículo à frente (metros ou pés, dependendo das unidades definidas na rede).
- giveWayTime: tempo após o qual o veículo se torna mais agressivo em situações de dê preferência (segundos).
- guidanceAcceptance: nível de conformidade do veículo com indicações de orientação.
- enrouted: 0 significa que o veículo não atualizará o caminho durante a rota, 1 significa que o veículo mudará de caminho durante a rota dependendo da porcentagem definida de veículos que atualizam o caminho durante a rota.
- equipped: 0 significa que o veículo não está equipado, 1 significa que o veículo está equipado.
- tracked: 0 significa que o veículo não está rastreado, 1 significa que o veículo está rastreado.
- keepfastLane: significa que o veículo mantém a faixa rápida durante a ultrapassagem.
- safetyMarginFactor: fator de margem de segurança.
- headwayMin: distância mínima a ser mantida em relação ao seu líder.
- sensitivityFactor: estimativa da aceleração do líder.
- reactionTime: tempo de reação do veículo.
- reactionTimeAtStop: tempo de reação ao parar do veículo.
- reactionTimeAtTrafficLight: tempo de reação do veículo quando parado o primeiro da fila em um semáforo.
- laneChangingCooperation: o veículo está cooperando atualmente na manobra de mudança de faixa de outro veículo.
- laneChangingAggressivenessLevel: o fator de agressividade deste veículo na mudança de faixa, onde 0% significa que a completa segurança é necessária para a mudança de faixa e 100% significa que a menor distância é aceita na mudança de faixa.
- distanceZoneFactor: o multiplicador que este veículo aplica nas distâncias de zona 1,2,3 que controlam quando começa a considerar uma mudança de faixa que se aproxima. Um valor > 1 implica que tenta mudar de faixa mais cedo que o normal e um valor < 1 implica que tenta mudar de faixa mais tarde que o normal.
- centroidOrigin: Identificador do centroide de origem do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- centroidDest: Identificador do centroide de destino do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- idsectionExit: Identificador da seção de saída de destino do veículo, quando o centroide de destino utiliza porcentagens como destino (caso contrário, é -1) e as condições de tráfego são definidas por uma matriz OD.
- idLine: Identificador da Linha de Transporte, quando o veículo foi gerado como um veículo de transporte.
- internalInfo: apenas para uso interno.
- engineTypeId: Identificador do tipo de motor do veículo (modelos de emissão, consumo, aceleração MFC), onde: Nenhum = 0, Gasolina = 1, Diesel = 2, Elétrico = 3, GPL = 4.
- vehicleSegmentId: Identificador do Segmento de Carro da Euro para o modelo de aceleração MFC / modelo de consumo de bateria: Nenhum = 0, A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, J = 7, NM = 8.
- EUEmissionId: Identificador Padrão de Emissão para LEM. Nulo= 0, Zero = 1, Euro 0 = 2, Euro 1 = 3, Euro 2 = 4, Euro 3= 5, Euro 4 = 6, Euro 5 = 7, Euro 6 = 8, Euro 6c = 9 (Veículos Leves (carro, táxi, furgão) ), Euro I = 10, Euro II = 11, Euro III = 12, Euro IV = 13, Euro IV EGR = 14, Euro V = 15, Euro V EGR = 16, Euro V SCR = 17, Euro VI = 18 (Veículos Pesados (LGV, HGV, Ônibus, Micro-ônibus) ).
- energyCapacity: Capacidade Total do tanque (l) ou bateria (kW)
Ler a Informação Estática de um Veículo em uma Interseção¶
Em C++ e Python¶
Explicação¶
Ler a informação estática de um veículo em uma interseção. Informação estática significa as características do veículo que foram definidas quando o veículo entrou no sistema. Esta função requer ter anteriormente obtido o número de veículos na interseção chamando a função AKIVehStateGetNbVehiclesJunction.
Formato¶
StaticInfVeh AKIVehGetVehicleStaticInfJunction(int aidJunction, int indexveh)
Parâmetros¶
- aidJunction: o identificador da interseção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na interseção – 1)
Saída¶
struct StaticInfVeh{
int report;
int idVeh;
int type;
double length;
double width;
double maxDesiredSpeed;
double maxAcceleration;
double normalDeceleration;
double maxDeceleration;
double speedAcceptance;
double minDistanceVeh;
double giveWayTime;
double guidanceAcceptance;
int enrouted;
int equipped;
int tracked;
bool keepfastLane;
double safetyMarginFactor;
double headwayMin;
double sensitivityFactor;
double reactionTime;
double reactionTimeAtStop;
double reactionTimeAtTrafficLight;
bool laneChangingCooperation;
double laneChangingAggressivenessLevel;
double distanceZoneFactor;
int centroidOrigin;
int centroidDest;
int idsectionExit;
int idLine;
void * internalInfo;
int engineTypeId;
int vehicleSegmentId;
int EUEmissionId;
double energyCapacity;
};
onde:
- report: 0, OK, senão código de erro
- idVeh: identificador do veículo
- type: tipo de veículo (carro, ônibus, caminhão, etc.) da lista de tipos de veículos utilizados.
- length: comprimento do veículo (m ou pés, dependendo das unidades definidas na rede).
- width: largura do veículo (m ou pés, dependendo das unidades definidas na rede).
- maxDesiredSpeed: velocidade máxima desejada do veículo (km/h ou mph, dependendo das unidades definidas na rede).
- maxAcceleration: aceleração máxima do veículo (m/s² ou ft/s², dependendo das unidades definidas na rede).
- normalDeceleration: desaceleração máxima do veículo que pode ser aplicada em condições normais (m/s² ou ft/s², dependendo das unidades definidas na rede).
- maxDeceleration: desaceleração máxima do veículo que pode ser aplicada em condições especiais (m/s² ou ft/s², dependendo das unidades definidas na rede).
- speedAcceptance: grau de aceitação dos limites de velocidade.
- minDistanceVeh: distância que o veículo mantém entre si e o veículo à frente (metros ou pés, dependendo das unidades definidas na rede).
- giveWayTime: tempo após o qual o veículo se torna mais agressivo em situações de dê preferência (segundos).
- guidanceAcceptance: nível de conformidade do veículo com indicações de orientação.
- enrouted: 0 significa que o veículo não atualizará o caminho durante a rota, 1 significa que o veículo mudará de caminho durante a rota dependendo da porcentagem definida de veículos que atualizam o caminho durante a rota.
- equipped: 0 significa que o veículo não está equipado, 1 significa que o veículo está equipado.
- tracked: 0 significa que o veículo não está rastreado, 1 significa que o veículo está rastreado.
- keepfastLane: significa que o veículo mantém a faixa rápida durante a ultrapassagem.
- safetyMarginFactor: fator de margem de segurança.
- headwayMin: distância mínima a ser mantida em relação ao seu líder.
- sensitivityFactor: estimativa da aceleração do líder.
- reactionTime: tempo de reação do veículo.
- reactionTimeAtStop: tempo de reação ao parar do veículo.
- reactionTimeAtTrafficLight: tempo de reação do veículo quando parado o primeiro da fila em um semáforo.
- laneChangingCooperation: o veículo está cooperando atualmente na manobra de mudança de faixa de outro veículo.
- laneChangingAggressivenessLevel: o fator de agressividade deste veículo na mudança de faixa, onde 0% significa que a completa segurança é necessária para a mudança de faixa e 100% significa que a menor distância é aceita na mudança de faixa.
- distanceZoneFactor: o multiplicador que este veículo aplica nas distâncias de zona 1,2,3 que controlam quando começa a considerar uma mudança de faixa que se aproxima. Um valor > 1 implica que tenta mudar de faixa mais cedo que o normal e um valor < 1 implica que tenta mudar de faixa mais tarde que o normal.
- centroidOrigin: Identificador do centroide de origem do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- centroidDest: Identificador do centroide de destino do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- idsectionExit: Identificador da seção de saída de destino do veículo, quando o centroide de destino utiliza porcentagens como destino (caso contrário, é -1) e as condições de tráfego são definidas por uma matriz OD.
- idLine: Identificador da Linha de Transporte, quando o veículo foi gerado como um veículo de transporte.
- internalInfo: apenas para uso interno.
- engineTypeId: Identificador do tipo de motor do veículo (modelos de emissão, consumo, MFC aceleração), onde: Nenhum = 0, Gasolina = 1, Diesel = 2, Elétrico = 3, GPL = 4.
- vehicleSegmentId: Identificador do Segmento do Carro da Euro para o modelo de aceleração MFC / modelo de consumo de bateria: Nenhum = 0, A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, J = 7, NM = 8.
- EUEmissionId: Identificador Padrão de Emissão para LEM. Nulo= 0, Zero = 1, Euro 0 = 2, Euro 1 = 3, Euro 2 = 4, Euro 3= 5, Euro 4 = 6, Euro 5 = 7, Euro 6 = 8, Euro 6c = 9 (Veículos Leves (carro, táxi, furgão) ), Euro I = 10, Euro II = 11, Euro III = 12, Euro IV = 13, Euro IV EGR = 14, Euro V = 15, Euro V EGR = 16, Euro V SCR = 17, Euro VI = 18 (Veículos Pesados (LGV, HGV, Ônibus, Micro-ônibus) ).
- energyCapacity: Capacidade Total do tanque (l) ou bateria (kW)
Modificar a Informação Estática de um Veículo em uma Seção¶
Em C++ e Python¶
Explicação¶
Modificar alguns dos parâmetros estáticos de um veículo em uma seção. Parâmetros estáticos são as características do veículo que foram definidas quando o veículo entrou no sistema. Os parâmetros estáticos que podem ser alterados são: tipo, comprimento, largura, velocidade máxima desejada, aceleração máxima, desaceleração normal, desaceleração máxima, aceitação de velocidade, distância mínima entre veículos, tempo de dê preferência, aceitação de orientação, em rota, equipado, rastreado, manter a faixa rápida, fator de margem de segurança, distância mínima entre líderes, fator de sensibilidade, tempo de reação, tempo de reação ao parar, tempo de reação em semáforo, centroid origin, centroid destin e idsectionExit (a seção de saída tem significado quando o centroide de destino utiliza porcentagens de destino; se o identificador da seção for inválido ou -1, o Aimsun Next determinará a seção de saída de acordo com os critérios definidos no centroide). O Aimsun Next não armazena os valores anteriores, por isso não pode recuperá-los. Esta função requer ter anteriormente obtido o número de Veículos na seção chamando AKIVehStateGetNbVehiclesSection.
Formato¶
int AKIVehSetVehicleStaticInfSection(int aidSec, int indexveh, StaticInfVeh staticinfVeh)
Parâmetros¶
- aidSec: o identificador da seção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na seção – 1)
- staticinfVeh: novos parâmetros estáticos a serem atribuídos
Saída¶
- = 0: Sem Erro
- < 0: Erro
Remover um Veículo de uma Seção¶
Em C++ e Python¶
Explicação¶
Remove um veículo de uma seção. Esta função requer que o número de veículos na seção tenha sido obtido chamando a função AKIVehStateGetNbVehiclesSection.
Formato¶
int AKIRemoveVehicle(int aidSec, int indexveh )
Parâmetros¶
- aidSec: Identificador da seção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na seção – 1)
Saída¶
- = 0: Sem Erro
- < 0: Erro
Ler a informação de um Veículo¶
Em C++ e Python¶
Explicação¶
Ler a informação de um veículo. Esta função pode diminuir a simulação, pois cada chamada a esta função implica encontrar o veículo dentro da rede. Para evitar essa busca, recomenda-se que o veículo seja definido como Rastreado para tornar sua informação mais acessível.
Formato¶
InfVeh AKIVehGetInf(int aidVeh)
Parâmetros¶
- aidVeh: Identificador do Veículo
Saída¶
struct InfVeh{
int report;
int idVeh;
int type;
// Informação no Veículo quando está em uma seção
int idSection;
int segment;
int numberLane;
// Informação no Veículo quando está em um nó
int idJunction;
int idSectionFrom;
int idLaneFrom;
int idSectionTo;
int idLaneTo;
double CurrentPos;
double distance2End;
double xCurrentPos, yCurrentPos, zCurrentPos;
double xCurrentPosBack, yCurrentPosBack, zCurrentPosBack;
double CurrentSpeed, PreviousSpeed;
double TotalDistance;
double SystemGenerationT;
double SystemEntranceT;
double SectionEntranceT;
double CurrentStopTime;
bool stopped;
uint mNbLostTurnings;
double energyState;
bool isLost;
};
onde:
- report: 0, OK, caso contrário, o valor representa um código de erro
- idVeh: o identificador do veículo.
- type: o tipo do veículo (carro, ônibus, caminhão, etc.) de 1 a AKIVehGetNbVehTypes ()
- idSection: o identificador da seção.
- segment: o número do segmento da seção onde o veículo está localizado (de 0 a n-1).
- numberLane: o número da faixa no segmento (de 1, a faixa mais à direita, a N, a faixa mais à esquerda).
- idSectionFrom: o identificador da seção de origem.
- idLaneFrom: o número da faixa da seção de origem onde o veículo entrou na interseção.
- idSectionTo: o identificador da seção de destino.
- idLaneTo: o número da faixa da seção de destino onde o veículo sai da interseção.
- section dado pela sua distância (m ou pés, dependendo das unidades definidas na rede) do início da seção ou posição do veículo dentro da interseção dada pela sua distância da entrada para a interseção.
- distance2End: distância até o final da seção (m ou pés, dependendo das unidades definidas na rede) quando o veículo está localizado em uma seção ou a distância até o final da virada quando o veículo está em uma interseção.
- xCurrentPos, yCurrentPos, zCurrentPos: coordenadas do mundo do ponto médio do para-choque frontal do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: coordenadas do mundo do ponto médio do para-choque traseiro do veículo.
- CurrentSpeed: velocidade atual (em km/h ou mph, dependendo das unidades definidas na rede.
- PreviousSpeed: velocidade no passo de simulação anterior (em km/h ou mph, dependendo das unidades definidas na rede.
- TotalDistance: distância total percorrida (m ou pés)
- SystemGenerationT: o tempo absoluto de geração do veículo no sistema. Se nenhuma fila virtual foi encontrada em sua seção de entrada, será o mesmo que o SystemEntranceT.
- SystemEntranceT: o tempo absoluto de entrada do veículo no sistema, ou seja, em sua seção de entrada. Se nenhuma fila virtual foi encontrada em sua seção de entrada, será o mesmo que o SystemGenerationT.
- SectionEntranceT: o tempo absoluto de entrada do veículo na seção atual
- CurrentStopTime: o tempo de parada atual
- stopped: Verdadeiro se o veículo permanecer parado.
- mNbLostTurnings O número de viradas perdidas.
- energyState Nível atual do tanque de combustível em veículos de combustão (l) ou estado atual da carga da bateria em veículos elétricos (kW)
- isLost Verdadeiro se o veículo está perdido e não pode alcançar seu destino.
Ler a Informação Estática de um Veículo¶
Em C++ e Python¶
Explicação¶
Ler a informação estática de um veículo. Informação estática são as características do veículo que foram definidas quando o veículo entrou no sistema. Esta função pode diminuir a simulação porque cada chamada a esta função implica encontrar o veículo dentro da rede. Para evitar essa busca, recomenda-se que o veículo seja definido como Rastreado para tornar sua informação mais acessível.
Formato¶
StaticInfVeh AKIVehGetStaticInf (int aidVeh)
Parâmetros¶
- aidVeh: Identificador do Veículo
Saída¶
struct StaticInfVeh{
int report;
int idVeh;
int type;
double length;
double width;
double maxDesiredSpeed;
double maxAcceleration;
double normalDeceleration;
double maxDeceleration;
double speedAcceptance;
double minDistanceVeh;
double giveWayTime;
double guidanceAcceptance;
int enrouted;
int equipped;
int tracked;
bool keepfastLane;
double safetyMarginFactor;
double headwayMin;
double sensitivityFactor;
double reactionTime;
double reactionTimeAtStop;
double reactionTimeAtTrafficLight;
bool laneChangingCooperation;
double laneChangingAggressivenessLevel;
double distanceZoneFactor;
int centroidOrigin;
int centroidDest;
int idsectionExit;
int idLine;
void * internalInfo;
int engineTypeId;
int vehicleSegmentId;
int EUEmissionId;
double energyCapacity;
};
onde:
- report: 0, OK, senão código de erro
- idVeh: identificador do veículo
- type: tipo do veículo (carro, ônibus, caminhão, etc.)
- length: comprimento do veículo (m ou pés, dependendo das unidades definidas na rede).
- width: largura do veículo (m ou pés, dependendo das unidades definidas na rede).
- maxDesiredSpeed: velocidade máxima desejada do veículo (km/h ou mph, dependendo das unidades definidas na rede).
- maxAcceleration: aceleração máxima do veículo (m/s² ou ft/s², dependendo das unidades definidas na rede).
- normalDeceleration: desaceleração máxima do veículo que pode ser aplicada em condições normais (m/s² ou ft/s², dependendo das unidades definidas na rede).
- maxDeceleration: desaceleração máxima do veículo que pode ser aplicada em condições especiais (m/s² ou ft/s², dependendo das unidades definidas na rede).
- speedAcceptance: grau de aceitação dos limites de velocidade.
- minDistanceVeh: distância que o veículo mantém entre si e o veículo à frente (metros ou pés, dependendo das unidades definidas na rede).
- giveWayTime: tempo após o qual o veículo se torna mais agressivo em situações de dê preferência (segundos).
- guidanceAcceptance: nível de conformidade do veículo com indicações de orientação.
- enrouted: 0 significa que o veículo não atualizará o caminho durante a rota, 1 significa que o veículo mudará de caminho durante a rota dependendo da porcentagem definida de veículos que atualizam o caminho durante a rota.
- equipped: 0 significa que o veículo não está equipado, 1 significa que o veículo está equipado.
- tracked: 0 significa que o veículo não está rastreado, 1 significa que o veículo está rastreado.
- keepfastLane: significa que o veículo mantém a faixa rápida durante a ultrapassagem.
- safetyMarginFactor: fator de margem de segurança.
- headwayMin: distância mínima a ser mantida em relação ao seu líder.
- sensitivityFactor: estimativa da aceleração do líder.
- reactionTime: tempo de reação do veículo.
- reactionTimeAtStop: tempo de reação ao parar do veículo.
- reactionTimeAtTrafficLight: tempo de reação do veículo quando parado o primeiro da fila em um semáforo.
- laneChangingCooperation: o veículo está cooperando atualmente na manobra de mudança de faixa de outro veículo.
- laneChangingAggressivenessLevel: o fator de agressividade deste veículo na mudança de faixa, onde 0% significa que a completa segurança é necessária para a mudança de faixa e 100% significa que a menor distância é aceita na mudança de faixa.
- distanceZoneFactor: o multiplicador que este veículo aplica nas distâncias de zona 1,2,3 que controlam quando começa a considerar uma mudança de faixa que se aproxima. Um valor > 1 implica que tenta mudar de faixa mais cedo que o normal e um valor < 1 implica que tenta mudar de faixa mais tarde que o normal.
- centroidOrigin: Identificador do centroide de origem do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- centroidDest: Identificador do centroide de destino do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- idsectionExit: Identificador da seção de saída de destino do veículo, quando o centroide de destino utiliza porcentagens como destino (caso contrário, é -1) e as condições de tráfego são definidas por uma matriz OD.
- idLine: Identificador da Linha de Transporte, quando o veículo foi gerado como um veículo de transporte.
- internalInfo: apenas para uso interno.
- engineTypeId: Identificador do tipo de motor do veículo (modelos de emissão, consumo, MFC aceleração), onde: Nenhum = 0, Gasolina = 1, Diesel = 2, Elétrico = 3, GPL = 4.
- vehicleSegmentId: Identificador do Segmento de Carro da Euro para o modelo de aceleração MFC / modelo de consumo de bateria: Nenhum = 0, A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, J = 7, NM = 8.
- EUEmissionId: Identificador Padrão de Emissão para LEM. Nulo= 0, Zero = 1, Euro 0 = 2, Euro 1 = 3, Euro 2 = 4, Euro 3= 5, Euro 4 = 6, Euro 5 = 7, Euro 6 = 8, Euro 6c = 9 (Veículos Leves (carro, táxi, furgão) ), Euro I = 10, Euro II = 11, Euro III = 12, Euro IV = 13, Euro IV EGR = 14, Euro V = 15, Euro V EGR = 16, Euro V SCR = 17, Euro VI = 18 (Veículos Pesados (LGV, HGV, Ônibus, Micro-ônibus) ).
- energyCapacity: Capacidade Total do tanque (l) ou bateria (kW)
Modificar a Informação Estática de um Veículo em uma Interseção¶
Em C++ e Python¶
Explicação¶
Modificar alguns dos parâmetros estáticos de um veículo em uma interseção. Parâmetros estáticos significam as características do veículo que foram definidas quando o veículo entrou no sistema. Os parâmetros estáticos que podem ser alterados são: tipo, comprimento, largura, velocidade máxima desejada, aceleração máxima, desaceleração normal, desaceleração máxima, aceitação de velocidade, distância mínima entre veículos, tempo de dê preferência, aceitação de orientação, em rota, equipado, rastreado, manter a faixa rápida, fator de margem de segurança, distância mínima entre líderes, fator de sensibilidade, tempo de reação, tempo de reação ao parar, tempo de reação em semáforo, centroid origin, centroid destin e idsectionExit (a seção de saída tem significado quando o centroide de destino usa porcentagens de destino; se o identificador da seção for inválido ou -1, o Aimsun Next determinará a seção de saída de acordo com os critérios definidos no centroide). O Aimsun Next não armazena os valores anteriores, por isso não pode recuperá-los. Esta função requer ter anteriormente obtido o número de Veículos na interseção chamando AKIVehStateGetNbVehiclesJunction.
Formato¶
int AKIVehSetVehicleStaticInfJunction(int aidJunct,int indexveh, StaticInfVeh staticinfVeh)
Parâmetros¶
- aidJunct: identificador da interseção
- indexveh: o índice do veículo, de 0 a (Número Total de Veículos na interseção – 1)
- staticinfVeh: novos parâmetros estáticos a serem atribuídos.
Saída¶
- = 0: Sem Erro
- < 0: Erro
Ler a Informação de Controle de Cruzeiro Adaptativo de um Veículo em uma Seção¶
Em C++ e Python¶
Explicação¶
Ler os parâmetros de Controle de Cruzeiro Adaptativo de um veículo em uma seção. Os parâmetros de ACC estabelecem as capacidades e influenciam o comportamento do Controle de Cruzeiro Adaptativo do veículo. Esses parâmetros foram definidos quando o veículo entrou no sistema. Esta função requer que o número de veículos na seção seja encontrado chamando AKIVehStateGetNbVehiclesSection.
Formato¶
StaticInfVehACCParams AKIVehGetVehicleStaticInfACCParamsSection( int aidSec, int indexveh )
Parâmetros¶
- aidSec: Identificador da seção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na seção – 1)
Saída¶
struct StaticInfVehACCParams {
int report;
int idVeh;
int accType;
double minClearanceDistance;
double maxClearanceDistance;
double speedGainFreeFlow;
double distanceGain;
double speedGainPrec;
double desiredTimeGap;
double connectedDistanceGain;
double connectedSpeedGain;
double minTimeGapThreshold;
double maxTimeGapThreshold;
double followerTimeGap;
double leaderTimeGap;
};
onde:
Parâmetros comuns a todos os veículos simulados:
- report: Código de erro retornado (0 significa sucesso).
- idVeh: O ID do veículo simulado.
- accType: O módulo de ACC do veículo simulado (0: Nenhum, 1: ACC, 2: CACC).
Parâmetros do Modelo de ACC:
(Todos esses parâmetros serão -1 quando o módulo estiver desativado)
- minClearanceDistance: O limite inferior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- maxClearanceDistance: O limite superior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- speedGainFreeFlow: O ganho na diferença de velocidade entre a velocidade de fluxo livre e a velocidade atual do veículo em questão (s-1).
- distanceGain: O ganho na diferença de posição entre o veículo à frente e o veículo em questão (s-2).
- speedGainPrec: O ganho na diferença de velocidade entre o veículo à frente e o veículo em questão (s-1).
- desiredTimeGap: A distância de tempo desejada do controlador de ACC (s).
Parâmetros do Modelo de CACC:
(Todos esses parâmetros serão -1 quando o módulo estiver desativado)
- connectedDistanceGain: O ganho na diferença de posição entre o veículo conectado à frente e o veículo CACC em questão (s-1).
- connectedSpeedGain: O ganho na diferença de velocidade entre o veículo conectado à frente e o veículo CACC em questão.
- minTimeGapThreshold: O limite inferior para a distância de tempo (s).
- maxTimeGapThreshold: O limite superior para a distância de tempo (s).
- followerTimeGap: O tempo constante entre o último veículo da corrente conectada anterior e o veículo CACC em questão (s).
- leaderTimeGap: O tempo constante entre o último veículo da corrente conectada anterior e o veículo CACC em questão (s).
Ler a Informação de Controle de Cruzeiro Adaptativo de um Veículo em uma Interseção¶
Em C++ e Python¶
Explicação¶
Ler os parâmetros de Controle de Cruzeiro Adaptativo de um veículo em uma interseção. Os parâmetros de ACC estabelecem as capacidades e influenciam o comportamento do Controle de Cruzeiro Adaptativo do veículo. Esses parâmetros foram definidos quando o veículo entrou no sistema. Esta função requer que o número de veículos na interseção seja encontrado chamando AKIVehStateGetNbVehiclesJunction.
Formato¶
StaticInfVehACCParams AKIVehGetVehicleStaticInfACCParamsJunction( int aidJunction, int indexveh )
Parâmetros¶
- aidJunction: o identificador da interseção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na interseção – 1)
Saída¶
struct StaticInfVehACCParams {
int report;
int idVeh;
int accType;
double minClearanceDistance;
double maxClearanceDistance;
double speedGainFreeFlow;
double distanceGain;
double speedGainPrec;
double desiredTimeGap;
double connectedDistanceGain;
double connectedSpeedGain;
double minTimeGapThreshold;
double maxTimeGapThreshold;
double followerTimeGap;
double leaderTimeGap;
};
onde:
Parâmetros comuns a todos os veículos simulados:
- report: Código de erro retornado (0 significa sucesso).
- idVeh: O ID do veículo simulado.
- accType: O módulo de ACC do veículo simulado (0: Nenhum, 1: ACC, 2: CACC).
Parâmetros do Modelo de ACC:
(Todos esses parâmetros serão -1 quando o módulo estiver desativado)
- minClearanceDistance: O limite inferior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- maxClearanceDistance: O limite superior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- speedGainFreeFlow: O ganho na diferença de velocidade entre a velocidade de fluxo livre e a velocidade atual do veículo em questão (s-1).
- distanceGain: O ganho na diferença de posição entre o veículo à frente e o veículo em questão (s-2).
- speedGainPrec: O ganho na diferença de velocidade entre o veículo à frente e o veículo em questão (s-1).
- desiredTimeGap: A distância de tempo desejada do controlador de ACC (s).
Parâmetros do Modelo de CACC:
(Todos esses parâmetros serão -1 quando o módulo estiver desativado)
- connectedDistanceGain: O ganho na diferença de posição entre o veículo conectado à frente e o veículo CACC em questão (s-1).
- connectedSpeedGain: O ganho na diferença de velocidade entre o veículo conectado à frente e o veículo CACC em questão.
- minTimeGapThreshold: O limite inferior para a distância de tempo (s).
- maxTimeGapThreshold: O limite superior para a distância de tempo (s).
- followerTimeGap: O tempo constante entre o último veículo da corrente conectada anterior e o veículo CACC em questão (s).
- leaderTimeGap: O tempo constante entre o último veículo da corrente conectada anterior e o veículo CACC em questão (s).
Modificar a Informação de Controle de Cruzeiro Adaptativo de um Veículo em uma Seção¶
Em C++ e Python¶
Explicação¶
Modificar os parâmetros de ACC de um veículo em uma seção. Os Parâmetros de ACC estabelecem as capacidades e influenciam o comportamento do Controle de Cruzeiro Adaptativo do veículo. Esses parâmetros foram definidos quando o veículo entrou no sistema. Todos os parâmetros podem ser alterados, exceto idVeh e report. O Aimsun Next não armazena os valores anteriores, por isso não pode recuperá-los. Esta função requer ter obtido anteriormente o número de Veículos na seção chamando AKIVehStateGetNbVehiclesSection.
Formato¶
int AKIVehSetVehicleStaticInfACCParamsSection( int aidSec, int indexveh, StaticInfVehACCParams staticinfVehACC )
Parâmetros¶
- aidSec: o identificador da seção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na seção – 1)
- staticinfVehACC: novos parâmetros de ACC a serem atribuídos
Saída¶
- = 0: Sem Erro
- < 0: Erro
Remover um Veículo de uma Interseção¶
Em C++ e Python¶
Explicação¶
Remove um veículo de uma interseção. Esta função requer que o número de veículos na interseção tenha sido obtido chamando a função AKIVehStateGetNbVehiclesJunction.
Formato¶
int AKIRemoveVehicleJunction( int idJunction, int indexveh )
Parâmetros¶
- idJunction: identificador da interseção
- indexveh: índice do veículo, de 0 a (Número Total de Veículos na interseção – 1)
Saída¶
- = 0: Sem Erro
- < 0: Erro
Ler a posição de um Veículo em uma Seção¶
Em C++ e Python¶
Explicação¶
Ler a posição de um veículo em uma seção
Formato¶
InfVehPos AKIVehGetVehicleGetPosSection( int asect, int indexveh, int nbPos );
Parâmetros¶
- asect: Identificador da Seção
- indexVeh: o índice do veículo na seção
- nbPos: número de posições a serem lidas
Saída¶
- report= 0: Sem Erro
- report < 0: Erro
Ler a posição de um Veículo em uma seção reutilizando a struct InfVehPos¶
Em C++ e Python¶
Explicação¶
Lê a posição de um