API do Aimsun Next: Rastreamento de Veículos¶
Funções relacionadas ao Rastreamento de Veículos¶
Modificar a Velocidade de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Modifica a velocidade de um veículo rastreado para o próximo passo de simulação, se ela for menor que a velocidade calculada usando o modelo de car-following.
Formato¶
int AKIVehTrackedModifySpeed (int aidVeh, double newSpeed);
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
- newSpeed: Nova Velocidade (Km/h ou Mph, dependendo das unidades definidas na rede).
Saída¶
- = 0: Sem Erro
- < 0: Erro
Forçar a Velocidade de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Forçar a velocidade de um veículo rastreado para o próximo passo de simulação sem considerar restrições do modelo de car-following.
Formato¶
int AKIVehTrackedForceSpeed (int aidVeh, double newSpeed);
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
- newSpeed: Nova Velocidade (Km/h ou Mph, dependendo das unidades definidas na rede).
Saída¶
- = 0: Sem Erro
- < 0: Erro
Modificar a Faixa de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Modifique a faixa de destino de um veículo rastreado até que ele tenha realizado a mudança de faixa.
Há condições que devem ser satisfeitas ao usar faixas laterais para convergir para uma seção. Se o veículo rastreado estiver em uma faixa lateral e a nova faixa-alvo for a faixa adjacente da seção viária, então a instrução da função AKIVehTrackedModifyLane está sujeita à presença de uma faixa virtual linha contínua definida pela distância de convergência e pela opção FIFO para convergência de rampas. Consulte a seção sobre Convergências de Rampas para obter detalhes.
Observe que, no caso em que a instrução da função da API é sobreposta pelos parâmetros de convergência, a função da API teria retornado 0 (No error), pois teria definido a faixa de destino com sucesso, antes da aplicação das regras de convergência.
O modelador pode garantir que a chamada da API nunca seja sobrescrita definindo a distância de convergência como igual ao comprimento da faixa de convergência e desmarcando a opção FIFO. No entanto, isso modificará o comportamento de todos os veículos na simulação e, portanto, deve ser usado com cuidado.
Formato¶
int AKIVehTrackedModifyLane (int aidVeh, int nextLane);
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
- newLane: -1 próxima faixa à direita ou 1 próxima faixa à esquerda. 0 não mudar de faixa. -2 redefinir, devolve o controle da faixa-alvo ao modelo de simulação padrão.
Saída¶
- = 0: Sem Erro
- < 0: Erro
Modificar a Próxima Seção de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Modifica a próxima seção de um veículo rastreado a fim de forçar um movimento de conversão, para o próximo passo de simulação.
Formato¶
int AKIVehTrackedModifyNextSection (int aidVeh, int nextSection);
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
- nextSection: Próxima seção.
Saída¶
- = 0: Sem Erro
- < 0: Erro
Modificar as Próximas Seções de um Veículo Rastreado¶
Somente em C++¶
Explicação¶
Modifique as próximas seções de um veículo rastreado para forçar um subcaminho no próximo passo de simulação. A primeira seção informada deve ser uma seção imediatamente a jusante da seção atual do veículo. A lista de seções não chega ao centroide de destino do veículo. Depois que ele sair da última seção do subcaminho informado, o veículo calculará uma rota de sua localização até seu destino.
Formato¶
int AKIVehTrackedModifyNextSections (int aidVeh, int sizeNextSections, const int *nextSections);
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
- sizeNextSections: Número de seções no subcaminho
- nextSections: Array com os IDs das próximas seções. Devem ser fornecidas tantas seções quanto sizeNextSections
Saída¶
- = 0: Sem Erro
- < 0: Erro
Exemplo de uso em C:
int * pathArray = (int *) calloc( pathSize, sizeof(int) );
for( int i = 0; i < pathSize; i++ ){
pathArray[i] = sectionID[i];
}
int err = AKIVehTrackedModifyNextSections( vehId, pathSize, pathArray );
free( pathArray );
Modificar a faixa de entrada na próxima seção de um veículo rastreado¶
Em C++ e Python¶
Explicação¶
Define a faixa desejada que o veículo rastreado deve escolher ao entrar na próxima seção. A faixa desejada deve estar conectada à faixa atual. Caso contrário, o veículo não considerará a faixa desejada como sua faixa-alvo.
Formato¶
int AKIVehTrackedModifyNextTargetLaneInNextSection(int aidVeh, int nextSection, int nextlane);
Parâmetros¶
- *aidVeh: Identificador do veículo rastreado.
- nextSection: Identificador da próxima seção.
- nextlane: Posição da faixa desejada, em que 1 é a faixa mais à direita e N a faixa mais à esquerda, sendo N o número de faixas na próxima seção.
Saída¶
- = 0: Sem Erro
Remover um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Remover um veículo rastreado.
Formato¶
int AKIVehTrackedRemove (int aidVeh);
int AKIVehTrackedDelete (int aidVeh); //Old function, kept for compatibility
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída¶
- = 0: Sem Erro
- < 0: Erro
Definir um Veículo como Rastreado / Não Rastreado¶
Em C++ e Python¶
Explicação¶
Definir um veículo como rastreado/ Definir um Veículo como não rastreado
Formato¶
int AKIVehSetAsTracked (int aidVeh);
int AKIVehSetAsNoTracked (int aidVeh);
Parâmetros¶
- aidVeh: Identificador do veículo.
Saída¶
- = 0: Sem Erro
- < 0: Erro
Ler as informações de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Leia as informações de um veículo rastreado
Formato¶
InfVeh AKIVehTrackedGetInf(int aidVeh)
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída¶
struct InfVeh{
int report;
int idVeh;
int type;
// Information in Vehicle when it is in a section
int idSection;
int segment;
int numberLane;
// Information in Vehicle when it is in a node
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;
};
em que:
- relatório: 0, OK; caso contrário, é um código de erro
- idVeh: O identificador do veículo
- type: O tipo de veículo (carro, ônibus, caminhão etc.).
- idSection: O identificador da seção.
- segmento: Número do segmento da seção onde o veículo está localizado (de 0 a n-1)
- numberLane: Número da faixa no segmento (de 1, a faixa mais à direita, até N, a faixa mais à esquerda).
- idSectionFrom: Identificador da seção de origem.
- idLaneFrom: Faixa da seção de origem pela qual o veículo entra no cruzamento. 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 pela qual o veículo sai do cruzamento. 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: Posição dentro da seção. A distância (metros ou pés, dependendo das unidades definidas na rede) a partir do início da seção ou posição dentro da interseção, dada como a distância a partir da entrada da interseção.
- distance2End: Distância até o fim da seção (metros 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 fim do movimento de conversão quando o veículo está em uma junção.
- xCurrentPos, yCurrentPos, zCurrentPos: Coordenadas globais do ponto médio do para-choque dianteiro do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: Coordenadas globais 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 anterior da simulação (em km/h ou mph, dependendo das unidades definidas na rede.
- TotalDistance: Distância total percorrida (metros ou pés).
- SystemGenerationT: O tempo absoluto de geração do veículo no sistema. Se nenhuma fila virtual for encontrada em sua seção de entrada, ele será igual ao SystemEntranceT.
- SystemEntranceT: O tempo absoluto de entrada do veículo no sistema, isto é, em sua seção de entrada. Se nenhuma fila virtual for encontrada em sua seção de entrada, será igual a SystemGenerationT.
- SectionEntranceT: O tempo absoluto de entrada do veículo na seção atual.
- CurrentStopTime: O tempo de parada atual.
- parado: True se o veículo permanecer parado.
- mNbLostTurnings O número de movimentos de conversão perdidos.
- energyState Nível atual do tanque de combustível em veículos a combustão (l) ou Estado de Carga atual da bateria em veículos elétricos (kW)
- isLost Verdadeiro se o veículo estiver perdido e não puder alcançar seu destino.
Ler as Informações Estáticas de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Ler as informações estáticas do veículo rastreado. Informações estáticas são as características do veículo que foram definidas quando o veículo entrou no sistema.
Formato¶
StaticInfVeh AKIVehTrackedGetStaticInf (int aidVeh)
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
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 chassisId;
int EUEmissionId;
double energyCapacity;
};
em que:
- relatório: 0, OK, caso contrário código de erro
- idVeh: identificador do veículo
- type: Tipo de 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/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- normalDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições normais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- maxDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições especiais (m/s2 ou ft/ s2, 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 precedente (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 cedência de passagem (segundos).
- guidanceAcceptance: Nível de conformidade do veículo às indicações de orientação.
- em rota: 0 significa que o veículo não atualizará o caminho em percurso; 1 significa que o veículo mudará o caminho em percurso dependendo da porcentagem definida de veículos que atualizam o caminho em percurso.
- equipados: 0 significa veículo não equipado, 1 significa veículo equipado.
- rastreados: 0 significa veículo não rastreado, 1 significa veículo rastreado.
- keepfastLane: True significa que o veículo mantém a faixa rápida durante a ultrapassagem
- safetyMarginFactor: Fator de margem de segurança
- headwayMin: Headway mínimo em relação ao líder
- sensitivityFactor: Estimativa da aceleração do líder
- reactionTime: Tempo de reação do veículo
- reactionTimeAtStop: Tempo de reação na parada do veículo
- reactionTimeAtTrafficLight: Tempo de reação do veículo quando parado como o primeiro da fila em um semáforo.
- laneChangingCooperation:
- laneChangingAggressivenessLevel:
- distanceZoneFactor:
- 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 usa percentuais 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 Público, quando o veículo foi gerado como veículo de transporte público.
- internalInfo: Para uso interno
- engineTypeId: Identificador do tipo de motor do veículo (modelos de emissão, consumo e aceleração MFC), em que: None = 0, Petrol = 1, Diesel = 2, Electric = 3, LPG = 4.
- chassisId: Identificador do segmento Euro Car do veículo para o modelo de aceleração MFC/modelo de consumo de bateria: None = 0, A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, J = 7, NM = 8.
- EUEmissionId: Identificador Standard Emission para LEM. Null= 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 (Light Duty vehicles (car, taxi, van) ), 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 (Heavy Duty vehicles (LGV, HGV, Bus, Coach) ).
- energyCapacity: Capacidade Total do tanque (l) ou da bateria (kW)
Modificar as Informações Estáticas de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Modifica alguns dos parâmetros estáticos de um veículo rastreado. 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: type, length, width, maxDesiredSpeed, maxAcceleration, normalDeceleration, maxDeceleration, speedAcceptance, minDistanceVeh, giveWayTime, guidanceAcceptance, enrouted, equipped, tracked, keepfastLane, safetyMarginFactor, headwayMin, sensitivityFactor, reactionTime, reactionTimeAtStop, reactionTimeAtTrafficLight, centroidOrigin, centroidDest e idsectionExit (a seção de saída faz sentido quando o centroide de destino usa percentuais como destino; se o identificador da seção for inválido ou –1, então 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; portanto, não pode recuperá-los.
Formato¶
int AKIVehTrackedSetStaticInf (int aidVeh, StaticInfVeh staticinfVeh)
Parâmetros¶
- aidVeh: o Identificador do veículo rastreado.
- staticinfVeh: os novos parâmetros estáticos a serem atribuídos.
Saída:¶
- = 0: Sem Erro
- < 0: Erro
Ler as Informações Dinâmicas de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Ler as informações dinâmicas de um veículo rastreado, isto é, sua localização atual, velocidade atual e seção ou movimento de conversão a jusante.
Formato¶
DynInfVeh AKIVehGetVehicleTrackedDynInf( int aidVeh )
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída:¶
struct A2KERNELEXPORT DynInfVeh{
int report;
double xCurrentPos;
double yCurrentPos;
double xCurrentPosBack;
double yCurrentPosBack;
double currentSpeed;
int downstreamObjectId;
};
em que:
- relatório: Código de erro retornado (0 significa sucesso).
- xCurrentPos, yCurrentPos: Coordenadas mundiais do ponto médio do para-choque dianteiro do veículo para a posição atual
- xCurrentPosBack, yCurrentPosBack: Coordenadas mundiais do ponto médio do para-choque traseiro do veículo para a posição atual
- currentSpeed: Velocidade atual (km/h ou mph, dependendo das unidades definidas na rede).
- downstreamObjectId: ID do objeto a jusante, sendo ele uma seção ou movimento de conversão.
Ler as informações de Adaptive Cruise Control de um veículo rastreado¶
Em C++ e Python¶
Explicação¶
Lê as informações de Adaptive Cruise Control do veículo rastreado. ACC Parameters estabelecem as capacidades e influenciam o comportamento do Adaptive Cruise Control do veículo. Esses parâmetros foram definidos quando o veículo entrou no sistema.
Formato¶
StaticInfVehACCParams AKIVehTrackedGetStaticInfACCParams( int aidVeh )
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
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;
};
em que:
Parâmetros comuns a todos os veículos simulados:
- relatório: Código de erro retornado (0 significa sucesso).
- idVeh: O ID do veículo simulado.
- accType: O módulo ACC do veículo simulado (0: None, 1: ACC, 2: CACC).
Parâmetros do Modelo ACC:
(Todos estes 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 sobre a 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 sobre a diferença de posição entre o veículo precedente e o veículo em questão (s-2).
- speedGainPrec: O ganho sobre a diferença de velocidade entre o veículo precedente e o veículo em questão (s-1).
- desiredTimeGap: O intervalo de tempo desejado do controlador ACC (s).
Parâmetros do Modelo CACC:
(Todos estes parâmetros serão -1 quando o módulo estiver desativado)
- connectedDistanceGain: O ganho sobre a diferença de posição entre o veículo conectado precedente e o veículo CACC em questão (s-1).
- connectedSpeedGain: O ganho sobre a diferença de velocidade entre o veículo conectado precedente e o veículo CACC em questão.
- minTimeGapThreshold: O limite inferior para o intervalo de tempo (s).
- maxTimeGapThreshold: O limite superior para o intervalo de tempo (s).
- followerTimeGap: O intervalo de tempo constante entre o último veículo da sequência conectada precedente e o veículo CACC em questão (s).
- leaderTimeGap: O intervalo de tempo constante entre o último veículo da sequência conectada precedente e o veículo CACC em questão (s).
Modificar as informações de Adaptive Cruise Control de um veículo rastreado¶
Em C++ e Python¶
Explicação¶
Modificar os parâmetros ACC de um veículo rastreado. Os Parâmetros ACC estabelecem as capacidades e influenciam o comportamento do Adaptive Cruise Control 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 relatório. O Aimsun Next não armazena os valores anteriores, portanto não pode recuperá-los.
Formato¶
int AKIVehTrackedSetStaticInfACCParams( int aidVeh, StaticInfVehACCParams staticinfVehACC )
Parâmetros¶
- aidVeh: o Identificador do veículo rastreado.
- staticinfVehACC: os novos parâmetros ACC a serem atribuídos.
Saída:¶
- = 0: Sem Erro
-
< 0: Erro
-
Ler as variáveis de pressão social do veículo de um veículo rastreado¶
Em C++ e Python¶
Explicação¶
Lê as variáveis do veículo rastreado relacionadas à Social Pressure. Disponível apenas na Auto Version.
Formato¶
InfVehi4DrivingParams AKIVehTrackedGetDynamicInfi4DrivingParams( int aidVeh )
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída:¶
struct InfVehi4DrivingParams {
int report;
int idVeh;
bool laneChangingMotivationSocialPressure;
double socialPressureReceived;
double socialPressureExerted;
};
em que:
Parâmetros comuns a todos os veículos simulados:
- relatório: Código de erro retornado (0 significa sucesso).
- idVeh: O ID do veículo simulado.
Parâmetros do Modelo:
- laneChangingMotivationSocialPressure: se o veículo atualmente deseja mudar de faixa sob Pressão Social de seu seguidor.
- socialPressureReceived: O valor da social Pressure recebido para seu seguidor.
- socialPressureExerted: O valor da pressão social exercida sobre seu líder.
Ler os parâmetros i4Driving Vehicle de um veículo rastreado¶
Em C++ e Python¶
Explicação¶
Ler os parâmetros do veículo rastreado relacionados ao i4Driving Model. Disponível somente na Auto Version.
Formato¶
StaticInfVehi4DrivingParams AKIVehTrackedGetStaticInfi4DrivingParams( int aidVeh )
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída:¶
struct StaticInfVehi4DrivingParams {
int report;
int idVeh;
double sensitivityLevel4SpeedOfOthers;//Sensitivity level for speed of others
double vGain;//Sensitivity towards own speed, as speed gain for full lane-change desire
double maxLookaheadDistance;
double hexp;//Slope of exponential decay of task demand for increasing time headway
double betaHeadway;//Factor on task over-saturation for headway
double betaSpeed;//Factor on task over-saturation for speed
double taskCapacity;//Task Capacity
double lambda; //Perception quality
double tauMax; //Perception delay
};
em que:
Parâmetros comuns a todos os veículos simulados:
- relatório: Código de erro retornado (0 significa sucesso).
- idVeh: O ID do veículo simulado.
Parâmetros do Modelo:
- sensitivityLevel4SpeedOfOthers: O Nível de Sensibilidade da Velocidade em Relação aos Outros
- vGain: A diferença máxima de velocidade entre faixas na qual ocorre o desejo máximo de mudança de faixa em (km/hr).
-
maxLookaheadDistance: A distância máxima de antecipação em (m).
-
hexp: O tempo de decaimento em segundos. Este parâmetro representa o tempo necessário para que o efeito de um estímulo diminua ou decaia ao longo do tempo.
- betaHeadway: A intensidade da resposta relacionada ao headway. Este parâmetro indica com que intensidade o veículo responde à distância ou ao intervalo de tempo entre ele e o veículo à frente.
- betaSpeed: A intensidade de resposta relacionada à velocidade. Este parâmetro representa quão fortemente o veículo responde a mudanças em sua própria velocidade ou na velocidade dos veículos ao redor.
- taskCapacity: A capacidade de tarefa. Este parâmetro denota a capacidade do motorista de lidar com várias tarefas simultaneamente, como manter a velocidade, mudar de faixa e responder a semáforos.
- lambda: A qualidade de percepção. Este parâmetro indica o quanto o sistema percebe bem seu ambiente, incluindo a precisão e a confiabilidade dos dados dos sensores.
- tauMax: O atraso máximo de percepção. Este parâmetro representa o tempo máximo que o sistema leva para processar e responder às informações de seus sensores.
Modificar os parâmetros de pressão social de um veículo rastreado¶
Em C++ e Python¶
Explicação¶
Modifica os parâmetros de Social Pressure de um veículo rastreado. Disponível apenas na Auto Version.
Formato¶
int AKIVehTrackedSetStaticInfi4DrivingParams( int aidVeh, StaticInfVehi4DrivingParams staticinfVehi4Driving )
Parâmetros¶
- aidVeh: o Identificador do veículo rastreado.
- staticinfVehi4Driving: os novos parâmetros de Social Pressure a serem atribuídos.
Saída:¶
- = 0: Sem Erro
- < 0: Erro
Ler a(s) posição(ões) de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Lê as coordenadas do veículo rastreado durante a última etapa de simulação.
Formato¶
InfVehPos AKIVehTrackedGetPos( int anIdVeh, int nbPos )
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
- nbPos: Número de posições do veículo rastreado. Se este parâmetro for maior que 1, então a função fornece as posições "entre passos de simulação" para este veículo. A última posição sempre corresponde à posição no final do passo de simulação.
Saída:¶
struct InfVehPos{
int report;
int idVeh;
int Npos;
VehPos *vehiclePos;
};
struct VehPos{
double xPos, yPos, zPos;
double xPosBack, yPosBack, zPosBack;
};
em que:
- relatório: 0, OK, caso contrário, um código de erro.
- idVeh: O identificador do veículo.
- Npos: Número de posições durante a última etapa de simulação (parâmetro de entrada).
- vehiclePos: Array com as posições durante o último passo de simulação. Após usar esta função, este array deve ser desalocado usando a função "free".
- xPos, yPos, zPos: Coordenadas globais do ponto médio do para-choque dianteiro de um veículo para a posição atual.
- xPosBack, yPosBack, zPosBack: Coordenadas mundiais do ponto médio do para-choque traseiro do veículo para a posição atual.
Uso em Python¶
A estrutura VehPos * é mapeada como um VehPosArray. Para acessá-la corretamente, o VehPosArray precisa ser construído a partir da estrutura vehiclePos. Veja o código a seguir como exemplo:
currentState = AKIVehTrackedGetPos(1, 4)
if currentState.report == 0:
vehiclePos = VehPosArray.frompointer(currentState.vehiclePos)
for i in range(currentState.Npos):
print (time,vehiclePos[i].xPos, vehiclePos[i].yPos, vehiclePos[i].zPos)
Modificar a posição de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Modifique a posição do veículo rastreado durante a última etapa de simulação, considerando as coordenadas globais no ponto médio dos para-choques dianteiro e traseiro do veículo.
Formato¶
int AKIVehSetVehicleTrackedDynInf( int anIdVeh, DynInfVeh dynInfVeh)
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
-
dynInfVeh: As informações dinâmicas durante o último passo de simulação, em que:
struct dynInfVeh{ int report; double xCurrentPos; double yCurrentPos; double xCurrentPosBack; double yCurrentPosBack; double currentSpeed; int downstreamObjectId; }; - relatório: Código de erro retornado (0 significa sucesso). - xCurrentPos, yCurrentPos: Coordenadas mundiais do ponto médio do para-choque dianteiro do veículo para a posição atual - xCurrentPosBack, yCurrentPosBack: Coordenadas mundiais do ponto médio do para-choque traseiro do veículo para a posição atual - currentSpeed: velocidade atual (km/h ou mph, dependendo das unidades definidas na rede). - downstreamObjectId: ID do objeto a jusante, sendo ele uma seção ou movimento de conversão.
Saída:¶
- = 0: Sem Erro
- < 0: Erro
Ler a posição relativa ao líder de um veículo rastreado¶
Em C++ e Python¶
Explicação¶
Ler posição relativa em relação ao líder
Formato¶
LeaderInfVeh AKIVehTrackedGetLeaderVehInf(int aidVeh);
Parâmetros¶
- aidVeh: Identificador do Veículo
Saída¶
struct LeaderInfVeh{
int report;
int idVeh;
int idLeaderVeh;
double headway;
double gap;
double spacing;
double clearance;
};
em que:
- relatório: 0, OK, caso contrário código de erro
- idVeh: identificador do veículo
- idLeaderVeh: identificador do veículo líder, 0 se não houver líder.
- intervalo entre veículos: tempo entre o para-choque dianteiro de um veículo e o para-choque dianteiro do veículo seguinte (s).
- gap: tempo entre o para-choque traseiro de um veículo e o para-choque dianteiro do veículo seguinte (s).
- espaçamento: espaço entre o para-choque dianteiro de um veículo e o para-choque dianteiro do veículo seguinte (m).
- liberação: espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do veículo seguinte (m).
Ler as Informações Gráficas de um Veículo Rastreado¶
Em C++ e Python¶
Explicação¶
Leia as informações gráficas do veículo rastreado durante o último passo de simulação.
Formato¶
GraphicInfVeh AKIVehTrackedGetGraphicInf ( int anIdVeh)
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída:¶
struct GraphicInfVeh{
int report;
int idVeh;
bool leftTurnSignal;
bool rightTurnSignal;
bool brakeLight;
}
Ler o identificador da categoria de veículo¶
Em C++ e Python¶
Explicação¶
Ler o identificador estático da categoria de veículo: usado para classificar a categoria do veículo.
Formato¶
int AKIVehTrackedGetVehicleCategoryId ( int anIdVeh )
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída:¶
int vehicleCategory{ 0 = Car 1 = CommercialVehicle 2 = Bus 3 = Motorbike 4 = NonMotorized };
Ler o identificador do Tipo de Veículo de Emissão COPERT¶
Em C++ e Python¶
Explicação¶
Ler o identificador estático de emissões veiculares COPERT: Usado para classificar o tipo de veículo de emissão (subtipo da categoria de veículo).
Formato¶
int AKIVehTrackedGetCOPERTEmissionVehicleTypeId ( int anIdVeh )
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída:¶
int CopertVehicleType{ eNone = 0 , ePassengerCar , eLightCommercialVehicle , eHeavyDutyTruck , eBus , eCoach , eMotorbike , eMicroCar , eQuad };
Ler o identificador do tipo de emissão do veículo para o London Emission Model (LEM).¶
Em C++ e Python¶
Explicação¶
Leia o identificador estático de emissões veiculares LEM: usado para classificar o tipo de veículo de emissão (subtipo da categoria de veículo).
Formato¶
int AKIVehTrackedGetLEMEmissionVehicleTypeId ( int anIdVeh )
Parâmetros¶
- aidVeh: Identificador do veículo rastreado.
Saída:¶
int SSLEMVehicleTypeID{ 0 = Car 1 = Taxi 2 = eLGV 3 = eHGV 4 = eSingleDeckerBus 5 = eDoubleDeckerBus 6 = eCoach };
Ler o número de seções para chegar ao destino¶
Em C++ e Python¶
Explicação¶
Ler o número de seções para alcançar o destino de um caminho de veículo rastreado. Válido para veículos OD e de transporte público; caso contrário, retorna 0.
Formato¶
int AKIVehTrackedGetNbSectionsVehiclePath( int idveh )
Parâmetros¶
- idveh: O Identificador do veículo rastreado.
Saída:¶
- ≥ 0: Número de seções para chegar ao destino.
- AKIVehNotTracked: Erro
Ler os identificadores das seções usadas para chegar ao destino¶
Em C++ e Python¶
Explicação¶
Lê o identificador da seção elem-th do caminho do veículo rastreado para chegar ao destino. Válido para veículos OD e de transporte público; caso contrário, retorna 0. AKIVehTrackedGetNbSectionsVehiclePath deve ser chamada antes de chamar esta função.
Formato¶
int AKIVehTrackedGetIdSectionVehiclePath( int idveh, int indexsection )
Parâmetros¶
- idveh: O Identificador do veículo rastreado.
- indexsection: Índice da seção ( 0 ≤ indexsection < Number of sections )
Saída:¶
- > 0: Identificador da Seção.
- AKIVehNotTracked: Erro
Definir a trajetória do Veículo com base nas faixas¶
Em C++ e Python¶
Explicação¶
Função para atribuir uma trajetória com base em faixas específicas em seções.
Formato¶
int AKIVehTrackedSetLanesTrajectory(int idVehicle, int nbSegmentsInTrajectory, int * sectIds, int * lanes, int idLastSection)
Parâmetros¶
- idVehicle: Identificador do veículo.
- nbSegmentsInTrajectory: Número de diferentes pares section id + lane id que farão parte da trajetória baseada em faixas.
- sectIds: vetor de nbSegmentsInTrajectory de identificadores de seção.
- faixas: vetor de nbSegmentsInTrajectory de identificadores de faixa na mesma posição da seção à qual fazem referência. Os ids de faixa vão de 1...N, sendo 1 a faixa mais à direita e N a mais à esquerda.
- idLastSection: id do identificador da última seção na trajetória.
Saída¶
- 0: Sem erro
Código de exemplo em Python¶
sectIds = intArray( 3 )
sectIds[0] = 182
sectIds[1] = 183
sectIds[2] = 184
laneIds = intArray( 3 )
laneIds[0] = 1
laneIds[1] = 2
laneIds[2] = 1
AKIVehTrackedSetLanesTrajectory(idVehicle, 3, sectIds, laneIds, 184)