103
MMITSS Detail Design (California) Page i of 96 Multi-Modal Intelligent Traffic Signal System System Design – California Portion University of Arizona (Lead) University of California PATH Program Savari Networks, Inc. Econolite Version 1.3.2 (Final Version) 1/31/2016

Multi-Modal Intelligent Traffic Signal System · 2016-08-05 · portion of the Multi-Modal Intelligent Traffic Signal Systems (MMITSS). The approach taken to the design has been to

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

MMITSS Detail Design (California)

Page i of 96

Multi-Modal Intelligent Traffic Signal

System System Design – California Portion

University of Arizona (Lead)

University of California PATH Program

Savari Networks, Inc.

Econolite

Version 1.3.2 (Final Version)

1/31/2016

MMITSS Detail Design (California)

RECORD OF CHANGES

A – Added, M- Modified, D - Deleted

Version Number

Date

Identification of Figure, Table, or Paragraph

Title or Brief Description

Applied Test

Network

Change Request Number

1.0

2/25/2014

N/A Initial Draft for Team

Review/Development

Arizona and

California

1.1 5/26/2014 All Sections Integrated individual component design descriptions from team

Arizona and

California

1.2.1 6/16/2015 All Sections

Updated design to match software that was developed by the University of Arizona portion of the MMITSS Team. Software submitted to the OSADP.

Arizona

1.2.2 10/21/2015 All Sections

Updated design to match software that was developed by the University of California, Berkeley PATH portion of the MMITSS team

California

1.3.2 1/31/2016 All Sections

Updated design to incorporate review comments from the PFS committee and FHWA

California

MMITSS Detail Design (California)

i

Table of Contents

1 Purpose of Document ................................................................................................ 1

2 Scope of Project ........................................................................................................ 1

3 Detailed Design Approach ......................................................................................... 2

4 High Level System Design ........................................................................................ 3

4.1 Physical Architecture ........................................................................................... 4

4.1.1 MMITSS Roadside Processor ....................................................................... 7

4.1.2 RSE Radio ..................................................................................................... 7

4.2 Software Components ......................................................................................... 7

4.3 Overview of WAVE Communications ................................................................ 10

5 California MMITSS Implementation ......................................................................... 14

5.1 California MMITSS Software Components ........................................................ 15

5.2 J2735 Library ..................................................................................................... 17

5.2.1 MAP Description File ................................................................................... 19

5.2.2 MAP Data Structure .................................................................................... 20

5.2.3 Encoding and Decoding J2735 Messages .................................................. 23

5.2.4 MAP for Large Intersections ........................................................................ 24

5.2.5 Tracking Vehicle Location on a MAP ........................................................... 25

5.3 Software Component Interfaces ........................................................................ 28

5.3.1 MRP Data Manager ..................................................................................... 29

5.3.2 UNIX Socket API ......................................................................................... 30

5.3.3 MMITSS Message Header .......................................................................... 31

6 Detailed Component Designs (California) ............................................................... 34

6.1 Road Side Equipment (RSE) Components ....................................................... 34

6.1.1 RSE_SecurityCertificateService .................................................................. 34

6.1.2 RSE_ServiceAdvertisementMgr .................................................................. 36

6.1.3 RSE_MessageRX ....................................................................................... 37

6.1.4 RSE_MessageTX ........................................................................................ 38

6.2 On-Board Equipment (OBE) Components ........................................................ 40

6.2.1 OBE_MessageRX ....................................................................................... 40

6.2.2 OBE_MessageTX ........................................................................................ 41

6.2.3 OBE_Aware ................................................................................................. 43

6.2.4 OBE_GUI .................................................................................................... 47

6.3 MMITSS Roadside Processor (MRP) Components ........................................... 49

6.3.1 MRP_DataMgr ............................................................................................. 49

6.3.2 MRP_TrafficControllerInterface ................................................................... 53

6.3.3 MRP_Aware ................................................................................................ 60

6.3.4 MRP_PerformanceObserver ....................................................................... 63

MMITSS Detail Design (California)

ii

6.4 MMITSS Central System Components .............................................................. 67

6.4.1 MMITSSUserInterface ................................................................................. 67

6.4.2 System_ConfigurationManager ................................................................... 72

6.4.3 System_N_LevelPriorityConfigurationManager ........................................... 73

6.4.4 Section_PriorityRequestServer ................................................................... 76

6.4.5 Section_Coordinator .................................................................................... 76

6.4.6 Section_PerformanceObserver ................................................................... 77

6.5 Nomadic Device Components (Savari SmartCross) .......................................... 79

6.5.1 Nomadic Priority Request Generator ........................................................... 79

6.5.2 Nomadic Signal Status Receiver ................................................................. 80

6.5.3 Nomadic MMITSS Application ..................................................................... 81

6.5.4 Nomadic_PriorityDataServer ....................................................................... 87

6.5.5 Authorized Special User Service ................................................................. 88

7 Appendices ............................................................................................................. 90

7.1 Acronyms .......................................................................................................... 90

7.2 Appendix A: Savari RSE Product Specification Sheets ..................................... 92

7.3 Appendix B: Savari and Arada OBE Product Specification Sheets ................... 93

7.4 Appendix C: J2735 ASN.1 Specification (Revision Number DSRC_R36) ......... 95

7.5 Appendix D: Intersection Map Description Files (CA) ........................................ 96

MMITSS Detail Design (California)

iii

List of Figures

Figure 1 MMITSS Physical Architecture (updated) ......................................................... 5

Figure 2 MMITSS Software Components ........................................................................ 8

Figure 3 WAVE Short Message Format (Source: IEEE 1609.3-2010) .......................... 11

Figure 4 WSM Flow ....................................................................................................... 12

Figure 5 Savari On-Board Operation System Architecture Diagram ............................. 13

Figure 6 California MMITSS Implementation Architecture............................................. 14

Figure 7 California MMITSS Software Components ...................................................... 16

Figure 8 Class Diagram of J2735 Library ...................................................................... 18

Figure 9 MAP Data Objects (Source: Ref. 1) ................................................................ 19

Figure 10 Class Diagram of MAP Data Structure .......................................................... 21

Figure 11 Example of Intersection Convex Hulls ........................................................... 22

Figure 12 Call Graph of the J2735 message Decoding Function .................................. 24

Figure 13 Placement of MAP Lane Nodes (Way-Points) ............................................... 25

Figure 14 Class Diagram of GeoUtils ............................................................................ 26

Figure 15 Flow Diagram of Locating on MAP Algorithm ................................................ 27

Figure 16 Vehicle Tracking State Transition Diagram ................................................... 28

Figure 17 Class Diagram of UNIX Socket API .............................................................. 31

Figure 18 MMITSS Internal Message Format ............................................................... 32

Figure 19 Structure of MMITSS Messages ................................................................... 33

Figure 20 Security Service Architecture ........................................................................ 35

Figure 21 RSE_MessageRX Interface Diagram ............................................................ 37

Figure 22 RSE_MessageTX Interface Diagram ............................................................ 39

Figure 23 OBE_MessageRX Interface Diagram ............................................................ 40

Figure 24 OBE_MessageTX Interface Diagram ............................................................ 42

Figure 25 Priority Request State Transition Diagram .................................................... 43

Figure 26 OBE_Aware Interface Diagram ..................................................................... 44

Figure 27 Activity Diagram of OBE_Aware .................................................................... 47

Figure 28 Example of OBE_GUI Interface .................................................................... 48

Figure 29 MRP_DataMgr Interface Diagram ................................................................. 52

Figure 30 Activity Diagram of MRP_DataMgr ................................................................ 53

Figure 31 Structure of Model 2070 Controller Pushing Out Messages ......................... 55

Figure 32 Interface Diagram of MRP_TrafficControllerInterface ................................... 58

Figure 33 Activity Diagram of MRP_TrafficControllerInterface ...................................... 59

Figure 34 MRP_Aware Interface Diagram ..................................................................... 61

Figure 35 Activity Diagram of MRP_Aware ................................................................... 63

Figure 36 MRP_PerformanceObserver Interface Diagram ............................................ 65

Figure 37 Web Application Map of MMITSS Central System ........................................ 68

Figure 38 Performance Observer System Structure...................................................... 69

MMITSS Detail Design (California)

iv

Figure 39 Sequence Diagram of Interactions between MMITSSUserInterface,

System_Configuration Manager, System_N_LevelPriorityConfigurationManager, and

Section_PerformacneObserver ..................................................................................... 69

Figure 40 Sample key to radar diagrams used to describe traffic performance ............ 70

Figure 41 Dashboard consisting of four radar diagrams and a pie chart for comparing

Peak and Off-peak periods ............................................................................................ 71

Figure 42 User Interface_PerformanceObserver Web Application ................................ 72

Figure 43 MMITSS Configuration Manager Web Page for Dedication and Daisy

Mountain ....................................................................................................................... 73

Figure 44 Interfaces of the System_N_LevelPrioirityConfigurationManager ................. 74

Figure 45 Example of Setting the Priority Policy

System_N_LevePrioirityConfigurationManager ............................................................. 75

Figure 46 Savari SmartCross System Architecture ....................................................... 83

Figure 47 SmartCross App User Interface .................................................................... 83

Figure 48 Ped Mode, Bicycle Mode, and Disabled Traveler Mode ................................ 84

Figure 49 SmartCross Flow Chart ................................................................................. 86

MMITSS Detail Design (California)

v

List of Tables

Table 1 Message Sets Transmitted between the OBE and the RSE ............................ 12

Table 2 Comparison of Inter-process Tasks with and without Data Manager ............... 30

Table 3 MMITSS Messages .......................................................................................... 32

Table 4 Structure Display Message............................................................................... 46

Table 5 MRP_DataMgr Actions on Messages ............................................................... 50

Table 6 AB3418 Signal Status Message ....................................................................... 56

Table 7 AB3418 Soft-Call Message .............................................................................. 57

Table 8 Performance Observations and Associated Data Resources ........................... 64

MMITSS Detail Design (California)

Page 1 of 96

1 Purpose of Document

This document contains the detailed level system and software design for the California

portion of the Multi-Modal Intelligent Traffic Signal Systems (MMITSS). The approach

taken to the design has been to create a high level component-based design that

ensures all of the requirements are addressed by one or more components. The

component-based design approach supports both reuse and customization in the

software implementation. Each component can be developed by the team members

such that they can use any desired detailed design approach available to them and

define the interfaces that enable communications with other components. Custom

components can be developed where needed, such as at the controller interface that is

different in California and in Arizona. The common components can be reused in each

test network.

The MMITSS software is a prototype and as such is not intended to be fully ready for

field deployment. However, the software design is such that additional error handling,

management, and monitoring could be added to make it a fully deployable system.

2 Scope of Project

The Multi-Modal Intelligent Traffic Signal System (MMITSS) project is part of the

Connected Vehicle Pooled Fund Study (CV PFS) entitled “Program to Support the

Development and Deployment of Connected Vehicle System Applications.” The CV

PFS was developed by a group of state and local transportation agencies and the

Federal Highway Administration (FHWA). The Virginia Department of Transportation

(VDOT) serves as the lead agency and is assisted by the University of Virginia’s Center

for Transportation Studies, which serves as the technical and administrative lead for the

PFS.

The United States Department of Transportation (USDOT) has identified ten high-

priority mobility applications under the Dynamic Mobility Applications (DMA) program for

the connected vehicle environment where high-fidelity data from vehicles, infrastructure,

pedestrians, etc. can be shared through wireless communications. Three of the

applications (Intelligent Traffic Signal System, Transit Signal Priority, and Mobile

Accessible Pedestrian Signal System) are related to transformative traffic signal

operations. Since a major focus of the CV PFS members – who are the actual owners

and operators of transportation infrastructure – lies in traffic signal related applications,

the CV PFS team is leading the project entitled “Multi-Modal Intelligent Traffic Signal

System” in cooperation with USDOT’s Dynamic Mobility Applications Program.

The MMITSS Phase II project is divided into ten (10) tasks that include Detailed Design,

System Development, System Integration and Laboratory Testing, Field Integration,

MMITSS Detail Design (California)

Page 2 of 96

Testing, and Evaluation, and finally a demonstration of the system in each of the

Arizona and California test beds. The detailed design effort is documented separately

for the Arizona portion and the California portion of MMITSS. This report describes the

detailed design effort by the California portion of MMITSS.

3 Detailed Design Approach

The detailed design approach is based on a revised version of the high-level design

definition of system architecture and component responsibilities. Each of the physical

nodes has a defined set of system components that may be realized as programs

(processes), configurations, or special physical components. Each component design is

specified as follows:

1. Component Name: node_component

2. Overview of Functionality

3. Requirements

a. Functional Requirements (reference)

b. Derived Requirements

i. Timing

ii. Priority

4. Interfaces

a. Required (input)

b. Provided (output)

5. Functional Specification/Description

a. (activity, state, class, etc. diagrams)

6. Example Applications (as appropriate)

a. (sequence diagram)

7. Unit Test Descriptions (as appropriate - debugging and testing)

8. References (as appropriate)

Item 1 identifies the component name (see Section 4.2 below). Item 2 provides an

overview of the functionality (responsibility) of the component. Item 3 is a reference to

the requirements being satisfied, or partially satisfied, by the component and any

additional derived requirements such as timing (processing time, latency time, etc.) or

process priority requirements (e.g. high, medium, low priority). Item 4 identifies the

required and provided interfaces for the requirement. Item 5 describes the functional

specification of the component including any logic, states, etc. that may be expressed

as activity, state, or class diagrams. Item 6 provides an example interaction of the

component with others (e.g. a sequence diagram) or an example if it helps explain the

operation of the component. Item 7 provides a description of how the components can

be tested. This includes laboratory and field testing. Item 8 provides any references to

documents, papers, etc. that are relevant to the design.

MMITSS Detail Design (California)

Page 3 of 96

4 High Level System Design

The high level system design is defined by the physical and software components. The

high level design in this document has been updated to reflect development and

changes in both the Arizona and the California test networks since the Phase I High

Level design was completed. The detailed software component designs and

implementations of the California portion of MMITSS are in Sections 5 and 6 below.

The primary changes are in the Physical Architecture shown in Figure 1. The USDOT

provided a Security Certificate Message Server (SCMS), which has been added. This

server is interfaced to the Roadside Equipment (RSE) using IPv6 and is used to provide

security certificates to trusted On-Board Equipment (OBEs). There are two radio

channels between an RSE and an OBE. One radio is assigned to channel 172 and is

dedicated to broadcast basic safety messages (BSM), signal phase and timing

messages (SPaT), and MAP messages. The other radio is used for transactions, such

as an OBE requesting priority (using a Signal Request Message – SRM) or an RSE

providing signal status to a priority eligible vehicle (using a Signal Status Message –

SSM) as well as providing Security Certificates. This radio is assigned to two channels

(split assignment) including channel 178 (Control Channel) and channel 182 (selected

service channel for priority transactions). The transaction channel(s) could be used for

other applications, such as Traffic Information Messages (TIM) and others. Ideally, a

Wave Service Announcement (WSA) would be broadcast on the control channel

(channel 178) notifying vehicles of services that are available on the service channels

(channels 174, 176, 180, and 182). [Implementation Note: At the time of development, a

request has been made for an MMITSS PSID (Provider Service Identifier) to be used for

the Wave Service Announcement, but the request was not granted. Only channel 182 is

used for priority control transaction. The WSA and channel switching were not

implemented].

There are two additional communications interfaces in the revised architecture. The first

is to support wireless communication between the nomadic device and the RSE using

Wi-Fi (802.11a/b/n) or DSRC (based on recent developments towards a DSRC capable

smartphone device). [Implementation Note: nomadic device-to-RSE communications

using Wi-Fi was implemented in the Arizona test network. The California test network

utilized Savari SmartCross application for pedestrian service]. The second is roadside

communications between the sensor system and the MMITSS Roadside Processor

(MRP). This capability was identified in the stakeholder interaction process and includes

an interface to a sensor system that might produce data that exceeds the traditional

vehicle detection (e.g. loop) data that is used by the traffic controller. This data might be

a loop count value, or vehicle trajectories. There are no standards for this type of data,

but the capability might prove useful for MMITSS. [Implementation Note: No data was

MMITSS Detail Design (California)

Page 4 of 96

collected directly from sensor systems in this implementation, but the capability was

considered in the design].

The other architecture change is that the MMITSS Roadside Processor (MRP) might be

integrated with the RSE. In the original high-level design, there was a desire to support

“thin” RSE radio communications such that the MMITSS intersection level applications

are hosted by a separate Linux-based general-purpose computer. The California test

network adopts this approach (The specification of the selected MRP computer is

described in Section 4.1.1). The Arizona test network adopts the integration approach

as the Savari RSE (version 3.1) device has sufficient processing capacity to support the

MMITSS applications. Making the MMITSS Roadside Processor optional allows

flexibility for the field test and deployment. Both the Savari RSE device and the general-

purpose computer are based on Linux so that portability of the applications can be

accomplished with minimal effort. [Implementation Note: The Arizona implementation

runs on the Savari RSE version 3.1, but the interface between components was

designed using sockets so that they could easily be relocated to an MRP].

4.1 Physical Architecture

The Physical MMITSS architecture is shown in Figure 1 as a UML Deployment

Diagram. This architecture is based on the Conceptual Architecture identified in the

MMITSS Concept of Operations and MMITSS Systems Requirements documents. In

the Unified Modeling Language (UML), nodes are shown as 3D blocks and represent

physical devices that have a processor (at least one), memory, and physical interfaces

(e.g. Ethernet, RS-232, or wireless – 3G/4G, 5.9 GHz DSRC, or other such as CAN-

bus). The basic architecture is applicable at each MMITSS controlled intersection. In a

system that consists of several intersections, each intersection would have an RSE

Radio and traffic control equipment as shown in the deployment diagram.

The nodes have been shaded such that the light colored nodes are part of the

connected vehicle system. Traffic Management and Fleet Management Systems (or

nodes that can be modified or assigned MMITSS responsibilities) and the gray colored

nodes represent the vehicles and travelers. The orange colored nodes are the MMITSS

Central System and Nomadic Traveler Server as described below. These two nodes

may be realized as a single node for the test bed implementations.

MMITSS Detail Design (California)

Page 5 of 96

Figure 1 MMITSS Physical Architecture (updated)

In this view of the system, there are two types of travelers – motorized vehicles and

non-motorized travelers. Motorized vehicles consist of passenger vehicles, trucks,

transit vehicles, emergency vehicles, and motorcycles. This type of traveler includes

any vehicle that must be licensed to operate on the public roadway. Non-motorized

travelers include pedestrians, bicyclists, and other modes such as equestrians that are

not required to be licensed to operate on the public roadway. These travelers are either

unequipped or equipped, meaning that they have some type of OBE (On-Board

Equipment) or nomadic device that is connected vehicle (or MMITSS) aware and can

operate as part of the traffic control system.

Motorized vehicles can be part of a fleet management system such as a transit

management system, commercial freight management system, emergency vehicle

dispatch system, or taxi dispatch, which is shown as a UML collaboration (oval in Figure

1) meaning that a collection of entities work together to perform the traffic management

functions, but there may be many different systems involved in this collaboration.

MMITSS Detail Design (California)

Page 6 of 96

The infrastructure based traffic signal control equipment consists of the traffic signal

controller, field sensors/detectors, and an MMITSS Roadside Processor (MRP). There

are two traffic signal controllers models that are utilized in the field installation: Econolite

ASC/3 or Cobalt (NTCIP) (AZ) controllers and Type 2070 (Caltrans – AB3418) (CA).

Each of these controllers offers different signal timing logic (software) and require

different communications interfaces. The Econolite ASC/3 and the Cobalt controllers are

based on NEMA standards and support NTCIP over Ethernet communications. The

Caltrans Type 2070 controllers are based on a Caltrans standard and support AB3418

over serial RS-232 communications. Both networks utilize loop detectors for vehicle

detection and push-buttons for pedestrian crossing requests. In the California test

network, the MRP is a Linux-based industrial PC (see Section 4.1.1 for details). In the

Arizona test network, the MRP is integrated with the RSE Radio.

