Interfaces de Controle Adaptativas¶
Interface Yutraffic ¶
A comunicação entre Aimsun.next e a Ferramenta Aimsun do Yutraffic Adapter (SimAdapter) é feita através da Interface de Protocolo-Buffer.
No início da simulação, Aimsun.next irá iniciar o SimAdapter e enviar as informações necessárias para cada um dos controladores Yutraffic definidos na rede.
A comunicação ocorre a cada segundo, mesmo que o passo da simulação seja menor.
Diagrama de Comunicação ¶
sequenceDiagram
Aimsun Next->>+SimAdapter: ANMessage::ANConfig
loop Loop de Simulação
Aimsun Next->>+SimAdapter: ANMessage::ANData
SimAdapter->>+Aimsun Next: SitrafficMessage::SitrafficData
end
Aimsun Next->>+SimAdapter: ANMessage::ANEnd
SimAdapter->>+Aimsun Next: SitrafficMessage::SitrafficEnd
Estruturas ¶
As seguintes estruturas são definidas em SitrafficOffice.proto
Mensagens Aimsun.next¶
Mensagens enviadas por Aimsun Next para SimAdapter
Envelope da Mensagem¶
message ANMessage {
oneof msg {
ANConfig config = 1;
ANData data = 2;
ANEnd ended = 3;
}
}
Mensagem de Início¶
message ANConfig {
uint64 time = 1;
repeated ANConfigController controller = 2;
uint32 simulationStep = 3;
}
- time: tempo de início da simulação em milissegundos desde a Era Unix
- simulationStep: em milissegundos
Mensagem de Dados¶
message ANData {
uint64 time = 1;
repeated ANController controller = 2;
}
Mensagem de Fim¶
message ANEnd {
bool cancelled = 1;
}
- cancelled: verdadeiro se a simulação foi cancelada
Informações do Controlador¶
message ANController {
int32 id = 1;
repeated ANDetector detectors = 2;
repeated ANPublicTransport publicTransport = 3;
ANControllerState state = 4;
}
Informações de Configuração do Controlador¶
message ANConfigController {
int32 id = 1;
string configurationFolder = 2;
ANControllerState state = 4;
bool reducedCommunication = 5;
}
- reducedCommunication: entrega um mínimo de valores, por exemplo, não enviar os valores do AP
Informações da Linha de Transporte Público¶
message ANPublicTransport {
uint32 reportingPointNumber = 1;
uint32 lineNumber = 2;
uint32 bearingNumber = 3;
uint32 routeNumber = 4;
uint32 priority = 5;
uint32 length = 6;
uint32 direction = 7;
int32 timeTableSituation = 8;
}
Informações do Veículo¶
Nota: Não utilizado no momento
enum VehicleClass
{
ALL = 0;
CAR = 1;
TRUCK = 2;
DELIVERY_TRUCK = 3;
MOTORCYCLE = 4;
UNCLASSIFIED = 5;
CAR_WITH_TRAILER = 6;
TRUCK_WITH_TRAILER = 7;
TRUCK_WITH_SEMI_TRAILER = 8;
BUS = 9;
}
message ANDetectorVehicleValue
{
VehicleClass vehicleType = 1;
int32 speed = 2;
int32 length = 3;
int32 occupancy = 4;
int32 time_span_before = 5;
int32 duration_a_b = 6;
int32 age = 7;
}
- speed: Velocidade do veículo em km/h
- length: Comprimento do veículo em metros
- occupancy: a duração em que o veículo foi detectado em ms. Tempo em que o detector estava ativo
- time_span_before: tempo em ms que o detector estava livre antes do veículo ser detectado
- duration_a_b: tempo em ms que o veículo leva para ir do primeiro loop ao segundo em caso de um loop duplo
- age: quão antiga é essa informação em segundos
Informações do Detector¶
message ANDetectorValue {
uint32 time = 1;
bool present = 2;
}
message ANDetector {
int32 id = 1;
repeated ANDetectorValue values = 2;
}
Estado do Controlador¶
message PartialIntersectionState
{
uint32 partialIntersectionNr = 1;
bool on = 2;
}
message ANControllerState {
bool On = 1;
uint32 signalProgram = 2;
bool modificationIv = 3;
bool modificationPt = 4;
repeated PartialIntersectionState partialIntersectionState = 5;
bool centralMode = 6;
}
- On = 1;
- signalProgram
- modificationIv: o controlador reage a indivíduos
- modificationPt: estendido para V2, o controlador reage ao transporte público
- partialIntersectionState: estendido para V2; ligando(desligando)
- centralMode: estendido para V2, verdadeiro se o Controlador Central está operando
Mensagens do Yutraffic Tools Aimsun Adapter¶
Mensagens enviadas pelo Yutraffic Tools Aimsun Adapter para Aimsun.next
Envelope da Mensagem¶
message SitrafficMessage {
oneof msg {
SitrafficData data = 1;
SitrafficEnd ended = 2;
}
}
Mensagem de Dados¶
message SitrafficData {
repeated SitrafficIntersection intersection = 1;
}
Mensagem de Fim¶
message SitrafficEnd {
bool Error = 1;
}
Informações da Fase ¶
enum StageState
{
StageOff = 0;
StageOn = 1;
SwitchingTo = 2;
}
message SitrafficStage {
int32 id = 1;
StageState state = 2;
}
Informações do Quadro ¶
message SitrafficFrame {
int32 id = 1;
bool IsActive = 2;
bool IvDemandActive = 3;
bool IvExtensionActive = 4;
bool PtDemandActive = 5;
bool PtExtensionActive = 6;
}
Informações da Porta ¶
enum PortState
{
PortIsOff = 0;
PortIsFlashing1Hz = 3;
PortIsFlashing2Hz = 5;
PortIsOn = 15;
}
message SitrafficPort {
int32 id = 1;
PortState state = 2;
}
Informações do Grupo Semafórico ¶
enum SignalColor {
Off = 0;
On = 1;
Red = 2;
RedAmber = 3;
Green = 4;
Amber = 5;
AmberFlashing = 6;
RedFlashing = 7;
GreenFlashing = 8;
AlternateFlashing = 9;
GreenAmber = 10;
Undefined=99;
}
message SitrafficSignalGroup {
int32 id = 1;
SignalColor state = 2;
}
Informações do Grupo Semafórico ¶
message TrafficActuationVariable {
int32 code = 1;
int32 instance = 2;
int32 value = 3;
}
Informações da Interseção ¶
message SitrafficIntersection {
int32 id = 1;
uint32 cycle = 2;
uint32 secondInTheCycle = 3;
uint32 program = 4;
repeated SitrafficSignalGroup signalGroups = 5;
repeated TrafficActuationVariable variables = 6;
repeated SitrafficStage stages = 7;
repeated SitrafficFrame frames = 8;
repeated SitrafficPort ports = 9;
}