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 d546362 commit 24e21f2
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ All relevant updates, and stable versions are made available in the <a href="htt

# User Installation and Working
<p align = "justify">
CroMa is a firmware solution that provides commuters with real-time information about public transits(such as buses) including real-time tracking, estimated time-of-arrival and the seat occupancy. This solution is an interworking of two major components: a <a href="https://github.com/thisisashwinraj/CroMa-Crowd-Management-System/tree/main/hardware_files">handheld ticketing machine</a> and a <a href="https://github.com/thisisashwinraj/CroMa-Crowd-Management-System/tree/main/android">mobile application</a>. CroMa v1.0 offers support for only buses.
CroMa is a firmware solution that provides commuters with real-time information about public transits(such as buses) including real-time tracking, estimated time-of-arrival and the seat occupancy. This solution is an interworking of two major components: a <a href="https://github.com/thisisashwinraj/CroMa-Crowd-Management-System/tree/main/hardware_files">handheld ticketing machine</a>, and a <a href="https://github.com/thisisashwinraj/CroMa-Crowd-Management-System/tree/main/android">mobile application</a>. CroMa v1.0 offers support for only buses
</p>
<p align = "justify">
The hand-held ticketing machine is a micro-controller-based system used for generating billing tickets and collecting, saving, and generating daily reports and summaries. Our version of the hardware is additionally equipped with a GPS module for tracking the location of the bus. The device is to be used by conductors, and/or clippies for issuing tickets to the passengers. When new passengers board this bus, their details such as their start location, total luggage in the bus, their intended destination, & the total number of passengers is collected for issuing the tickets. These details are collected, processed and transmitted to the <a herf="https://firebase.google.com/products/realtime-database">FireBase RT database</a> by the hand-held ticketing machine. For passengers using a monthly, or yearly bus pass, a QR code or a unique alphanumerical code may be used to update the software.
The hand-held ticketing machine is a micro-controller-based system used for generating billing tickets and collecting, saving, and generating daily reports and summaries. Our version of the hardware is additionally equipped with a GPS module for tracking the location of the bus. The device is to be used by conductors, and/or clippies for issuing tickets to the passengers. When new passengers board this bus, their details such as their start location, total luggage in the bus, their intended destination, & the total number of passengers is collected for issuing the tickets. These details are collected, processed and transmitted to the <a herf="https://firebase.google.com/products/realtime-database">FireBase RT database</a> by the hand-held ticketing machine. For passengers using a monthly, or yearly bus pass, a QR code or a unique alpha-numerical code may be used to update the software
</p>