The RSE Radio is the hardware device that is responsible for managing all of the 5.9

GHz DSRC communications between the vehicles and the infrastructure. Both the

Arizona and California networks utilize Savari RSE units.

The OBE is a hardware device deployed on the vehicle. MMITSS applications have

been developed and tested using Savari MobiWave units and Arada LocoMate Mini 2

units (called aftermarket safety devices - ASD). These units are general purpose and

provide a powerful and flexible platform for development and testing. The product data

sheets for the OBEs are in Appendix B: Savari and Arada OBE Product Specification

Sheets.

The larger traffic management system is shown as a UML collaboration in Figure 1. The

RSE is a general communications processing node that coordinates messages from the

various modes of travelers. The MMITSS Roadside Processor (MRP) hosts the core

intersection level infrastructure applications for MMITSS. The MRP contains (deploys)

the MAP artifact, which is the digital description of the intersection geometry and

associated traffic control definitions.

Both motorized and non-motorized travelers can be detected by the Field

Sensor/Detector node at the intersections using a variety of detection technologies,

including inductive loop detectors, video detection, microwave, radar, pedestrian push

button, etc. The detection system at an intersection provides information to the traffic

signal controller that triggers the control algorithms. For example, a vehicle that triggers

a detector will call a signal control phase for service or extension. A pedestrian may

activate a pedestrian push button to request the traffic signal pedestrian interval

associated with a crosswalk movement. The direct communications path from the field

sensor to the MRP allows the communication of information from the sensor. This

information might include vehicle count from presence detectors or possibly vehicle

MMITSS Detail Design (California)

Page 7 of 96

trajectories from radar based sensors in the future. [Implementation Note: No direct

sensor data was used in the MMITSS implementation.]

Each of the systems that can be active participants in the MMITSS (e.g., connected

vehicle, Traffic Management, and Fleet Management) can have different

responsibilities, and in alternative system designs some of these responsibilities can be

assigned to different components. In the discussion presented here, the basic operating

functions will be reviewed and the alternative assignments will be explored in the

detailed design effort.

4.1.1 MMITSS Roadside Processor

In the Arizona test network, the MMITSS Roadside Processor (MRP) is the Savari StreetWave processor. The MRP selected for the California test network is described by the following specification:

Jetway NF9E-Q77 Mini-ITX Motherboard, Q77 Express vPro iAMT, LGA1155, Ivy Bridge

Enclosure, power supply: Super Case MI-100BK Mini-ITX Case Digital I/O board: PCIe-IIRO-8 CPU chipset, fan: Intel Core i5-3570 Ivy Bridge 3.4GHz

(3.8GHz Turbo Boost) LGA 1155 77W Quad-Core Desktop Processor Intel HD Graphics 2500 BX80637i53570

Disk drive: Seagate Constellation ES ST500NM0011 500GB 7200 RPM 64MB Cache SATA 6.0 Gbps 3.5" Enterprise Internal Hard Drive -Bare Drive

System memory: Transcend 8GB (2 x 4GB) 240-Pin DDR3 SDRAM DDR3 1333 Desktop Memory Model JM1333KLN-8GK

Operating System: Ubuntu Server 12.04.2 LTS

4.1.2 RSE Radio

Both the Arizona and the California test networks use the Savari StreetWave version

3.1 RSE units. The units support two 5.9 GHz DSRC radios and an Ethernet interface

for communications. The product spec sheets are available in Appendix A: Savari RSE

Product Specification Sheets.

4.2 Software Components

Figure 2 shows the primary software components of MMITSS, which are identified in the

high level system design.

MMITSS Detail Design (California)

Page 8 of 96

Figure 2 MMITSS Software Components

MMITSS Detail Design (California)

Page 9 of 96

The software is grouped according to the deployment nodes. The OBE (on-board

equipment) is deployed on each equipped vehicle. The OBE_name software

components provide the functionality required of the OBE. The OBE communicates with

the RSE (roadside equipment) over one or more of the DSRC WAVE channels. The

RSE_name software components provide the key wireless communication behaviors

including sending and receiving messages, as well as the Service Advertisement and

Security Certificate services.

The MMITSS Roadside Processor (MRP) communicates with the RSE using the local

Ethernet network, and with the MMITSS Central System and the Nomadic Traveler

Service using a combination of field and backhaul communications. In Arizona’s

Maricopa County SMARTDrive network a fiber optic local network is provided between

all of the test intersections and a leased T-1 backhaul connection is provided from the

field to the MCDOT traffic operations center (TOC). In the California test network, field

communications is managed through a field master that communicates with each

intersection controller over multi-drop serial communications, and a 4G LTE mobile

backhaul is provided for each test intersection to communicate with the MMITSS Central

System and the Nomadic Traveler Service. The MRP also communicates with the

intersection traffic signal controller, through NTCIP over Ethernet communications (AZ)

and AB3418 over serial RS-232 communications (CA). The MRP hosts software

components that perform the core intersection level functions of MMITSS. These

components include the MAP and SPaT broadcast manager, the equipped vehicle

tracker, the priority request server, traffic control logic, the interface to the traffic signal

controller (AZ-NTCIP, CA-AB3418 ), and the components that communicate status to the

Nomadic Traveler Service including status. [Implementation Note: The

MRP_NomadicDeviceTracker component was removed from the component design as

its functionality is realized by the Nomadic Traveler Service]. The MRP also hosts the

performance observer component.

The MMITSS Central System hosts software components that provide a user interface,

configuration manager, N-level priority policy configuration manager, and section level

priority server and signal coordination. [Implementation Note: The section level priority

server and the signal coordination components were not implemented as they require a

higher penetration rate of connected vehicles, which was not available when this

document was developed]. The MMITSS Central system also hosts the section level

performance observers. The System_PerformanceObserver component was removed

from the component design. It was decided that section level performance was more

meaningful at this stage in the development of MMITSS.

The Nomadic Traveler Service hosts two software components that provide the priority

data service that relays intersection data (e.g. MAP and SPaT data) to nomadic devices

and receives requests for service/priority from nomadic devices. The Nomadic Traveler

MMITSS Detail Design (California)

Page 10 of 96

Service also hosts the security and authorization service for nomadic devices that

ensures these devices are associated with valid users and are authorized to receive

special service if the user is a disabled pedestrian. [Implementation Note: The Savari

SmartCross SBIR (Small Business Innovation Research) project was leveraged to

achieve most of the pedestrian service. The SmartCross application uses cellular

technology for communications between a nomadic device and the Nomadic Traveler

Service, and uses backhaul for communications between the Nomadic Traveler Service

and the MRP. In the Arizona test network, a simple pedestrian application, called the

MMITSS Pedestrian App, was developed separately from the SmartCross application.

The MMITSS Pedestrian App uses Wi-Fi for direct communications between a nomadic

device and the MRP. The AuthorizedSpecialUserService was not implemented in both

test networks].

The Nomadic device is assumed to be a smart phone, Android based, and hosts an

application (app) that uses two components. One component requests service/priority

and the other collects and makes status information available for display on the app.

4.3 Overview of WAVE Communications

WAVE is a means of communicating between vehicles (OBEs/ASDs) and between

roadside systems and vehicles. WAVE messaging uses the DSRC protocol, originally

standardized as IEEE 802.11p-2010, and is now incorporated in IEEE 802.11-2012.

When within the communication zones, the applications of MMITSS running on the MRP

and OBE exchange information with each other to perform the MMITSS Traffic Control

service.

In the WAVE environments, the RSE_ServiceAdvertisementMgr broadcasts WAVE

service advertisement (WSA) messages on the control channel (CCH 178) to announce

the presence of MMITSS traffic control service and the service channel (SCH 182) to be

used for exchanging the service data (e.g. SRM - Signal Request Message and SSM -

Signal Status Message). Basic safety messages (BSMs), signal phase and timing

(SPaT) messages and MAP messages are expected to be transmitted on the SCH 172.

Thus, no WSA would be needed for these three types of messages. [Implementation

Note: The RSE_ServiceAdvertisementMgr was not implemented as a software

component, but rather is part of the Savari IEEE 1609 stack that is a standard part of the

RSE operating system. At the time of development, the IEEE 1609 technical committee

was communicating with the SAE DSRC technical committee to determine the proper

operating of the Wave Service Advertisement. A request has been made for an MMITSS

PSID (Provider Service Identifier), but the request was not granted].

MMITSS service users (e.g. vehicles that are eligible for signal priority) monitor the WSA.

If desired, they can participate in the MMITSS traffic control service by sending SRMs

MMITSS Detail Design (California)

Page 11 of 96

and receiving SSMs on the SCH indicated in the WSA. The

RSE_SecurityCertificateService manages trust between OBEs and the RSEs to ensure

that only the trusted, eligible OBEs/ASDs can join the MMITSS traffic control service.

[Implementation Note: The RSE_SecurityCertificateService was not implemented as a

software component, but rather is part of the Savari IEEE 1609 stack that is a standard

part of the RSE operating system].

Over-the-air data exchange between OBEs and RSEs is managed by the

OBE/RSE_MessageTX and OBE/RSE_MessagesRX, using the WAVE Short Message

Protocol (WSMP). Over-the-air messages are transmitted in the forms of WAVE Short

Messages (WSMs). The WSM format consists of a WSMP header followed by a

variable-length payload (WSM data) as illustrated in Figure 3. The mandatory PSID

(Provider Service Identifier) identifies the service that the WSM payload (e.g., BSM,

SRM, MAP, SPaT, SSM, etc.) is associated with. Each type of payload must have a

unique PSID so the receiving end knows how to process it.

Figure 3 WAVE Short Message Format (Source: IEEE 1609.3-2010)

The message sets transmitted between the OBE and the RSE and their channel

configurations are summarized in Table 1. For the MMITSS prototype, channel 182 has

been selected as the operating channel for transmitting SRMs and SSMs.

The information flow for WSM data is illustrated in Figure 4. To transmit a WSM, the

OBE/RSE_MessageTX first registers with the WAVE Management Entity (WME) and

provides the content of the WSM plus additional radio control parameters, including

channel number, data rate and transmit power. To receive WSMs, the

OBE/RSE_MessageRX registers with the WME for a list of PSIDs that it would want to

receive. On receipt of a WSM, the WME compares the PSID in the WSMP header with

the registered list of PSIDs and passes the matched WSM to the

OBE/RSE_MessageRX.

MMITSS Detail Design (California)

Page 12 of 96

Table 1 Message Sets Transmitted between the OBE and the RSE

Message Abbr. From Frequency To Radio Channel PSID (Hex)

WAVE Service

Announcement WSA RSE 1 Hz OBE/ASD Ath0 178 -

MAP MAP RSE 1 Hz OBE/ASD Ath1 172 0xBFF0

Signal Phase and

Timing SPAT RSE 10 Hz OBE/ASD Ath1 172 0xBFE0

Signal Status

Message SSM RSE 1 Hz OBE/ASD Ath0

174,176,

180 or 182 0x80

Basic Safety

Message BSM OBE/ASD 10 Hz RSE Ath1 172 0x20

Signal Request

Message SRM OBE/ASD ASYNC RSE Ath0

174,176,

180 or 182 0x40

Security

Both ASYNC Both Ath0 174,176,

180 or 182 -

Figure 4 WSM Flow

The RSEs and OBEs/ASDs have to support communication between the applications

running on them and the external world. To ensure this, the WAVE messaging

architecture should be capable of providing message agnostic wireless data

WME

WMSPOBE/RSE_MessageTX

Request sending a WSM

WME

WMSPRSE/OBE_MessageRX

Confirm Confirm

Request receiving WSMs

WSM arrival indication

WSM Flow

MMITSS Detail Design (California)

Page 13 of 96

transmission or reception services to other applications on it. Savari StreetWave and

MobiWave devices run Savari On-Board Operating System (SOBOS), which is a custom

Linux distribution. A high level architecture description of SOBOS is shown in Figure 5.

Figure 5 Savari On-Board Operation System Architecture Diagram

The SOBOS architecture consists of 4 layers. The layers, excluding the application layer,

are common for all applications and based on a set of services defined in software

libraries. The Kernel layer handles the hardware level device drivers for the radios and

wireless devices such as DSRC, Wi-Fi and GPS. All messages on the device are

sent/received via these devices. The services layer handles the messaging services

A

P

P

L

I

C

A

T

I

O

N

S

L

I

B

R

A

R

I

E

S

S

E

R

V

I

C

E

S

K

E

R

N

E

APPLICATION

J2735

DSRC/Wi-Fi

1609.4 GPS 1609.2

BSM

ENC/DEC

TIM

ENC/DEC

MAP

ENC/DEC

SPAT

ENC/DEC

SRM

ENC/DEC

SSM

ENC/DEC

WME RADIO GPSAPI P1609.2 NTCIP SOCKET

Application Logic

1609.3 1609.2 GPS

GPS DRIVER

MMITSS Detail Design (California)

Page 14 of 96

such as security. Messages are processed by individual applications. These messages

are handled by libraries based on the message type and the appropriate protocols. The

application layer consists of applications that make use of the libraries to get the

messages that they want to process further.

5 California MMITSS Implementation

This California MMITSS implementation followed the high level system design described

in Section 4. The California implementation is centered with a MMITSS Roadside

Processor (MRP). The MRP hosts the core MMITSS functions and the software that

interface with the traffic signal controller, RSE, MMITSS Central System, and the

Nomadic Traveler Server, as it is illustrated in Figure 6.

Figure 6 California MMITSS Implementation Architecture

Due to the MRP-centered architecture, the California MMITSS implementation chose the

use of an MRP data manager component (i.e., MRP_DataMgr) to be the single sink of

data from various sources and the single source for sharing the data among MRP

components such that data from different sources can be used synchronously. The use

MMITSS Detail Design (California)

Page 15 of 96

of an MRP data manager would also allow it to support a broader range of CV functions

beyond MMITSS (see Section 5.3.1 below).

As the MRP is physically separated from the RSE, the applications running on the MRP

cannot use RSE’s J2375 library for encoding and decoding J2735 messages. The RSE’s

J2735 library is not portable to the MRP, therefore the California implementation

developed its own J2735 library (see Section 5.2.3 below).

The California test network includes several larger size intersections, which caused the

size of MAP messages exceed the max allowed message length. The California

implementation therefore used a different approach to track vehicles on a MAP, which

requires less way-points to define a MAP and can make the MAP messages within the

required length limit (see Section 5.2.4 below). As J2735 message encoding/decoding

and tracking a vehicle on a MAP are common basic functions for any applications

running on the OBE or MRP, the California implementation wraps these functions in a

library class that can be used in both the OBE and MRP (see Section 5.2 below). As a

result, the California implementation regrouped some of the software components

identified in the high level system design (see Figure 2 above).

5.1 California MMITSS Software Components

The primary software components of California MMITSS implementation is shown in

Figure 7. The functionalities of OBE_MAP_SPaT_Receiver, OBE_BSMDataTransmitter

and OBE_PriorityRequestGenerator are grouped into one component (e.g. OBE_Aware).

Regardless of whether the OBE is eligible for priority or not, the functionalities of

processing MAP and SPaT messages and tracking the vehicle on the MAP are desirable

features. With a single component that provides these functionalities, it could be used for

other vehicle-centered applications.

The functionalities of MRP_MAP_SPaT_Broadcast and MRP_SignalStatus_Nomadic are

implemented as part of the MRP_DataMgr component, as the MAP and SPaT messages

broadcast over the air are the same messages provide to the pedestrian data server (i.e.

Nomadic_PriorityDataServer).

To support MMITSS, Caltrans Division of Traffic Operations modified TSCP (Traffic

Signal Control Program) to allow phase calls, extensions, and priority request with newly

defined and implemented AB3418 messages. The protocol requires the MRP to send the

call/extension/priority commands at a rate of 20Hz to avoid dropping a control command.

Therefore the functionalities of MRP_PriorityRequestServer and MRP_TrafficControl are

combined as one component (e.g. MRP_Aware) in the California implementation.

MMITSS Detail Design (California)

Page 16 of 96

Figure 7 California MMITSS Software Components

cmp MMITSS Software Overv iew

MRP_DataMgr

MRP_Aware

MRP_PerformanceObserver

MMITSS Roadside Processor (MRP)

OBE_MessageRX

OBE_Aware

OBE

AuthorizedSpecalUserService

Nomadic_PriorityDataServer

Nomadic Traveler Service

Nomadic_SignalStatusReciever

NomadicMMITSSApp

Nomadic_PriorityRequestGenerator

Section_PerformanceObserver

System_N_LevelPriorityConfigurationManager

Section_PriorityRequestServer

System_ConfigurationManager

MMITSS Central System

Nomadic Device

RSE_MessageTX

RSE_ServiceAdvertisementMgr

RSE

OBE_Webserver

MRP_TrafficControllerInterface

MMITSSUserInterface

Section_Coordinator

OBE_MessageTX

MRP_Webserver

RSE_MessageRX

MMITSS Detail Design (California)

Page 17 of 96

5.2 J2735 Library

The data elements, data frames, and messages in SAE J2735 message sets over DSRC

are defined in terms of a formal language called Abstract Syntax Notation One (ASN.1).

The J2735 dictionary standard also calls for use of the Distinguished Encoding Rules

(DER) to translate the ASN.1 into a concrete data stream. The WSM payload transmitted

over-the-air is always encoded in the ASN DER style. Savari RSE and OBE do provide a

J2735 library for encoding and decoding J2735 messages (see Figure 5). However,

applications running on the MRP cannot directly use this library and this library is not

portable to the MRP. The California implementation therefore developed its own library

for encoding and decoding J2735 messages, including BSM, SRM, SPaT, MAP and

SSM.

Both the MRP and the OBE components require a common functionality of locating a

vehicle on a MAP. The OBE component requires this functionality to associate SPaT

messages with MAP messages (an OBE could simultaneously receive SPaT and MAP

messages from multiple intersections), and when it is eligible for signal priority, to

generate signal request messages (SRMs). The MRP component requires this

functionality for MMITSS traffic/priority control and performance measures. The

California implementation chose to implement this function as part of the J2735 library so

the same J2735 message encoding/decoding and vehicle tracking functions can be used

on both the MRP and OBE.

The class diagram of the J2735 Library (e.g. J2735Lib) is illustrated in Figure 8. The

J2735Lib class is created by reading the intersection MAP description file(s) (see Section

5.2.1) and initializing the MapDataStruct object (see Section 5.2.2). An MRP always

keeps the latest version of the intersection MAP description file. An OBE stores the

intersection MAP description file when it passed an RSE. When within the DSRC

communication zones, the OBE checks the version of the MAP description file that was

stored locally against the version of the over-the-air MAP messages. If a newer version

is detected, the OBE calls the updateMapDataStruct function to update the

MapDataStruct for the use of real-time tracking the vehicle on the MAP and calls the

saveNmap function to convert the over-the-air MAP message into the intersection MAP

description file, which is stored locally for the future use.

The sets of encode_ and decode_ functions are for encoding and decoding J2735

messages, respectively (see Section 5.2.3). The locateVehicleInMap function projects

the vehicle geolocation (latitude, longitude and elevation) and tracks its movement

(speed and heading) on the MAP, and returns object vehicleTracking_t which contains

intersectionID, laneID and the projected point along the lane. The updateLocationAware

function calculates the distance from the projected point to the intersection stop-line and

gets the connection lanes and associated maneuvers from the current laneID. The

MMITSS Detail Design (California)

Page 18 of 96

updateSignalAware function associates the intersectionID and laneID with the SPaT

messages to get the current signal state and the remaining time (see Section 5.2.5).

Figure 8 Class Diagram of J2735 Library

class AsnJ2735Lib

AsnJ2735Lib

- mpMapData: MapDataStruct*

+ AsnJ2735Lib(char*)

+ ~AsnJ2735Lib()

+ decode_bsm_payload(char*, size_t, BSM_element_t*): bool {query}

+ decode_mapdata_payload(char*, size_t, Mapdata_element_t*): bool {query}

+ decode_payload(char*, size_t, MSG_UNION_t*): bool {query}

+ decode_spat_payload(char*, size_t, SPAT_element_t*): bool {query}

