Uppsala Student Project 2015 MObile Network Assisted Driving (MO.N.A.D.) Project specification (PA3 – Work in progress) Industry representatives: Konstantinos Vandikas, Gábor Stikkel Ericsson Research Table of Contents Table of Contents .......................................................................................................................2 1. Introduction ...........................................................................................................................3 2. Architectural components .....................................................................................................3 2.1 Client-app .....................................................................................................................3 2.2. Simulated (or virtual) client-app .................................................................................4 2.3 Vehicle-app ..................................................................................................................4 2.4 Simulated vehicle-app..................................................................................................4 2.5 Data component (or database) ....................................................................................4 2.8 Notification system ......................................................................................................5 3. Code considerations...............................................................................................................6 3.1 Tractability .......................................................................................................................6 3.2 Expected Performance .....................................................................................................7 3.3 Revision system................................................................................................................7 4 Development phases ..............................................................................................................7 5 References ..............................................................................................................................8 1. Introduction Main goal of this project is to setup an open platform for timetable-free traveling. The advent of self-driving vehicles introduces an interesting prospect that will irrevocably change public transport. Be that as it may, self-driving vehicles are not self-aware therefore there is still a need for a platform that allows for efficient planning and scheduling for vehicles. In this premise, ad-hoc timetables can be generated based on real-time on demand traveling requests. 2. Features This section explains the different features/functions of the system to be implemented. 2.1 Client-app The system contains a Client-App running either on a mobile phone or in a web page. The implementation choice here can vary. It would be more preferable if the app runs on a mobile device (i.e. Android) since the haptic user interface provided by Android devices, along with the mechanism for receiving notifications fits very nicely to the nature of the proposed system. The Client-App allows for the user to register himself or to use the system anonymously. In the case of registering to the system, an AuthenticationModule would be used in order to verify the user’s credentials. The Client-App has a very simple user interface that allows for the user to type where he wants to go. The Client-App sends this request to the RequestHandler module and receives a response from that system which contains the travelling plan. Moreover, the Client-App can receive notifications (from the NotificationSystem) about different trips that the user needs to make, either based on past information, or by information from the user's agenda. Last but not least, we are interested in the user’s location therefore with the user’s approval the Client-App would be recording the user’s location on regular intervals. 2.2. Simulated (or virtual) client-app The virtual client-app bears similar traits to the Client-App with the exception that its behavior can be programmatically controlled. This means, that for testing and large-scale simulation purposes, using this module, you are allowed to create an arbitrary amount of clients that push a scripted set of traveling requests. The simulator module, described later on would be responsible for orchestrating the set of simulated client-apps. 2.3 Vehicle-app The vehicle-app is pretty much the same module as the Client-App. The main purpose of its existence is that of identifying vehicles as special first class citizens in this system. Moreover, it can be used in order to associate client’s (user’s of the system) to vehicles. Within this project it will be decided whether or not such an app deserves an implementation, or if it is sufficient to model this association otherwise without the need of a dedicated app. Finally, yet importantly the main function of this app is to tell the driver where he/she needs to go in order to pick up passengers, so similarly to the client-app, this app can process and receive notifications from the notification system. 2.4 Simulated vehicle-app The simulated vehicle-app is a simulated version of the vehicle-app, used for testing and simulation purposes. Using this app it should be possible to generate an arbitrary amount of vehicles moving in various trajectories over time. Similarly, to the simulated client-app, this app is also control by the simulator module. 2.5 Data component (or database) The data component (or database) is the central (from a logical perspective) component which stores all the information needed for the proposed system to operate with the exception for the user profiles and user credentials which are stored separately in a different database for security purposes. The basic information that is recorded here are the location of a user and the different travelling requests the user has made. Since this is an open system, every user is allowed to download all the information that this system has recorded such as location information and travel requests. Even though the database appears as a central logical component, it’s underlying implementation is that of a distributed database. Implementations such as MongoDB[1] and Apache Cassandra[2] should be taken into consideration here when it comes to deciding how to implement this component. 2.6 RequestHandler The RequestHandler component is responsible for receiving traveling requests which will later on be pushed to the Data component to be recorded also to the Travel planner component which will generate the corresponding travelling plan. 2.7 Travel Planner Takes as input a travelling request and generates the travelling plan expressed as a trajectory of points. For the purposes of this assignment there is no need for creating a brand new and novel travel planner system, already available APIs that take into consideration transit information (such as Google’s Direction API) if the licensing agreement permits so. Perhaps the creation of a bespoke version of this function would make sense in the course of this project when creating ad-hoc routes that are different from the predefined ones but that remains to be seen. 2.8 Notification system The purpose of this component is to proactively send different kinds of notification to the client-app and the vehicle-app such as: o upcoming traveling requests o proximity to bus stop information etc. o suggest virtual (ad-hoc) stops for collecting people o proactively push more efficient alternative routes 2.9 Authentication module A simple authentication module that uses the User Database in order to authorize, authenticate and account a user’s access into this system. 2.10 User Database The User Database contains user credentials as hash-codes and one-time tokens for accessing the system. 2.11 Travel Recommendation Purpose of this module is to start learning the user’s preferred (or potential) upcoming travels and to proactively generate recommendations which will be later on served and delivered to the user with the Notification system. Another input of information for travel recommendations can be the user’s calendar. 2.12 LookAhead function Generates a new timetable out of traveling requests that have been made in the past. The LookAhead function should take into consideration the city of Uppsala. Information from OpenStreetMaps can be used. As far as connections are concerned when generating future timetables, one connection point should be taken into consideration which is that of the Central Station. 2.13 Feedback function The feedback function is another important component of this system where the user gets to evaluate how good a recommendation made by the Travel recommendation component was, or how beneficiary (or not) was an an ad-hoc timetable that has been generated for that user in particular. This information should be taken into consideration when generating a travel recommendation or when generating a new timetable. 2.14 Simulator function The role of the Simulator function is to govern the simulated apps such as vehicles and clients. KTH-ITRL has created a simulator that could be used for this purpose [3]. Another simulator is GAMA [4]. Performance and scalability but also ease of use are the main criteria for choosing a simulator. 3. Code considerations 3.1 Stream processing / Batch processing These techniques should be taken into consideration when dealing with the LookAhead function. Stream processing is about doing small computation on a series of infinite data, while batch processing is about making a more involved computation to a large set of data. Tools such as Apache Storm [5] or Apache Flink [6] should be used for Stream processing purposes, i.e. for figuring out the amount of people that want to go from point A to point B since this information is going to be constantly flowing into the system Batch processing should be considered for the Travel Recommendation mechanism. A hybrid approach which combines the two is also an option. Apache Flink in particular is capable of dealing both with streams and batches. 3.2 Tractability The tasks to be solved by the Travel Planner, Travel Recommendation and Lookahead function are known to be NP-Complete therefore it is interesting to utilize genetic algorithms in order to circumvent inherent intractability by sacrificing absolute optimal solution with approximations of good enough solutions. A useful library for genetic algorithms in Python is DEAP [7]. 3.3 Expected Performance At the moment of writing this text it is fairly premature to setup any particular performance threshold therefore a particular point in time, during the development of this activity should be set in order to construct a proper benchmark for this system. 3.4 Evaluation Aside from performance it is important to evaluate the LookAhead function which generates ad-hoc timetables as opposed to rigid timetables already used by UL. It is interesting to show if the new function can bring lower costs for UL and better user experience (i.e. smaller waiting time). 3.5 Revision system The following github repository will be used for storing the source code that is going to be developed within this project: https://github.com/EricssonResearch/monad Each student will be given access to this repository based on their personal github accounts. The source code will be made publicly available under the Apache 2.0 software license. Moreover, for the purposes of recording SPRINT progress (backlog, ongoing, completed tasks) we will be using a private account on Trello. [link to be added here] 3.6 Deployment The complete deployment of the system should be clearly documented (input/output of each component). Furthermore, (and in order to simplify development) puppet scripts should be used for automating the development/testing process of all different components, including the setup of the cluster for processing stream data. 4 Development phases The development process can be split in (at least) two phases. The first phase should be about designing the simulation and the algorithms for generating recommendations, but also the LookAhead function that generates the ad-hoc timetable and ad-hoc routes. A set of criteria for evaluating the quality, accuracy of these solutions should be also defined at this stage. The next phase should focus on engineering the previous phase to a larger scale setup. Techniques such as stream processing/batch processing should be taken into consideration here. Tools such as puppet should be used for generating the deployment of the large scale version in a cloud based infrastructure (based on openstack). 5 References [1] MongoDB - https://www.mongodb.org [2] Apache Cassandra - http://cassandra.apache.org [3] KTH-ITRL - https://bitbucket.org/kthSMLteam/kth-smart-mobility-lab/src [4] GAMA - https://github.com/gama-platform/gama [5] Apache Storm – https://storm.apache.org [6] Apache Flink - https://flink.apache.org [7] DEAP - https://github.com/deap/deap