![CroMa App](https://github.com/thisisashwinraj/CroMa-CrowdManagementSoftware/blob/main/assets/CroMaAppUI.png)
Expand Down Expand Up @@ -66,7 +66,7 @@ CroMas development take place on [GitHub](https://github.com/thisisashwinraj/Cro
└── .mailmap
```

<p align='justify'>To run the application, start debugging by clicking <B>Run > Start Debugging</B> from the main IDE window (or press F5). If you are using <a href='https://code.visualstudio.com/'>VS Code</a>, you should see a set of Flutter-specific entries in the status bar, including a <a href='https://docs.flutter.dev/get-started/install'>Flutter SDK</a> version and a device name (or a message displaying No Devices). The Flutter extension automatically selects the latest device connected. However, if you have multiple devices/simulators connected, click device in the status bar to see a pick-list at the top of the screen. Select the device you want to use for running/debugging & then run the command</p>
<p align='justify'>To run the application, start debugging by clicking <B>Run > Start Debugging</B> from the main IDE window (or press F5). If you are using <a href='https://code.visualstudio.com/'>VS Code</a>, you should see a set of Flutter-specific entries in the status bar, including a <a href='https://docs.flutter.dev/get-started/install'>Flutter SDK</a> version and a device name (or a message displaying No Devices). The Flutter extension automatically selects the latest device connected. However, if you have multiple devices/simulators connected, click device in the status bar to see a pick list at the top of the screen. Select the devices you want to use for running/debugging & then run the command</p>

# CroMa - Under the Hood

Expand All @@ -78,15 +78,15 @@ CroMas development take place on [GitHub](https://github.com/thisisashwinraj/Cro
<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<BR><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 on the handheld ticketing machine by entering the Bus ID. The machine is then configured with the routes associated with that Bus ID and reflects the pre-set values for necessary passenger data variables, including the total number of available seats, the current location, and the total number of passengers on the bus. The ticketing machine will now display the options for printing tickets, managing journey details (for use by conductors) & displaying total fare collections during this trip</p>
<p align="justify">The system's hardware cycle starts with the bus conductor initializing a new trip on the handheld ticketing machine by entering the Bus ID. The machine is then configured with the routes associated with that Bus ID and reflects the pre-set values for necessary passenger data variables, including the total number of available seats, the current location, and the total number of passengers on the bus. The ticketing machine will now display the options for printing tickets, managing journey details (for use by conductors) and displaying total fare collections during this trip</p>

<p align='justify'>When a new passenger boards the bus, the bus conductor issues them a ticket after collecting information about their point of origin, intended destination, and the number of co-passengers, if any. In addition to simply printing tickets, the proposed ticketing machine sends this data to the Firebase real-time database, where the values for these three parameters are updated. Bus location data are collected by the GPS module. For passengers using concession cards, the QR code scanner is used to verify the authenticity of the cardholder and the proper updation of crowd data</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. The total bus fare is calculated by adding the 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'>Passengers waiting to board the bus can open the user application. They need to initialize the application by entering their destination, boarding point, and the required bus type. The app then retrieves 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 other buses travelling on the same routes, and fares. Users can also view the current location of the bus on the map</p>
<p align='justify'>Passengers waiting to board the bus can open the user application. They need to initialize the application by entering their destination, boarding point, and the required bus type. The app then retrieves 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 other buses travelling on the same routes, and fares. Users can also view the current location of the buses on the map</p>

# Contribution Guidelines
To start contributing to the project, clone the repository into your local system subdirectory using the below git code:
Expand All @@ -96,7 +96,7 @@ git clone https://github.com/thisisashwinraj/CroMa-Crowd-Management-System.git
Before cloning the repository, make sure to navigate to the working subdirectory of your command line interface and ensure that no folder with same name exists. Other ways to clone the repository includes using a password protected [SSH key](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent), or by using [Git CLI](https://cli.github.com/). The changes may additionally be performed by opening this repo using [GitHub Desktop](https://desktop.github.com/)

### Edit the Source Code and Make Desired Changes
<p align="justify">To be able to make changes to the source, you may need to install and use a python IDE such as <a href="https://www.jetbrains.com/pycharm/download/">PyCharm</a>, Microsoft <a href="https://code.visualstudio.com/">VisualStudio</a>, and/or any other python interpreter. You will also require a Jupyter notebook for working with the code snippets. To work with the Flutter application, you shall have <a href="https://docs.flutter.dev/get-started/install">Flutter SDK</a> installed on your local computer, and a USB cable. Ensure that you are strictly following the PEP-8 programming standards, while introducing the desired updates</p>
<p align="justify">To be able to make changes to the source, you may need to install and use a python IDE such as <a href="https://www.jetbrains.com/pycharm/download/">PyCharm</a>, Microsoft <a href="https://code.visualstudio.com/">VisualStudio</a>, and/or any other python interpreter. You will also require a Jupyter notebook for working with the code snippets. To work with the Flutter application, you shall have <a href="https://docs.flutter.dev/get-started/install">Flutter SDK</a> installed on your local computer, and a USB cable. Ensure that you are strictly following the PEP-8 programming standards, while introducing the desired updates.</p>

Before opening a Pull Request, it is recommended to have a look at the full contributing page to make sure your code complies with all the pull request guidelines. Please ensure that you satisfy the [~/Checklist](https://github.com/thisisashwinraj/CroMa-CrowdManagementSoftware/tree/main/Template%20Files/PULL_REQUEST_TEMPLATE) before submitting your PR.

Expand Down

0 comments on commit 24e21f2

Please sign in to comment.