+ decode_srm_payload(char*, size_t, SRM_element_t*): bool {query}

+ decode_ssm_payload(char*, size_t, SSM_element_t*): bool {query}

+ decode_wsmp_header(wsmp_header_t *, uint8_t*, size_t): size_t {query}

+ encode_bsm_payload(BSM_element_t*, char*, size_t): ssize_t {query}

+ encode_mapdata_payload(uint32_t, char*, size_t): ssize_t {query}

+ encode_spat_payload(SPAT_element_t*, char*, size_t): ssize_t {query}

+ encode_srm_payload(SRM_element_t*, char*, size_t): ssize_t {query}

+ encode_ssm_payload(SSM_element_t*, char*, size_t): ssize_t {query}

+ encode_wsmp_header(wsmp_header_t *, uint8_t*, size_t): size_t {query}

+ getIntersectionNums(): size_t {query}

+ getMapVersion(uint32_t): uint8_t {query}

+ locateVehicleInMap(GeoUtils::connectedVehicle_t&, GeoUtils::vehicleTracking_t&): bool {query}

+ readNmap(char*): void

+ saveNmap(char*): void {query}

+ updateLocationAware(GeoUtils::vehicleTracking_t&, GeoUtils::locationAware_t&): void {query}

+ updateMapDataStruct(Mapdata_element_t*): void

+ updateSignalAware(map<uint32_t,SPAT_element_t>&, GeoUtils::locationAware_t&, GeoUtils::signalAware_t&): void {query}

NmapData::MapDataStruct

- mpIntersection: std::vector<IntersectionStruct>

«struct»

MSG_UNION_t

+ type: MsgEnum::msg_enum_t::MSGTYPE

«union»

MSG_UNION_t::<anonymous>

+ bsm: BSM_element_t

+ mapdata: Mapdata_element_t

+ spat: SPAT_element_t

+ srm: SRM_element_t

+ ssm: SSM_element_t

«enumeration»

MsgEnum::MSGTYPE

UNKNOWN_PKT = 0

BSM_PKT = 1

SPAT_PKT = 2

MAP_PKT = 3

SRM_PKT = 4

SSM_PKT = 5

+mpMapData

+type

MMITSS Detail Design (California)

Page 19 of 96

5.2.1 MAP Description File

The MMITSS project uses SAE J2735 standard to construct the MAP1 [Implementation

Note: the SAE J2735 standard available at the time of this development was version

SAE J2735-Nov 2009. The latest standard is version SAE J2735-Jan 2016. The J2735

message encoding and decoding functions may need to be revised to reflect the current

version]. The structure of data objects that comprise the MAP payload is illustrated in

Figure 9.

Figure 9 MAP Data Objects (Source: Ref. 1)

1 Battelle Memorial Institute, Signal Phase and Timing and Related Message Binary Format (BLOB) Details, DRAFT, Rev. c, 2012

<Lane Number> <Maneuver Code><Connection>

<Eastern Offset> <Elevation Offset><Node> <Northern Offset> <Width>

<Node> <Node><Node List>

<Lane Number> <Lane Attributes> <Width><Lane> <Lane Type>

<Lane><Approach>

<Egress><Width>

<Latitude> <Longitude> <Elevation><Ref. Point>

<GID><Map Message> <Message Attributes>

<Barrier Attributes> <Width><Barrier> <Node List>

Pedestrian

Computed<Ref. Lane>

<Node List>

<Node List>

<Lateral Offset> <Connection>

Vehicle/Special

<Barrier>

<Ref. Point>

<Approach>

<Geometry> <Egress>

<Geometry><GID> <Intersection ID>

MMITSS Detail Design (California)

Page 20 of 96

The MMITSS team defined the format of the intersection MAP description file that

contains all the information needed for constructing J2735 MAP messages, as follows:

MAP_Name Intersection_Name.nmap

RSU_ID Intersection_Name

MAP_Version xxx

IntersectionID xxxx

Intersection_attributes xxxxxxxx /*Attributes of the intersection, 8 bits */

Reference_point xx.xxxxxxx xxx.xxxxxxx xxxx /*lat, long, evelation(decimeter)*/

No_Approach xx /*number of approaches*/

Approach 1

Approach_type x /*1: approach, 2: engress, 3: barrier, 4: crosswalk*/

No_lane x

Lane 1.1 x /*x – the signal phase that controls the lane movement*/

Lane_ID 1

Lane_type x /* Veh Lane, Computed Lane, Ped Lane, Special Lane, Barrier*/

Lane_attributes xxxxxxxxxxxxxxxx /*Attributes of the lane, 16 bits*/

Lane_width xxx /*in centimeters */

No_nodes x /*number of lane nodes*/

1.1.1 xx.xxxxxxx xxx.xxxxxxx /*latitude longitude*/

1.1.2 xx.xxxxxxx xxx.xxxxxxx

……

No_Conn_lane x /*connection lanes*/

x.x x

x.x x

end_lane

Lane 1.2 x /*x – the signal phase that controls the lane movement*/

……

end_lane

end_approach

Approach 2

……

end_approach

end_map

A MAP description file was created for each of the test intersections in the Arizona and

the California test networks. Google Earth tools were used for obtaining the coordinates

of the intersection reference point (e.g. the center of the intersection) and lane nodes (a

sequence of way-points along the center of each traffic lanes and pedestrian

crosswalks). Testing has shown that the map data generated with Google Earth tools is

accurate for the MMITSS traffic control applications. Map descriptions files for the

California test intersections plus the Richmond Field Station intersection are in Appendix

D: Intersection Map Description Files (CA).

5.2.2 MAP Data Structure

When creating an instance of the J2735Lib class, the MAP description files are

converted into the MapDataStruct object. The class diagram of MapDataStruct is

MMITSS Detail Design (California)

Page 21 of 96

illustrated in Figure 10. An MRP may only include one IntersectionStruct object and an

OBE could include multiple IntersectionStruct objects.

Figure 10 Class Diagram of MAP Data Structure

Several parameters are calculated when initiating the MapDataStruct object, including:

• Intersection geographic coordinate conversion matrix (e.g. enuCoord)

It is more intuitive and practical to track a vehicle on the local earth East-North-Up

(ENU) Cartesian coordinate system. The enuCoord object contains the

class NmapData

«enumeration»

laneType

TRAFFICLANE = 1

CROSSWALKLANE = 4

«enumeration»

approachType

APPROACH = 1

EGRESS

BARRIER

CROSSWALK

«struct»

ConnectStruct

+ intersectionId: uint32_t

+ laneId: uint8_t

+ laneManeuver: MsgEnum::maneuverType

«struct»

NodeStruct

+ geoNode: GeoUtils::geoRefPoint_t

+ heading: uint16_t

«struct»

LaneStruct

+ attributes: std::bitset<16>

+ controlPhase: uint8_t

+ id: uint8_t

+ mpConnectTo: std::vector<ConnectStruct>

+ mpNodes: std::vector<NodeStruct>

+ type: maneuver_enum_t::laneType

+ width: uint16_t

«struct»

ApproachStruct

+ id: uint8_t

+ mpLanes: std::vector<LaneStruct>

+ mpPolygon: std::vector<GeoUtils::point2D_t>

+ type: maneuver_enum_t::approachType

«struct»

IntersectionStruct

+ attributes: std::bitset<8>

+ enuCoord: GeoUtils::enuCoord_t

+ geoRef: GeoUtils::geoRefPoint_t

+ id: uint32_t

+ mapVersion: uint8_t

+ mpApproaches: std::vector<ApproachStruct>

+ mpPolygon: std::vector<GeoUtils::point2D_t>

+ name: std::string

+ radius: uint32_t

MapDataStruct

- mpIntersection: std::vector<IntersectionStruct>

«struct»

GeoUtils::geoRefPoint_t

+ elevation: int32_t

+ latitude: int32_t

+ longitude: int32_t

«enumeration»

MsgEnum::maneuverType

UNKNOWN = 0

UTURN = 1

LEFTTURN

RIGHTTURN

STRAIGHTAHEAD

STRAIGHT

«struct»

GeoUtils::enuCoord_t

+ pointECEF: GeoUtils::point3D_t

+ transMatrix: GeoUtils::transMatrix_t

«struct»

GeoUtils::transMatrix_t

+ dCosLat: double

+ dCosLong: double

+ dSinLat: double

+ dSinLong: double

«struct»

GeoUtils::point3D_t

+ x: double

+ y: double

+ z: double

«struct»

GeoUtils::point2D_t

+ x: int32_t

+ y: int32_t

+transMatrix

+mpPolygon

+enuCoord

+mpConnectTo

+type

+laneManeuver

+geoNode

+mpNodes

+geoRef

+pointECEF

+mpIntersection

+mpApproaches

+type

+mpPolygon

+mpLanes

MMITSS Detail Design (California)

Page 22 of 96

parameters for the conversion from the geographic coordinate system (latitude,

longitude and elevation) to the ENU coordinate system.

• Intersection MAP radius

This is the maximum distance between lane nodes and the intersection reference

point. It is used for fast determining whether a vehicle is inside or outside an

intersection MAP (track initiation).

• Convex hull of the intersection box (e.g. intersection mpPolygon)

The convex hull of the intersection box is formed from land nodes located at the

intersection stop-lines. It is used to rapidly determine whether a vehicle is inside

or outside an intersection box (track initiation).

• Convex hull of intersection approaches (e.g. approach mpPolygon)

The convex hull of an intersection approach (ingress or egress) is formed from

lane nodes on the approach. It is used to rapidly determine whether a vehicle is

inside or outside an approach box (track initiation).

• Driving direction at lane nodes (e.g. node heading)

Lane node heading is the direction (reference to North) between two adjacent

nodes on the same lane, pointing to the driving direction. It is used for checking

against with vehicle’s GPS heading to ensure the vehicle is matched with the

correct approach/lane (track initiation and maintenance).

The convex hulls (intersection box and approach boxes) are also used for geofencing.

Vehicles that are outside the convex hulls are excluded for projecting them on the map.

Figure 11 Example of Intersection Convex Hulls

MMITSS Detail Design (California)

Page 23 of 96

An example of formed convex hulls is illustrated in Figure 11. The intersection is El

Camino Real and Stanford Ave in Palo Alto, CA. The yellow polygon is the convex hull of

the intersection box, and the 8 green polygons are the convex hulls on each of the 8

intersection approaches.

5.2.3 Encoding and Decoding J2735 Messages

Encoding/decoding J2735 messages was developed based on J2735 ASN.1

Specification, revision number DSRC_R36. The ASN.1 source code is available online

