DRT Final Report - California PATH - University of California, Berkeley
Transcription
DRT Final Report - California PATH - University of California, Berkeley
CALIFORNIA PATH PROGRAM INSTITUTE OF TRANSPORTATION STUDIES UNIVERSITY OF CALIFORNIA, BERKELEY Reservation, Scheduling, and Navigation System for a Checkpoint DRT Service Yuwei Li, Nicole Foletta, Ken Elkabany, Fan Yang, Anthony Wee, Michael Cassidy University of California, Berkeley California PATH Research Report UCB-ITS-PRR-2007-12 This work was performed as part of the California PATH Program of the University of California, in cooperation with the State of California Business, Transportation, and Housing Agency, Department of Transportation, and the United States Department of Transportation, Federal Highway Administration. The contents of this report reflect the views of the authors who are responsible for the facts and the accuracy of the data presented herein. The contents do not necessarily reflect the official views or policies of the State of California. This report does not constitute a standard, specification, or regulation. Final Report for Task Order 5402 August 2007 ISSN 1055-1425 CALIFORNIA PARTNERS FOR ADVANCED TRANSIT AND HIGHWAYS Reservation, Scheduling, and Navigation System for a Checkpoint DRT Service Yuwei Li, Nicole Foletta, Ken Elkabany, Fan Yang, Anthony Wee, and Michael Cassidy California Partners for Advanced Transit and Highways Institute of Transportation Studies University of California at Berkeley Final Report for PATH Task Order 5402 June 2006 Acknowledgement This work was performed as part of the California PATH Program of the University of California, under PATH Task Order 5402. The contents of this report reflect the views of the authors who are responsible for the facts and the accuracy of the data presented herein. The authors thank Tony Divito, Senior Planner at AC Transit, for his ongoing support and assistance. We also thank the managers and staff at the AC Transit Central Dispatch in Emeryville for meeting with us and providing valuable information. Finally, we thank Dan Lovegren and Lindsee Tanimoto of Caltrans Division of Research and Innovation for their assistance. 2 Abstract The report fully documents a prototype system that has been developed to serve DemandResponsive Transit (DRT). The DRT service is provided by means of buses and has been proposed for deployment (as a pilot project) in Fremont, California. The service itself is to be deployed in a “hybrid”fashion; i.e., service alternates between a traditional fixedroute mode and the DRT mode from one bus trip to the next. The report describes the prototype systems from the perspective of the system users (i.e., customers, bus drivers and administrators). Further, the report describes system configuration and deployment. Software development notes are also provided so as to document the lessons learned from our development work. In short, the works shows that reserving DRT trips and dispatching the buses can be done in automated fashion. Keywords: Automated Demand-responsive Dispatching System, Public Transit 3 Executive Summary The report fully documents a prototype system that has been developed to serve DemandResponsive Transit (DRT). The DRT service is provided by means of buses and has been proposed for deployment (as a pilot project) in Fremont, California. The service itself is to be deployed in a “hybrid”fashion; i.e., service alternates between a traditional fixedroute mode and the DRT mode from one bus trip to the next. Details of the DRT service strategy have been fully documented in an interim report (submitted in May, 2005), and therefore only briefly described in the current report. The primary objective of this present report is to present the communications systems that we have developed to facilitate the DRT. The prototype system includes a web-based user interface by which customers (i.e., prospective bus passengers) can reserve trips on the DRT. Although the reservation system is currently web-based, an automated telephone-based component can be added in the future. Customer requests are automatically entered in the dispatching system. This latter system uses the request information to offer the customer a number of bus run options (both fixed-route and DRT) to satisfy customer travel needs. The system also determines whether or not a DRT request can be honored (since a limited number of customers can be served on any single DRT run so that run times do not become large). Any customers who make requests for a DRT run after that run has reached its capacity to service requests are notified of the fixed-route bus runs nearest in time to the DRT run. These customers may then elect to travel via a fixed-route bus. For DRT requests that can be honored, the customer makes a reservation by entering the identification number of a prepared ticket. Once customer reservations for a given DRT run are finalized (when the run has reached its trip time constraint or shortly before the scheduled start of the run), the dispatching component determines the route to be followed for that run. (Note that a DRT bus can take “shortcuts”to reduce passenger trip times; the bus need only visit those stops along the route needed to served reserved passenger trips.) Bus routing on a DRT run is automatically performed in a fairly simple way, since checkpoints (i.e., bus stops) along the route are numbered in sequence and a bus always visits checkpoints in ascending or descending numbered order.. Shortly before beginning a DRT run, the bus driver downloads to an onboard computer (e.g. a Pocket PC) pertinent information about the run. These downloads are performed via wireless communications. Once the run actually begins, the navigation component embedded in the system provides the driver with driving directions by means of both graphical displays and voice guidance. 4 The report describes the above systems from the perspective of the system users (i.e., customers, bus drivers and administrators). Further, the report describes system configuration and deployment. Software development notes are also provided so as to document the lessons learned from our development work. In short, the works shows that reserving DRT trips and dispatching the buses can be done in automated fashion. 5 Table of Contents 1 Introduction.....................................................................................................8 2 Overview ........................................................................................................10 3 System Functionality and Usage ......................................................................12 4 5 3.1 Reservation.......................................................................................14 3.2 Navigation........................................................................................16 System Deployment and configuration ............................................................21 4.1 Reservation and Scheduling.............................................................21 4.2 Route Data and Map Generation......................................................26 4.3 Navigation........................................................................................31 Software Development Notes..........................................................................33 5.1 Tools Used .......................................................................................33 5.2 Program Flow...................................................................................33 5.3 Key Technical Details ......................................................................34 5.4 Source File Descriptions ..................................................................37 5.5 Compilation Process ........................................................................37 5.6 Complications ..................................................................................38 5.7 Conclusions ......................................................................................39 6 List of Figures Figure 1: System Components .............................................................................10 Figure 2: Map of Proposed Checkpoint Service ..................................................12 Figure 3: Route Selection.....................................................................................14 Figure 4: Display of Bus Travel Times................................................................15 Figure 5: Trip Request .........................................................................................15 Figure 6: Reservation Confirmatio n ....................................................................15 Figure 7: Startup Screen of Navigation Program.................................................17 Figure 8: Configuration Screen............................................................................17 Figure 9: Route Setup ..........................................................................................18 Figure 10: Manifest for a Bus Trip ......................................................................19 Figure 11: Route Navigation................................................................................20 Figure 12: Web-based Configuration Interface ...................................................24 Figure 13: View and Configure Existing Route ..................................................25 Figure 14: Route Creation....................................................................................27 Figure 15: Route Data Generation.......................................................................29 7 1 INTRODUCTION The dominant type of demand responsive transit (DRT) in the United States is door-to-door service. It is often offered in response to Title II of the Americans with Disabilities Act (ADA) of 1990 which states that public transit systems that provide fixed-route services must provide both accessible fixed-route services and complementary paratransit service for disabled persons who cannot use fixed-route transit. A major downfall of door-to-door DRT systems is the high operating costs, which greatly outweigh revenues. For example, door-to-door DRT service for AC Transit in 2003 had an average operating expense of $24.8 and revenue of $1.5 per passenger trip. This is due in part to the complexity of the system. Door-to-door services usually cover a large service area with many possible combinations for sequencing passenger pickups and for routing. In addition, it is difficult to add last minute trip requests, such that reservations must often be made at least one day in advance. On the other hand, fixed route bus service is often inefficient. Such service in areas of low demand density is often characterized by long headways and empty buses. In some circumstances, a checkpoint DRT strategy can be more attractive than the above alternatives for serving the general population. In a checkpoint system, the bus will visit a predetermined, densely located set of stops. Unlike a traditional fixed route system, however, the bus can take shortcuts along the route; routes are altered from one bus trip to the next in such ways as to serve the passengers who reserved “seats”for each trip. In a previous report1 , a checkpoint DRT service was proposed for a 3-square mile area in Fremont, California, a suburb in the San Francisco Bay Area. Fixed-route service is currently offered in the community by AC Transit, the regional bus provider. Service reductions in the area occurred in 2003, a result of persistently low demand for bus travel. Yet in order to satisfy certain policies concerning access (e.g. maximum walking distance to access bus lines), certain low-demand routes were retained. We argue that the proposed checkpoint service is a means of providing high-quality service in a cost-effective way. We therefore hope that the service might eventually be deployed (at our Fremont site) as a pilot project. This present report has been prepared to further this end. Details concerning the delivery of this checkpoint DRT service have already been described in the (rather lengthy) interim report cited above and are therefore only briefly summarized here. Most of this final report is instead dedicated to describing a prototype of an automated passenger reservation and bus dispatching (i.e. scheduling and navigation) system that supports the proposed checkpoint service. This report has been guided by the stated interests and preferences of key personnel at AC Transit, the capabilities of AC Transit’s current information systems, and relevant literature on the specifications and procurement of DRT software. 1 Li,Y et al, Design of a Demand-Responsive Transit System, California PATH Report, May 2005 8 The prototype system is web-based. It is, moreover, fully-automated; i.e., once configured, there is no need for human intervention. The bus navigation component of the system has been implemented on a Pocket PC. It obtains passenger reservation and bus scheduling information via the internet, either through a wireless Local Area Network or through a data network for mobile communications (e.g. GPRS). This prototype system is overviewed in Chapter 2. The functionality and usage of the system is documented in Chapter 3. Descriptions adopt the perspectives of the DRT users (riders and drivers); i.e. we describe how users and drivers see and interact with the system. System configuration and deployment is described in Chapter 4. Here we adopt the perspective of the transit operator (e.g. AC Transit). Software deployment notes are provided in Chapter 5. Source codes and executables for the system are provided on the project website, http://www.ce.berkeley.edu/~yuli/5402/. 9 2 OVERVIEW This chapter provides an overview of how the prototype reservation and dispatching system serves the checkpoint DRT. Also noted here are possible future enhancements to the prototype system. Presently, the system is fairly “bare-bones”. Given that our literature review indicated a complete absence of commercially available software for performing the necessary tasks, we developed the prototype system to verify and demonstrate the feasibility of reserving trips and dispatching DRT vehicles in automated fashion. Certain enhancements to the system-cosmetic and otherwise -- would be desirable prior to its wider-scale deployment in the field. The system functions as per the simple chart in Figure 1. Figure 1: System Components The reservation system includes a user interface through which customers make trip requests. Each customer specifies her origin and destination stops along with her desired time for making a trip. The interface is currently web-based, but an automated telephone-based reservation component can be added in the future. The customer’s request is automatically entered in the dispatching system. It uses the request information to offer the customer a number of bus runs that might satisfy her request. Bus service is provided in a “hybrid”fashion; i.e., buses that serve the route alternate between a DRT mode and a fixed-route mode from one run to the next. This service scheme is briefly descried in the following chapter. For DRT runs, the dispatching component accommodates only those additional reservations that will not violate bus trip time constraints: a limited number of customers can be served on a DRT run, so that run times are kept sufficiently small. The dispatching component determines whether or not a DRT request can be honored. It does so in a fairly sophisticated way as has been described in the interim report. Customers who make requests for a certain DRT run after that run has reached the trip time constraint are 10 notified of the fixed-route bus runs nearest in time to the DRT run. These customers may then elect to travel via the fixed-route component of the hybrid bus service. For DRT requests that can be honored, the customer makes a reservation by entering the number on a prepaid ticket. This entry is made in response to prompts from the interface. Once customer reservations for a given DRT run are finalized (when the run has reached its trip time constraint or shortly before the scheduled start of the run), the dispatching component determines the route to be followed for that run. As per discussion in the interim report, buses on DRT runs serve only customer trips that have been reserved and as such, the route can vary from one DRT run to the next. Routing is automatically performed in a fairly simple way, since checkpoints (i.e. bus stops) along the route are numbered in sequence and a bus always visits checkpoints in ascending (or descending)-numbered order of their numbers. (A summary of this routing strategy is offered in the following chapter and full description has been furnished in the interim report.) As part of future enhancements, routes might be determined in the presence of temporary road closures and other alterations to the street network due to maintenance, incidents, etc. Shortly before beginning a DRT run, the bus driver downloads to an onboard computer (e.g. a Pocket PC) pertinent information about the run via wireless communication. This information includes the customers to be picked up and the checkpoints to be visited on the run. Once the run actually begins, the navigation component embedded in the system provides the bus driver with driving directions, both by means of graphical displays and voice guidance. Key details of the system are further described in the next section. 11 3 SYSTEM FUNCTIONALITY AND USAGE In the proposed checkpoint DRT system, buses run between the Fremont BART station and Newpark Mall and will alternate between checkpoint DRT service and traditional fixed route service from one run to the next. The fixed route is shown in Figure 2. Checkpoints are located along the route and sequentially numbered, as in the figure. Figure 2: Map of Proposed Checkpoint Service The hybrid (alternating service) system is unique in the following aspects: • Service alternates between a checkpoint mode and a fixed-route mode. A complete cycle includes four bus trips: 1) BART to Mall, checkpoint mode; 2) Mall to BART, 12 fixed-route mode; 3) BART to Mall, fixed-route mode; and 4) Mall to BART, checkpoint mode. • During a fixed-route bus trip, the bus will visit all checkpoints along the route. • While in a checkpoint mode, the bus will only visit checkpoints that are required to serve (previously reserved) customer requests and can therefore take shortcuts between checkpoints. Although some checkpoints are skipped, those remaining must be visited in sequence (according to their numbers). • The bus always departs BART and the Mall at scheduled times. The trip time for a fixed-route bus trip is fixed. The trip time for a checkpoint bus trip is by a specified duration. Thus buses stay on time with this service. • Rides on checkpoint bus trips must be reserved, and the number of reservations on a bus trip is limited to ensure the trip time for the bus trip does not exceed the predetermined upper limit. Those passengers that cannot be accommodated on a checkpoint run are “pushed”to earlier or later fixed-route runs. • Customers who do not want to use the trip reservation system can be accommodated on fixed route runs. The prototype process of reservation, scheduling, and navigation was briefly described in the previous chapter and can be summarized as follows: • A customer goes to the reservation website 2 to make a request. The request specifies a pickup location, a dropoff location, and a desired departure time from the pickup location or arrival time to the dropoff location. • The information system examines the database, runs the scheduling program and selects bus trips 3 that can fulfill the request at times close to what was requested. The options are presented to the customer. • The customer either picks one bus trip, quits, or makes a new request. The customer uses a prepaid ticket number to make a final reservation for a DRT bus trip. Once the reservation is confirmed, the pickup and dropoff locations, as well as ticket number, are recorded in the database. The customer is given an estimate of when the bus will arrive to the origin checkpoint and to the customers’destination as well. • At specified times shortly before each DRT bus trip, the driver downloads via wireless communications the checkpoints to be visited and other relevant information about the upcoming trip. Information is loaded to the navigation software on the driver’s information device, i.e. a Pocket PC. • Once the driver begins a DRT run, the navigation system gives the driver directions and voice guidance. All of the above reservation and dispatching tasks are automatic. Use of the passenger reservation system is next described in section 3.1. Use of the bus driver navigation system is then described in section 3.2. 2 Currently, only a web-based reservation system has been developed to demonstrate the concept. Phone-based interface to the database can be added later when needed. 3 These trips are selected from the table of trips created by an administrator. 13 3.1 Reservation From the start page of the reservation website, the customer first selects a route of interest. (Multiple DRT routes can be managed by the same reservation system.) Once the customer selects a route, the map of the route with checkpoint (stop) numbers is displayed, as shown in Figure 3. Figure 3: Route Selection Once the route is selected, the customer specifies origin and destination stops of her trip. The system then highlights these stops on the map. The customer also specifies the date of travel, and the desired departure or arrival time. Once the request is submitted, available options, with estimated bus departure times (from the origin checkpoint) and arrival times (to the destination checkpoint) for each option, are presented, as shown in Figure 4. For example, the customer can either select a static (fixed-route) bus trip, or a dynamic (checkpoint) bus trip. If she prefers a static bus trip, no reservation needs to be made. The customer simply shows up at the origin stop by the estimated bus departure time. On the other hand, if a dynamic bus trip is preferred, the customer can make a reservation by clicking the “Buy”button. 14 Figure 4: Display of Bus Travel Times Figure 5: Trip Request Figure 6: Reservation Confirmation Once a dynamic bus trip is selected, the next screen verifies the request, as shown in Figure 5. The customer enters a number from a pre-purchased ticket, and clicks the “Yes” 15 button to complete the request. If the ticket number is valid, then the trip is reserved and confirmed, as shown in Figure 6. For a dynamic bus trip, the time that the bus reaches a certain stop is not fixed, thus ranges for departure and arrival times are given. These ranges will be updated dynamically as more customers make reservations for the same bus trip 4 . 3.2 Navigation The bus driver is assisted by a stand-alone onboard navigation system consisting of a GPS receiver and a Pocket PC running software we developed for this project. The navigation system obtains reservation and scheduling information via the Internet through wireless Local Area Network or a data network for mobile communications (e.g. GPRS). The navigation system has the following features: 1. It allows the driver to access an online database to download the trip manifest for a specific route date and time; 2. it allows the driver to use a route that has been previously downloaded in the event that internet connection is unavailable in a given location; 3. after arriving at each stop a popup is created, displaying the address of the next bus stop, as well the ticket numbers of all passengers who are boarding or exiting the bus; 4. text-to-speech support has been added to give out voice prompts of the street names the driver must maneuver onto, as well as notification of the next bus stop to be visited Instructions are provided below on how to run the prototype system. 3.2.1 Launching the program Start the program named “DRT”on the Pocket PC on which the demo has been installed. This can be done by using the File Explorer and navigating to the directory “Program Files/DRT” which is where the DRT executable resides. From there, a screen (see Figure 7) will pop up with three buttons: Setup Next Trip, View History, and Logs. 4 In future deployment of the system, the functionality to allow customers get an update shortly before she leaves her home can be added. 16 Figure 7: Startup Screen of Navigation Program 3.2.2 Configuring the Program After launching the DRT Driver Interface Program, click on the “Options”button on the menu bar on the bottom of the screen (see Figure 7). Click on “Configure”, and a form will pop up (see Figure 8). Verify that the domain specified is in fact the domain where the DRT Server side files are installed. If the files do not reside there, change the domain in the input box, and click “OK.” Figure 8: Configuration Screen 17 3.2.3 Setting up a New Trip Before using this feature, connect the Pocket PC to the internet. Then from the main menu, click on the “Setup Next Trip”Button. This will bring up a new form (See Figure 9). Click the “Download Routes”button to query the online database for all possible routes. In the list boxes that are now highlighted, select the route and the direction of the trip. The date and time option defaults to the current day and time. There is no need to change the time to the exact bus route time, since another selection box with a more accurate listing of times will follow. Once the options have been set, click the “Download Times”button which will enable the next options box where the driver may now select the exact time of the route. The closest time to the time selected in the previous menu is selected by default, but may be changed. Once the information is confirmed, the user may press “Download Manifest”to proceed to the manifest form. Figure 9: Route Setup 18 3.2.4 Reviewing a Previously Downloaded Trip This feature is used when the Pocket PC has already downloaded the next desired trip. From the main menu, click on the “View History”Button. This will bring up a form that will contain information regarding each trip stored in the Pocket PC’ s memory. Each entry will be formatted and sorted in the following manner: <Route name> <Direction> <Date> <Time>. Once the desired route is found, the user may select it and click the “View Manifest”button to proceed to the manifest form (see Figure 10). Figure 10: Manifest for a Bus Trip 3.2.5 Viewing the Manifest The manifest form contains a listing of all the stops that will be visited by the bus, the number of passengers boarding and exiting at each stop, and the ticket numbers used by passengers for making reservations. From here, the driver may click “Navigate with Destinator”to launch the GPS navigation program. 3.2.6 Navigating with Destinator Powerloc’s Destinator is the navigation software used by our demo software. Upon launching Destinator through our program, the driver will be presented with the “trips menu”. From there, the driver may select the trip named “DRT”where he will see the stops that will be involved in the trip. The driver may select “Show Route”to see (at a high level) where the route will be going. When the driver is ready, he may press Navigate to proceed to the first bus stop (see Figure 11, an electronic map of the Berkeley-Albany area is shown here for illustration). At each stop, the driver will be given a popup with information pertaining to the 19 next (upcoming) stop: the number of passengers boarding and exiting the bus at the upcoming stop, and their respective ticket numbers for verification. Figure 11: Route Navigation 20 4 SYSTEM DEPLOYMENT AND CONFIGURATION In this chapter, we detail the requirement and processes for deploying and configuring the components of the prototype system. 4.1 Reservation and Scheduling The web-based reservation and scheduling system is developed for running on a host server with Linux and Apache. The deployment and configuration of the system is machinedependent. However, the major steps are the same for any computer. We developed the system on a dedicated local server running Fedora 4, then migrated the system to a remote server running Red Hat Enterprise. Here we illustrate the process of setting up and configuring the system on the remote server. For convenience, suppose that the files are stored locally under the “D:\DRT\”folder and the web server’s root directory is “/public_html/”. The URL for the reservation website is http://www.xeeyee.net. The hosting service provides a configuration tool at http://www.xeeyee.net/cpanel. The steps for setting up the web server are: 1. Make certain the webserver’s root directory, /public_html/, is writable by both the owner and the group. Upload files in “D:\DRT\website\”to the webserver’s root directory, /public_html/. The files include: • The preliminary files: -ConnectFunctions.php -LoadFunctions.php -ViewFunctions.php -EditFunctions.php -createDatabase.php -emx_nav_left.css • The files that implement the reservation website customer interface: -index.php -submitReservations.php -chooseReservation.php -purchase.php • The files that implement the reservation website administrator configuration interface: -admin.php -adminEditRoute.php -adminViewInfo.php -createTickets.php • The graphics files: -drt_banner.gif 21 -depart.gif -arrive.gif -default_map.gif • The file that supports graphic display: - wz_jsgraphics.js 2. Create a directory “externalacesss”under the webserver’s root directory, and upload the files in “D:\DRT\website\externalaccess\”to “/public_html/externalaccess/”. These files are to be used for interfacing between the online database and the driver’s navigation system. -getReservations.php -getRoutes.php -getRouteSize.php -getRouteStations.php -getstations.php -getTimes.php 3. Prepare the database5 . • • • • • Go to www.xeeyee.net/cpanel and sign in. Under “Databases”click “MySQL Databases”. Add a new user in the “Current Users”area (the user name and password entered here will be used in connectFunctions.php) Add a new database in the “Current Databases”area (again, the database name here is used in connectFunctions.php) Under the “Add Users To Your Databases”area, make sure the desired user and database are selected in the combo boxes. For “Privileges,”“All” should be selected. Click “Add User to Database.” 4. Edit “connectFunctions.php”, change variables for user, password, and database to the ones that were selected in the previous step. Note: the user and database name will contain more than your chosen names. For example, in creating a user, if you typed “user,”the actual user name would be “xeeyee_user.” 5. Run the file “createDatabase.php”. Several tables will be created with the following characteristics: Table Name: Routes Field Name Type Name Varchar 5 Length 20 This step is highly system dependent. 22 PictureFile startTime endTime freq daysRange leg1 leg1Rest leg2 leg2Rest leg3 leg3Rest leg4 leg4Rest Varchar Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer Table Name: Reservations Field Name Type Route Varchar Start_time Integer Date Date Depart_station Varchar Arrive_station Varchar Direction Varchar Ticket Varchar 50 5 5 5 5 5 5 5 5 5 5 5 5 Length 20 5 n/a 10 10 10 10 Table Name: Static_Start_Times Field Name Type Length Direction Varchar 8 Time Integer 5 Route Varchar 20 Table Name: Dynamic_Start_Times Field Name Type Length Direction Varchar 8 Time Integer 5 Route Varchar 20 Table Name: Verified_Tickets Field Name Type Length Ticket Varchar 8 Warning: DO NOT RUN “createDatabase.php”MORE THAN ONE TIME. The tables can only be created once, and any other attempts to run this file will result in an error. 23 Once the web server is setup, go to http://www.xeeyee.net/admin.php to configure the reservation and scheduling system through a web-based interface, as shown in Figure 12. Figure 12: Web-based Configuration Interface The web interface allows the administrator to add new routes to the system, and also to view important information about existing routes. The “Station Data”and “Route Map”files 6 provide information about the route. In the “frequency”box, the administrator fills in the number of minutes between bus departures, assuming even bus headways 7 . The “Legs” represent one complete run of the route in a certain direction. For example, Leg 1 could be driving the route going Northbound. The first leg is set to be static, meaning it will not take reservations from the website and will simply run as a fixed-route service. Legs 2 and 3 are dynamic, meaning they will be operating based upon the reservations made online, and will only visit the stops requested. Leg 4 is static. Once a route has been created, it can be selected in the “Existing Routes”menu, and its information will be displayed, as shown in Figure 13. 6 7 The generation of these files is detailed in the next section. Uneven bus headways may be preferable for certain values of round trip time. This refinement to the system can be added in field deployment. 24 Figure 13: View and Configure Existing Route The route information may be edited if the administrator wishes to change the parameters of the route. When an existing route is selected, the “View”section allows the administrator to see important information about the route, such as the station information, the dynamic and static start times, etc. Under “View”, select “station information”, the administrator can add or change the name for the bus stop. One can also view the current reservations for a route at a certain day, time, and direction. After the routes have been configured by the administrator, users can make trip reservations by going to the reservation website (e.g. www.xeeyee.net). The reservation process has been explained in the previous chapter. Here we explain the files that implement the functionalities. The main page is implemented by the file “index.php.”Here, the customer can select the desired route, starting checkpoint, ending checkpoint, and boarding or alighting time. The next screen will be “submitReservations.php.”This page displays all the scheduled start times for the bus runs that are closest to the customer’s input. If a customer decides to reserve a specific dynamic bus trip and clicks the corresponding “Buy”button, the customer will be taken to the next page, which is implemented by “chooseReservation.php.”Here, the customer can review the bus time information, and enter her previously purchased ticket number. After clicking “Yes,”the customer’s reservation will be made and her ticket number will no longer valid for 25 other trips. The customer will be brought to “purchase.php,”where her reservation information will be displayed once more. Purely for demonstration purposes, we have created the file “createTickets.php”. Running the file creates twenty randomly generated ticket numbers. (Additional numbers can be generated— twenty at a time— by clicking the button “Create (20) More Tickets.”). These ticket numbers are stored in the table “Verified_Tickets”. When one ticket is used to make a reservation, it will be deleted from the table “Verified_Tickets”, i.e., the number is no longer valid for making future reservations. 4.2 Route Data and Map Generation A prerequisite of the web-based reservation and scheduling system is the route configuration, including the route map, the sequence of stops, and travel time between each stop pairs (if all intermediate stops are skipped). This information is contained in two data files, one containing checkpoint data and one containing the route map. These data files are generated through a program developed with Microsoft Mappoint SDK and used when the administrator adds a route to the system (see Figure 12 in the previous section). Below we describe the setup and the usage of the route data and map generation program. Suppose the program files are stored locally in directory “D:\DRT\mappoint\”. The files include: -AxInterop.MapPoint.dll -Interop.MapPoint.dll -DRT Route Data.exe Copy these files to a folder on a Windows-based computer with Mappoint installed, then run “DRT Route Data.exe”to start the program. Figure 14 shows the starting screen with two tabs near the top: “Create Route”and “Calculate Table”. The first tab allows the administrator to construct a route with multiple stops, then export (by clicking a button) the addresses of the stops to a text file for manual editing. Under the second tab, the administrator imports (by clicking a button) the edited list of stops; the program generates a table containing distances and travel times between each stop pair; and the administrator exports the two files needed for configuring the reservation and scheduling website. 26 Figure 14: Route Creation 4.2.1 The “Create Route” Tab Using the built in MapPoint program, the administrator can create a bus route consisting of multiple stops and then use the Export button to save all of the stops to a text file, which will be used in the second tab: “Calculate Table”. The “Create Table”tab contains the map of the United States, the Route Planner and some associated toolbars that are native in MapPoint. On the upper right is the Export button and below that is a List Box, and on the very bottom is a “Saved to:”label. • MapPoint Control: In creating a route, most of the time will be spent interfacing with this section of the tab. To add a stop to a route, the administrator can either use the Route Planner’s text box “Type place or Address”, or click on a place in the actual map. Doing either will result in the address being placed in the text box in the Route Planner, which must then be added as the next stop in the route by clicking the “Add to Route”button. Any stop added to the Route Planner must be a valid address. If not, when the program tries to process the route for exporting, a “Not a valid address”message will be displayed that details which stops must be changed or removed. • Export Button: 27 Clicking the “Export”button (right side of Figure 14) will process the map and find all the locations along the route. These locations will be saved to a text file which will be used later. If any of the stops are not a valid address (e.g. missing the street address, city name, or state), an error message is displayed. • List Box: The List Box on the right side of the screen below the Export button (see Figure 14) is empty when the map is first loaded. After the Export button is clicked, and if all of the stops are valid, then the List Box will display what was saved to the file: The stop numbers and the addresses. 28 4.2.2 The “Calculate Table” Tab By clicking the “Calculate Table”Tab in Figure 14, one is presented with Figure 15. Using the “Load Route”button there, the administrator can import a route from a text file (created by the first tab: “Create Route”) into the built in MapPoint program. After this, the administrator can tell the program to calculate all the data (bus travel time, distance, etc) between stops along the route using the “Create Table”button. 8 The resulting table will then be displayed in the Text Box on the right. The calculated information can then be exported through the “Export for Database”button into files with specified format. These files are necessary when the administrator adds a route to the system. As shown in Figure 15, the “Calculate Route”tab contains the MapPoint Control, three usage buttons below it, and a List Box on the bottom left. The right side of the tab is the Text Box. Figure 15: Route Data Generation • MapPoint Control: 8 Travel time is calculated by Mappointwith driving speeds on arterial roads and streets set to 17 miles/hour. This is equivalent to a bus effective speed (i.e. distance divided by travel time, including stopping time) of about 11 miles/hour. Using these parameters will produce a bus schedule close to the published schedule. 29 This MapPoint Control (shown near the top of Figure 15) is used to display the route after the route has been loaded by the “Load Route”button. • “Load Route”Button: This button is used to read a text file (created by the “Create Route”tab) that has the list of all the stops along a route. Clicking the button will prompt the administrator for a text file to read from. I the file selected is a valid DRT route file, then all the stops will be loaded into the MapPoint Control and also listed in the bottom List Box for reference. • Create Table Button: The “Create Table”button is used after the route has been loaded into the map. When clicked, all the stops within the route will be scanned; and the distance and travel time between each stop pairs will be calculated and placed in a table in the Text Box. If a route has not been loaded into the map at the time when the button is clicked, a “Please load a route”message will be displayed and nothing will be calculated. • Export for Database Button: This button is used to create a text file with a specific format that is readable by the database associated with the program. A route map (.bmp) is also created by pressing the “Export for Database”button. • List Box (Below Map): The List Box is used for reference. Every stop will be added to it when the route is first loaded using the “Load Route”button. • Text Box (Right side of tab): 30 After clicking the “Create Table”button, a square matrix will be created and displayed in the “Text Box”. Each cell will contain all the data calculated between its starting point and ending point. 4.3 Navigation The driver navigation system uses a mobile device to guide a driver through a dynamically created bus route conveniently, accurately, and safely. The system has been implemented on Pocket PC with Windows Mobile 2003. Destinator is selected as the underlying mapping and navigation software on Windows Mobile mainly for the availability of Software Development Kit (SDK) for each. In addition, SmartySoft Mobile Speech SDK is used for text-to-speech on Windows Mobile. A GPS receiver, either wired or wireless (e.g. Bluetooth), can be used for automatic vehicle location. Exchange of data between the server and the mobile device has been tested using wireless LAN (802.11b) and GPRS data service. Below we describe the installation and configuration of the system onto the mobile device. To guarantee a successful installation, it is recommended that all these packages be installed regardless of whether they have been previously installed on the Pocket PC. This ensures that compatible versions of dependent software are used with the DRT Driver Interface program. 4.3.1 Install Destinator After installing Destinator via its installation CDs (acquired separately) onto your desktop, launch the Destinator Console via the start menu. From there, click on the Install Software button to install the Destinator software and Maps of the desired region onto the Pocket PC. 4.3.2 Configure Destinator Run Destinator on the Pocket PC to accept the license agreement. Then from inside the program, click on the “Options”menu. First, switch to the desired map. Second, under the Voice Alerts section, turn off all of Destinator’s voice alerts. 4.3.3 Install Microsoft .NET 2.0 Compact Framework Go to the “D:/DRT/ppc/Prerequisites/NET Compact Framework 2.0”folder. Try clicking on the NETCFSetupv2.msi installer from Microsoft. If it works, you are done. If an error results, then copy the NETCFv2.ppc.armv4.cab file to the Pocket PC. Then from the Pocket PC (running Windows Mobile 2003), access the File Explorer program, navigate to the cab file and run it. 4.3.4 Install the OpenNETCF Library Open the “D:/DRT/ppc/Prerequisites/OpenNETCF 1.4”folder. Copy the OpenNETCF.SDF.wce4.armv4.cab file to the Pocket PC. From the Pocket PC click the cab file from the File Explorer program to install it. 4.3.5 Install SmartySoft Mobile Speech SDK Open the “D:/DRT/ppc/Prerequisites/Smarty Soft Mobile Speech SDK”folder. Copy the smmobile.ARM.CAB and smmobile.inf files to the Pocket PC. From the Pocket PC click the smmobile.ARM cab file from the File Explorer program to install it. 4.3.6 Install the DRT Driver Interface Program 31 Open the “D:/DRT/ppc/Installer”folder. Copy the DRTinstaller.CAB and DRtinstaller.inf files to the Pocket PC. From the Pocket PC click the DRTInstaller.CAB file from the File Explorer program to install it. 4.3.7 External Dependencies For the navigation program to download routes and manifests, a server running the DRT server side software must exist; in particular, the database that holds all of the routing data. Moreover, the directory “externalaccess”in “D:/DRT/ppc/Prerequisites/Server Files/”must be in the root directory of the domain name. If the server was installed correctly, this directory should have automatically been copied to the server. In summary, the overall system consists of three components: 1) the web-based reservation and scheduling system; 2) the PC-based route data and map generation system; and 3) the Pocket PC-based driver navigation system. These components are developed and deployed on different platforms and they work together to provide a functional prototype for the checkpoint DRT service. More functionality can be added later to this prototype to meet the requirements of field deployment. 32 5 SOFTWARE DEVELOPMENT NOTES Among the three component systems developed and deployed on different platforms, the navigation system poses most of the challenge because it is a mobile application with voice, mapping, and communications. Therefore, we provide below detailed development notes for the navigation system. 5.1 Tools Used Because the DRT Driver Interface ties together a broad number of features and capabilities, there were several development kits, libraries, and development environments used. 5.1.1 Software Development Kits Microsoft Pocket PC 2003 SDK and Microsoft’s Mobile 2003 Developer Resources These kits are provided by Microsoft to facilitate development on the Pocket PC. They contain the necessary compiler tools to compile into ARM binaries that are compatible with Pocket PC architecture. These kits also include emulators and debugging tools to develop mobile applications on a standard desktop running Visual Studio. Powerloc’s Destinator SDK 5.0 (http://www.destinatortechnologies.com) The software used for navigation is bundled completely in the Destinator SDK. Destinator is a leading consumer navigation program widely use in Europe. The SDK provides a COM interface via a dynamically-linked library with accessor functions to the software. SmartySoft’s Smart Read Mobile SDK 2.0 (http://www.smartysoft.com) Though initial speech development for our system used Microsoft’s Speech SDK 5.1, it was unfortunately not portable to mobile devices. We therefore chose SmartySoft’s Speech SDK which provides a Text-to-Speech engine for the Pocket PC2003. Text-to-Speech was needed to provide the user with a voice prompt of the exact street names a maneuver would be occurring onto. 5.1.2 Libraries OpenNETCF 1.4 (http://www.opennetcf.org) The .NET Compact Framework has severe limitations when contrasted with its .NET counterpart. The OpenNETCF Library alleviates these limitations by porting to the .NET Compact Framework a select set of useful classes and functions that are available in .NET. The DRT software uses the Core class in the OpenNETCF to change the Pocket PC 2003 Operating System’s primary volume. This functionality was required in order to silence unwanted voice prompts by Destinator. 5.1.3 Integrated Development Environments Microsoft Visual Studio 2005 (http://msdn.microsoft.com) This latest Integrated Development Environment (IDE) from Microsoft is fully compatible with the .NET 2.0 Framework and the latest version of C#. The IDE allows easy integration of the managed C# code, COM libraries, unmanaged libraries, and deployment to the Pocket PC. 5.2 Program Flow 33 The following is an overview of what development components are used in the application: When the driver launches the program, he is launching an executable file compiled by Microsoft Visual Studio. The very first menu attests to this with the usage of Windows Forms, the main graphical user interface class used in .NET. The interface is completely programmed in C#, as are the menus for downloading the next route. This programming takes advantage of the System.Net namespace provided by .NET. At the point the user clicks the “Navigate with Destinator”button; Powerloc’s Destinator takes over the foreground of the screen. However, the initial entry program is still running in the background. As Destinator loads for the first time, the DRT program loads the checkpoints into the Destinator software using the Destinator SDK’s COM interface. Moreover, the DRT program readies the manifest information for the entire trip so that it may be displayed to the driver as the trip progresses. As the user drives from station to station, voice prompts are given to signal maneuvers that must be made such as “turn left”and “turn right.”These prompts are given by the standard Destinator software. However, following these prompts is another voice that states the street name on which the maneuver is to be performed. For example, “Turn left onto Oxford Street.” Because the Destinator SDK does not support Text-To-Speech, the SmartySoft Mobile Speech SDK was used to add this voice feature. Destinator signals to the DRT program that it is prompting the driver about a maneuver, and then the DRT program creates a valid phrase to give out and passes it on to the Speech Engine. Upon arriving at a stop, the driver will see a popup window. This popup is a windows form that is part of the Driver Interface program. It displays the ticket numbers of those passengers getting on and off the bus, as well as the next checkpoint to be visited. This information was saved when the initial manifest was downloaded. The driver may notice that the popup window is slightly delayed; it does not popup immediately after the driver arrives at a station. The reason for this is because Destinator gives voice prompts for the next stop right after a station is received. Because we expect the bus driver to wait at the station instead of simply driving by, we use the OpenNETCF library to turn off the Pocket PCs sound so that the driver is not confused by the next prompt. After a second, the sound is turned back on, and the popup window is displayed. 5.3 5.3.1 Key Technical Details Storing routes in Destinator In order to prevent old or outdated routes from populating Destinator’s route saving and recalling system, routes stored in Destinator are kept to a minimal. Every time the “Navigate with Destinator”button is clicked in the DRT program after the manifest has been reviewed, all the Destinator routes are deleted. Only the route about to be followed is input into Destinator by the program. To see this, run Destinator independently of the DRT program. Then click on the car icon on the left hand side of the screen, and click on the Trip planner 34 button. The only route available should be the “DRT”route. Selecting this route will reveal that “DRT”holds all the stops of the last route that was downloaded by the DRT program. 5.3.2 Retrieving trips from the web server There are several PHP scripts used to access the web server database in order to retrieve trip data. They are described in the following table. Table 1: Server-side scripts for interfacing with the navigation system File Name getRoutes.php getRouteSize.php getRouteStations.php getTimes.php Function Returns the names of all the different routes on the server with new lines after each route. Example return: Route1 Route2 Returns an integer representing the size of a given route. The file requires GET data to specify the route. For example, getRouteSize.php?route=Route1 Example return: 5 Returns all the stations in a given route with new lines after each station address. The file requires GET data to specify the route. For example, getRouteStations.php?route=Route1 Example return: 2000 Oxford St, Berkeley, CA 94704 2520 Durant Ave, Berkeley, CA 94704 Returns all the times a bus takes a specific route on a given day. The file requires GET data to specify the route and direction of travel. For example, getTimes.php?route=Route1&direction=Forward getReservations.php Example return: 7:25 7:40 13:55 (Hours given in 24 hour time) Returns all the reservations made for a particular bus leg. It returns the ticket number of the passengers boarding and 35 exiting the bus. The file requires GET data to specify the route, direction, date and time of the route. Date is specified as year-month-day. Time is specified in minutes rather than hours. For example, getReservations.php?route=Route1& direction=Forward&date=2006-08-19&starttime=815 Example return: 65421660 1 8 91249707 3 5 The return format is a ticket number, followed by the station that the ticket holder is picked up, and then the station that he is dropped off at.. Stations are represented as numbers that correlate to their order in the route. 36 5.3.3 Storing trips on the Pocket PC When trips are downloaded to the Pocket PC via the “Setup Next Trip”form, they are stored on the Pocket PC for future offline use in the folder “DRT/History.”The format of the file name is “<route name><direction><date><time>.xml,”for example, newForward0623850. This is the “new”route in the forward direction, on February 3rd, 2006 at 850 minutes or 2:10pm. Inside the file is an Xml Serialization of the Trip object, which is the program’s internal representation of a trip. As per Xml standards, the file is composed of tags that denote different member variables of the trip object. Its first tag is the Xml encoding version number, 1.0. Next is the trip tag denoting that the file contains a trip object. Then follows a list of the stops a certain DRT trip will have. At each of these stops, a list of passengers getting on and off the bus is provided. There is a second list containing all the possible stations on a given route. 5.4 Source File Descriptions There are many source files in the DRT program. Though they are commented, this table will provide a brief overview of each file. AddressTools.cs ConfigureForm.cs DestinatorTools.cs DirectionsTools.cs HTTPQuery.cs MainForm.cs ManifestForm.cs NextStopPopUp.cs Program.cs Settings.cs SetupNextTripForm.cs Splash.cs Station.cs TextToSpeech.cs TimeTools.cs Trip.cs ViewHistoryForm.cs 5.5 Tools for creating and manipulating Destinator Point objects. Form for helping the user change program settings visually. Tools for dealing with Destinator Trips. Tools for modifying Destinator Maneuvers. Class for http querying to download routing information. Main thread of application, includes initial form. Form that displays the next route's manifest. Form that alerts driver of next stop, boardings, and departures. Entry point for application. Object for holding modifiable program settings. Form to download information for the next trip. Form that serves as a splash screen during loading. Station object to store relevant data for a stop. Wrapper class for SmartRead Mobile Speech SDK. Tools for manipulating time, particularly in order to consolidate differences in representations between the time stored on the server, and in this application. Object to represent an entire trip, including its stops all possible stations, and direction. Form for viewing past trip entries. For reusing trips previously downloaded. Compilation Process The DRT Driver Interface program was created using Microsoft’s Visual Studio 2005 Professional Edition. The .NET 2.0 Framework is necessary for the “solution”to be compiled properly. Visual Studio 2005 is required for the solution to be viewed and managed. Also, the 37 Pocket PC 2003 SDK must be installed for the compiler to create files deployable onto the Pocket PC 2003 Operating System . The SDK is free and can be found in the following directory: “D:\DRT\ppc\Prerequisites\Microsoft Pocket PC 2003 Development Tools.” To open the solution, find the file “DRTpda.sln”under the “D:\DRT\ppc\source\DRTpda.” Opening the file launches Microsoft Visual Studio 2005. The solution contains two projects. The primary project is DRT which is the mobile application. The other is DRTinstaller which packages the DRT project into a cab file deployable on a mobile application. Right clicking on each project name in the Solution Explorer will give you the option to “Build”each solution, which is equivalent to compiling. Building the DRTinstaller project will output a cab file in the “D:\DRT\ppc\source\DRTpda\DRTinstaller\Debug”folder that can then be transferred to a Pocket PC in order to install the software. As for the DRT project, since it is the default project, you can press F5 or go to Debug->Start Debugging to automatically deploy the program onto any Pocket PC currently interfaced with the computer via ActiveSync. 5.6 Complications Below is a list of programming problems we encountered in creating the prototype system. The list is included here so that future work can benefit from our experience. 5.6.1 Windows Mobile 5.0 and Pocket PC 2003 To our dismay, Destinator SDK 5.0 is not fully compatible with Windows Mobile 5.0, which was our initial operating system for development. There are two reasons for this. First, Destinator is unable to write to the flash memory on the Pocket PC. This means that Destinator was limited to single-point routing since it could not save multiple points for a route. To overcome this obstacle, the decision was made to create an external multi-point routing system. Unfortunately, the second problem with Destinator was that the graphical user interface would not display correctly on a 640x480 resolution screen. A patch found for Destinator to fix this problem did not fix the problem when the SDK was used, and was thus insufficient for our needs. Therefore, we developed the navigation system on Pocket PC 2003 instead of Windows Mobile 5.0. 5.6.2 Destinator’s built in TTS The decision to use a Text-to-Speech engine from a different source came late in the development of the software. Originally, the Destinator SDK was used only to load points into the software. Afterwards, the SDK COM would be shut down, and Destinator itself would be run. When this was done, Destinator’s built in TTS would function correctly. But the introduction of a popup to tell the driver the location of the next stop, as well as who was boarding and exiting the bus at the current stop, means that the Destinator program would have to be run through the Destinator SDK. Since the SDK did not support TTS, we had the resort to SmartySoft’s Mobile Speech SDK to complete the TTS system. 38 5.6.3 Destinator SDK Bugs Several bugs specific to the programming interface of the SDK hindered the development of our software: First, the Maneuver Object used by Destinator to specify the route a bus will be taking acts haphazardly. On the PC version of Destinator, this object has a consistent state and can be retrieved at any time via the COM interface. Yet, the Pocket PC version of Destinator acts inconsistent with general programming principles. Calls to the object can only be done at specific times, which are not explained in the Destinator SDK. Otherwise, exceptions are thrown in the program which cannot be debugged since they take place in unmanaged code. The placements of the current object retrievals are found completely on the basis of many hours of trial and error. Second, several functions in the Destinator SDK simply do not work. Among them, the DestClass.ShowRoute() function crashes the Pocket PC. The ShowRoute() function would have been useful for showing the driver the entire route initially before departing on the leg. Other functions, such as DestClass.ReturnToMainDestinatorWindow(), either do not work, or their specific usage is undocumented. Also the DestClass.MPRNavigate() function does nothing, although this functionality was desired to free the bus driver from having to manually select the DRT route, and click navigate to begin routing to their first stop. Unfortunately, without these functions the driver is at times slightly inconvenienced. 5.6.4 Using .NET and an unmanaged COM The initial prospects of using the Destinator SDK with .NET were grim. The best chance appeared to be via the use of embedded Visual C++ 4.0 since the .NET Compact Framework 1.0 did not support Runtime COM Interoperability Services. Significant time was spent on creating a wrapper class for the COM library in embedded Visual C++ 4.0 so that unmanaged PInvoke calls could be made in the .NET class. These attempts were partially successful, but implementing a wrapper for the entire COM library proved daunting. The solution came with the release of .NET Compact Framework 2.0 in December 2005 which included Runtime Interoperability making it substantially easier to make unmanaged calls to the Destinator SDK. 5.7 Conclusions Several lessons were learned over the course of development. First, the use of Destinator’s prematurely released SDK created a plethora of problems. With bugs internal to the Destinator SDK causing malfunctions, solutions were often nonexistent or excessively inconvenient, ultimately hindering the capabilities of the DRT Driver Interface. On the other hand, the .NET 2.0 Compact Framework from Microsoft proved to be reliable and powerful. As such it is recommended in the future to use Microsoft and other established software providers when dealing with the development of sensitive devices such as Pocket PCs. 39 Second, though Pocket PCs provide a low cost and mobile solution for a bus driver interface, the limited size of the display has drawbacks. For example, it is desirable for the bus driver to see the entire route at all times in either visual or text format. But with the limited screen size, only the driver’s current position, and immediate maneuvers can be seen. There is no room for any other concurrent display. An unexplored solution would be the use of a Windows CE device, which are slightly larger, but also has accompanying compatibility issues. Recommendations for similar future projects include using the .NET framework and .NET compatible software to the extent possible to limit development hazards. A Windows CE solution would seem most effective in terms of cost and mobility. Alternatively, a laptop version might serve the driver better in displaying information. The Destinator SDK is incomplete and “buggy”, and though its superior competitor TomTom has released a stable SDK, it is completely devoid of Text-to-Speech features. In the coming year, however, new versions of both SDKs are being released which will increase the viability of future endeavors similar to this project. After the thorough exploration of mobile technologies, we believe the full aspirations of the DRT Driver Interface ought to be attainable in the near future. The development of our prototype system occurred between Microsoft’s transition from .NET CF 1.0 to .NET CF 2.0 in December 2005. The latter was made available in January 2006, and has made it much easier to produce effective mobile applications. We recently learned that version 6.0 of Windows CE is set to release soon. With this version, the developer will be able to choose which features the operating system should support. This allows for a very compact and efficient system. Mappoint will run very smoothly on it. This would simplify future development of navigation applications. 40