SBIR Final Report Phase II B
SBIR Final Report Phase II B
Table of Contents
Summary......................................................................................................................................................3
Tasks and Results.........................................................................................................................................4
Task 1......................................................................................................................................................4
Steps / Results.....................................................................................................................................4
Step 1: Update ATI's Prototype NET-SNMP Toolset to the Latest Version......................................4
Step 2: Obtain NEMA NTCIP 1201/1202 MIBS..............................................................................5
Step 3: Translate the MIBs Using the Free mibs2c Tool...................................................................5
Step 4: Compile the c files to produce shared NTCIP objects..........................................................8
Step 5: Install Shared NTCIP Objects into our SNMP Library.......................................................10
Step 6: Produce a Diagram Showing the NTCIP Object Hierarchy.................................................11
Task 2....................................................................................................................................................22
Steps / Results...................................................................................................................................22
Step 1: Design and Implement the ATI NTCIP Access Program. ................................................22
Step 2: Turn the Program into Library Routines.............................................................................23
Step 3: C/C++ and Ada wrappers....................................................................................................23
Steps 4 and 5: Modify SCOPE and Java GUI to use the new NTCIP Library................................24
Steps 6: Engineering Tests...............................................................................................................24
Task 3....................................................................................................................................................25
Steps / Results...................................................................................................................................25
Step 1: Obtain Dedicated Access to an Intersection........................................................................25
Step 2: Test SCOPE at the “Live” Intersection...............................................................................25
Step 3: Measure Performance..........................................................................................................27
Conclusions and Future Development.......................................................................................................29
Conclusions...........................................................................................................................................29
Future Development and Necessary Enhancements.............................................................................29
Appendix A: Upper Level Design.............................................................................................................30
Appendix B: Live Intersection Testing.....................................................................................................31
Timing Parameters................................................................................................................................31
Additional Photos of Field Testing.......................................................................................................32
2
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Summary
During Phase IIB, Advanced Technologies, Incorporated added an NTCIP interface to their open source
Signal Control Programming Environment (SCOPE). We also tested SCOPE at a “live” intersection
located in Orlando, Florida.
SCOPE development has been funded by the U.S. Department of Transportation under Small Business
Innovative Research (SBIR) grants. SCOPE has its own website, https://sites.google.com/site/
atiscope/home, that contains requirement/design documentation, test videos, test scenarios, and links to
the source code hosted on Sourceforge.
SCOPE:
• Implements Actuated Control with phases running in Min Recall Mode, Max Recall Mode, Gap
Out Mode, Max Out Mode, Presence Mode, Lane-by-Lane Control and newly developed Signal
Transition Logic. Any phase can run any mode.
• Can be controlled using NTCIP 1201 and 1202 commands.
• Contains a Pretimed Mode allowing control of 3-leg, 4-leg, and Texas Diamond Intersections
• Executes under Linux but can be easily ported to any operating system.
• Can handle 64 individual detector inputs and 8 pedestrian inputs.
• Currently runs on three different platforms ...
• A Linux based PC (used for concept and unit testing).
• A PowerPC prototype board with various I/O connectors.
• An Advanced Traffic Controller (tested on PEEK ATC-1000).
• Has been integrated with the open source TEXAS traffic control simulator.
• Has selectable NEMA-TS2 or ITS output formats.
• Contains a Controller Interface Device (CID) software simulator.
• Is dual redundant, containing two different implementations of the same logic.
• The “primary” implementation is in Ada95 with Ada2005 extensions.
• The "secondary" implementation is in C++.
• Contains several different and unique interfaces
• An Advanced Traffic Controller ASCII display / keyboard interface.
• A Java interface capable of controlling SCOPE from anywhere in the world over the
internet.
• A wireless Android Tablet interface allowing a traffic engineer to access SCOPE without
opening a cabinet.
• Has the ability to simulate 64 actuated inputs (new call, has call, had call) and 8
pedestrian inputs.
SCOPE was introduced to the intelligent traffic systems community at the 18th World Congress on
Intelligent Transportation Systems in October, 2011. At this Orlando, Florida conference ATI presented
a paper titled "Real-Time Open Source Traffic Control for the Advanced Traffic Controller". ATI also
had a demonstration booth where all three current SCOPE platforms were running. SCOPE has been
used by university researchers at UCF and showed a 40% throughput increase at a campus intersection.
3
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Task 1
Task 1 is defined as the installation and testing of the latest NTCIP MIBS from the National
Transportation Communications for ITS Protocol website managed by NEMA.
Steps / Results
No packages marked for update means that our snmp toolset is the latest compatible version
with the Linux kernel we are currently running on our development machines,
The snmp toolset was tested locally and remotely. Local testing was done using the NTCIP 1201 and
1202 MIB definitions. For example, the command line:
To read it back
Version 2c of snmp is used (-v 2c) along with private access (-c private). The MIB being accessed is
NTCIP1202-2004 and the value returned is the first phase walk value.
To ensure we could remotely access MIBs (system up time), we accessed a public test MIB located on
the net-snmp.org system.
4
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
This told us that the net-snmp test server has been running for over 20 days but more importantly,
proved we could access MIBs remotely.
Results:
ATI obtained FTP access via NEMA to the NTCIP website. We downloaded and tested every MIB
revision available (the base MIBS, V2.0.11, and V2.2.07). The most stable MIBS for NTCIP 1201 and
1202 definitions were:
8004v0212.mib
1201v0307-Main.mib
1202v0218.mib
It is a simple upgrade to replace MIBS as they are improved and enhanced. The MIB definitions,
directly from the NTCIP website, are placed in a .snmp/mibs directory under the base Linux account.
Each object defined in the 1201 and 1202 MIBS table was translated using the mibs2c tool. The
example shown below is the translation of the NTCIP 1202 MIB phase table object.
You requested mib2c to be run on the following part of the MIB tree:
OID: phaseTable
numeric translation: .1.3.6.1.4.1.1206.4.2.1.1.2
number of scalars within: 0
number of tables within: 1
number of notifications within: 0
**********************************************************************
GENERATING CODE FOR TABLES:
5
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
**********************************************************************
Your tables will likely either fall into one of two categories:
2) row-data storage: The data for the table is held by the agent,
but using an arbitrary (user-provided) data structure for the
representation of an individual row. This is suited for MIB
tables where there is a natural existing data structure,
or where the contents of the table may need to be interpreted
for some additional purpose, other than simply implementing
the table for SNMP requests.
The same template can be generated using
mib2c -c mib2c.table_data.conf phaseTable
6
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
7
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
8
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
These files were compiled using gcc to produce the following shared objects:
General purpose NTCIP access software was developed that provides a generic NTCIP interface to
programs written in different software libraries. This is the core of the ATI NTCIP user library.
9
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
The SNMP daemon configuration file (snmpd.conf) in the Linux /etc directory was modified using
snmp-config. This file tells the snmp daemon where the shared library implementations are for each
MIB definition.
rwuser ATI
###########################################################################
# SECTION: System Information Setup
#
# This section defines some of the information reported in
# the "system" mib group in the mibII tree.
10
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
# arguments: contact_string
syscontact [email protected]
11
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
12
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
13
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
14
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
15
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
secondLast(6),thirdLast(7),fourthLast(8),specificDayOfMonth(9)
+-- READ/WRI EnumVal
dstBeginDayOfWeek(4)
Values:
sunday(1),monday(2),tuesday(3),wednesday(4),thursday(5),
friday(6),saturday(7)
+-- READ/WRI INTEGER dstBeginDayOfMonth(5) Range: 1..31
+-- READ/WRI INTEGER dstBeginSecondsToTransition(6) Range: 0..2147483647
+-- READ/WRI EnumVal dstEndMonth(7)
Values:
january(1),february(2),march(3),april(4),may(5),june(6),
july(7),august(8),september(9),october(10),november(11),
december(12)
+-- READ/WRI EnumVal dstEndOccurrences(8)
Values: first(1),second(2),third(3),fourth(4),last(5),
secondLast(6),thirdLast(7),fourthLast(8),specificDayOfMonth(9)
+-- READ/WRI EnumVal dstEndDayOfWeek(9)
Values:
sunday(1),monday(2),tuesday(3),wednesday(4),thursday(5),
friday(6),saturday(7)
+-- READ/WRI INTEGER dstEndDayOfMonth(10) Range: 1..31
+-- READ/WRI INTEGER dstEndSecondsToTransition(11) Range: 0..2147483647
+-- READ/WRI INTEGER dstSecondsToAdjust(12) Range: 0..21600
+--profilesPMPP(3)
|
+-- READONLY INTEGER maxGroupAddresses(1) Range: 1..255
|
+--hdlcGroupAddressTable(2)
|
+--hdlcGroupAddressEntry(1) Index: hdlcGroupAddressIndex
| Index(1) Range: 1..255
+-- READ/WRI INTEGER hdlcGroupAddress(2)
+-- READ/WRI INTEGER hdlcGroupAddressNumber(3) Range: 0..62
+--phase(1)
|
+-- READONLY INTEGER maxPhases(1) Range: 2..255
|
+--phaseTable(2)
| |
| +--phaseEntry(1) Index: phaseNumber
| |
| +-- READONLY INTEGER phaseNumber(1) Range: 1..255
| +-- READ/WRI INTEGER phaseWalk(2) Range: 0..255
| +-- READ/WRI INTEGER phasePedestrianClear(3) Range: 0..255
| +-- READ/WRI INTEGER phaseMinimumGreen(4) Range: 0..255
| +-- READ/WRI INTEGER phasePassage(5) Range: 0..255
| +-- READ/WRI INTEGER phaseMaximum1(6) Range: 0..255
| +-- READ/WRI INTEGER phaseMaximum2(7) Range: 0..255
| +-- READ/WRI INTEGER phaseYellowChange(8) Range: 0..255
| +-- READ/WRI INTEGER phaseRedClear(9) Range: 0..255
| +-- READ/WRI INTEGER phaseRedRevert(10) Range: 0..255
| +-- READ/WRI INTEGER phaseAddedInitial(11) Range: 0..255
| +-- READ/WRI INTEGER phaseMaximumInitial(12) Range: 0..255
| +-- READ/WRI INTEGER phaseTimeBeforeReduction(13) Range: 0..255
| +-- READ/WRI INTEGER phaseCarsBeforeReduction(14) Range: 0..255
| +-- READ/WRI INTEGER phaseTimeToReduce(15) Range: 0..255
| +-- READ/WRI INTEGER phaseReduceBy(16) Range: 0..255
| +-- READ/WRI INTEGER phaseMinimumGap(17) Range: 0..255
| +-- READ/WRI INTEGER phaseDynamicMaxLimit(18) Range: 0..255
| +-- READ/WRI INTEGER phaseDynamicMaxStep(19) Range: 0..255
| +-- READ/WRI EnumVal phaseStartup(20)
Values: other(1),phaseNotOn(2),greenWalk(3),greenNoWalk(4),
yellowChange(5),redClear(6)
| +-- READ/WRI INTEGER phaseOptions(21) Range: 0..65535
| +-- READ/WRI INTEGER phaseRing(22) Range: 0..255
| +-- READ/WRI String phaseConcurrency(23)
|
+-- READONLY INTEGER maxPhaseGroups(3) Range: 1..255
|
+--phaseStatusGroupTable(4)
| |
| +--phaseStatusGroupEntry(1) Index: phaseStatusGroupNumber
16
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
| |
| +-- READONLY INTEGER phaseStatusGroupNumber(1) Range: 1..255
| +-- READONLY INTEGER phaseStatusGroupReds(2) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupYellows(3) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupGreens(4) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupDontWalks(5) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupPedClears(6) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupWalks(7) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupVehCalls(8) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupPedCalls(9) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupPhaseOns(10) Range: 0..255
| +-- READONLY INTEGER phaseStatusGroupPhaseNexts(11) Range: 0..255
|
+--phaseControlGroupTable(5)
|
+--phaseControlGroupEntry(1) Index: phaseControlGroupNumber
|
+-- READONLY INTEGER phaseControlGroupNumber(1) Range: 1..255
+-- READ/WRI INTEGER phaseControlGroupPhaseOmit(2) Range: 0..255
+-- READ/WRI INTEGER phaseControlGroupPedOmit(3) Range: 0..255
+-- READ/WRI INTEGER phaseControlGroupHold(4) Range: 0..255
+-- READ/WRI INTEGER phaseControlGroupForceOff(5) Range: 0..255
+-- READ/WRI INTEGER phaseControlGroupVehCall(6) Range: 0..255
+-- READ/WRI INTEGER phaseControlGroupPedCall(7) Range: 0..255
+--detector(2)
|
+-- READONLY INTEGER maxVehicleDetectors(1) Range: 1..255
|
+--vehicleDetectorTable(2)
| |
| +--vehicleDetectorEntry(1) Index: vehicleDetectorNumber
| |
| +-- READONLY INTEGER vehicleDetectorNumber(1) Range: 1..255
| +-- READ/WRI INTEGER vehicleDetectorOptions(2) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorCallPhase(4) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorSwitchPhase(5) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorDelay(6) Range: 0..65535
| +-- READ/WRI INTEGER vehicleDetectorExtend(7) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorQueueLimit(8) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorNoActivity(9) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorMaxPresence(10) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorErraticCounts(11) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorFailTime(12) Range: 0..255
| +-- READONLY INTEGER vehicleDetectorAlarms(13) Range: 0..255
| +-- READONLY INTEGER vehicleDetectorReportedAlarms(14) Range: 0..255
| +-- READ/WRI INTEGER vehicleDetectorReset(15) Range: 0..1
|
+-- READONLY INTEGER maxVehicleDetectorStatusGroups(3) Range: 1..255
|
+--vehicleDetectorStatusGroupTable(4)
| |
| +--vehicleDetectorStatusGroupEntry(1) Index: vehicleDetectorStatusGroupNumber
| |
| +-- READONLY INTEGER vehicleDetectorStatusGroupNumber(1) Range: 1..255
| +-- READONLY INTEGER vehicleDetectorStatusGroupActive(2) Range: 0..255
| +-- READONLY INTEGER vehicleDetectorStatusGroupAlarms(3) Range: 0..255
|
+--volumeOccupancyReport(5)
| |
| +-- READONLY INTEGER volumeOccupancySequence(1) Range: 0..255
| +-- READ/WRI INTEGER volumeOccupancyPeriod(2) Range: 0..255
| +-- READONLY INTEGER activeVolumeOccupancyDetectors(3) Range: 0..255
| |
| +--volumeOccupancyTable(4)
| |
| +--volumeOccupancyEntry(1) Index: vehicleDetectorNumber
| |
| +-- READONLY INTEGER detectorVolume(1) Range: 0..255
| +-- READONLY INTEGER detectorOccupancy(2) Range: 0..255
|
+-- READONLY INTEGER maxPedestrianDetectors(6) Range: 1..255
|
17
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
+--pedestrianDetectorTable(7)
|
+--pedestrianDetectorEntry(1) Index: pedestrianDetectorNumber
|
+-- READONLY INTEGER pedestrianDetectorNumber(1) Range: 1..255
+-- READ/WRI INTEGER pedestrianDetectorCallPhase(2) Range: 0..255
+-- READ/WRI INTEGER pedestrianDetectorNoActivity(3) Range: 0..255
+-- READ/WRI INTEGER pedestrianDetectorMaxPresence(4) Range: 0..255
+-- READ/WRI INTEGER pedestrianDetectorErraticCounts(5) Range: 0..255
+-- READONLY INTEGER pedestrianDetectorAlarms(6) Range: 0..255
+--unit(3)
|
+-- READ/WRI INTEGER unitStartUpFlash(1) Range: 0..255
+-- READ/WRI EnumVal unitAutoPedestrianClear(2)
Values: disable(1),enable(2)
+-- READ/WRI INTEGER unitBackupTime(3) Range: 0..65535
+-- READ/WRI INTEGER unitRedRevert(4) Range: 0..255
+-- READONLY EnumVal unitControlStatus(5)
Values: other(1),systemControl(2),systemStandby(3),backupMode(4),
manual(5),timebase(6),interconnect(7),interconnectBackup(8)
+-- READONLY EnumVal unitFlashStatus(6)
Values: other(1),notFlash(2),automatic(3),localManual(4),
faultMonitor(5),mmu(6),startup(7),preempt(8)
+-- READONLY INTEGER unitAlarmStatus2(7) Range: 0..255
+-- READONLY INTEGER unitAlarmStatus1(8) Range: 0..255
+-- READONLY INTEGER shortAlarmStatus(9) Range: 0..255
+-- READ/WRI INTEGER unitControl(10) Range: 0..255
+-- READONLY INTEGER maxAlarmGroups(11) Range: 1..255
|
+--alarmGroupTable(12)
| |
| +--alarmGroupEntry(1) Index: alarmGroupNumber
| |
| +-- READONLY INTEGER alarmGroupNumber(1) Range: 1..255
| +-- READONLY INTEGER alarmGroupState(2) Range: 0..255
|
+-- READONLY INTEGER maxSpecialFunctionOutputs(13) Range: 1..255
|
+--specialFunctionOutputTable(14)
|
+--specialFunctionOutputEntry(1) Index: specialFunctionOutputNumber
|
+-- READONLY INTEGER specialFunctionOutputNumber(1) Range: 1..255
+-- READ/WRI INTEGER specialFunctionOutputControl(3) Range: 0..1
+-- READONLY INTEGER specialFunctionOutputStatus(4) Range: 0..1
+-- READONLY INTEGER unitAlarmStatus2(7) Range: 0..255
+--coord(4)
|
+-- READ/WRI INTEGER coordOperationalMode(1) Range: 0..255
+-- READ/WRI EnumVal coordCorrectionMode(2)
Values: other(1),dwell(2),shortway(3),addOnly(4)
+-- READ/WRI EnumVal coordMaximumMode(3)
Values: other(1),maximum1(2),maximum2(3),maxInhibit(4)
+-- READ/WRI EnumVal coordForceMode(4)
Values: other(1),floating(2),fixed(3)
+-- READONLY INTEGER maxPatterns(5) Range: 1..253
+-- READONLY EnumVal patternTableType(6)
Values: other(1),patterns(2),offset3(3),offset5(4)
|
+--patternTable(7)
| |
| +--patternEntry(1) Index: patternNumber
| |
| +-- READONLY INTEGER patternNumber(1) Range: 1..253
| +-- READ/WRI INTEGER patternCycleTime(2) Range: 0..255
| +-- READ/WRI INTEGER patternOffsetTime(3) Range: 0..255
| +-- READONLY INTEGER patternSplitNumber(4) Range: 1..255
| +-- READ/WRI INTEGER patternSequenceNumber(5) Range: 1..255
|
+-- READONLY INTEGER maxSplits(8) Range: 1..255
|
+--splitTable(9)
18
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
| |
| +--splitEntry(1) Index: splitNumber,splitPhase
| |
| +-- READONLY INTEGER splitNumber(1) Range: 1..255
| +-- READONLY INTEGER splitPhase(2) Range: 1..255
| +-- READ/WRI INTEGER splitTime(3) Range: 0..255
| +-- READ/WRI EnumVal splitMode(4)
Values: other(1),none(2),minimumVehicleRecall(3),maximumVehicleRecall(4),
pedestrianRecall(5),maximumVehicleAndPedestrianRecall(6),phaseOmitted(7)
| +-- READ/WRI INTEGER splitCoordPhase(5) Range: 0..1
|
+-- READONLY INTEGER coordPatternStatus(10) Range: 0..255
+-- READONLY EnumVal localFreeStatus(11)
Values: other(1),notFree(2),commandFree(3),transitionFree(4),inputFree(5),
coordFree(6),badPlan(7),badCycleTime(8),splitOverrun(9),invalidOffset(10),
failed(11)
+-- READONLY INTEGER coordCycleStatus(12) Range: 0..510
+-- READONLY INTEGER coordSyncStatus(13) Range: 0..510
+-- READ/WRI INTEGER systemPatternControl(14) Range: 0..255
+-- READ/WRI INTEGER systemSyncControl(15) Range: 0..255
+--timebaseAsc(5)
|
+-- READ/WRI INTEGER timebaseAscPatternSync(1) Range: 0..65535
+-- READONLY INTEGER maxTimebaseAscActions(2) Range: 1..255
|
+--timebaseAscActionTable(3)
| |
| +--timebaseAscActionEntry(1) Index: timebaseAscActionNumber
| |
| +-- READONLY INTEGER timebaseAscActionNumber(1) Range: 1..255
| +-- READ/WRI INTEGER timebaseAscPattern(2) Range: 0..255
| +-- READ/WRI INTEGER timebaseAscAuxillaryFunction(3) Range: 0..255
| +-- READ/WRI INTEGER timebaseAscSpecialFunction(4) Range: 0..255
|
+-- READONLY INTEGER timebaseAscActionStatus(4) Range: 0..255
+--preempt(6)
|
+-- READONLY INTEGER maxPreempts(1) Range: 1..255
|
+--preemptTable(2)
| |
| +--preemptEntry(1) Index: preemptNumber
| |
| +-- READONLY INTEGER preemptNumber(1) Range: 1..255
| +-- READ/WRI INTEGER preemptControl(2) Range: 0..255
| +-- READ/WRI INTEGER preemptLink(3) Range: 0..255
| +-- READ/WRI INTEGER preemptDelay(4) Range: 0..65535
| +-- READ/WRI INTEGER preemptMinimumDuration(5) Range: 0..65535
| +-- READ/WRI INTEGER preemptMinimumGreen(6) Range: 0..255
| +-- READ/WRI INTEGER preemptMinimumWalk(7) Range: 0..255
| +-- READ/WRI INTEGER preemptEnterPedClear(8) Range: 0..255
| +-- READ/WRI INTEGER preemptTrackGreen(9) Range: 0..255
| +-- READ/WRI INTEGER preemptDwellGreen(10) Range: 0..255
| +-- READ/WRI INTEGER preemptMaximumPresence(11) Range: 0..65535
| +-- READ/WRI String preemptTrackPhase(12)
| +-- READ/WRI String preemptDwellPhase(13)
| +-- READ/WRI String preemptDwellPed(14)
| +-- READ/WRI String preemptExitPhase(15)
| +-- READONLY EnumVal preemptState(16)
Values: other(1),notActive(2),notActiveWithCall(3),entryStarted(4),
trackService(5),dwell(6),linkActive(7),exitStarted(8),maxPresence(9)
| +-- READ/WRI String preemptTrackOverlap(17)
| +-- READ/WRI String preemptDwellOverlap(18)
| +-- READ/WRI String preemptCyclingPhase(19)
| +-- READ/WRI String preemptCyclingPed(20)
| +-- READ/WRI String preemptCyclingOverlap(21)
| +-- READ/WRI INTEGER preemptEnterYellowChange(22) Range: 0..255
| +-- READ/WRI INTEGER preemptEnterRedClear(23) Range: 0..255
| +-- READ/WRI INTEGER preemptTrackYellowChange(24) Range: 0..255
| +-- READ/WRI INTEGER preemptTrackRedClear(25) Range: 0..255
|
+--preemptControlTable(3)
19
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
|
+--preemptControlEntry(1) Index: preemptControlNumber
|
+-- READONLY INTEGER preemptControlNumber(1) Range: 1..255
+-- READ/WRI INTEGER preemptControlState(2) Range: 0..1
+--ring(7)
|
+-- READONLY INTEGER maxRings(1) Range: 1..255
+-- READONLY INTEGER maxSequences(2) Range: 1..255
|
+--sequenceTable(3)
| |
| +--sequenceEntry(1) Index: sequenceNumber,sequenceRingNumber
| |
| +-- READONLY INTEGER sequenceNumber(1) Range: 1..255
| +-- READONLY INTEGER sequenceRingNumber(2) Range: 1..255
| +-- READ/WRI String sequenceData(3)
|
+-- READONLY INTEGER maxRingControlGroups(4) Range: 1..255
|
+--ringControlGroupTable(5)
| |
| +--ringControlGroupEntry(1) Index: ringControlGroupNumber
| |
| +-- READONLY INTEGER ringControlGroupNumber(1) Range: 1..255
| +-- READ/WRI INTEGER ringControlGroupStopTime(2) Range: 0..255
| +-- READ/WRI INTEGER ringControlGroupForceOff(3) Range: 0..255
| +-- READ/WRI INTEGER ringControlGroupMax2(4) Range: 0..255
| +-- READ/WRI INTEGER ringControlGroupMaxInhibit(5) Range: 0..255
| +-- READ/WRI INTEGER ringControlGroupPedRecycle(6) Range: 0..255
| +-- READ/WRI INTEGER ringControlGroupRedRest(7) Range: 0..255
| +-- READ/WRI INTEGER ringControlGroupOmitRedClear(8) Range: 0..255
|
+--ringStatusTable(6)
|
+--ringStatusEntry(1) Index: sequenceRingNumber
|
+-- READONLY INTEGER ringStatus(1) Range: 0..255
+--channel(8)
|
+-- READONLY INTEGER maxChannels(1) Range: 1..255
|
+--channelTable(2)
| |
| +--channelEntry(1) Index: channelNumber
| |
| +-- READONLY INTEGER channelNumber(1) Range: 1..255
| +-- READ/WRI INTEGER channelControlSource(2) Range: 0..255
| +-- READ/WRI EnumVal channelControlType(3)
Values: other(1),phaseVehicle(2),phasePedestrian(3),overlap(4)
| +-- READ/WRI INTEGER channelFlash(4) Range: 0..255
| +-- READ/WRI INTEGER channelDim(5) Range: 0..255
|
+-- READONLY INTEGER maxChannelStatusGroups(3) Range: 1..255
|
+--channelStatusGroupTable(4)
|
+--channelStatusGroupEntry(1) Index: channelStatusGroupNumber
|
+-- READONLY INTEGER channelStatusGroupNumber(1) Range: 1..255
+-- READONLY INTEGER channelStatusGroupReds(2) Range: 0..255
+-- READONLY INTEGER channelStatusGroupYellows(3) Range: 0..255
+-- READONLY INTEGER channelStatusGroupGreens(4) Range: 0..255
+--overlap(9)
|
+-- READONLY INTEGER maxOverlaps(1) Range: 1..255
|
+--overlapTable(2)
| |
| +--overlapEntry(1) Index: overlapNumber
| |
| +-- READONLY INTEGER overlapNumber(1) Range: 1..255
20
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
21
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Task 2
Task 2 is to define an NTCIP (1201 and 1202) interface that is decoupled from SCOPE. It is to be a
stand alone library that is capable of inclusion in any vendor's product. C, C++, and Ada (83, 95, and
2005) interfaces to the library should be developed. Testing should be performed using SCOPE on the
agent (server) side and SCOPE's Java GUI on the client (manager) side.
Steps / Results
The NTCIP 1201 and 1202 mibs were processed by the snmp mib2c program. This resulted in the
following files:
22
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
At this point, each file was just a skeleton without implementation code. These skeletons were modified
to contain persistent storage for each table (i.e. object) declared in each file. ATI developed an NTCIP
library (ntcip_lib.c) that uses sockets and spawned threads to provide both direct interfaces to these
objects. Next, each file was compiled into a stand alone shared library. This process is shown in the
design diagram's blue cloud found at the end of this section.
Results:
Next, Ada and C/C++ access wrapper programs were developed. NTCIP.adb contains methods and data
structures allowing a program to receive modified NTCIP data from a central management system and
pass it along to a user's application (in the diagram, this is represented by our test program,
test_ntcip_agent.adb). Interface.c contains methods and data structures that permit a user's application
(again, our test program here) to send modified NTCIP data to a Central Management Station. This is
shown at the bottom of the diagram below the “blue cloud”.
The NTCIP shared libraries are installed on the target computer. We first installed them on our host
development system for initial testing and then later we cross compiled and installed them on our
prototype controller for engineering testing. We attempted to install them on our PEEK ATC-1000
controller but ran into the problem that the PEEK controller DOES NOT HAVE SNMP. We contacted
PEEK who replied that they implemented NTCIP directly into their own controller software instead of
using the standard snmp daemon. We tried to build and install SNMP for the PEEK ATC-1000 but the
PEEK uses an old version of uClibc that has bugs in it. These bugs are exposed when running the snmp
daemon. PEEK acknowledged the problem but will not fix it because updating uClibc would change
their whole infrastructure.
The SNMP daemon process uses the snmpd configuration file to determine where to find these libraries.
We made the necessary modifications to the snmpd configuration file to allow the dynamic launching of
each of our ATI NTCIP shared objects.
We simulated a Central Management system by writing the program Test_NTCIP_Manager. This uses
the same interface libraries (ntcip.adb and interface.c) that the agent or server side uses.
Finally, we ran, on the host, a complete test of every single NTCIP 1201 and 1202 objects. The objects
that were read only were not written to (writing to a read only object will cause the SNMP daemon to
output an error message. The NTCIP objects that are read-write were read, modified, and then read
again. The test programs we developed automated the whole testing process. The output from these
tests is quite large (316 pages) because each field of every object was tested. Please see
https://sites.google.com/site/atiscope/ntcip/engineering-test-results for the results. Also see
https://sites.google.com/site/atiscope/ntcip/engineer-test-video to watch the tests being run.
23
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Steps 4 and 5: Modify SCOPE and Java GUI to use the new NTCIP Library.
Results:
1) We added conditional compilation flags to SCOPE's Makefiles and source code to allow
compiling SCOPE with or without the new NTCIP libraries.
2) We added close to 2000 new lines of code to SCOPE. The bulk of this, over 1800 lines,
was a new package called nticp_interface that makes direct use of the new NTCIP interface
libraries we developed.
3) Every time SCOPE modifies a variable that has an equivalent NTCIP object, SCOPE uses
the new interface to modify that object to the same value.
4) Every time a Central Management System modifies an NTCIP object used in SCOPE, the
new ATI NTCIP libraries send that data to the SCOPE program and SCOPE modifies its own
data to reflect the change. If the data is part of SCOPE's external interface, the data is sent to
that interface.
Results:
ATI's NTCIP 1201 and 1202 libraries were integrated with SCOPE in an Intelligent
Transportation System (ITS) roadside cabinet. SCOPE's prototype hardware was used for this
integration. Net-SNMP was cross compiled for the prototype hardware using gcc/g++
PowerPC Linux target cross compilers built by ATI. SCOPE was modified to link in the NTCIP
libraries and use the methods provided to receive and send NTCIP data.
We simulated a Central Management Station sending and receiving NTCIP commands. The
video at https://sites.google.com/site/atiscope/ntcip/ntcip-scope-its-cabinet shows the setting of
the NTCIP 1202 red clear parameter. The original value was 3 seconds. We modified it to 6
seconds using an NTCIP command. The new red clear time shows up instantly in SCOPE
(visible in the SCOPE's GUI). The load switches in the cabinet have indicators (A,B,C) that
reflect the state of the light connected to them. The video shows the transition from a phase's
red state termination to the next phase's green start changes from 3 to 6 seconds.
Our video shows SCOPE being controlled by its Java GUI. SCOPE/with NTCIP also works
with the wireless Android tablet GUI. The video also shows SCOPE controlling an ITS
cabinet. There is no difference between SCOPE controlling an ITS cabinet or a NEMA TS-2
cabinet. There is a check-box in SCOPE's control GUI that selects the output - ITS, NEMA-
TS2, or none (for PC testing). SCOPE is easily modified to output any traffic control protocol.
24
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Task 3
Task 3 is to test SCOPE with the NTCIP interface at a live intersection. ATI will attempt to perform this
test using an NTCIP compliant Central Management System. If this is not feasible, then ATI will
perform the live intersection tests using its new NTCIP Java GUI and SCOPE.
Steps / Results
Results:
We held meetings with Dr. Essam Radwan of University of Central Florida. Dr. Radwan has an
M.S.C.E and PhD in Transportation Engineering from Purdue University. He is a professor and
Executive Director of the Center for Advanced Transportation Systems Simulation at UCF. We
contacted Major David Zambri of the UCF Police department to obtain access to a campus intersection.
Lastly, we contacted Hazem El-Assar, Chief Engineer of Orange County Traffic Engineering to obtain
approval for the testing.
U.C.F. did not have a pure NEMA-TS2 Type 1 (SDLC) intersection. Most of the intersections at U.C.F.
and throughout the Orange County, Florida area in general are of a hybrid analog/digital nature (they use
NEMA-TS2 Type 2).
Hazem El-Assar was able to locate a pure NEMA-TS2 Type 1 intersection in Orlando. The crossroads
are West Oak Ridge and Harcourt.
Results:
Unfortunately, a central management station was not available at UCF. However, we tested SCOPE live
at our Orlando intersection with the help of an Orange County technician. The intersection contained an
Eagle ATC controller that we replaced with our PEEK ATC-1000 running SCOPE. We entered the same
intersection parameters into SCOPE that was currently used by the Eagle controller (see Appendix B).
At first, the intersection did not come out of flash mode. This was because we did not have the +24v
latch set on connector A. The cabinet's MMU could not detect a controller present. In testing with our
virtual TS2 cabinet, there is no +24 pin detector. According to ATSI, the cabinet's maker:
25
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Since TVC-3500 is connected to the Controller Unit through an SDLC bus, the Virtual MMU
cannot monitor the CVM on the CU. It also does not have a 24V power supply. Thus, +24V
Latch and CVM/Fault Monitor Latch are only reflected in the Type 129 MMU Inputs/Status
response frame.
Because the virtual cabinet only connects to the SDLC port and not connector A (where the 24v latch is),
we did not implement it in SCOPE. We have modified SCOPE to now latch the correct pin on connector
A.
The next problem was that although SCOPE sets traffic signals to red as a default, it did not put the
Pedestrian signals into red (at default). This caused the MMU to fault and put the intersection into flash.
To continue testing, the technician pulled the pedestrian load switches out of the backplane.
Issue three was the mapping of channels to phases. SCOPE has an internal mapping capability that is
not exposed to the user interface. In order to map channels to phases, a table must be modified inside of
SCOPE and SCOPE must be recompiled. The county technician suggested we add the capability to the
user interface to perform this mapping. Although we knew there would be problems with left turn lanes,
we tested SCOPE using the default intersection channel mapping. It worked fine until a car passed over
a left turn loop. The intersection under test does not have a 1 to 1 mapping of channels to phases like
SCOPE's default and we could not recompile and download a new version of SCOPE at the site.
To continue testing, we changed the control mode of SCOPE from using max recall on the main road
(Oak Ridge) and presence mode on the minor road (Harcourt). This allowed the cycling of intersection
lights by SCOPE.
At this point, we were able to control the intersection. However, there was a problem in that Phase 4
and Phase 8 were programmed in the MMU to be exclusive at this intersection because visibility of
vehicles passing through these phases was a safety issue. The standard NEMA-TS2 ring diagram shows
these Phases able to execute concurrently. SCOPE's internal software will have to be modified to permit
a user to assign phases as conflicting (in addition to the conflicts already defined in SCOPE for the
NTCIP ring structure).
In summary, testing at a live intersection revealed the following issues (in order of priority):
1) SCOPE needs to latch the 24v output pin so the MMU doesn't trip and recognizes a controller is
present.
3) SCOPE must be able to map sensors to phases through the controller menus and also the GUIs.
SCOPE also needs to allow the ability to assign additional conflicting phases when a traffic engineer
needs to prevent phases from running concurrently.
26
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
4) SCOPE needs to implement an external reset. SCOPE's user interface on the controller already has a
reset command but it is not currently implemented.
5) SCOPE needs to allow manual interval advancing, process “stop time” command, and allow manual
step by step of sequencing.
Results:
SCOPE's NTCIP interface will run on any controller that has the ability to run SNMP. PEEK's ATC-
1000 controller DOES NOT HAVE this capability. PEEK implements NTCIP directly in their
controller software, bypassing SNMP. A case could be made that the PEEK controller does not conform
to the NTCIP specification as shown below:
27
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
The NTCP specification clearly shows the use of SNMP as the application layer interface. As stated
above, the PEEK ATC-1000 controller does not support SNMP.
ATI attempted to install SNMP on the PEEK controller without success. This is because the PEEK
controller uses an outdated version of the uClibc that contains errors. These errors are not exposed in
PEEK's own software because they do not use the specific uClibc functions that contain them. These are
known issues in uClibc that have been corrected in later releases. PEEK has chosen not to use a more
recent version of uClibc because it would mean rebuilding their entire infrastructure.
Therefore, ATI tested the NTCIP interface in an Intelligent Transportation Systems cabinet supplied by
Houston TRANSTAR. As mentioned in Task 2, the test videos can be found on the SCOPE website.
These videos show control of an intersection using SCOPE's NTCIP interface.
28
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Conclusions
The Phase IIB software development of SCOPE's NTCIP interface added the ability for a Central
Management Station (CMS) to issue NTCIP 1201 and 1202 commands to SCOPE. In addition, SCOPE
now reports its status via the NTCIP interface. The NTCIP interface can easily be turned on and off via
SCOPE's user interfaces and also execution command lines in SCOPE's start-up scripts.
SCOPE has now been tested at a live intersection with traffic. Testing SCOPE in a traffic cabinet in
Orlando proved that SCOPE's software has the ability to control a live intersection.
We are planning on continuing testing at the Orange County Traffic test facility. This facility has 3
different types of NEMA TS2 cabinets hooked up to 4 traffic lights. These cabinets are complete and
have MMUs. Thanks to cooperation of the Orange Country Traffic Engineering department, we will be
able to test our new 24 volt monitor logic and also our pedestrian red presets. Borrowing the test facility
will eliminate the need to take over a running intersection. It will also allow us to implement and test
quick fixes to any issues that occur.
https://sites.google.com/site/atiscope/
This site contains much more information than can be included in this report.
ATI is classified as a very small, woman owned corporation. We do not have the capital to invest in
building the production hardware. Therefore, we are actively searching for partners to join us in
building production hardware and marketing/selling SCOPE. We have contacted several companies that
specialize in turning prototype hardware into production units. In addition, we have held meetings with
venture capitalist firms. Lastly, we are also contacting Florida universities to see if they would like to
participate in bringing SCOPE to market.
All venture capital firms we have spoken to agree: Without production hardware SCOPE will not
be marketable.
29
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
sets/
gets
NTCIP.adb
NTCIP.adb Interface.c
30
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Timing Parameters
31
Signal State Transition Software NTCIP Interface / Live Testing SBIR 06-FH1 Phase II B Final Report
Feb 10, 2013 Advanced Technologies, Incorporated
Examining the Cabinet before Removing the Controller The Intersection - Harcourt and Oak Ridge, Orlando
32