Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
thisisashwinraj authored Aug 26, 2024
1 parent 0265d25 commit a4bfbb4
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,27 +63,27 @@ CroMas development take place on [GitHub](https://github.com/thisisashwinraj/Cro

# CroMa - Under the Hood

<p align='justify'>The software project aims to use human-centric technology to take public transportation & crowd manangement one step ahead. We used [Rapid Application Development model](https://en.wikipedia.org/wiki/Rapid_application_development) (RAD) to design several firmware components developed simultaneously as if they were smaller individual projects. These are then assembled into the main working prototype.</p>
<p align='justify'>The software project aims to use human-centric technology to take public transportation & crowd manangement one step ahead. We used <a href='https://en.wikipedia.org/wiki/Rapid_application_development'>Rapid Application Development model (RAD) to design several firmware components developed simultaneously as if they were smaller individual projects. These are then assembled into the main working prototype.</p>

### Defining the Problem Statements
<p align='justify'>**Problem Statement 1:** Ramesh is a busy executive who needs to reach his office on time and decide whether to take a public bus for commuting or use his personal vehicle as he stays very far away from the office & want to save money</p>
<p align='justify'><B>Problem Statement 1:</B> Ramesh is a busy executive who needs to reach his office on time and decide whether to take a public bus for commuting or use his personal vehicle as he stays very far away from the office & want to save money</p>
<br>
<p align='justify'>**Hypothesis:** If Ramesh uses CroMa for tracking the public buses available at his nearest bus-stop then he can plan his shuttle accordingly & will reach his desired location at time, without needing to travel in an alternate public transport.</p>
<p align='justify'><B>Hypothesis:</B> If Ramesh uses CroMa for tracking the public buses available at his nearest bus-stop then he can plan his shuttle accordingly & will reach his desired location at time, without needing to travel in an alternate public transport.</p>

<p align='justify'>**Problem Statement 2:** Vartika is a seven month pregnant women who needs to board a long distance bus with ample seats available because she is agoraphobic, and her physical conditions does'nt allow her to stand for longer duration</p>
<p align='justify'><B>Problem Statement 2:</B> Vartika is a seven month pregnant women who needs to board a long distance bus with ample seats available because she is agoraphobic, and her physical conditions does'nt allow her to stand for longer duration</p>
<br>
<p align='justify'>**Hypothesis:** If Vartika uses CroMa, for checking the buses in her proximity with less occupancy, then she can make an intelligent choice of the bus she wants to board, & can grab a seat, without needing to worry about standing for long.</p>
<p align='justify'><B>Hypothesis:</B> If Vartika uses CroMa, for checking the buses in her proximity with less occupancy, then she can make an intelligent choice of the bus she wants to board, & can grab a seat, without needing to worry about standing for long.</p>

### The Logic that Powers the System
<p align="justify">The system's hardware cycle starts with the bus conductor initializing a new trip in the handheld ticketing machine by entering the Bus Id. This machine is now configured to the routes associated with that Bus Id, and reflects the pre-set values for necessary passenger data variables, that are: total number of available seats, the current location, and total number of passengers in bus. The ticketing machine now shows options for printing the tickets, displaying trip details (used by conductors), and showing the total fare collections, during the trip. More options will be added in the future.</p>
<p align="justify">The system's hardware cycle starts with the bus conductor initializing a new trip in the handheld ticketing machine by entering the Bus Id. The machine is now configured to the routes associated with that Bus Id, and reflects the pre-set values for necessary passenger data variables, that are: the total number of available seats, the current location, and the total number of passengers in the bus. The ticketing machine now shows options for printing the tickets, displaying trip details (used by conductors), and showing the total fare collections, during the trip. More options will be added in the future.</p>

<p align='justify'>When new passenger boards this bus, the bus conductor issues them a bus ticket after collecting informations about their point of origin, intended destination & the total number of copassengers, if any. Apart from printing tickets, the proposed ticketing machine sends this data to the FireBase real-time database, wherein, the values for the previously mentioned three parameters are updated. Bus's location data are collected by the GPS module. For passengers using concession cards, a QR code scanner is used. This ensures authenticity of the card holder, & proper updation of data.</p>
<p align='justify'>When a new passenger boards the bus, the bus conductor issues them a bus ticket after collecting information about their point of origin, intended destination & the number of co-passengers, if any. Apart from simply printing tickets, the proposed ticketing machine sends this data to the FireBase real-time database, wherein, the values for the previously mentioned three parameters are updated. Bus location data are collected by the GPS module. For passengers using concession cards, a QR code scanner is used. This ensures the authenticity of the cardholder & proper updation of data.</p>

<p align='justify'>This application calculates the crowd on a bus in real-time using a global list variable called terminal.crowd_manager. This list represents the bus stops along a route (and is thus is initialized with the same length as the number of bus stops in the route), with each element set to zero, indicating no passengers at the start. When a ticket is issued, the print_ticket function increments the corresponding boarding point element in terminal.crowd_manager by the number of passengers boarding and decrements the alighting point element by the same number, reflecting passenger deboarding. The refresh_real_time_database function calculates the total number of passengers currently on the bus by summing the values in terminal.crowd_manager up to the bus's current stop. This information, along with available seat count and load factor, is then updated in the Firebase real-time database, ensuring that the user application always displays the most current passenger load information. Fare is calculated by adding variable fare to the fixed fare</p>
<p align='justify'>The application calculates the crowd on a bus in real time using a global list variable called terminal.crowd_manager. This list represents the bus stops along a route (and is thus initialized with the same length as the number of bus stops in the route), with each element set to zero, indicating no passengers at the start. When a ticket is issued, the print_ticket function increments the corresponding boarding point element in terminal.crowd_manager by the number of passengers boarding. It then decrements the alighting point element by the same number, reflecting passenger deboarding. The refresh_real_time_database function calculates the total number of passengers on the bus by summing the values in terminal.crowd_manager up to the bus's current stop. This information, along with available seat count and load factor, is then updated in the Firebase real-time database, ensuring that the user app displays accurate real-time crowd load information. Fare is calculated by adding variable fare to the fixed fare</p>

<p align='justify'>While developing this software, we have assumed that the bus fares will increase by a given amount, after every third stop the passenger needs to cross to reach his destination, starting from their origin point. The transport corporation can simply revise the bus fare by changing the values of the variable part or the fixed part. No code changes required</p>
<p align='justify'>While developing this software, we have assumed that the bus fares will increase by a given amount, after every third stop the passenger needs to cross to reach his destination, starting from their origin point. The transport corporation can simply revise the bus fare by changing the values of the variable part or the fixed part. No code changes required.</p>

<p align='justify'>The passengers waiting for onboarding the bus can open the CroMa application on their mobile device. They need to initialize this application by posting a query, entering their destination, on-boarding point, and the required bus type. This app then fetches the list of all near-by buses, that passes through their current location and destination from the firebase real time databse, and displays it to the user. The user can select a given bus to view more information about that bus including the available number of seats, crowd levels in that bus, timings for buses with similar routes & fare.</p>
<p align='justify'>Passengers waiting to board the bus can open the CroMa application on their mobile devices. They need to initialize the application by entering their destination, boarding point, and the required bus type. The app then fetches a list of nearby buses that pass through their current location and destination from the Firebase Realtime Database and displays it to the user. The user can select a bus to view more information, including the number of available seats, crowd levels, timings for buses with similar routes, and fare.</p>

<p align='justify'>The application uses Maps SDK to display the dynamic in-app map interface. The Directions API displays information on directions of buses, featuring real-time traffic information. The Distance Matrix API are used to calculate the travel time and distances between the origins, and the destinations. The Geocoding APIs from Maps SDK is used to convert coordinates into addresses & addresses into coordinates. Places SDK integrates place details, search & autocomplete.</p>

Expand Down

0 comments on commit a4bfbb4

Please sign in to comment.