(http://www.sae.org/standardsdev/dsrc/usa_2009/DSRC_R36_Source.ASN) and in

Appendix C: J2735 ASN.1 Specification (Revision Number DSRC_R36).

The implemented J2735 library provides the following functions for other MMITSS

components to encode J2735 messages:

ssize_t encode_bsm_payload(const BSM_element_t* ps_bsm,

char* encode_buffer,

const size_t bufsize);

ssize_t encode_srm_payload(const SRM_element_t* ps_srm,

char* enode_buffer,

const size_t bufsize);

ssize_t encode_spat_payload(const SPAT_lement_t* ps_spat,

char* encode_buffer,

const size_t bufsize);

ssize_t encode_ssm_payload(const SRM_element_t* ps_ssm,

char* encode_buffer,

const size_t bufsize);

ssize_t encode_mapdata_payload(const uint32_t intersectionId,

char* encode_buffer,

const size_t bufsize);

An application fills the data structure (e.g. BSM_element_t, defined in a header file –

dsrcMsgs.h). The encoding function (e.g. encode_bsm_payload) converts the given

structure into an ASN DER encoded buffer (e.g. encode_buffer) and returns the length of

the endcode_buffer. Encoding of map message is performed by converting the

intersectionStruct (see Section 5.2.2 above) into the encode_buffer.

Function for decoding J2375 messages is as follows:

bool decode_payload(const char* decode_buffer,

const size_t bufsize,

MSG_UNION_t* ps_msg);

An application passes the byte stream received over the air into the decode_buffer, the

decoding function first decodes the WSMP header for the PSID, then calls the

corresponding message decoder which fills the message data structure. The call graph

of the decode_payload function is illustrated in Figure 12.

MMITSS Detail Design (California)

Page 24 of 96

Figure 12 Call Graph of the J2735 message Decoding Function

5.2.4 MAP for Large Intersections

Both the RSEs and OBEs require that the length of WSM data (payload) not exceeds the

max length of 1,400 bytes. Although longer MAP messages can be accommodated by

fragmenting the messages and sending more one WSM, it is more convenient to keep

the MAP message in one WSM when it is possible. The California test network includes

several large intersections which have 3 through lanes plus 2 left-turn lanes on each

intersection approach. Special attention must be paid on the placement of the lane

nodes such that the lane nodes are adequate to describe the geometry of the

intersection, suitable for applications to locate/track a vehicle on a map, and the number

of the lane nodes would keep the size of MAP messages within the required limit.

Figure 13 shows an example of the placement of lane nodes (way-points). The illustrated

approach has 2 through lanes and 1 left-turn lane. Blue dots are lane nodes (way-points)

and the red dot represents a vehicle (Figure 13(a)). When using the nearest way-point as

the reference to match vehicle’s location with a lane, it would require two additional way-

points (green dots in Figure 13(b)), otherwise the vehicle is matched with the left-turn

lane rather than the middle through lane. The California implementation uses the

approach of projecting vehicle’s location onto lane (point-to-line projection, see Figure

13(c)) to track a vehicle on a map. The lane on which the vehicle is located is determined

by the one with the minimum (perpendicular) distance to the projected lane (d in Figure

13 (c)). Thus fewer way-points will be required. The point-to-line projection also provides

automatic geofencing by adding a maximum (perpendicular) distance to the curb lane.

[Note: The California implementation uses the value of curb-lane width for geofencing].

MMITSS Detail Design (California)

Page 25 of 96

Figure 13 Placement of MAP Lane Nodes (Way-Points)

5.2.5 Tracking Vehicle Location on a MAP

The class GeoUtils wraps basic geographic calculations, including coordinate conversion

between different geographic coordinate systems, calculation of the distance and

direction between two geo-points, projection of a geo-point onto a lane segment, and

detection of whether a geo-point is inside or outside a convex hull. The class diagram of

GeoUtils is illustrated in Figure 14.

Inputs to the locateVehicleInMap function include vehicle geolocation (latitude, longitude

and elevation), its movement state (speed and heading), and the last projection result

(e.g. isVehicleInMap and vehicleTrackingState which include intersectionID, laneID and

the projected point along the lane). On the MAP, vehicle geolocation and movement data

are obtained from the BSMs. On the OBE, the data are obtained from the on-board GPS

device. Outputs of the locateVehicleInMap function are the updated projection result.

(a) (b)

Way-pointsWay-points

Car

Way-points

Car

Additional

way-points

Car

(c)

MMITSS Detail Design (California)

Page 26 of 96

Figure 14 Class Diagram of GeoUtils

The flow diagram of locateVehicleInMap function is illustrated in Figure 15.

class GeoUtils

«Enumeration»

locationType

NOT_IN_MAP

INSIDE_INTERSECTION_BOX

ON_APPROACH

ON_EGRESS

«struct»

geoPoint_t

+ elevation: double

+ latitude: double

+ longitude: double

«struct»

motion_t

+ heading: double

+ speed: double

«struct»

projection_t

+ d: double

+ length: double

+ t: double

«struct»

laneProjection_t

+ nodeIndex: uint8_t

+ proj2segment: projection_t

«struct»

intersectionTracking_t

+ approachIndex: uint8_t

+ intersectionIndex: uint8_t

+ laneIndex: uint8_t

+ vehicleIntersectionStatus: locationType

«struct»

vehicleTracking_t

+ intsectionTrackingState: intersectionTracking_t

+ laneProj: laneProjection_t

«struct»

dist2go_t

+ distLat: double

+ distLong: double «struct»

connectTo_t

+ intersectionId: uint32_t

+ laneId: uint8_t

+ laneManeuver: maneuverType

«struct»

locationAware_t

+ connect2go: std::vector<connectTo_t>

+ controlPhase: uint8_t

+ dist2go: GeoUtils::dist2go_t

+ intersectionId: uint32_t

+ laneId: uint8_t

«struct»

signalAware_t

+ clearanceIntv: uint16_t

+ currState: vehicular

+ stateConfidence: confidentce

+ timeToChange: uint16_t

«struct»

connectedVehicle_t

+ geoPoint: geoPoint_t

+ id: uint32_t

+ isVehicleInMap: bool

+ motionState: motion_t

+ timestamp: long

+ vehicleLocationAware: locationAware_t

+ vehicleSignalAware: signalAware_t

+ vehicleTrackingState: vehicleTracking_t

«Enumeration»

MsgEnum::maneuverType

UNKNOWN = 0

UTURN = 1

LEFTTURN

RIGHTTURN

STRAIGHTAHEAD

STRAIGHT

«Enumeration»

MsgEnum::vehicular

UNKNOWN

GREEN

YELLOW

RED

FLASHING

«Enumeration»

MsgEnum::confidentce

UNKNOWN_ESTIMATE

MINTIME

MAXTIME

TIME_LIKELY_TO_CHANGE

+dist2go

+geoPoint

+vehicleIntersectionStatus

+proj2segment

+vehicleTrackingState

+intsectionTrackingState

+motionState

+vehicleLocationAware

+currState

+connect2go

+vehicleSignalAware

+stateConfidence

+laneProj

+laneManeuver

MMITSS Detail Design (California)

Page 27 of 96

Figure 15 Flow Diagram of Locating on MAP Algorithm

Steps for initiating a track are described below:

I1. Find the set of intersections that the vehicle is inside the intersection MAP, by

checking the distance from the vehicle geolocation to the intersection reference

point against the intersection MAP radius;

I2. For each of the intersections that the vehicle is inside, find the convex hulls that

the vehicle is inside;

I3. For each of the convex hulls that the vehicle is inside, project vehicle geolocation

onto the lanes, and get the laneID and the projected point that has the minimum

distance from the vehicle geolocation to the lane among all lanes on the

approach. Vehicle speed and heading are used for the point-to-line projection to

ensure vehicle heading is along the lane node heading; and

I4. In the case that the vehicle geolocation is projected onto two MAPs (when there is

an overlap between the egress lane of an upstream intersection and the ingress

act locateVehicleInMap

Start

isVehicleInMap

IsEmptySet

IsSetEmpty

locateVehicleOnApproach

getNearedIntersections

getNearedApproaches

isEgressLane

getEgressConnect2Ingress

isSetEmpty

End

isInsideGeofenceZones

[No]

[No - ON_APPROACH /

INSIDE_INTERSECTION_BOX]

[Yes]

[No - ON_APPROACH]

[Yes]

[Yes - NOT_IN_MAP]

[Yes - NOT_IN_MAP]

[No]

[No - NOT_IN_MAP]

[No]

[Yes - ON_EGRESS]

[Yes]

MMITSS Detail Design (California)

Page 28 of 96

lane of the downstream intersection), return the projection result on the ingress

lane.

Steps for maintaining an established track are as follows:

M1. Start with the last projection result (e.g. intersectionID, laneID and the projected

point along the lane) and move the projection forward along the lane. The same

point-to-line method as step I3 above is used. As a vehicle could change lanes,

the projection lane is determined as the one that has the minimum distance from

the vehicle geolocation to the lane. Moving forward the project follows the

transition of vehicleIntersectionStatus state as illustrated in Figure 16; and

M2. When the projection lane is an egress lane, repeat steps I1 to I3 above to

determine whether the vehicle is also on an ingress lane of another intersection.

Return the projection result on the ingress lane (if it exists) otherwise the project

result on the egress lane. At closely spaced intersections, this step ensures a

quick detection of state transit from ON_EGRESS at an upstream intersection to

ON_APPROACH at the downstream intersection.

Figure 16 Vehicle Tracking State Transition Diagram

5.3 Software Component Interfaces

The interfaces between software components allows data to be transferred between

suppliers and consumers.

stm vehicleIntersectionStatus

NOT_IN_MAP

ON_APPROACH INSIDE_INTERSECTION_BOX

ON_EGRESS

[Moved to Ingress Lane of the

Downstream Intersection]

[Left Geofencing Area]

[Entered Geofencing Area]

[Left Geofencing Area]

[Entered Geofencing

Area]

[Passed Outbound Line]

[Passed the Stop Line]

MMITSS Detail Design (California)

Page 29 of 96

5.3.1 MRP Data Manager

The MRP receives multiple messages from different physical components, such as over-

the-air DSRC messages from the RSE, pedestrian SRMs from the nomadic device, and

configuration, signal status and detection data from the traffic controller. These

messages arrive asynchronously and are processed by different MRP components, e.g.

BSMs for vehicle tracking, SRMs and controller data for priority control, etc. The decision

of MMITSS traffic/priority control is based on the combined vehicular, pedestrian and

controller data. The use of a data manager (e.g. MRP_DataMgr) for routing synchronized

data to the different software modules would be preferable to independently connecting

these modules. The data manager would connect to other software modules with a

socket pair. Data sources, such as the MRP_TrafficControllerInterface, would push

timestamped data into the data manager. The data manager would push synchronized

data into data sinks, such as the MRP_PerformanceObserver. Modules that perform

calculations, such as MMITSS traffic/priority control decisions, would be based on

synchronized data.

A datum is timestamped when received by the data manager; it is again timestamped by

a module when that datum is acted upon. These two timestamps, together with the

datum itself and an identifier of the module using the datum, constitute one data point. A

module using data from more than one source would process all the data and timestamp

them once, so that the data logger could write it all to a data file for post processing.

There are several advantages to using an MRP data manager, among them ease of

debugging code and synchrony in data usage. Table 2 below compares some of the

more important inter-process tasks that need to be performed by the software system.

MMITSS Detail Design (California)

Page 30 of 96

Table 2 Comparison of Inter-process Tasks with and without Data Manager

Task Without Data Manager With Data Manager

Debugging Chain of data production and use

difficult to track

Easy to track data flow and therefore

mistakes in logic

Current Data

Repository

Data must be acquired separately from

each source

Single point for current data

Synchronization Data can be timestamped, but a datum

used in a particular module may have

been acquired at a different time from

data used in a related module

Single timestamp for current data,

along with timestamp for data

acquisition, so logic can be traced

Complexity Many separate (and possibly

redundant) connections among

software modules

One connection = one use of data

Data Archiving

for Performance

Measurements

Related to synchronization and current

data repository tasks; difficult to track

data usage in a post-mortem

Dual timestamps (“data acquired” and

“data used”) allow tracking of logic and

assumptions made to decide how good

the system is

Fault detection If a piece of hardware does not provide

timely data, the subsequent effects on

the system are hard to trace

Easy to trace stale data and therefore a

problem in either software logic or

hardware

Future

expansion and

integration

May need to modify more than one

module to accommodate connections

to a new module

Adding a new module only requires

adding a UDP/TCP socket to the data

manager, along with the data structure

5.3.2 UNIX Socket API

The data transmission between each component is implemented by UNIX sockets. The

California implementation wraps the basic socket functions (e.g. creating, connecting,

sending and receiving) into the socketUtils class (see Figure 17) to reduce the redundant

socket coding on each component. It supports both UDP and TCP sockets for IPv4 and

IPv6. Socket protocol (e.g. UDP, TCP), hostname and port is included in a configuration

file for each component, in the format of protocol:hostname:port.

bool setSocketAddress(const char* str,socketAddress_t& socketAddr);

int server(const socketAddress_t& myAddress,const bool isNonBlocking);

int client(const socketAddress_t& theirAddress,const bool isNonBlocking);

bool sendall(const int sfd, const char* buf, const size_t len);

The setSocketAddress function converts the configuration string into the

socketAddress_t object for creating a socket. For receiving data, the server function

creates a socket to get a socket descriptor, binds the socket to the local socket address,

and starts listening on the port for incoming TCP connections. For sending date, the

client function creates a socket and connects the socket to the host socket address. The

argument isNonblocking is to set the socket in non-blocking (true) or blocking (false)

mode. In blocking mode, the socket receive commands block the process until a packet

arrives. All the MMITSS components require non-blocking sockets so the component

MMITSS Detail Design (California)

Page 31 of 96

does not wait for the packets and only process the packet when it arrives. Socket send

commands might not send all the bytes that are asked to. The sendall function ensures

that all the bytes are sent out so the component that uses the Socket API does not need

to handle sending partial messages.

Figure 17 Class Diagram of UNIX Socket API

5.3.3 MMITSS Message Header

A single component may receive different types of messages over socket. For example,

the RSE_MessageTX receives SPaT, MAP and SSM messages to be transmitted over

the air. One option to handle multiple types of messages is to use multiple receiving

sockets with each socket corresponding to one type of message. Another option is to

include a message header that specifies the type of message so only one receiving

socket would be required. The MMITSS teams defined the format of message header as

illustrated in Figure 18. The MessageClass filed classifies that this is an MMITSS internal

message (selected as 0xFFFF), the MessageID field identifies the type of message (e.g.

Data) and the Length field specifies the length (in bytes) of Data.

class socketUtils

«Enumeration»

SocketProtocol

UDP

TCP

«struct»

socketAddress_t

+ name: std::string

+ port: std::string

+ sockeyProtocol: socketUtils::SocketProtocol

socketUtils

+ socketAddr: socketUtils::socketAddress_t

+ client(socketUtils::socketAddress_t&, bool): int

+ sendall(int, char*, size_t): boolean

+ server(socketUtils::socketAddress_t&, bool): int

+ setSocketAddress(char*, socketUtils::socketAddress_t&): boolean

+sockeyProtocol

+socketAddr

MMITSS Detail Design (California)

Page 32 of 96

Figure 18 MMITSS Internal Message Format

MMITSS message ID and message flow are summarized in Table 3. SRM and PSRM

(pedestrian SRM) have the same message format and are sent from different sources.

The structures of the message body (e.g. Data) are illustrated in Figure 19.

Table 3 MMITSS Messages

Message Type Message

ID From Via To

BSM 0x40 RSE_MessageRX MRP_DataMgr MRP_Aware

SRM 0x41 RSE_MessageRX MRP_DataMgr MRP_Aware

PSRM 0x42 Nomadic_PriorityDataServer MRP_DataMgr MRP_Aware

SSM 0x43 MRP_Aware MRP_DataMgr RSE_MEssageTX

Nomadic_PriorityDataServer

SPaT 0x44 MRP_TrafficControllerInterface MRP_DataMgr

RSE_MEssageTX

Nomadic_PriorityDataServer

MRP_Aware

MAP 0x45 MRP_DataMgr - RSE_MEssageTX

Nomadic_PriorityDataServer

SoftCallReq 0x46 MRP_Aware MRP_DataMgr MRP_TrafficControllerInterface

VehTraj 0x47 MRP_Aware MRP_DataMgr Message requester via poll

PhaseFlags 0x48 MRP_TrafficControllerInterface MRP_DataMgr Message requester via poll

PhaseTiming 0x49 MRP_TrafficControllerInterface MRP_DataMgr Message requester via poll

CoordPlan 0x50 MRP_TrafficControllerInterface MRP_DataMgr Message requester via poll

FreePlan 0x51 MRP_TrafficControllerInterface MRP_DataMgr Message requester via poll

DetPhaseAsgmt 0x52 MRP_TrafficControllerInterface MRP_DataMgr Message requester via poll

DetectorCount 0x53 MRP_TrafficControllerInterface MRP_DataMgr Message requester via poll

DetectorPresence 0x54 MRP_TrafficControllerInterface MRP_DataMgr Message requester via poll

PollReq 0x80 Other components such as

MRP_PerformanceObserver

- MRP_DataMgr

Message Class

2 byes

Message ID

1 byte

Timestamp

4 bytes

Length

2 bytes

Data

Var.

MMITSS Message Header

MMITSS Message

MMITSS Detail Design (California)

Page 33 of 96

Figure 19 Structure of MMITSS Messages

class Message Structure

«struct»

phaseflags_mess_t

+ bike_recall_phases: std::bitset<8>

+ doubleEntry_phases: std::bitset<8>

+ fomaxlock_phases: std::bitset<8>

+ maxgreen2_phases: std::bitset<8>

+ maxgreen3_phases: std::bitset<8>

+ maximum_recall_phases: std::bitset<8>

+ minimum_recall_phases: std::bitset<8>

+ ped_recall_phases: std::bitset<8>

+ permitted_ped_phases: std::bitset<8>

+ permitted_phases: std::bitset<8>

+ red_revert_interval: uint8_t

+ redlock_phases: std::bitset<8>

+ restInRed_phases: std::bitset<8>

+ restInWalk_phases: std::bitset<8>

+ restricted_phases: std::bitset<8>

+ startup_allred: uint8_t

+ startup_green_phases: std::bitset<8>

+ startup_pedCalls: std::bitset<8>

+ startup_vehCalls: std::bitset<8>

+ startup_yellow_phases: std::bitset<8>

+ startup_yellowOverlaps: std::bitset<8>

+ walk2_phases: std::bitset<8>

+ yewlock_phases: std::bitset<8>

«struct»

phasetiming_mess_t

+ added_initial_per_vehicle: uint8_t

+ bike_green: uint8_t

+ bike_red_clearance: uint8_t

+ delay_early_walk_time: uint8_t

+ detector_limit: uint8_t

+ maximum_extensions: uint8_t ([3])

+ maximum_gap: uint8_t

+ maximum_initial: uint8_t

+ minimum_gap: uint8_t

+ minimum_green: uint8_t

+ passage: uint8_t

+ phase_num: uint8_t

+ red_clearance: uint8_t

+ reduce_gap_by: uint8_t

+ reduce_gap_every: uint8_t

+ solid_walk_clearance: uint8_t

+ walk_clearance: uint8_t

+ walk1_interval: uint8_t

+ walk2_interval: uint8_t

+ yellow_interval: uint8_t

«struct»

coordplan_mess_t

+ bike_recall_phases: std::bitset<8>

+ cycle_length: uint8_t

+ cycle_multiplier: uint8_t

+ force_off: uint8_t ([8])

+ green_factor: uint8_t ([8])

+ hold_phases: std::bitset<8>

+ isPrioEnabled: bool

+ lag_phases: std::bitset<8>

+ laggapout_phase: uint8_t

+ max_early_green: uint8_t

+ max_green_extension: uint8_t

+ maximum_recall_phases: std::bitset<8>

+ minimum_recall_phases: std::bitset<8>

+ offsets: uint8_t ([3])

+ omit_phases: std::bitset<8>

+ ped_recall_phases: std::bitset<8>

+ plan_num: uint8_t

+ prio_force_off: uint8_t ([8])

+ prio_inhibit_cycles: uint8_t

«struct»

freeplan_mess_t

+ bike_recall_phases: std::bitset<8>

+ conditional_service_minimum_green: uint8_t

+ conditional_service_phases: std::bitset<8>

+ isPrioEnabled: bool

+ lag_phases: std::bitset<8>

+ maximum_recall_phases: std::bitset<8>

+ minimum_recall_phases: std::bitset<8>

+ omit_phases: std::bitset<8>

+ ped_recall_phases: std::bitset<8>

+ prio_hold_phases: std::bitset<8>

+ prio_max_green_hold_time: uint8_t

«struct»

system_detector_assignment_mess_t

+ detectorInput: uint8_t ([16])

«struct»

detector_count_mess_t

+ occupancy: uint8_t ([16])

+ volume: uint8_t ([16])

«struct»

detector_presence_mess_t

+ detector_presences: std::bitset<40>

«struct»

poll_req_mess_t

+ req_msgId: uint8_t

«struct»

softcall_req_mess_t

+ callObj: Enumeration

+ callPhase: std::bitset<8>

- callType: Enumeration

«enumeration»

Obj

PED = 1

VEH = 2

PRIO = 3

«enumeration»

Type

CALL = 1

EXTENSION = 2

CANCEL = 3

«struct»

veh_traj_mess_t

+ track_points: std::vector<track_point_t>

+ trackPointNums: uint32_t

+ vehId: uint32_t

«struct»

track_point_t

+ dist2stopline: int

+ ETA: uint32_t

+ geoPoint: GeoUtils::geoPoint_t

+ intersectionId: uint32_t

+ laneId: uint8_t

+ motionState: GeoUtils::motion_t

+ msgCnt: unit8_t

+ projPoint: GeoUtils::point2D_t

+ secMark: unit16_t

«struct»

GeoUtils::geoPoint_t

+ elevation: double

+ latitude: double

+ longitude: double

«struct»

GeoUtils::point2D_t

+ x: int32_t

+ y: int32_t

«struct»

GeoUtils::motion_t

+ heading: double

+ speed: double

+projPoint

+geoPoint

+callObj

+motionState

+callType +track_points

MMITSS Detail Design (California)

Page 34 of 96

6 Detailed Component Designs (California)

This section contains a detailed discussion of each of the software components in terms

of their responsibility as defined by the associated requirements and description in the

concept of operations document. Each component is given a name, traceability

information to requirements, concept of operations, and/or stakeholder requirements, a

brief description of the component’s responsibility, and any additional text useful for

understanding the component’s role in MMITSS.

There are three documents that contain the key traceability information:

1. MMITSS Stakeholder Input Document, 8/3/2012,

http://www.cts.virginia.edu/wp-content/uploads/2014/05/PFS_MMITSS02_Task2.2.pdf

2. MMITSS Concept of Operations, 12/4/2012, http://www.cts.virginia.edu/wp-content/uploads/2014/05/Task2.3._CONOPS_6_Final_Revised.pdf

3. MMITSS System Requirements Document, 3/7/2012, http://www.cts.virginia.edu/wp-content/uploads/2014/05/Task3._SyRS_4_PostSubmittal_V3.pdf

Section 7.6 of the MMITSS System Requirements Document provides a detailed

traceability of each requirement to the Stakeholder inputs and Use Cases identified in

the Concept of Operations.

6.1 Road Side Equipment (RSE) Components

6.1.1 RSE_SecurityCertificateService

6.1.1.1 Functional Requirements

Node: RSE Component Name: RSE_SecurityCertificateService Traceability: System Requirements Section 6.6.3

Description of Responsibility: This component is responsible for providing security services on the RSE. It is responsible for ensuring trusted, eligible equipped vehicles (OBEs) can send BSM and SRM messages to the RSE.

Supporting Text: The RSE_SecurityCertificateService will have a connection to a Certificate Server (SCMS) that will provide the security certificates and a revocation list.

6.1.1.2 Functional Description

This component is responsible for providing security services on the RSE. It is

responsible for ensuring that trusted, eligible equipped vehicles (OBEs) can send BSM

and SRM messages to the RSE and to deny services to untrusted equipped vehicles

whose certificates appear on the Certificate Revocation List (CRL).

MMITSS Detail Design (California)

Page 35 of 96

The RSE_SecurityCertificateService is not a traditional software component. The

security services are implemented as part of the IEEE 1609.2 stack that is in the Savari

operating system services.

Figure 20 Security Service Architecture

The current standard requires an end-to-end IPv6 link between the RSE and the Security

Credential Management System (SCMS) (see Figure 20). This requirement is a design

challenge for the field deployment since IPv6 has not yet widely deployed and the

backhaul networks in both the Arizona and the California test beds do not support IPv6.

IPv6 tunneling over existing IPv4 networks is a common method for transition from IPv4

to IPv6, but it is complex to set up and have been observed to suffer a variety of

performance and stability issues2. The development team was not able to test IPv6 over

IPv4 tunneling on the UA and UCB campuses due to restrictions by the universities’ IT

services.

2 American Association of State Highway and Transportation Officials (AASHTO), National Connected Vehicle Field Infrastructure Footprint Analysis – Design Gaps Analysis, Version 1, June 2012 (available online at http://ssom.transportation.org/documents/aashto_footprint_analysis_design_gaps_analysis_v1.docx)

MMITSS Detail Design (California)

Page 36 of 96

6.1.2 RSE_ServiceAdvertisementMgr

6.1.2.1 Functional Requirements

Node: RSE Component Name: RSE_ServiceAdvertisementMgr Traceability: System Requirements Section 6.6.2

Description of Responsibility: This component is responsible for broadcasting WAVE service advertisement (WSA) messages on the WAVE control channel (CCH) to announce the presence of MMITSS Traffic Control service and the WAVE service channel (SCH) to be used for exchanging MMITSS service data (e.g. signal request messages - SRMs and signal status messages - SSMs).

Supporting Text: The RSE_ServiceAdvertisementMgr broadcasts WAVE service advertisement (WSA) messages so that approaching vehicles will be aware of the availability of MMITSS Traffic Control service. Vehicles that receive the WSA will be tuned to the service channel as specified in the WSA to perform the MMITSS service.

6.1.2.2 Functional Description

This component is responsible for broadcasting WAVE service advertisement (WSA)

messages on the control channel (CCH 178) to announce the presence of MMITSS

Traffic Control service and the service channel (SCH 182) to be used for exchanging

data (e.g., SRM and SSM) to perform the MMITSS Traffic Control service.

MMITSS service users (e.g. vehicles that are eligible for signal priority) monitor the WSA.

If desired, they can participate in the MMITSS Traffic Control service by sending SRMs

and receiving SSMs on the indicated SCH (182). Basic safety messages (BSMs), signal

phase and timing (SPaT) messages and MAP messages are expected to be transmitted

on the SCH 172. Thus, no WSA would be needed for these three types of messages.

Currently, there are no SAE J2735 message specifications for the WSA message. WSA

is defined as part of the IEEE1609.4 standard specification, but it is not clear how

Dynamic Mobility Applications, such as MMITSS, should implement the WSA. [Note:

There was a teleconference organized by the SAE DSRC Message Framework

subcommittee on May 23, 2014 to discuss this issue. No specific implementation issues

were resolved, but there were very constructive discussions from a variety of experts].

The WSA use is currently being debated by the IEEE 1609 Technical Committee and the

SAE DSRC Technical Committee. Future developments will clarify the use and protocol

for WSA use.

MMITSS Detail Design (California)

Page 37 of 96

6.1.3 RSE_MessageRX

6.1.3.1 Functional Requirements

Node: RSE Component Name: RSE_MessageRX

Traceability: C2001.001 (All vehicle data acquired by RSE through the WAVE communications)

Description of Responsibility: This component is responsible for receiving properly formatted messages over a specified WAVE channel.

Supporting Text: The RSE_MessageRX component is responsible for receiving properly formatted SAE J2735 messages over a specified (or appropriate) WAVE channel. Example messages would include the Basic Safety Message (BSM), Signal Request Message (SRM), etc.

6.1.3.2 Interfaces

The RSE_MessageRX interfaces are shown in Figure 21. The required interface is the

WME API provided by the WAVE unit (e.g. RSE). The provided interface is the UDP

socket API (see Section 5.3.2) to which to forward the received over-the-air

WSMs/WSMPs.

Figure 21 RSE_MessageRX Interface Diagram

6.1.3.3 Functional Description

The RSE_MessageRX component is responsible for connecting with the WME stack,

receiving over-the-air WSMs/WSMPs, and forwarding the WSMs/WSMPs to the

MRP_DataMgr component for further processing. This component reads a configuration

file (e.g. rseWmefwd.cnf) regarding the mapping between J2735 message sets and the

corresponding actions (e.g., receiving on the UDP socket address and transmitting over

the air, and/or receiving over the air and transmitting to the UDP socket address). The

mapping between J2735 message sets and the associated radio channel characteristics

(e.g., radio interface, channel number and PSID) is included in a header file (e.g.

wmeUtils.h). The same configuration file and the header file are used for both the

RSE_MessageRX Interfaces

RSE_MessageRXMRP_DataMgr

<<manifest>>

wmeUtils.h rseWmefwd.conf

WME

WSMP

UDP Socket API WME API

MMITSS Detail Design (California)

Page 38 of 96

RSE_MessageRX and RSE_MessageTX, while the RSE_MessageRX manages the

message sets to be received over the air and the RSE_MessageTX manages the

message sets to be transmitted over the air.

6.1.3.4 Configuration File Format

A sample Configuration file is attached below, with inline comments explaining the

meaning of configuration parameters:

#######################################

# WME stake configuration file for RSU

#######################################

# Format of application configuration:

# enable/disable : messageSetName : wmeRegisterType : TxDirection : PSC

# enable/disable = 0 or 1

# wmeRegisterType = USER or PROVIDER

# TxDirection is between the application and the WSMP stack:

# TX = routing application message to over the air message

# RX = routing over the air messages to the application

# TX_RX = application sending and also receiving the same message set broadcast

# from other parties, such as other intersection’s SPaT, etc.

#

application 1:BSM:USER:RX:MMITSS

application 1:SRM:USER:RX:MMITSS

application 1:MAP:USER:TX:MMITSS

application 1:SPaT:USER:TX_RX:MMITSS

application 1:SSM:USER:TX:MMITSS

#

# Socket configuration:

# protocol : hostname : port

#

listenSocket UDP:192.168.0.150:15001 # for MessageTX

sendSocket UDP:192.168.0.166:15000 # for MessageRX

6.1.4 RSE_MessageTX

This component is complementary to the RSE_MessageRX component. It is responsible

for transmitting SPaT, MAP and SSM messages over the air.

MMITSS Detail Design (California)

Page 39 of 96

6.1.4.1 Functional Requirements

Node: RSE Component Name: RSE_MessageTX

Traceability: C2009.001 (Providing intersection data to connected vehicles)

Description of Responsibility: This component is responsible for transmitting properly formatted messages over a specified WAVE channel.

Supporting Text: The RSE_MessageTX component is responsible for transmitting properly formatted SAE J2735 messages over a specified (or appropriate) WAVE channel. Example messages would include the Signal Status Message (SSM), Signal Phase and Timing (SPaT) message, MAP message, etc.

6.1.4.2 Interfaces

The RSE_MessageTX interfaces are shown in Figure 22. The required interface is the

UDP socket API (see Section 5.3.2) for receiving WSM payloads (e.g. SPaT, MAP and

SSM) from the MRP_DataMgr component. The provided interface is the WME API for

transmitting the messages over the air.

Figure 22 RSE_MessageTX Interface Diagram

6.1.4.3 Functional Description

The RSE_MessageTX component is complementary to the RSE_MessageRX

component with flow of messages going in the reverse direction. This component is

responsible for connecting with the WME stack, receiving payloads from the

MRP_DataMgr component, and transmitting WSMs/WSMPs over the air. This

component uses the same configuration file as that is used by the RSE_MessageRX

component (see Section 6.1.3.4).

RSE_MessageTX Interfaces

WME

WSMP

RSE_MessageTXWME API

MRP_DataMgr

<<manifest>>

wmeUtils.h rseWmefwd.conf

UDP Socket API

MMITSS Detail Design (California)

Page 40 of 96

6.2 On-Board Equipment (OBE) Components

6.2.1 OBE_MessageRX

The OBE_MessageRX component is identical to RSE_MessageRX, while running on an

OBE. This component is responsible for receiving over-the-air WMS/WSMPs and

transmitting the messages to the OBE_Aware component for further processing.

6.2.1.1 Functional Requirements

Node: OBE Component Name: OBE_MessageRX

Traceability: A1002 (All intersection data acquired by OBE through the WAVE communications)

Description of Responsibility: This component is responsible for receiving properly formatted messages over a specified WAVE channel.

Supporting Text: The OBE_MessageRX component is responsible for receiving properly formatted SAE J2735 messages over a specified (or appropriate) WAVE channel. Example messages would include the Signal Phase and Timing (SPaT) message, MAP message, Signal Status Message (SSM), etc.

6.2.1.2 Interfaces

The OBE_MessageRX interfaces are shown in Figure 23. The required interface is the

WME API provided by the WAVE unit (e.g. OBE). The provided interface is the UDP

socket API (see Section 5.3.2) with which to forward the received over-the-air

WSMs/WSMPs.

Figure 23 OBE_MessageRX Interface Diagram

6.2.1.3 Functional Description

The OBE_MessageRX component is responsible for connecting with the WME stack,

receiving over-the-air WSMs/WSMPs, and forwarding the WSMs/WSMPs to the

OBE_Aware component for further processing. This component reads a configuration file

OBE_MessageRX Interfaces

OBE_MessageRXOBE_Aware

<<manifest>>

wmeUtils.h obeWmefwd.conf

WME

WSMP

UDP Socket API WME API

MMITSS Detail Design (California)

Page 41 of 96

(e.g. obeWmefwd.cnf) regarding the mapping between J2735 message sets and the

corresponding actions (e.g., receiving on the UDP socket address and transmitting over

the air, and/or receiving over the air and transmitting to the UDP socket address). The

mapping between J2735 message sets and the associated radio channel characteristics

(e.g., radio interface, channel number and PSID) is included in a header file (e.g.

wmeUtils.h). The same configuration file and the header file are used for both the

OBE_MessageRX and OBE_MessageTX, while the OBE_MessageRX manages the

message sets to be received over the air and the OBE_MessageTX manages the

message sets to be transmitted over the air.

6.2.1.4 Configuration File Format

A sample Configuration file is attached below, with inline comments explaining the

meaning of configuration parameters:

#######################################

# WME stake configuration file for OBU

#######################################

# Format of application configuration:

# enable/disable : messageSetName : wmeRegisterType : TxDirection : PSC

# enable/disable = 1/0

# wmeRegisterType = USER or PROVIDER

# TxDirection is between the application and the WSMP stack:

# TX = routing application message to over the air message

# RX = routing over the air messages to the application

# TX_RX = application sending and also receiving the same message set broadcast

# from other parties, such as other car's BSM, etc.

#

application 1:BSM:USER:TX:MMITSS

application 1:SRM:USER:TX:MMITSS

application 1:MAP:USER:RX:MMITSS

application 1:SPaT:USER:RX:MMITSS

application 1:SSM:USER:RX:MMITSS

#

# Socket configuration:

# protocol : hostname : port

#

listenSocket UDP:127.0.0.1:15001 # for MessageTX

sendSocket UDP:127.0.0.1:15000 # for MessageRX

6.2.2 OBE_MessageTX

This component is complementary to the OBE_MessageRX component. It is responsible

for transmitting BSM and SRM messages over the air.

MMITSS Detail Design (California)

Page 42 of 96

6.2.2.1 Functional Requirements

Node: OBE Component Name: OBE_MessageTX

Traceability: C2001.001 (Providing all vehicle data to RSE through the WAVE communications)

Description of Responsibility: This component is responsible for transmitting properly formatted messages over a specified WAVE channel.

Supporting Text: The OBE_MessageTX component is responsible for transmitting properly formatted SAE J2735 messages over a specified (or appropriate) WAVE channel. Example messages would include the Basic Safety Message (BSM) and Signal Request Message (SRM), etc.

6.2.2.2 Interfaces

The OBE_MessageTX interfaces are shown in Figure 24. The required interface is the

UDP socket API (see Section 5.3.2) for receiving WSM payloads (e.g. BSM and SRM)

from the OBE_Aware component. The provided interface is the WME API for transmitting

the messages over the air.

Figure 24 OBE_MessageTX Interface Diagram

6.2.2.3 Functional Description

The OBE_MessageTX component is complementary to the OBE_MessageRX

component with flow of messages going in the reverse direction. This component is

responsible for connecting with the WME stack, receiving payloads from the OBE_Aware

component, and transmitting WSMs/WSMPs over the air. This component uses the

same configuration file as that is used by the OBE_MessageRX component (see Section

6.1.3.4).

OBE_MessageTX Interfaces

WME

WSMP

OBE_MessageTXWME API

OBE_Aware

<<manifest>>

wmeUtils.h obeWmefwd.conf

UDP Socket API

MMITSS Detail Design (California)

Page 43 of 96

6.2.3 OBE_Aware

6.2.3.1 Overview of Functionality

The OBE_Aware is the core MMITSS OBE component. It is responsible for:

• Acquiring vehicle geolocation (latitude, longitude and elevation) and movement

state (speed and heading) data from the on-board GPS receiver;

• Forming BSM messages and sending the BSMs to the OBE_MessageTX

component;

• Processing the received MAP messages, tracking the vehicle on the MAP and

estimating the expected time-to-arrive (ETA) at the intersection stop-line

(locationAware);

• Processing the received SPaT messages to obtain the state and the remaining

time of the signal that controls the movement of the vehicle (signalAware); and

• When it is eligible for priority, forming SRM messages and sending the SRMs to

the OBE_MessageTX component.

Sending BSMs, locationAware and signalAware are the common tasks for all OBEs,

regardless whether the OBE is eligible for priority or not. The functionalities of

encoding/decoding J2735 messages, locationAware and signalAware are implemented

by the J2735Lib class (see Section 5.2).

Additional tasks for priority eligible vehicles (e.g. buses, trucks) are forming and sending

SRM messages with information already made available in locationAware and

signalAware, and updating the request information if there is a change in status or date.

When passed the intersection stop line, the OBE_Aware should send a cancel priority

request so that the intersection can serve priority for other vehicles. The transition

diagram of the status of priority request is shown in Figure 25.

Figure 25 Priority Request State Transition Diagram

stm priorityReqState

Idle

RequestedBeenReceived

UpdateRequest

[ETA changed]

[ON_APPROACH]

[Request in SSM]

[Cancel SRM sent]

[Request not in SSM]

[SRM sent]

MMITSS Detail Design (California)

Page 44 of 96

6.2.3.2 Functional Requirements

Node: OBE Component Name: OBE_Aware Traceability: A1002, A1003, A1004, C2001.001

Description of Responsibility: The OBE_Aware component is responsible for formatting the J2735 BSM message by collecting vehicle data from the GPS receiver and (optional) vehicle data systems (CAN bus), determining a vehicle’s eligibility for priority and formatting the J2735 SRM message. It is also responsible for updating any of the request information if there is a change in status or data.

Supporting Text: This component is responsible for getting vehicle data, GPS data, and forming the BSM message. (Part 1 and Part 2 as data is available). When it is eligible for priority, this component is also responsible for determining the level of priority to request, desired service time and service phase or approach, and forming the SRM message (including cancel priority request). The OBE_MessageTX component is responsible for broadcasting the BSM and SRM messages.

6.2.3.3 Derived requirements

The BSM should be sent at a 10Hz rate. The SRM should be sent asynchronously and

not faster than 1Hz.

6.2.3.4 Interfaces

This OBE_Aware interfaces are shown in Figure 26.

Figure 26 OBE_Aware Interface Diagram

The required interfaces include:

OBE_Aware Interfaces

OBE_AwareOBE_GUI

<<manifest>>

obeVin.conf obeSocket.conf

GPS LibUDP Socket API

GPSLib API

OBE_MessageTX OBE_MessageRX

J2735Lib

J2735Lib API

UDP Socket API

MMITSS Detail Design (California)

Page 45 of 96

• The UDP socket API (see Section 5.3.2) for receiving SPaT, MAP and SSM

messages from the OBE_MessageRX component;

• The GPSLib API (provided by the WAVE device) for acquiring vehicle geolocation

and movement data; and

• The J2735Lib API (see Section 5.2) for encoding/decoding J2735 messages and

tracking vehicle on the MAP.

The provided interfaces are the UDP socket API for sending BSM and SRM messages to

the OBE_MessageTX component, and sending the display messages to the OBE_GUI

component.

The socket configuration file (e.g. obeSocket.conf) contains information regarding the

socket addresses for listening and sending the UDP packets, and the directory that

stores the MAP description files. An example of the socket configuration file is attached

below:

#######################################

# Socket configuration file for OBU

#######################################

nmapFile := /root/CAtestbed.nmap

wsmListenSocket := UDP:127.0.0.1:15000 # receive from messagerx

wsmSendSocket := UDP:127.0.0.1:15001 # send to messagetx

guiSendSocket := UDP:127.0.0.1:15005 # send to obe gui

The vehicle configuration file (e.g. obeVin.conf) includes parameters such as vehicle

type (e.g. car, bus, truck, etc.), vehicle length, width, VIN number, and priority level (if it

is eligible for priority). These parameters are used for forming BSM and SRM messages.

An example of the vehicle configuration file is attached below:

#######################################

# Vehicle configuration file for OBU

#######################################

isPrioEligible := 1 # 0 – No, 1 - Yes

codeWord := MMITSS # codeword size (1..16)

vehId := 1 # unit32_t

vehLen := 12.0 # double

vehWidth := 3.0 # double

vehName := obuBus_1 # vehName size (1..63)

vehVin := obuBus_1 # vehVin size (1..17)

vehOwner := California_PATH # vehOwner size (1..32)

vehType := 6 # VehicleType_none = 0, VehicleType_unknown = 1,

# VehicleType_special = 2, VehicleType_moto = 3,

# VehicleType_car = 4, VehicleType_carOther = 5,

# VehicleType_bus = 6, VehicleType_axleCnt2 = 7,

# VehicleType_axleCnt3 = 8, VehicleType_axleCnt4 = 9,

# VehicleType_axleCnt4Trailer = 10, VhicleType_axleCnt5Trailer = 11,

# VehicleType_axleCnt6Trailer = 12, VehicleType_axleCnt5MultiTrailer = 13,

# VehicleType_axleCnt6MultiTrailer = 14, VehicleType_axleCnt7MultiTrailer = 15

priorityLevel := 5 # prioLevel range (0..15).

MMITSS Detail Design (California)

Page 46 of 96

# Can be omitted if isPrioEligible = 0

The display messages are required output to the OBE_GUI component (see Section

6.2.4) for visualizing the status of the vehicle, the communication system, traffic signals,

and priority control services. The structure of the display message is shown in Table 4.

Table 4 Structure Display Message

Name Type Description

intNums uint32_t The number of intersections from which the OBE_Aware

is currently receiving MAP

intID uint32_t ID of the intersection that the vehicle is currently on

intLocStatus uint32_t 1 – on ingress, 2 – at intersection box, 3 - on egress

prioReqStatus uint32_t (OBE_Aware) 1 – requested, 2 – cancelled

signalState uint32_t[8] 1 – green, 2 – yellow, 3 - red

pedSignalState uint32_t[8] 1 – Don’t walk, 2 – Flashing don’t walk, 3 - Walk

reqNums uint32_t The number of priority requests that the MRP have

received (in SSM)

reqList List of requests that the MRP have received (in SSM)

6.2.3.5 Functional Description

An activity diagram which illustrated the operation of the OBE_Aware component is

shown in Figure 27. Actions marked with dark green color are operations of the J2735Lib

class (see Section 5.2).

The OBE_Aware maintains lists of received SPaT and SSM messages, one (latest)

record per intersection. When received MAP messages, it compares the version of the

over-the-air MAP against the version of MAP stored in the memory (e.g. the

mpIntersection object). If a newer version is detected, it updates the stored MAP for the

use of tracking the vehicle on MAP.

The OBE_AWARE acquires GPS data at a 10Hz rate, forms a BSM, and sends to the

OBE_MessageTX component which broadcasts the message over the air. It then uses

the GPS data to locate the vehicle on the MAP (determining intersectionID, laneID and

the projection point on the lane), and calculates the distance to the intersection stop line

and the expected arrival time (updateLocationAware). It finds the intersection SPaT from

the SPAT list and gets the state and the remaining time of the signal that controls the

vehicle’s (lane) movement (updateSignalAware), and finds the intersection SSM from the

SRM list and checks whether it needs to send/update the priority request

(updateReqStatus). When needed, it forms an SRM and sends to the OBE_MessageTX

component. When detected the vehicle has passed the stop line, the OBE_Aware sends

a cancel priority SRM. The state transit of request status is shown in Figure 25.

MMITSS Detail Design (California)

Page 47 of 96

Figure 27 Activity Diagram of OBE_Aware

6.2.4 OBE_GUI

The OBE_GUI is an important component of the in-vehicle system for the MMITSS

project. It allows developers and interested observers to visualize the status of the

vehicle, the communication system, traffic signals, and priority control services.

act OBE_Aware

Start

readConfigurationFiles

createJ2735LibInstance

createSockets

connect2gps

Received

WSMs?

decode_payload

updateSPaTlist

updateSSMlist

updateMapDataStruct

New MAP?

Time to

acquire GPS?

getGPSdata

encode_bsm_payload

sendBSM locateVehicleInMap

updateLocationAware

updateSignalAware updateReqStatus

Send

SRM?

encode_srm_payload sendSRM

SendDispMsg

[Yes]

[No]

[No]

[SPaT]

[Yes]

[No]

[MAP]

[Yes]

[No]

[SSM][Yes]

MMITSS Detail Design (California)

Page 48 of 96

6.2.4.1 Requirements

Node: OBE Component Name: OBE_GUI Traceability: System Requirements Section 6.3 (General

Interface Requirements)

Description of Responsibility: OBE_GUI component is responsible for providing a human interface to the OBE so that the developers can visualize the data used by the OBE processes including vehicle data and priority request data.

Supporting Text: The ability to visualize the status of the OBE components is important in the development, testing, and demonstration of the MMITSS system. The use of a webserver and custom web pages allows the developers to easily visualize data. It is acknowledged that there are some delays or latencies in using web pages, but they have been valuable tools.

6.2.4.2 Interfaces

The required interface is the UDP socket API for receiving the display message from the

OBE_Aware component. The structure of the display message is described in Table 4.

This component does not provide any interface as it is a standalone application which

does not provide any data to other MMITSS components.

6.2.4.3 Functional Description

The OBE_GUI component provides a web page interface to display data to developers

and interested observers for the purpose of visualizing the status of the vehicle.

Figure 28 Example of OBE_GUI Interface

MMITSS Detail Design (California)

Page 49 of 96

The OBE_GUI interface is shown in Figure 28. It consists of several frames. OBE’s

current location is displayed on the top-left Google Map. SPaT information of the

approaching intersection is displayed on the top-right frame with colored movements and

pedestrian signs. The middle frame lists all the MMITSS intersections in the California

test network with a red dot indicating the approaching intersection. The bottom frame

lists the “Current Active Request Table”, which shows the status of all priority requests

that are at the approaching intersection. In the example shown in Figure 28, the OBE

represents a transit vehicle (ID 601). It is traveling northbound on El Camino Real and

heading to the intersection at Stanford Ave. Another OBE (ID 603 representing a truck) is

traveling on southbound of El Camino Real and also heading to the Stanford Ave.

intersection. Both OBEs have requested signal priority. The Stanford intersection is

serving phase 2 and 6 (along El Camino Real) with the Flashing Don’t Walk pedestrian

interval. Green extension priority is granted to the bus (ID 601) as the remaining

pedestrian interval (7 seconds) is shorter than the service time (12 seconds) required by

the bus.

6.3 MMITSS Roadside Processor (MRP) Components

6.3.1 MRP_DataMgr

6.3.1.1 Overview of functionality

The MRP_DataMgr component is responsible for bridging messages between the

MRP_TrafficControllerInterface component and other MMITSS components. The

functionalities of this component include

• Receive and store data from the linked components;

• Encode SPaT message and send it to the MRP_MessageTX, the

Nomadic_PriorityDataServer and the MRP_AWARE components (The

MRP_TrafficControllerInterface component sends the unencoded SPaT data to

the MRP_DataMgr);

• Send encoded MAP messages to the MRP_MessageTX component and the

Nomadic_PriorityDataServer component;

• Forward or send poll response to the linked components; and

• Timestamp all data for use in synchronizing actions and logging data for post-

processing.

In Section 5.3.3, messages that are bridged via the MRP_DataMgr component are

summarized in Table 3, with the structures of each message set illustrated in Figure 19.

Table 5 below summarizes the actions of the MRP_DataMgr component on each of the

messages.

MMITSS Detail Design (California)

Page 50 of 96

Table 5 MRP_DataMgr Actions on Messages

Message Type Message ID From Action

BSM 0x40 RSE_MessageRX Forward to MRP_Aware

SRM 0x41 RSE_MessageRX Forward to MRP_Aware

PSRM 0x42 Nomadic_PriorityDataServer Forward to MRP_Aware

SSM 0x43 MRP_Aware Forward to RSE_MEssageTX and

Nomadic_PriorityDataServer

Unencoded SPaT 0x44 MRP_TrafficControllerInterface

Encode SPaT, send it to

RSE_MEssageTX,

Nomadic_PriorityDataServer and

MRP_AWARE

MAP 0x45 MRP_DataMgr Send to RSE_MEssageTX and

Nomadic_PriorityDataServer

SoftCall 0x46 MRP_Aware Forward to

MRP_TrafficControllerInterface

VehTraj 0x47 MRP_Aware Store in memory, send to the

requested when polled

PhaseFlags 0x48 MRP_TrafficControllerInterface

Store in memory, send to the

requested when polled

PhaseTiming 0x49 MRP_TrafficControllerInterface Store in memory, send to the

requested when polled

CoordPlan 0x50 MRP_TrafficControllerInterface Store in memory, send to the

requested when polled

FreePlan 0x51 MRP_TrafficControllerInterface Store in memory, send to the

requested when polled

DetPhaseAsgmt 0x52 MRP_TrafficControllerInterface Store in memory, send to the

requested when polled

DetectorCount 0x53 MRP_TrafficControllerInterface Store in memory, send to the

requested when polled

DetectorPresence 0x54 MRP_TrafficControllerInterface Store in memory, send to the

requested when polled

PollReq 0x80 Other components such as

MRP_PerformanceObserver

Send back the requested

message

6.3.1.2 Functional Requirements

Node: MRP Component Name: MRP_DataMgr Traceability: C2004.001, C2005.001, C2005.302, C2004.302,

C2009.302, A1301, A1302

Description of Responsibility: The MRP_DataMgr is responsible for collecting data from the linked MMITSS components, forwarding or sending poll responses to the appropriate components for further processing. It is also responsible for sending J2735 SPAT, MAP and SRM messages to the components for broadcasting it over the air or transmitting it to the nomadic MMITSS app, and forwarding the BSM, SRM and PSRM messages to the component that processes them.

Supporting Text: The California test network uses a Caltrans 2070 controller to push out SPaT data at each intersection.

MMITSS Detail Design (California)

Page 51 of 96

6.3.1.3 Derived requirements

The MRP_TrafficControllerInterface component sends the unencoded SPaT data at a

rate of 10Hz. The MRP_DataMgr immediately encodes SPaT and sends to the

RSE_MessageTX component for broadcasting it over the air, and to the

Nomadic_PriorityDataServer for routing to the appropriate nomadic MMITSS app users.

This component should send MAP messages at a rate of 1Hz.

6.3.1.4 Interfaces

Interfaces of the MRP_DataMgr component are shown in Figure 29.

The required inputs include:

• Over-the-air BSM and SRM messages from the RSE_MessageRX component;

• PSRM messages via the internet backbone from the Nomadic_PriorityDataServer

component;

• SPaT data, controller configuration date, and vehicle detection data from the

MRP_TrafficControllerInterface component;

• SSM, control command (e.g. soft-call), and vehicle trajectory data from the

MRP_Aware component; and

• Intersection MAP description file for constructing the J2735 MAP.

The provided outputs include:

• J2735 BSM, SRM and PSRM messages to the MRP_Aware component;

• J2735 SPaT, MAP and SSM messages to the RSE_MessageTX and the

Nomadic_PriorityDataServer components;

• Control command (e.g. soft-call) to the MRP_TrafficControllerInterface

component; and

• Poll response to the request component.

Socket addresses for the required and provided interfaces are input as a configuration

file (e.g. mgrSocket.conf). An example of the configuration file is attached below.

MMITSS Detail Design (California)

Page 52 of 96

#######################################

# Socket configuration file for DataMgr

#######################################

nmapFile := /home/mrp/conf/CAtestbed.nmap

logPath := /home/mrp/logs

logInterval := 120 # in minutes

wsmListenSocket := UDP:192.168.0.166:15000 # receive from messagerx

wsmSendSocket := UDP:192.168.0.150:15001 # send to messagetx

cloudListenSocket := UDP:192.168.0.166:15010 # receive from ped server

cloudSendSocket := UDP:107.178.209.212:15010 # send to ped server

awareListenSocket := UDP:127.0.0.1:15021 # receive from mrpaware

awareSendSocket := UDP:127.0.0.1:15022 # sent to mrpaware

tciListenSocket := UDP:127.0.0.1:15023 # receive from tci

tciSendSocket := UDP:127.0.0.1:15024 # send to tci

obsListenSocket := UDP:127.0.0.1:15025 # receive from perfobs

obsSendSocket := UDP:127.0.0.1:15026 # send to perfobs

Figure 29 MRP_DataMgr Interface Diagram

6.3.1.5 Functional Description

An activity diagram which illustrates the operation of the MRP_DataMgr component is

shown in Figure 30. Actions marked with dark green color are operations of the J2735Lib

class (see Section 5.2). When receiving a UDP packet, the MRP_DataMgr first updates

MRP_DataMgr Interfaces

<<manifest>>

mgrSocket.conf Int.nmap

OBE_MessageTX OBE_MessageRX

UDP Socket APIMRP_Performance

Observer

Nomadic_Priority

DataServer

UDP Socket API

UDP Socket API

MRP_Aware

MRP_Traffic

ControllerInterface

J2735LibJ2735Lib API

MRP_DataMgr

MMITSS Detail Design (California)

Page 53 of 96

its memory blocks to store the new data, and then checks the message ID insider the

MMITSS message header and performs the actions as described in Table 5:

• Forward BSM, SRM, PSRM, SSM and SoftCall to the appropriate components;

• Encode SPaT data and send J2735 SPaT; and

• Send polled messages to the poll requester.

This component also sends MAP messages to the RSE_MessageTX and the

Nomadic_PriorityDataServer components every 1 second.

Figure 30 Activity Diagram of MRP_DataMgr

6.3.2 MRP_TrafficControllerInterface

6.3.2.1 Overview of Functionality

The MRP_TrafficControllerInterface component is responsible for providing the protocol

specific interface to the traffic signal controller. The California test network uses Caltrans

Model 2070 traffic controllers with AB3418 protocols over serial RS-232

communications.

The functionalities of this component include:

1. Collect traffic controller’s configuration data (e.g. phase timing, coordination plans,

free plan, detector phase assignment, etc.);

act MRP_DataMgr

Start

readConfFiles

createJ2735LibInstance

createSockets

Received a

packet?

storeData

encode_mapdata_payloadencode_spat_payload sendSPaT

forwardMsg

sendPollResponse

Time to send MAP?

sendMAP[Yes]

[No]

[pollReq]

[BSM/SRM/PSRM/SSM/SoftCall]

[SPaT Data][No]

[Yes]

MMITSS Detail Design (California)

Page 54 of 96

2. Collect signal status data (e.g. active phases and intervals, etc.) from the traffic

controller and populate SPaT data for constructing J2735 SPaT;

3. Collect vehicle detection data (e.g. count and occupancy) from the traffic

controller; and

4. Command MMITSS traffic and priority control to the traffic controller.

AB3418 messages are variable length and have the following format:

Byte 1 - Start Flag 0x7E

Byte 2 - Controller Address 1 to 255

Byte 3 - Control Byte

0x13 – single address Unnumbered Information (UI) control byte

0x03 – broadcast Unnumbered Information (UI) control byte

0x33 – single address Unnumbered Poll (UP) control byte

Byte 4 - IPI (0xC0)

Byte 5 - Message Type

Variable Bytes - Packet Message Data (0 to n bytes)

Byte - 16-bit FCS MSB (most significant byte of the Frame Check Sequence,

bytes #2 to end of Packet Message Data)

Byte - 16-bit FCS LSB (least significant byte of the Frame Check Sequence)

Byte - End Flag 0x7E

Traffic Signal Control Program (TSCP) runs on the Model 2070 traffic controller supports

Message Get (Message Type = 0x87) and Message Set (Message Type = 0x96) to read

and modify TSCP memory blocks. The Get and Set commands are for the purpose of

remotely downloading and modifying controller’s configuration and timing parameters,

not for real-time traffic control. Caltrans Division of Traffic Operations (TrafficOps)

modified TSCP to support the MMITSS functions. The modifications include:

• Push out GetStatus8Response message, which contains detector presence data,

at a rate of 1Hz on port C20S;

• Push out GetStatus8eResponse message, which contains detector count and

occupancy data, every 60 seconds or at the end of a signal cycle on port C20S;

• Push out signal_status message, which contains information for constructing

J2735 SPaT, at a rate of 10Hz on port C21S; and

• Accept vehicular phase call/extension, pedestrian phase call, and signal priority

call (e.g. AB3418 SoftCall) on port C20S.

The structure of the 2070 controller pushing out messages are illustrated in Figure 31.

The GetStatus8Response and GetStatus8eResponse messages are already defined

AB3418 messages. The signal_status message is a new AB3418 message that is

implemented for MMITSS, which includes necessary data fields for this component to

estimate the remaining time for all permitted phases. The definition of data fields of the

signal_status message is shown in Table 6.

MMITSS Detail Design (California)

Page 55 of 96

Figure 31 Structure of Model 2070 Controller Pushing Out Messages

The SoftCall message is also a new AB3418 message that is implemented for MMITSS

traffic and priority control. The message sends to the 2070 controller in the frame defined

in Table 7 below.

TSCP control logic that responds to SoftCall remains the same as the logic that

responds to field sensors (e.g. loop detectors, pedestrian push-buttons, etc.). SoftCall is

implemented as an alternative detection means via AB3418 protocol other than the field

sensor detection. The effect of SoftCall is as follows:

• Pedestrian call will place a pedestrian service request on the phases called;

• Vehicle call will place a service request on the calling phases when the phase is in

yellow or red; and place an actuation (passage) when the phase is in green.

Continuous calls will be required to hold the request (at a rate of 50 milliseconds);

and

• TSP call will place a priority request on the calling phase and the call should be

continuously sent at a rate of 50 milliseconds. The traffic controller will execute

the build-in priority control logic until the TSP call is dropped.

TSCP build-in priority control provides early green and green extension treatments. Per

Caltrans priority control policy, signal priority only applies to the main streets.

class 2070 Pushing out msgs

«struct»

signal_status_mess_t

+ active_force_off: uint8_t ([2])

+ active_interval: std::bitset<8>

+ active_phase: std::bitset<8>

+ interval_timer: uint8_t ([2])

+ local_cycle_clock: uint8_t

+ master_cycle_clock: uint8_t

+ next_phase: std::bitset<8>

+ pattern_num: uint8_t

+ ped_call: std::bitset<8>

+ ped_permissive: uint8_t ([8])

+ permissive: uint8_t ([8])

+ preempt: std::bitset<8>

+ veh_call: std::bitset<8>

«struct»

status8_mess_t

+ controller_status: std::bitset<8>

+ detector_presences: std::bitset<40>

«struct»

status8e_mess_t

+ occupancy: uint8_t ([16])

+ volume: uint8_t ([16])

MMITSS Detail Design (California)

Page 56 of 96

Table 6 AB3418 Signal Status Message

Parameter Note

active_phase Bit set true for phase active

active_interval Bits 0 – 3 � Ring A interval

Bit 4 – 7 � Ring B interval

Interval encoding:

0x00 = Walk

0x01 = Don’t Walk

0x02 = Minimum Green

0x04 = Added Initial

0x05 = Passage

0x06 = Max Gap

0x07 = Min Gap

0x08 = Red Reset

0x09 = Preemption

0x0A = Stop Time

0x0B = Red Revert

0x0C = Max Termination

0x0D = Gap Termination

0x0E = Force off

0x0F = Red Clearance

interval_timer[2] Countdown timer on Ring A and Ring B

pattern_num Current control plan and offset

next_phase Bit set true for phase next (available when the

active phase is in yellow interval)

ped_call Bit set true for phase has pedestrian call

veh_call Bit set true for phase has vehicular call

local_cycle_clock Local cycle timer

master_cycle_clock Master cycle timer

preempt Bit 0 – 3 � EV A – D

Bit 4 – 5 � RR 1 – 2

Bit 6 � Pattern Transition

Bit 7 � TSP

active_force_off[2] Force-off points for phase active

Permissive[8] Permissive periods vehicular phases

ped_permissive[8] Permissive periods for pedestrian phases

MMITSS Detail Design (California)

Page 57 of 96

Table 7 AB3418 Soft-Call Message

Byte # Description Notes Range

1 Start Flag 0x7E

2 Controller Address 1 to 255

3 Control 0x13

4 IPI 0xC0

5 Message – SET 0x9A

6 Vehicle Call/Extend Bits 0-7 � vehicle call on phase 1-8 0 to 255

7 Pedestrian Call Bits 0-7 � pedestrian call on phase 1-8 0 to 255

8 TSP Call Bits 0-7 � TSP call on phase 1-8 0 to 255

9 Spare Reserved 0 to 255

10 Spare Reserved 0 to 255

11 Spare Reserved 0 to 255

12 Spare Reserved 0 to 255

13 Spare Reserved 0 to 255

14 16-bit FCS MSB Checksum MSB 0 to 255

15 16-bit FCS LSB Checksum LSB 0 to 255

16 End Flag 0x7E

6.3.2.2 Functional Requirements

Node: MRP Component Name: MRP_TrafficControllerInterface

Traceability: C2011.001, C2011.302, C2011.005, C2011.006,

A2012, C2012.001, C2012.002, C2101.001, C2101.002,

C2101.003, C2101.004, C2101.305

Description of Responsibility: This component is responsible for providing the

protocol specific interface to the traffic signal controller.

Supporting Text: The MRP_TrafficControllerInterface component is a unique

component for field test network implementation in terms of the protocol supported for

communications. The California test network uses Model 2070 controllers with AB3418

protocols. This component will provide the necessary protocol specific interfaces

including messages and channel control/management capabilities.

6.3.2.3 Derived Requirements

This component should send SoftCall at a rate of 50 milliseconds until the vehicle

passed the intersection stop line.

6.3.2.4 Interfaces

The interfaces of the MRP_TrafficControllerInterface component are shown in Figure 32.

MMITSS Detail Design (California)

Page 58 of 96

Figure 32 Interface Diagram of MRP_TrafficControllerInterface

The required inputs include:

• Controller pushing out messages (GetStatus8Response, GetStatus8eResponse

and signal_status messages with structures as shown in Figure 31);

• Controller configuration data (PhaseFlags, PhaseTiming, CoordPlan, FreePlan,

DetPhaseAsgmt objects with structure as shown in Figure 19); and

• Soft-call request (e.g. SoftCallReq object in Table 3) from the MRP_DataMgr

component.

The provided outputs include:

• SPaT data, controller configuration date, and vehicle detection data

(DetectorCount and DetectorPresence objects in Table 3 and Figure 19) to the

MRP_DataMgr component; and

• AB3418 soft-call message (frame structure as shown in Table 7) to the traffic

controller.

Socket addresses for the required and provided interfaces are input as a configuration

file (e.g. tciSocket.conf). An example of the configuration file is attached below.

#######################################

# Socket configuration file for TCI

#######################################

spatPort := /dev/ttyS0

spat2Port := /dev/ttyS1

dataMgrSendSocket := UDP:127.0.0.1:15023 # send to datamgr

dataMgrListenSocket := UDP:127.0.0.1:15024 # receive from datamgr

6.3.2.5 Functional Description

An activity diagram which illustrates the operation of the MRP_TrafficControllerInterface

component is shown in Figure 33.

MRP_TrafficControllerInterfaces

<<manifest>>

tciSocket.conf

UDP Socket API

MRP_Traffic

ControllerInterfaceMRP_DataMgr

Model 2070

Controller

RS-232

MMITSS Detail Design (California)

Page 59 of 96

Figure 33 Activity Diagram of MRP_TrafficControllerInterface

Serial ports and sockets are opened/created in non-blocking mode, so this process does

not wait for data. It sends controller configuration data, vehicle count data, and detector

presence data when receiving them from the traffic controller. When receiving signal

status data from the traffic controller, this component estimates the remaining time for all

permitted phases, and sends the SPaT data. The estimation is a combination of signal

status data, phase timing data, and coordination/free plan parameter, and follows NEMA

dual-ring control logic. This component updates the list of vehicle, pedestrian and priority

act MRP_TrafficControllerInterface

Start

readConfFiles

openSerialPorts

createSockets

pollControllerConfData

Received

serial data?

sendCountData

sendPresenceDatasendConfData

estPhaseRemainingTime sendSPaTdata

Received soft-call

request? updateSoftcallState

Empty softcal l

set?

sendSoftcall

checkSoftcall2send

[Yes]

[Yes]

[No]

[No]

[signal status]

[status8e]

[Yes]

[status8]

MMITSS Detail Design (California)

Page 60 of 96

calls when it received soft-call requests (including cancel request) from the MRP_Aware

component.

Pedestrian calls are sent to the traffic controller right away and removed from the list.

Vehicle phase calls and early green priority calls are only sent when the calling phase is

in red or yellow. These calls are dropped and removed from the list when either the

calling phase has turned to green or this component has received a cancel soft-call

request from MRP_Aware. Vehicle green extension and priority green extension calls are

only sent when the calling phase is in green, and are removed from the list when either

the phase has turned yellow or the request has been cancelled.

6.3.2.6 References

[1] Standard Communications Protocol for Traffic Signals in California, 1995.

[2] Caltrans. Traffic Signal Management and Surveillance System TSCP Memory Map, Version 1.05A, 2013.

[3] Caltrans. Model 2070 TSCP User Manual, Version 2.22, 2013.

6.3.3 MRP_Aware

6.3.3.1 Overview of Functionality

The MRP_Aware component is responsible for processing BSM, SRM and PSRM

messages, managing requests for priority, and integrating equipped vehicles into the

traffic control logic through phase calls and phase extensions for each of the different

modes (and dynamics) of vehicles. This component is also responsible for providing

SSMs to equipped vehicles and travelers.

MMITSS Detail Design (California)

Page 61 of 96

6.3.3.2 Functional Requirements

Node: MRP Component Name: MRP_Aware

Traceability: C2002.202, C2002.303, C2002.404, C2003.201,

C2006.001, C2007.001, C2007.202, C2007.404, C2008.001,

C2008.202, C2008.303, C2008.404, C2009.001, C2009.302,

C2010.202, C2010.303, C2010.404, C2011.001, C2011.302,

C2011.005, C2011.006, A2103

Description of Responsibility: The MRP_Aware component is responsible for

processing BSM, SRM and PSRM messages, managing requests for priority, and

integrating equipped vehicles into the traffic control logic through phase calls and phase

extensions for each of the different modes (and dynamics) of vehicles, based on signal

controller capability. This component is also responsible for providing SSMs to equipped

vehicles and travelers.

Supporting Text: The California implementation utilizes Model 2070 controller TSCP

(Traffic Signal Control Program) build-in priority control logic. TSCP has been modified

to take inputs of vehicular and pedestrian phase call, vehicle phase extension, and

priority calls using AB3418 protocols.

6.3.3.3 Interfaces

The MRP_Aware interfaces are shown in Figure 34.

Figure 34 MRP_Aware Interface Diagram

The required inputs include:

• J2735 BSM, SRM, PSRM and SPaT messages; and

• Intersection MAP description file for tracking BSMs on the MAP

The provided outputs include:

MRP_Aware

<<manifest>>

awareSocket.conf

UDP Socket APIMRP_DataMgr

J2735Lib

MRP_Aware

J2735Lib API

Int.nmap

MMITSS Detail Design (California)

Page 62 of 96

• J2735 SSM messages;

• AB3418 soft-call request messages; and

• Vehicle trajectory data

Socket addresses for the required and provided interfaces are input as a configuration

file (e.g. awareSocket.conf). An example of the configuration file is attached below.

#######################################

# Socket configuration file for MRP_Aware

#######################################

dataMgrSendSocket := UDP:127.0.0.1:15021 # send to datamgr

dataMgrListenSocket := UDP:127.0.0.1:15022 # receive from datamgr

dsrcTimeout := 2 # in seconds (remove veh from tracking list if timeout

expires)

6.3.3.4 Functional Description

An activity diagram which illustrates the operation of the MRP_Aware component is

shown in Figure 35. This component maintains two lists, a list of active requests for

priority and a list of vehicle trajectories. When receiving a BSM, depending on whether

the vehicle ID is on the vehicle list or not, either a new track is initiated or an existing

track gets updated. When receivingd a SRM or a PSRM, it updates the request list.

In the decision of making soft-call request, this component checks every vehicle on the

priority request list as well as every vehicle on the vehicle list. Rules for selecting soft-call

target are as follows:

• Pedestrian phase call will be sent to the MRP_TrafficControllerInterface right

away;

• Vehicle phase call will be sent if the requested phase is not in green;

• Request for priority has higher priority than vehicle phase extension calls; and

• Green extension priority request has higher priority than early green request, as

priority treatments are provided to the main streets, green extension always

reduce the total delay more than the early green treatment.

MMITSS Detail Design (California)

Page 63 of 96

Figure 35 Activity Diagram of MRP_Aware

6.3.4 MRP_PerformanceObserver

6.3.4.1 Overview of Functionality

The MRP_PerformanceObserver component is responsible for periodically acquiring CV

trajectory data and traffic detector data from the MRP_DataMgr component, based on a

defined observation period, estimating intersection level performance measures from the

acquired data, and sending the estimated measures to the MRP_DataMgr such that the

measures become available to the MMITSS Central System.

As it is described in Section 6.3.3, the MRP_Aware component processes BSM and

SRM messages received from connected vehicles, tracks the vehicles on the

intersection MAP, and when a vehicle moves out the MAP, it sends its trajectory data to

act MRP_Aware

Start

readConfFile

createJ2375LibInstance

createSockets

Received J2735

messages?

decode_payload

Is vehID on l ist?

initialTrack

updateLocation locateVehInMap

updateLocationAware

updateSignalAware

updateReqList

getSoftcallTargets

Empty set?

updateVehList

sendSoftCall

Any vehile

move out

MAP?sendVehTraj

Time to send SSM? sendSSM

[Yes]

[No]

[Yes]

[No]

[BSM]

[SRM, PSRM,

SPaT]

[No]

[No]

[Yes]

[Yes]

[No]

MMITSS Detail Design (California)

Page 64 of 96

the MRP_DataMgr (see Figure 35). The MRP_TrafficControllerInterface component

receives detector count data from the traffic signal controller and sends the count data to

the MRP_DataMgr (see Figure 33). Data structures of vehicle trajectory data message

and detector count data message are illustrated in Figure 19. The intersection level

performance measures are estimated by the MRP_PerformanceObserver component

and the data resource regarding each measure are summarized in Table 8. The signal

request messages (SRMs) are used together with BSMs to obtain the travel time by

mode as the vehicle type information is not included in the Part I BSM. [Note: the issue

of including vehicle classification is currently being considered by the SAE DSRC

Technical Committee (May 22, 2015)].

Table 8 Performance Observations and Associated Data Resources

Performance Metric Abbreviation Unit Data Source

Travel Time

by Movement and Mode TT Second

BSM, SRM � Vehicle trajectory

(MRP_Aware)

Travel Time Variability

by Movement and Mode TTV Second

BSM, SRM � Vehicle trajectory

(MRP_Aware)

Delay

by Movement and Mode DT Second

BSM, SRM � Vehicle trajectory

(MRP_Aware)

Delay Variability

by Movement and Mode DTV Second

BSM, SRM � Vehicle trajectory

(MRP_Aware)

Vehicle Throughput

by Movement VT

Vehicles per Hour

(vph)

Detector count �Movement-

based throughput

(MRP_TrafficControllerInterface)

6.3.4.2 Functional Requirements

Node: MRP Component Name: MRP_PerformanceObserver

Traceability: C2013.001, C2013.002, C2013.003, C2013.004, C2013.005, C2013.006, C2013.007, C2013.008, C2015.001, C2015.002, C2015.003, C2015.004, C2015.005, C2015.006, C2015.007, C2015.008, C8101.101

Description of Responsibility: This component is responsible for acquiring data and estimating intersection level performance measures. The collected measures may be requested by section or system level performance observers.

Supporting Text: The MRP_PerformanceObserver is responsible for the estimation of performance measures from data available from the other MRP level components.

6.3.4.3 Interfaces

The MRP_PerformanceObserver interfaces are shown in Figure 36.

MMITSS Detail Design (California)

Page 65 of 96

Figure 36 MRP_PerformanceObserver Interface Diagram

The required inputs include the vehicle trajectory data and detector data from the

MRP_DataMgr (see Figure 19 for the data structures of the trajectory data and the

detector data). The provided outputs are the estimated performance measures (see

Table 8 for the performance metrics). Socket addresses for the required and provided

interfaces are input as a configuration file (e.g. obsSocket.conf). An example of the

configuration file is attached below.

########################################################

# Socket configuration file for MRP_PerformanceObserver

########################################################

dataMgrSendSocket := UDP:127.0.0.1:15025 # send to datamgr

dataMgrListenSocket := UDP:127.0.0.1:15026 # receive from datamgr

observeDuration := 15 # in minutes (the interval for acquiring data from

datamgr, calculating performance metrics, and sending

metrics to datamgr)

6.3.4.4 Functional Description

When an OBE enters the range of the DSRC radio, the MRP_Aware receives the BSM

and SRM messages from the OBE, maps the location of the OBE on the intersection

MAP, and sends its trajectory data to the MRP_DataMgr when the OBE moves out the

MAP (see Figure 35). The trajectory data includes vehicle ID, timestamp, distance to the

stop-line, and the signal phase to which the vehicle is approaching (see Figure 18). Let �Traj�� be the set of vehicle trajectories associated with phase �(� = 1,2,⋯ ,8) during one observation period (e.g. 15 minutes), and let �� be the number of trajectories in �Traj��. Let �� be the length in meters of the approaching leg and �� be the free flow speed (e.g. the speed limit in this design), the free flow travel time is given by

FFTT� = ���� ,� = 1,2,⋯ ,8 (1)

Let Tr� ∈ �Traj�� be the trajectory of vehicle �(� = 1,2, ⋯ , ��) in �Traj��. It enters the approaching leg at time ��� and leaves the approaching leg at ��� with a distance � meters traveled in between. The average travel speed of the vehicle � is given by

MRP_PerformanceObserver

<<manifest>>

obsSocket.conf

UDP Socket API

MRP_Performance

ObserverMRP_DataMgr

MMITSS Detail Design (California)

Page 66 of 96

�̅� = ���� − ��� (2)

Its travel time and delay are given by equations (3) and (4), respectively.

tt� = ���̅� (3)

dt� = tt� − FFTT� (4)

The travel time and travel time variability associated with phase � are given by equations (5) and (6), respectively.

TT� = "#tt�$ = ∑ tt�&'�()�� (5)

TTV� = +"#��� − ,,�$- = . 1�� / 0tt� − TT�1-&'�() (6)

The delay and delay variability associated with phase � are given by equations (7) and (8), respectively.

DT� = "#dt�$ = ∑ dt�&'�()�� (7)

DTV� = +"#��� − �,�$- = .1�� / 0dt� − DT�1-&'�() (8)

As it is described in Section 6.3.2, the MRP_TrafficControllerInterface component

receives the system detector count data from the 2070 controller and sends the detector

data to the MRP_DataMgr. Let �Count�� be the set of system detector count data associated with phase �(� = 1,2,⋯ ,8) during one observation period (e.g. 15 minutes), and let 7� be the number of detector data messages in �Count��. Each detector data message includes the number of vehicles (8� , � = 1,2,⋯ ,7�) passing over the system detector and the computation period (,� in seconds, � = 1,2,⋯ ,7�). The vehicle throughput associated with phase � is given by VT� = ∑ 8�9'�()∑ ,�9'�() × 3600(vph) (9)

MMITSS Detail Design (California)

Page 67 of 96

6.4 MMITSS Central System Components

6.4.1 MMITSSUserInterface

6.4.1.1 Overview of Functionality

The MMITSSUserInterface component is responsible for providing a user interface for

the system level MMITSS component.

6.4.1.2 Functional Requirements

Node: MMITSS

System

Component Name: MMITSSUserInterface

Traceability: (Overall MMITSS need)

Description of Responsibility: The MMITSSUserInterface component is responsible

for providing a user interface on the system level MMITSS component.

Supporting Text: The user interface is the point where users/operators can access the

PerformanceObserver Visualizations, System_ConfigurationManager, and

System_N_LevelPrioriityConfigurationManager. The user interface can provide

information about the status of the MMITSS system as well as general system

information.

6.4.1.3 Interfaces

6.4.1.3.1 Required (input)

Desired Performance Metrics, Modes’ Weights, Coordination Configuration, N-Level

Priority Hierarchy.

6.4.1.3.2 Provided (output)

Performance Measure Reports, Modes’ Weights, Coordination Configuration, N-Level

Priority Hierarchy.

6.4.1.4 Functional Specification/Description

The MMITSSUserInterface is the point where user/operator can access the

System_ConfigurationManager and System_N_LevelPriorityConfigurationManager, and

visualization of performance measures at the intersection, and section levels. The goal of

this user interface is to make the traffic manager’s interaction with the MMITSS system

as simple and efficient as possible in terms of getting and accomplishing operator traffic

preferences (such as establishing the modes that will receive priority at the intersection

level or section level, allowable phase sequences, dilemma zone protection, etc.). The

user interface can provide information about the status of the MMITSS system as well as

general system information.

MMITSS Detail Design (California)

Page 68 of 96

The MMITSSUserInterface is a web-based application. The web server restricts access

to website content to only those traffic operators who have permission to access control

information. The status and performance web pages get data from these components as

well as from a database.

Figure 37 illustrates the architecture of the MMITSS Central user interface. The

MMITSSUserInterface supports both the Arizona and the California test beds. In

addition, there are pages providing MMITSS project information including the MMITSS

team members who are working on the project.

Figure 37 Web Application Map of MMITSS Central System

Figure 38 shows the system structure of the Performance Observer component. The

right side of the structure depicts the Linux or Windows server which gets the

performance metrics from the application, stores them into a database, and provides

visualization in a dynamic web application (WAMP/LAMP: Windows/Linux Apache

MySQL PHP).

MMITSS Detail Design (California)

Page 69 of 96

Figure 38 Performance Observer System Structure

The user can also configure the N-Level Priority Hierarchy for different modes and class

of vehicles. Emergency Vehicles, Trucks, Transit vehicles and non-motorized vehicles

are considered different modes [Note: MMITSS is capable of handling emergency

vehicle priority/preemption requests. However, this function is not implemented for

California MMITSS application due to non-technical considerations]. Within each mode,

there are different classes, such as BRT, express, and local transit classes, that the user

can rank according to the desired level of priority. For example, within emergency

vehicles, fire trucks may have the highest rank, ambulances are ranked second, and

police are ranked third.

6.4.1.5 Example Applications

Figure 39 shows the sequence diagram of interactions between the

MMITSSUserInterface, System_ConfigurationManager,

System_N_LevelPriorityConfigurationManager, and the Section_PerformanceObserver.

Figure 39 Sequence Diagram of Interactions between MMITSSUserInterface, System_Configuration Manager, System_N_LevelPriorityConfigurationManager, and Section_PerformacneObserver

To visualize all the performance measures observed at the intersection level, radar

diagrams are deployed. Figure 40 is a sample radar diagram. On each axis of this

diagram one of the twelve possible movements at an intersection is shown and the

selected performance measure is the average travel time in seconds for passenger

MMITSS Detail Design (California)

Page 70 of 96

vehicles on each approach. For example, passenger vehicles on the Northbound Right

Turn approach spend the least amount of time (17 seconds), and cars on Eastbound Left

Turn movement have the most travel time (78 seconds).

Figure 40 Sample key to radar diagrams used to describe traffic performance

When considering the complex interactions of the different transportation modes, there is

a need for a tool showing all the modes at the same time. The dashboard provided here

is able to show different measures of various modes under specific scenarios.

Figure 41 below is an example of the dashboard resulting from the simulation model of

the mentioned intersection at two different operational hours (peak vs. off-peak). Vehicle

and pedestrian demand are assumed to be 825 vehicles per hour per lane and 350

pedestrians per hour per crosswalk during the peak period and to be 325 vehicles per

hour per lane and 180 pedestrians per hour per crosswalk during the off-peak period.

This dashboard consists of 4 radar diagrams, one for each mode concentrating on the

following measures: travel time for passenger vehicles, delay for transit, number of stops

for trucks, and delay for pedestrians. The pie chart in the middle depicts the distribution

of modes in the system.

MMITSS Detail Design (California)

Page 71 of 96

Figure 41 Dashboard consisting of four radar diagrams and a pie chart for comparing Peak and Off-peak periods

Figure 42 shows three screenshots of the web application that is used to visualize the

outputs of the MRP_PerformanceObserver component. As stated previously in the

system structure, this web app runs on a Windows or Linux server in the same local

network. On the first page (a), the end user can choose between the configuration page

and the performance report page for active intersections. By selecting the report page

(b), the type of metrics and reports to view can be selected. The report page (c) shows

the sample of the types of graphs and visualizations available.

(a)

MMITSS Detail Design (California)

Page 72 of 96

(b)

(c)

Figure 42 User Interface_PerformanceObserver Web Application

6.4.2 System_ConfigurationManager

Node: MMITSS System

Component Name: System_ConfigurationManager

Traceability: A4101, A4102, 13.3.1; §11.1.2, §11.1.3

Description of Responsibility: The System_ConfigurationManager is responsible for allowing operators to add intersections, create and name sections, assign intersections to sections, and access other critical configuration components including the System_N_LevelPriorityConfigurationManager.

Supporting Text: The configuration manager allows operators the ability to create, change, and delete sections and intersections in the system. This functionality can be accomplished using configuration files, but a simple user interface to view the configuration will support the demonstration of the system.

MMITSS Detail Design (California)

Page 73 of 96

In the Configuration page, the MMITSSUserInterface provides options for both section

and intersection level traffic control. At the section level, the user can specify whether

the section is to be operated as a coordinated section of signals. If so, information

related to coordination, such as the coordinated intersection names, the desired cycle

length, the coordinated phase, the offset for each intersection, and phase splits and

coordination weight should be provided. Figure 43 shows the configuration page of

Dedication – Daisy Mountain Dr. intersection (AZ).

Figure 43 MMITSS Configuration Manager Web Page for Dedication and Daisy Mountain

6.4.3 System_N_LevelPriorityConfigurationManager

6.4.3.1 Overview of Functionality

In each traffic control section, the decision makers define a preference for granting

priority to different classes of vehicles. For example BRT transit is more important than

Express transit and all transit is more important than trucks. In another section trucks are

more important than transit. The System_N_LevelPriorityConfigurationManager is the

mechanism where an operator can configure the policy. Given a policy setting, the

MMITSS Detail Design (California)

Page 74 of 96

configuration manager will set the associated parameters on the MRP and within section

level priority request servers.

6.4.3.2 Functional Requirements

Node: MMITSS

System

Component

Name: System_N_LevelPriorityConfigurationManager

Traceability: A8001, A8002, C8002.402, C8002.503, 13.3.1,

13.3.2, 13.3.3, 13.3.4, 13.3.5; §11.0, §11.1.1, §11.2, §11.3,

§11.4, §11.5

Description of Responsibility: This component is responsible for allowing an operator

to set the policy preferences for the N-Level Priority policy.

Supporting Text: In each traffic control section, the decision makers define a

preference for granting priority to different classes of vehicles. For example BRT transit

is more important that Express transit and all transit is more important than trucks. In

another section trucks are more important than transit. The

System_N_LevelPriorityConfigurationManager is the mechanism where an operator can

configure the policy. Given a policy setting, the configuration manager will set the

associated parameters on the MRP and within section level priority request servers.

6.4.3.3 Interfaces

The System_N_LevelPriorityConfigurationManager interface is shown in Figure 44.

Figure 44 Interfaces of the System_N_LevelPrioirityConfigurationManager

cmp System_N_LevelPriorityConfigurationManager

MMITSSUserInterface

System_N_LevelPriorityConfigurationManager

priorityConfiguration

«use»

«abstraction»

MMITSS Detail Design (California)

Page 75 of 96

6.4.3.3.1 Provided (output)

The System_N_LevelPriorityConfiguratuionManager is responsible for providing a data

structure for the MRP_Priority_Solver and the MRP_PRS_PriorityRequestServer. The

data structure contains weights for transit and truck. If the coordination is considered as

a form of priority, the weight of coordination as well as the cycle, split, offset, and

coordinated phases are determined in the data structure.

6.4.3.4 Functional Specification/Description

The System_N_LevelPriorityConfiguratuionManager uses MMITSSUserInterface to

receive the priority configuration. The user may define the configuration for each

intersection. Figure 45 shows the priority configuration webpage for the Dedication and

Daisy Mountain Dr. intersection (AZ). The user can set the priority policy by changing the

weights. There are slider bars for setting the transit, truck, and coordination weight. By

clicking the “Submit To RSE” button, the priority policy data will be transferred to the

corresponding RSE (in this example Dedication-Daisy Mountain Dr.) and will be stored in

a file. The MRP_Priority_Solver and MRP_PRS_PriorityRequestServer will read the file

to implement the priority policy.

Figure 45 Example of Setting the Priority Policy System_N_LevePrioirityConfigurationManager

In “priorityConfiguration.txt” file, coordination plan such as cycle split and offset is also

considered. (Note: The coordination plan should have obtained from Traffic Signal

Control through TCConfig. But in the current system, it is read from a file).

An example of priorityConfiguration.txt is shown as follow:

MMITSS Detail Design (California)

Page 76 of 96

coordination 1 coordinated_phase 2 6 cycle 100 offset 0 split 30 transit_weight 1 truck_weight 1

6.4.4 Section_PriorityRequestServer

6.4.4.1 Overview of Functionality

The Section_PriorityRequestServer is responsible for the coordination of priority

requests at a section level. [Implementation Note: This section was not implemented].

6.4.4.2 Requirements

Node: MMITSS System

Component Name: Section_PriorityRequestServer

Traceability: C3001.202, C3001.403, C3001.504, C4003.201,

C4003.402, A4004, C4004.201, 13.3.2; 13.3.4; 13.3.5; §11.0,

§11.0.1, §11.0.2, §11.2, §11.2.3, §11.4, §11.4.2, §11.5

Description of Responsibility: This component is responsible for implementing section level priority control based on requests for priority that are acquired from the intersections.

Supporting Text: Section level priority strategy may include coordination of signals to provide priority for emergency vehicles, or transit/trucks. Typically these strategies include coordination changes (e.g. offsets), queue clearance, or creation of green bands. The N-level priority policy is used to determine which modes/classes of vehicles are given preference over other mode/classes of vehicles.

6.4.5 Section_Coordinator

6.4.5.1 Overview of Functionality

The Section_Coordinator provides priority requests for coordination. If the intersection is

configured as part of a section of coordinated intersections, the phase splits, cycle

length, and offset would be mapped to a Coordination Request Message (CoordRM).

The Section_Coordinator receives trajectory of equipped vehicles from all of the

coordinated intersections within a section. It uses the trajectories to determine if the

offset needs to be adjusted to improve progression. [Implementation Note: The

Section_Coordinator was not implemented. Coordination can use the controller

coordination parameters to generate coordination priority requests].

MMITSS Detail Design (California)

Page 77 of 96

6.4.5.2 Requirements

Node: MMITSS

System

Component Name: Section_Coordinator

Traceability: C3003.001, C3003.002, C3003.003, C3003.004,

C3003.005, C3003.006, A3004, C3005.001, C3005.002, A3006,

A3101, C3101.001, C3102.001, C3102.002, A3103, 11.1.2;

13.3.1, 13.3.2, 13.3.3, 13.3.4, 13.3.5; §4.1.1, §4.2, §5, §11.0,

§11.1.2, §11.4.2, §11.5.2

Description of Responsibility: This component is responsible for the identification of

platoons, estimation of the platoon arrival time at intersections in the section, setting

offsets and coordinated phase splits.

Supporting Text: The Section_Coordinator provides adjustments to coordination timing

that considers the movement/progression of platoons within the priority framework.

Trade-offs between priority for different modal vehicles and coordination is part of the N-

level priority policy.

6.4.6 Section_PerformanceObserver

6.4.6.1 Overview of Functionality

The Section_PerformanceObserver is responsible for acquiring data from MRP_DataMgr

component of each intersection and combining them to estimate section level

performance measures, including section travel time (STT in seconds), section delay

(SDT in seconds), and their variabilities (STTV and SDTV in seconds).

6.4.6.2 Functional Requirements

Node: MMITSS System

Component Name: Section_PerformanceObserver

Traceability: C3002.001, C3002.002, C3002.003, C3002.004,

C3002.005, C3002.006, C3002.007, C3002.008, C8101.102,

Description of Responsibility: This component is responsible for acquiring intersection performance estimates and combining them with section level data to estimate section level performance measures.

Supporting Text: Section level performance measures utilize intersection level measures together with section level information (e.g. platoon size, head, tail, stops, travel time, etc.) to provide estimates of section level performance.

6.4.6.3 Interfaces

6.4.6.3.1 Required (Input)

The required data for this component is obtained from MRP_DataMgr in which the main

focus is on collecting intersection performance measures (see Section 6.3.4).

MMITSS Detail Design (California)

Page 78 of 96

6.4.6.3.2 Provided (Output)

The input data will be utilized to calculate and estimate the section performance

measures, including section travel time (STT in section), section delay (SDT in seconds),

and their variabilities (STTV and SDTV in seconds).

6.4.6.4 Functional Description

Let �Traj� be the set of �vehicle trajectories that travel along a section of (7 +1)signalized intersections. The directional section path is composed of 7 links where each link represents the road segment from the stop-line of an upstream intersection to

the stop-line of its downstream intersection. Let ��� be the travel time of vehicle � on link �, the section travel time of vehicle � is then given by �� = / ���9

�() (10)

The intersection level travel time and its variability on link �, estimated at the MRP_PerformanceObserver are given by equations (11) and (12), respectively.

TT� = "�#���$ = ∑ ���&�()� (11)

TTV�- = "�#��� − TT�$- = ∑ ���-&�()� − TT�- (12)

Note that equations (11) and (12) are the same equations (5) and (6) in Section 6.3.4.

The metric of the section travel time is given by

STT = "���� = " C/ ���9�() D = / "�#���$9

�() = / TT�9�() (13)

i.e., the section travel time can be calculated as the summation of intersection level

travel times estimated at the MRP_PerformanceObserver.

The variability of section travel time is defined as

STTV = E"��� − STT�- = ." C/ 0��� − TT�19�() D-

(14)

If assuming ��� are generated by link travel time distributions that are statistically independent, equation (14) becomes

STTV = ./ TTV�-9�() (15)

i.e., the variance of section travel time can be composed as the summation of the link

travel-time variances for all links.

MMITSS Detail Design (California)

Page 79 of 96

Similarly, the section delay time and its variability can be combined from that estimated

at the MRP_PerformanceObserver as follows:

SDT = / DT�9�() (16)

SDTV = ./ DTV�-9�() (17)

In this design, equations (13) and (15) are used for calculating section travel time (STT)

and its variability (STTV). Equations (16) and (17) are used for calculating section delay

time (SDT) and its variability (SDTV).

6.5 Nomadic Device Components (Savari SmartCross)

6.5.1 Nomadic Priority Request Generator

6.5.1.1 Overview of Functionality

This component is responsible for reading the direction that a NomadicMMITSSApp user

is intending to cross the street (by pointing the smartphone at the crosswalk),

determining the lane number of the intended crosswalk, formulating and sending a

Signal Request Message (SRM) to the Nomadic_PriorityDataServer, which in turn

transmits the SRM to the appropriate RSE.

6.5.1.2 Requirements

Node: Nomadic

Device

Component Name: Nomadic_PriorityRequestGenerator

Traceability: C1303.302

Description of Responsibility: This component on the nomadic device is responsible

for formulating and sending a request for service/priority from the nomadic device.

Supporting Text: The Nomadic_PriorityRequestGenerator is analogous to the OBE

based priority request generator, with the additional capability of using the nomadic

devices location services for determining the location and orientation of the device.

6.5.1.3 Interfaces

6.5.1.3.1 Required (input):

This component uses the internal Android APIs to acquire the following on-board sensor

information:

1. GPS sensor of the smartphone for location and speed

MMITSS Detail Design (California)

Page 80 of 96

2. Magnetometer sensor of the smartphone for phone’s orientation in relation to the

Earth’s magnetic field.

The component also uses the decoded MAP structure that is populated when the SAE

J2735 MAP messages are received from the Nomadic_PriorityDataServer.

6.5.1.3.2 Required (output):

This component sends out an ASN.1 encoded SAE J2735 Signal Request Message that

contains the lane number of the crosswalk that the user intends to cross. The SRM is

sent to the Nomadic_PriorityDataServer.

6.5.1.4 Functional Description

The Nomadic_PriorityRequestGenerator is used to formulate and send a signal request

message for pedestrian crossing. This component shall take into account the user’s

position, speed, as well as SPaT and MAP data to determine the user’s position with

respect to the crosswalks. When the user points the smartphone at the crosswalk that

he/she is intending to travel, this component reads the direction that the smartphone is

pointing at, determines the associated lane number of the crosswalk, forms and sends

an SRM to the Nomadic_PriorityDataServer.

6.5.2 Nomadic Signal Status Receiver

6.5.2.1 Overview of Functionality

This component is responsible for receiving MAP and SPaT data from the

Nomadic_PriorityDataServer and make it available to the NomadicMMITSSApp.

6.5.2.2 Functional Requirements

Node: Nomadic

Device

Component Name: Nomadic_SignalStatusReceiver

Traceability: A1301, A1302, 13.3.3; §5, §8, §11.1, §11.3"

Description of Responsibility: This component is responsible for receiving signal

status data from an intersection and making the data available to the NomadicMMITSS

App.

Supporting Text: This is the analogous component to the OBE_MAP_SPaT_Receiver

for the nomadic device. It is responsible for receiving status data and making it available

to the app.

MMITSS Detail Design (California)

Page 81 of 96

6.5.2.3 Interfaces

6.5.2.3.1 Required (input):

SPaT and Map data from the Nomadic_PriorityDataServer.

6.5.2.3.2 Required (output):

This component is internal to the nomadic device and will provide information to the

application logic to determine the phase status for the relevant crosswalk. The output

from this component is sent to the user interface (UI) display component that in turn

alerts the user that his/her message has been acknowledged by the system.

6.5.2.4 Functional Description

This component of the SmartCross application will receive SPaT and MAP data from the

Nomadic_PriorityDataServer. It then decodes the message and determines if the signal

status is applicable based on the user’s location and phone orientation. It also checks if

the user has requested a pedestrian phase (by pointing the smartphone at the crosswalk

and pressing a requesting button on the NomadicMMITSSApp, see Section 6.5.3 below)

and notifies the user whether or not a signal request message has been sent to

Nomadic_PriorityDataServer for requesting service on the pedestrian phase.

6.5.2.5 Unit Test Descriptions (debugging and testing)

This component shall be tested in conjunction with all other components comprising the

Nomadic Traveler Service node. The primary tests for this component are to test the

component output with different user movements:

1. User requests a pedestrian phase and moves away from the curb.

2. User requests a pedestrian phase for a crosswalk and faces another crosswalk.

3. User is at the expected location but GPS errors cause the component to fail.

6.5.3 Nomadic MMITSS Application

6.5.3.1 Overview of Functionality

This is the end-user application that comprises components defined in Sections 6.5.1

and 6.5.2 in addition to:

1. User Interface components

2. SAE J2735 message encode/decode modules

3. Cloud connectivity modules

The smartphone application serves as the user interface component of the SmartCross

system. It enables the pedestrians to interact with the system to:

MMITSS Detail Design (California)

Page 82 of 96

1. Get near real time notifications of crosswalk phases and along with the interval

time;

2. Get audio, visual and haptic alerts when the pedestrian signal state changes or if

the user enters a crosswalk when unsafe to do so;

3. Request a pedestrian phase by pointing the smartphone at the crosswalk the user

wants to use; and

4. Get acknowledgement that the system has received the user’s request.

6.5.3.2 Functional Requirements

Node: Nomadic

Device

Component Name: NomadicMMITSSApp

Traceability: A1303, 13.3.3

Description of Responsibility: The NomadicMMITSS App is a downloadable app that

individuals can install on their nomadic device. It is the base application for the nomadic

device.

Supporting Text: It is assumed that the Nomadic Device is a smartphone (ios based or

android based) and that users will be able to download the app to their device. The app

provides the functionality available to the nomadic device including knowing how to

connect to the Nomadic_PriorityDataServer to get status data and send requests for

service. The Nomadic Device app can be configured to indicate that a user (pedestrian)

is disabled, authorized, and provided additional crossing time if needed.

6.5.3.3 Functional Description

The application’s main purpose is to provide signal timing information in the form of

audio, visual and haptic alerts to the user based on his/her location and phone

orientation. The application received the SPaT and MAP information from the

Nomadic_PriorityDataServer that is, in turn, connected to the RSEs via Internet. The

system architecture of the SmartCross application is as shown in Figure 46.

When the user launches the application, the UI (shown in Figure 47) is presented. If the

phone is used in accessibility mode, then each of the buttons shown on the UI will have

a Talkback mode that provides audio inputs based on where the user is touching the

screen.

Using this screen, the user selects the mode in which the application needs to operate.

When the first mode (e.g. pedestrian) is selected, the UI shown on the left side of Figure

48 is presented. The user interfaces for the other modes (bicycle, visually impaired and

wheelchair) are shown in the middle and right side of Figure 48, respectively.

MMITSS Detail Design (California)

Page 83 of 96

Figure 46 Savari SmartCross System Architecture

Figure 47 SmartCross App User Interface

MMITSS Detail Design (California)

Page 84 of 96

Figure 48 Ped Mode, Bicycle Mode, and Disabled Traveler Mode

For general pedestrians, the left mode shown in Figure 48 is used. This interface

provides the time remaining in seconds if the pedestrian phase interval is active. The

snapshot above shows a screen capture in a scenario where the user is not facing a

crosswalk or the pedestrian interval is inactive. When facing the crosswalk, the user can

request a WALK phase by pressing the blue “Press to Cross” button. When pressed,

the application sends out a Signal Request Message as detailed in Section 6.5.1. On

receipt of this message, the Nomadic_PriorityDataServer component sends a Signal

Status Message back to the pedestrian application. The application will receive this

message and notify the user that the request has been acknowledged. When the blue

“Press to Cross” button is pressed while not facing a crosswalk, an audio alert (“You are

not facing a crosswalk”) is triggered to indicate the user that he/she needs to adjust the

pointing direction of the phone at the crosswalk.

In the bicyclist mode, there is no mechanism to request a phase. The interface merely

displays the time remaining for the phase and along with the signal light state. It also

displays the bicyclist’s speed.

For the visually impaired and mobility impaired mode, the underlying operation is the

same as Mode 1 (general pedestrians). The interface is modified to eliminate the cross

button. Instead, if the user wants to request a crosswalk phase, he/she can do so by

pressing and holding any part of the screen for 3 seconds or until an audio notification is

heard.

In addition to the above operation, multiple scenarios are addressed by the application

to enhance safety.

MMITSS Detail Design (California)

Page 85 of 96

1. If the user enters a crosswalk when the crosswalk is not active, an audio alert

(“Do not walk”) and a strong haptic alert are triggered.

2. When the user is in an active crosswalk, the remaining time along with the

pedestrian signal state and audio beeps accompanied by haptic feedback. The

audio beep frequency and haptic feedback strength are different for WALK and

Flashing Don’t Walk (FDW).

3. When the system is unreliable, a notification communicating that the system is

unreliable and should not be used.

4. The user does not complete crossing the road when the FDW times out, the

green could be delayed. This depends on how the local agency wants to address

such a scenario.

The flowchart in Figure 49 illustrates user interaction with the SmartCross system. The

application sends out Pedestrian Location Messages (PLMs) to the

Nomadic_PriorityDataServer at an adaptive rate based on the proximity to a connected

intersection. Once at the intersection, the application sends out PLMs once a second.

When the Nomadic_PriorityDataServer receives the PLM message, it updates the list of

users at each intersection and begins transmission of SPaT and MAP data to the

appropriate pedestrian users. The application then parses the SPaT and MAP data and

uses it to display alerts/notification to the user.

If the user requests a pedestrian phase, the application encodes the crosswalk lane into

an SAE J2735 SRM message and transmits it to the Nomadic_PriorityDataServer which

forwards the SRM to the appropriate RSE. The application then receives a Signal

Status Message confirming receipt of the SRM.

6.5.3.4 Unit Test Descriptions (debugging and testing)

This component shall be tested in conjunction with all other components comprising the

Nomadic Traveler Service node. The application needs real world testing with the

following variables:

1. Different types of phones

2. Different intersection geometries

3. Different environments ( urban jungles vs. open to sky intersections)

4. Different cellular networks.

MMITSS Detail Design (California)

Page 86 of 96

Figure 49 SmartCross Flow Chart

MMITSS Detail Design (California)

Page 87 of 96

6.5.4 Nomadic_PriorityDataServer

6.5.4.1 Overview of Functionality:

This component is part of the Nomadic Traveler Service. It is responsible for receiving

pedestrian location messages (PLMs) from the nomadic users, receiving SPaT and

MAP messages from RSEs, identifying the intersection that a user is present, and

transmitting the corresponding SPaT and MAP data to the nomadic users.

6.5.4.2 Functional Requirements

Node: Nomadic

Server

Component Name: Nomadic_PriorityDataServer

Traceability: C1303.302

Description of Responsibility: This component is responsible for acquiring

infrastructure data and providing it to nomadic devices using cellular, WiFi, and/or

DSRC enabled smartphones.

Supporting Text: Infrastructure data, including the MAP, SPaT, Signal Status

Messages, etc. needs to be relayed from the MPR to the nomadic device through a

cloud based (or server based) capability. The Nomadic_PriorityDataServer is

responsible for providing this service. This component will host data for all (many)

intersections and the nomadic device will request data (using the NomadicMMITSS

App) based on the device’s location.

6.5.4.3 Interfaces

6.5.4.3.1 Required (input)

• This component should have internet connectivity to communicate with Google

Cloud Messaging (GCM) servers

• This component should receive SPaT and MAP messages from connected RSEs

• This component should receive PLMs and SRMs from the smartphone app

6.5.4.3.2 Provided (output)

• This component should transmit SPaT and MAP data to specific users based on

their location

• This component should forward pedestrian SRMs to the appropriate RSEs

• This component also relays SSM from the RSE to the nomadic user

6.5.4.4 Functional Description

This component receives PLMs from all application users at all connected intersections.

Based on their location and the MAP data, this component matches user locations with

MMITSS Detail Design (California)

Page 88 of 96

the intersections, and transmits the corresponding intersection SPaT and MAP to the

users.

When receiving an SRM from the smartphone app, this component relays the SRM to

the appropriate RSE. The SSM from the RSE is also relayed back to the user.

6.5.4.5 Unit Test Descriptions (debugging and testing)

Since this information is transmitted over the internet using a cellular connection, end-

to-end latency needs to be tested and the time values should be appropriately

compensated using the time mark data element in the J2735 SPaT message.

The system should also be tested for reliability over extended periods of time ranging

from a few hours to weeks.

An assessment of the system when any component of the backend infrastructure fails

needs to be completed before deployment.

6.5.5 Authorized Special User Service

6.5.5.1 Overview of Functionality:

This component is part of the Nomadic Traveler Service and is responsible for

authorizing services for users with special needs. Depending on the type of pedestrians,

this component may allow for an extended pedestrian phase for the particular user. The

functionality of this component is currently limited only to sending a request for extra

crossing time to the RSE.

6.5.5.2 Functional Requirements

Node: Nomadic Server

Component Name: AuthorizedSpecialUserService

Traceability: C1303.301, C1303.302

Description of Responsibility: This component is responsible for ensuring that nomadic devices are authorized participants in the MMITSS system and to authorize special service for pedestrians with a disability.

Supporting Text: This service is required to ensure unauthorized devices do not request service or have any other impact on the MMITSS system. Special users, e.g. pedestrians with disabilities, are required to have special authorization before being allowed to request extra crossing time.

6.5.5.3 Interfaces

This is internal to the Nomadic Traveler Service and does not have any external

interfaces.

MMITSS Detail Design (California)

Page 89 of 96

6.5.5.3.1 Required (input):

Pedestrian Location Message (PLMs)

6.5.5.3.2 Required (output):

Verification of the identity of the user and authorization of special services

6.5.5.4 Functional Specification/Description

This component receives the incoming PLMs from nomadic devices and verifies the

identity of the user requesting special services from a known list of users. Upon

verification, it authorizes the use of special services. These special services are

dependent on support from the traffic signal controller as well as traffic agency policies.

6.5.5.5 Unit Test Descriptions (debugging and testing)

This component will be tested with a known group of users requiring special services.

MMITSS Detail Design (California)

Page 90 of 96

7 Appendices

7.1 Acronyms

API Application Program Interface ASC Actuated Signal Controller ASD Aftermarket Safety Device ASN.1 Abstract Syntax Notation One AZ Arizona BRT Bus Rapid Transit BSM Basic Safety Messages CA California Caltrans California Department of Transportation CCH Control Channel CONOPS Concept of Operations CoordRM Coordination Request Message CRL Certificate Revocation List CTS Cooperative Transportation System CV Connected Vehicle DER Distinguished Encoding Rules DMA Dynamic Mobility Applications DOT Department of Transportation DSRC Dedicated Short Range Communication DT Delay Time DTV Delay Time Variability ENU East-North-Up ETA Expected Time of Arrival EV Emergency Vehicle FHWA Federal Highway Administration GID Geometric Intersection Description GPS Global Positioning Systems ID Identification ISIG Intelligent Traffic Signal System IT Information Technology ITS Intelligent Transportation System MCDOT Maricopa County Department of Transportation MMITSS Multi-Modal Intelligent Traffic Signal System MOE Measures of Effectiveness MRP MMITSS Roadside Processor NEMA National Electrical Manufacturers Association NTCIP National Transportation Communications for ITS Protocol OBE On-Board Equipment PATH Partners for Advanced Transportation Technology PFP Pooled Fund Project PFS Pooled Fund Study PI Principal Investigator

MMITSS Detail Design (California)

Page 91 of 96

PLM Pedestrian Location Message PSID Provider Service Identifier RSE Roadside Equipment SCMS Security Certificate Message Server SCH Service Channel SDT Section Delay Time SDTV Section Delay Time Variability SOBOS Savari On-Board Operating System SPaT Signal Phase and Timing SRM Signal Request Message SSM Signal Status Message STT Section Travel Time STTV Section Travel Time Variability SVN Subversion (PFP Repository with Version Control) SyRS System Requirements TIM Traffic Information Message TOC Traffic Operations Center TSC Traffic Signal Controller TSCP Traffic Signal Control Program TSP Transit Signal Priority UA University of Arizona UCB University of California at Berkeley UDP User Datagram Protocol UML Unified Modeling Language USDOT United States Department of Transportation V2I Vehicle-to-Infrastructure V2V Vehicle-to-Vehicle VDOT Virginia Department of Transportation VIN Vehicle Identification Number WAVE Wireless Access in Vehicle Environment WME WAVE Management Entity WSA WAVE Service Advertisement WSM WAVE Short Message WSMP WAVE Short Message Protocol

MMITSS Detail Design (California)

Page 92 of 96

7.2 Appendix A: Savari RSE Product Specification Sheets

MMITSS Detail Design (California)

Page 93 of 96

7.3 Appendix B: Savari and Arada OBE Product Specification Sheets

MMITSS Detail Design (California)

Page 94 of 96

MMITSS Detail Design (California)

Page 95 of 96

7.4 Appendix C: J2735 ASN.1 Specification (Revision Number DSRC_R36)

MMITSS Detail Design (California)

Page 96 of 96

7.5 Appendix D: Intersection Map Description Files (CA)