PRE2019 4 Group8: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
 
(385 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Luc Geurts, Tar van Kieken, Sietse Backx, Mandy Grooters, Rien Boonstoppel
<div style="width:calc(100vw - 175px);background-color:#FDFEFE;padding-bottom:35px;position:absolute;top:0;left:0;">
<div style="font-family: 'q_serif', Ariel, Helvetica, sans-serif; font-size: 14px; line-height: 1.5; max-width: 1000px; word-wrap: break-word; text-align: justify; color: #333; font-weight: 400; box-shadow: 0px 25px 35px -5px rgba(0,0,0,0.75); margin-left: auto; margin-right: auto; padding: 70px; background-color: white; padding-top: 25px;">
 
<center><big><big><big><b>Towards a Design and Model of a Parking Assistant Robotic System</b></big></big></big></center><br/>
 
 
 
[[File:Group8_sideview_parkinggarage.png|800px|center|thumb|Presentation: https://youtu.be/15LSWbLM3mA]]
 
==Group Members==
{| class="wikitable" style="border-style: solid; border-width: 1px;" cellpadding="3"
!style="text-align:left;"| Name
!style="text-align:left;"| Student ID
|-
| Sietse Backx || 1255924 || s.backx@student.tue.nl
|-
| Rien Boonstoppel || 0946480 || d.j.boonstoppel@student.tue.nl
|-
| Luc Geurts  || 1237117 || l.p.a.geurts@student.tue.nl
|-
| Mandy Grooters || 1236053 || m.grooters1@student.tue.nl
|-
| Tar van Kieken  || 1244433 || t.m.k.v.krieken@student.tue.nl
|}


== Introduction ==
== Introduction ==
Visiting a theme park or a festival can be a great stress relief. However, what is worse than to start a relaxing event with trying to park your car in what seems to be a never-ending, saturated parking lot. Event parking is a key issue in society nowadays. With occasional large social gatherings, parking demand often does not meet supply. In combination with a shortage in parking staff, congestion results leaving drivers with frustration.  
<p>Visiting the airport usually results in a lot of stress. You need to take your clumsy luggage through the whole airport, wait a lot in different lines and after that sit in a too-small chair in the plane before again entering different waiting lines at your destination. However, it can get worse by trying to park your car in what seems to be a never-ending, saturated parking lot on the airport. Parking demand often does not meet the supply and in combination with a shortage of parking staff, this results in leaving drivers with frustration. </p>
 
<p>A survey performed by the Airports Council International has revealed that up to 50% of the total revenue of an airport is generated by non-aeronautical services, including parking. For example in Denver, 13% of the total revenue from the parking services and in Minnesota even 30%.  This also includes the rental of vehicles for people on their holiday or business trips. <ref> Javid, M., & Seneviratne, P.  (2000).  Investment Risk Analysis in Airport Parking Facility Development. J. Constr. Eng. Manage. 126(4), 298-305. </ref> This shows that parking is a big and important part of the revenue of airports and that making parking more efficient and attractive for users, could have a big positive impact on the income of the airport. </p>
 
<p>When opening a parking lot for an airport, there are several key aspects to take into account with regard to transportation and vehicle placement or traffic management in general. Often, there is not a lot of road capacity at the airport, which makes it hard to build a big parking lot. Also are the costs a big and important factor for the building and maintaining of a parking lot, because a parking lot is a big investment of an airport. A solution to this problem is to use more public transport as a way to get to the airport. <ref> Currie, G., & Shalaby, A.  (2012).  Synthesis of Transport Planning Approaches for the World’s LargestEvents. Transport Reviews,32(1), 113–136.  doi:  10.1080/01441647.2011.601352 </ref> Schiphol, for example, has his own train station under the airport, to encourage people to get to the airport with the train. If all these measures still lead to congestion, a new solution must be found. </p>
 
<p>Analogously with airport parking lots, in large cities, parking is also a considerable problem. Nearly 30% of traffic congestion in cities is caused by drivers looking for a parking spot <ref>Maheshwari,  K.  A.,  &  Bagavathi  Sivakumar,  P.  (2018).    Use of predictive analytics towards better management of parking lot using image processing. Lecture Notes in Computational Vision and Biomechanics,28, 774–787.  doi:  10.1007/978-3-319-71767-8{\}67</ref>. Designing a parking system such that drivers can find a parking spot faster is therefore essential. Common solutions involve a LED system to indicate free and occupied parking spaces, however, these solutions do not control traffic flow. Another option which does take into account traffic flow is automatic parking spot assignment. Automatic parking assignment can compute optimal routes taking into account lot occupancy, travel distance, conflict avoidance and walking distance <ref>Han, Y., Shan, J., Wang, M., & Yang, G.  (2017). Optimization design and evaluation of parking route-based on automatic assignment mechanism of a parking lot. Advances in Mechanical Engineering,9(7), 1–9.  doi:  10.1177/1687814017712416</ref>. Nonetheless, this solution is limited to mobile phone use.</p>
 
==Objectives==
In this part is stated what the goal of the project is. The subject and problem statement is listed and RPC's are chosen to focus on in the project itself. In the end is decided which end products we want to deliver.
 
=== Subject ===
A robotic parking assistant which helps drivers to find a parking spot in a parking lot of an airport (in this case Schiphol) and simultaneously optimizes traffic flow for faster parking.
 
=== Problem Statement ===
 
<p>In summary, the key issues to resolve are the enormous rise in demand of better parking conditions in parking lots. These issues result in congestion and frustration of drivers due to the delay suffered from finding a parking space.
This project researches the possibility to improve the parking experience on parking lots. Focus is on parking lots with a proper road surface and a limited number of entrances/exit. These constraints exclude temporary parking lots on meadows or general parking spots along a road.
In addition to the research, a partial solution is designed for the issue by making a design of the parts of the system that the user would interface with, and software to manage the parking lot plus a simple simulation.  </p>
 
=== RPC's ===
 
In order to investigate possible solutions, requirements, preferences and constraints have to be established.
 
==== Requirements ====
*The system should be able to know in which path and row in the parking lot it is located at any moment in time.
*The system should be able to operate autonomously.
*The system should regulate traffic flow for both entrance and exit of the parking lot, taking into account the total capacity of the parking lot.
*The system should detect if cars are parked on the wrong parking spot or more than 20 cm over the parking lines and take this into account in the determination of free parking spots.
*The system should not come closer than 0.7 meters to the secondary users <ref>https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4236010/</ref> <ref> https://dl.acm.org/doi/pdf/10.1145/2157689.2157769</ref>
*The system should be able to detect when the secondary user needs a parking spot for disabled or older people.
*The system should be able to communicate with the secondary users in a clear way where they need to go for their designated parking spot (97% of the people should understand the communication).
*The system should have a help option to solve parking issues and if needed contact the primary user to help the secondary users
*The system should handle cars up to 5 meters in length and up to 1.8 meters in width. <ref> https://www.anwb.nl/juridisch-advies/in-het-verkeer/verkeersregels/afmetingen-van-autos-en-aanhangers</ref>  <ref>https://www.nu.nl/algemeen/647351/autos-te-groot-voor-parkeervak.html?redirect=1 </ref>
*The system should be waterproof.
*The system should be cheaper to exploit than current valet-parking options over a span of 10 years.
 
==== Preferences ====
*The system should be able to handle payments at the exit.
*The system should be able to read the licence plate of the cars.
*The system should be able to guide the user to its car when they forgot their parking space, based on the license plate.
*The system should be able to investigate the parking layout by itself.
*The system should give users the opportunity to state their parking preferences and handle those accordingly.
*The system should be able to instruct the driver to park their vehicle properly if it is misplaced.
*The system should have a feedback option.
*The system should have an emergency option.
*The system should be able to fill a parking lot with cars in a shorter time than current valet-parking options.
*The system should be able to measure the length, width and height of the incoming car, in order to know whether it fits in certain parking spaces.
 
 
==== Constraints ====
* The system should be ground-based.
* The parking lot has clear entrance(s) and exit(s) which can be regulated and entrance.
* A parking space has the following dimensions in the Netherlands. <ref>https://ocw.tudelft.nl/course-readings/parkeren/</ref>
** 5 meter length by 2.4 meter width, when perpendicular parking.
** 6 meter length by 2.5 meter width, when parallel parking.
** 6 meter length by 3.5 meter width for the disabled parking space when parallel parking.
** 5 meter length by 3.5 meter width for the disabled parking space when perpendicular parking.
 
===Airport===
There is chosen for the focus of the parking robot on an airport parking lot. One property of such kind of parking lot is that there will be cars entering and leaving the parking lot the whole day. This is different from things like amusement parks, where you have a spike in people entering at the opening time and a spike of people leaving at the closing time. This results in that the robot needs to be good in the managing of the available parking spots in the lot. In an amusement park or event, it is easier to just fill the parking spots from the entrance until the back. However, in an airport parking lot are there continuously people leaving and entering, which makes it more of a challenge for the software to choose the best parking spot available at any time.
Another parking lot, for example at a mall, could also be chosen for this project. This would also have the challenge of people continuously leaving and entering. There is however chosen for the airport parking lot application because there are more user preferences in an airport parking space. There are people with a lot of luggage, who want to park close to an elevator, people who want to park close to the entrance, people who only want to drop a person off and so on. This makes that there needs to be more focus on the users and thus more on the preferences of the car drivers. This must be incorporated into the software and result in a bigger challenge.
 
===Deliverables===
 
The goal of the project is to deliver a design for the parking robot. This design is dependent on the needs of the users, the requirements made earlier and the working space, which is, in this case, a parking lot on an airport, like Schiphol.
Furthermore, a software needs to be developed, which recognizes parking spaces and gives the best parking spot dependent on the preferences of the user.
This wiki page will also be finished in such a way that it shows the complete progress made during this project.
Lastly, a presentation video will be made, that shows the steps that made in this project.
 
== User, Society and Enterprise ==
There are different users which will use the parking robot. It is important for the design of the hardware and software to take the needs of these different users into account. This chapter lists the different users with their needs and researches the best way for the interaction of the robot with the users.
 
===Users===
 
<p>The primary users of the parking robot are companies that are dealing with large parking lots. Such as airports. These companies want to improve the experience of their visitors by avoiding parking problems. The parking robot will significantly decrease the waiting times for a parking spot and thus increase the overall experience of the visitors.  </p>
 
<p>The secondary users are the visitors of the airport that are directly interacting with the parking robot to find a parking spot. The parking robot can quickly guide them to a parking spot. Without the parking robot, visitors would have to wait longer which adds stress and frustration to their day which will decrease their experience <ref>Winter Nie, Waiting: integrating social and psychological perspectives in operations management, Omega, Volume 28, Issue 6, 2000, Pages 611-629, ISSN 0305-0483 </ref>.
These secondary users can be divided into different categories which are again assigned to their designated parking areas. The primary users can assign these specific areas to their preferences and it depends on their targeted audience. As an example, one can have a different parking area for disabled people, an area for the elderly and an area for large families. These groups all have different preferences with respect to where they want to park. To elaborate on this, the elderly for example, they want to have parking spaces closer to their destination which will provide them with a shorter walking distance. Disabled people will also want their designated parking spots close to their final destination and extra room for parking as they sometimes are dependent on wheelchairs or other devices.  As for the family category, they don’t need any special preferences as they can just be used to fill up the remaining parking spots when all the others have been assigned.
</p>
 
===Society===
<p>For society, the parking robot can have great improvement opportunities. The parking robot will be more efficient than the current traffic controllers, which will improve the traffic flow around the parking lots. Consequently, the traffic flow on high- and motorways around the parking spot will improve. Therefore, people that do not visit the airport will not experience any delay in their travel due to this effect. Furthermore, congestion increases fuel consumption, environmental pollution and traffic accidents. <ref>Chin, Hoong & Rahman, Md. Habibur. (2011). An Impact Evaluation of Traffic Congestion on Ecology. Planning Studies & Practice. 3. 32-44.</ref> So the parking robot will have a decreasing effect on these matters too.</p>
 
===Enterprise===
<p>From an enterprise perspective, multiple groups can take advantage of the parking robot. First, the organization of airport parking garages. They don’t have to deploy traffic controllers anymore. Which eventually could decrease their overall costs. Secondly, the research that will be done is interesting for the development of other robots. The navigation and communication technique used in the parking robot could be applied in other areas as well. When the parking robot will be developed on a larger scale, robot companies have to produce more robots than they do now, which will eventually decrease the cost per robot. The profit companies make, because of the enhanced traffic flow caused by the parking robot, could be used to do more research on parking robots or robots who use this navigation and communication technology in general. Such can lead to the continuous improvement of the used techniques.</p>
 
When summarized, the following user groups can be identified:
* Deployer companies: The companies deploying the system.
* Drivers: The people that need to park their car.
** Disabled people: People that need to find a parking spot suitable for people with physical disabilities.
** Infirm people: People that have walking difficulties.
** Bad drivers: People that have more difficulty with driving and parking.
** Average people: People that don't have special needs of any type.
 
== Human Robot Interaction ==
It is very important that the robot can interact in a clear way to the primary and secondary users. In this chapter, research is done in the different ways that the robot can interact with the users. These different ways are first listed and then is a survey under secondary users done to decide on the best way to let the robot interact with the user.
===Communication Methods===
4 different communication methods between robot and user are listed below with a drawing in the end to show how this will look like in the case of our robot.
 
==== Touchscreens ====
<p> Because of the current state of the world about the coronavirus touch screens might be a debatable choice. Although it is not yet scientifically proven that this virus is spreading over surfaces, it is widely proven that touchscreens are a possible contamination hazard. <ref>Charles P.Gerba. Adam L.Wuollet, Peter Raisanen, Gerardo U.Lopez (2016). Bacterial contamination of computer touch screens, American Journal of Infection Control, Volume 44, Issue 3, Pages 358-360, doi: 10.1016/j.ajic.2015.10.013 </ref> </p>
 
When looking into possibilities to keep touchscreens clean and safe to use, two options where found. The first option is the so-called ‘NanoSeptic Continuously Self-Cleaning Surfaces’. This company makes mats that keeps its surface clean by using mineral nanocrystals, which are powered by light and generate an oxidation reaction stronger than bleach[https://www.nanoseptic.com/nanoseptic-self-cleaning/learn-about-nanoseptic-self-cleaning-surfaces]. Those mats are also produced in clear films, which can be applied to touchscreens. The latest test by an independent FDA-compliant US lab showed that the NanoSeptic surface eradicated the human Coronavirus in less than 30 minutes. Results from overseas research centres have also confirmed its effectiveness. [http://www.pressreleaseheadlines.com/research-centers-worldwide-validate-pathogen-killing-nanoseptic-surface-208105]
The second option isn’t available (yet). It is based on a patent that Microsoft filed a couple of years ago [http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html&r=1&f=G&l=50&co1=AND&d=PG01&s1=20110256019.PGNR.&OS=DN/20110256019RS=DN/20110256019]. Using a UV backlight in the touchscreen panel, germs and viruses are killed. With a combination of total internal reflection and proximity sensor the panel will make sure the user isn’t exposed to the UV.
However, because the first option is already on the market and proven to be effective, it is best to use a NanoSeptic clean film, instead of investigating in the possibilities of the UV backlight.
 
==== Speech-based ====
<p> The voice is the most prominent and the primary method of communication among human beings. With speech, humans can also communicate with robotic systems. However, the possibility that the proposed system is going to be used in busy and noisy environments is quite high. So there needs to be some sort of enhancement over a simple microphone. In 1990 already the research on the use of microphone arrays in order to enhance speech recognition based on beamforming. <ref>Dirk Van Compernolle, Weiye Ma, Fei Xie, Marc Van Diest (1990), Speech recognition in noisy environments with the aid of microphone arrays, Speech Communication Volume 9, Issues 5–6, Pages 433-442, doi: 10.1016/0167-6393(90)90019-6 </ref> In recent days, Google has made huge improvements with their Cocktail Party challenge. With only a single audio track but with an added video feed, they were able to completely isolate voices. <ref> https://ai.googleblog.com/2018/04/looking-to-listen-audio-visual-speech.html </ref> So possibly by combining those both solutions will lead to a great performance on speech recognition in busy and noisy environments. </p>
 
==== Gestures based ====
<p> The second possible way for interaction with the robotic system is gesture-based. Some research is done on the use of gestures for the interaction. <ref>Stefan Waldherr, Roseli Romero, Sebastian Thrun (1990). A Gesture Based Interface for Human-Robot Interaction, Autonomous Robots volume 9, Pages 151–173, doi: 10.1023/A:1008918401478. </ref> For example by using cameras or a Kinect to view gestures of the secondary users. However, this can be difficult because of the restricted space a driver has behind the wheel. Maybe using hand signals is possible. </p>
 
==== Touchless display ====
<p> A different, more experimental approach is more like a classic touchscreen. However, without touching the actual screen. A touchless display is developed which can sense local variations of the humidity in the air.<ref> Katalin Szendrei, Pirmin Ganter, Olalla Sànchez‐Sobrado, Roland Eger, Alexander Kuhn, Bettina V. Lotsch (2015). Touchless Optical Finger Motion Tracking Based on 2D Nanosheets with Giant Moisture Responsiveness, Advanced Materials, Volume 27, Issue 41, Pages 6341-6348, doi: 10.1002/adma.201503463 </ref>  When you point a finger, local air humidity changes, which can be translated tot spatial information using those ultrasensitive humidity sensors. The simplicity of the interaction via a touchscreen-like display is already widely acknowledged, so that is an advantage. But it is a very experimental display so its reliability has yet to be proven. </p>
 
 
[[File:Sketches 34.JPG|400px|Image: 800 pixels|center|thumb|The partial solutions to driver communication.]]
 
===Survey===
 
A survey was done to investigate the secondary users’ opinion about communication with the parking robot. The goal was to determine which form of user-robot interaction is preferred. This was done by asking questions about the way of communication between the robot and the secondary users and about what people would do in situations that may occur. Such as what they would do when they don’t understand the robot. This data is used to determine the way the robot will communicate with the secondary users.
 
A total of 175 people have filled in the survey. The largest part of the people (around 60%) are in the age group of 18-30 years old. The other 40% consists of mostly people between 31-50 years old (25%) and people between 51 and 70 years old (15%). Furthermore, there is asked about the education, if the person has a driver license and if they have a technical background. The education was found out to be quite split between high school (28%), vocational education(19%), university of applied sciences (25%) and University (26%). Over 85% had a driver licence and over 60% had a technical background, which can be a technical study or working in a technical company.
 
There was also asked about the affinity the participants have with robots. Because this may influence their opinion on the parking robot. And with this data the participants general view on robots can be compared and connected with their view on the parking robot. People could rate their affinity with robots with a grade between 1-10. Where 1 means no affinity at all and 10 means that they have a lot of affinity with robots. The average grade people gave was a 5.7.
 
To determine the participant's opinion about the ways of communication, several scenarios were presented in which they could choose their preferred way of communication. For example, people could choose how they want to be greeted by the robot and how they would like to communicate any special preferences they may have.
 
The robot can communicate with the secondary user in several ways and each method has its own advantages and disadvantages. Touchscreens are a common and easy way to communicate. However, touchscreens are a source of bacteria and the current coronavirus might change the participants opinions about touch screens. Another option is to use speech, but this can be hard to communicate clearly if, for example, someone doesn't master the language or if the communication takes place in a noisy environment. These disadvantages were also presented to the participants such that they could take this into account while answering the questions.
 
 
 
====Touchscreens/speech====
Despite the coronavirus, 60 % of the participants preferred to communicate their preferences with the use of a touchscreen. Only 4% of the participants would like the robot to communicate via speech at which they have to react via speech. So, there is concluded that the parking robot will communicate with the secondary users by using a touchscreen. And since it is necessary to make the touchscreen clean and safe to use, a self-cleaning surface will be used.
 
====Text/icons====
Furthermore, some questions were asked about the way that the parking place should be communicated in the best and clearest way to the driver. There is chosen for the options of icons, text or icons with text to communicate with the driver. There was also an option of an attached arm to the robot, which shows the direction where the driver needs to go. From these questions, it was found that most of the participants want to have text, sometimes accompanied by icons because they think that this is the clearest method. The only option in which they did give this answer, was with the arrow icon, which when you arrived at your parking spot. The conclusion from this is that it is only chosen for non-ambiguous emojis. The arrow emoji is in this situation the only emoji from which it is immediately very clear what it means without more explanation with text. From this data, it is decided that arrow icons are used to point at the designated parking spot, but a combination of icons and text is used at the arrival and departure.
 
====Preferences====
In the beginning of the survey was asked if the user would want to give preferences to the parking robot when they enter the parking lot. Over 75% of the users did want to communicate their preferences to the robot if that means that they get a better parking spot that takes their preferences into account. When asked what preferences the users have in the survey, it was found that 63% of the people would like the parking spot closest to the entrance. There were also a lot of people who wanted to have the largest parking space or the easiest driving route. There were also some preferences added, such as the parking space with the easiest way out of the parking lot and the safest way to park their car. From these results can be concluded that the secondary users indeed have preferences with respect to their parking spot. Hence, the option that allows the secondary users to communicate their preferences will be included in the parking robot. The preferences of the users will be communicated with the robot via a touchscreen.
As an addition, the parking robot will have the option to remember the preferences connected to each license plate. Such that people who visit the parking lot multiple times can be guided to their parking spot even faster. When someone enters or leaves the parking lot they will get the question if they want the robot to remember their preferences.
Current parking lots also save license plates to keep track of the number of cars that are in the parking lot. The robot will also remember license plates for the same reason. When a car leaves the parking lot, this data will be deleted if the user did not give consent to save the preferences.
 
====Correcting function of the robot====
When someone is not parked neatly this could make that the parking lot cannot be used completely or that it is harder to park for other people. The participants were informed about this and were told that the parking robot can correct someone when they did not park neatly to solve this problem. The participants were first asked to rate how they would feel about a robot correcting someone in general with a grade between 1-10. Where 1 means that they do not like that idea at all and 10 means that they really like the idea. After this, they were asked to rate how they would feel if the robot would correct them.
People rated correcting someone in general with an average of 7.0 and correction themselves with an average of 6.3. From this can be concluded that people like the idea of the robot correcting someone and this will be implemented in our robot.
The robot can correct someone in several ways, the robot can display a text, show an animation of a car that parks again, or use augmented reality to show where the car is not parked correctly. The two options that were chosen the most were augmented reality (36%) and text (35%). Only 11% would like an animation that shows a car that parks again.
There is chosen to combine text and augmented reality to give the clearest instructions to the drivers. When someone does not react to the robot the robot will try again by showing the text and augmented reality footage. There needs to be tested how many times the robot needs to continue with correcting the wrong parked driver. The robot should then be placed behind the parking spot, such that the driver can see the robot displayed in the rearview mirror, or in front of them if he is parked back first. When the driver still doesn’t park again the parking robot will registrate how the car is parked and will take this into account when assigning parking spots to other cars. When someone parked their car a large part across the line, the robot will check if cars are still able to park next to that car. And if necessary, the robot will only assign the partly occupied parking spot to a smaller car or registrate that no car will fit in there.
Most importantly, the robot should always be kind to the drivers, and never be offensive or pushy, even when someone is not following the directions of the robot.
 
====Not understanding the robot====
It could happen that someone does not understand the robot and there is asked how people would react in such a situation. The two options that were chosen the most were that the person would drive off and just find a parking spot themself (50%) and that the driver would stand still and wait on clearer instructions (40%). The first option will not be a big problem for the robot, only that the robot does need to know where the user eventually parks such that the system will not see this as a free parking spot. The second option can be a big problem for the parking lot, because it obstructs the traffic flow when someone would standstill in the middle of the parking lot. The robot should be able to notice when someone is not understanding the directions and is standing still. When this happens the robot will show the directions once again. There needs to be tested how many times the robot needs to continue with giving explanations. When after some time the driver is still standing still,  the robot will show a screen that says the driver can search for a parking spot on their own.  After this, the robot should register their chosen parking spot.
But there needs to be made sure that the communication between the robot and the user is very clear such that the previously mentioned situations will not occur often.
 
====Finding back your parking spot====
The parking robot could help people with finding back their parking spot by remembering their license plate. The participants were asked if they would like this feature. Most of the participants (79%) think this feature is useful. The other 21% has some objections towards this feature such as a lack of privacy or not wanting to remember their license plates themselves. People are not required to use this feature, so not remembering their license plates won’t be a problem.
 
When someone wishes to make use of this feature, one can walk to a dashboard at the beginning of the parking lot. Here can the user fill in their licence plate and the display will show a map of where their car is parked. One can read more about this feature in the recommendations.
 
====Interface of the robot====
Below one can see some parts of the interface of the robot that followed from the survey.
<center>
<ul>
<li style="display: inline-block;"> [[File:welcome.png|thumb|350px|Welcome screen]] </li>
<li style="display: inline-block;"> [[File:Taal2.png|thumb|350px|Select your desired language]] </li>
</ul>
<ul>
<li style="display: inline-block;"> [[File:preferences.png|thumb|350px|Communication of preferences]] </li>
<li style="display: inline-block;"> [[File:remember.png|thumb|350px|Remembering of the preferences]] </li>
</ul>
<ul>
<li style="display: inline-block;"> [[File:follow.png|thumb|350px|Follow the robot on your way to the designated parking spot]] </li>
<li style="display: inline-block;"> [[File:pijl.png|thumb|350px|Arrived at the parking spot, arrow is pointing at the parking spot]] </li>
</ul>
<ul>
<li style="display: inline-block;"> [[File:lijnen.png|thumb|350px|Correction of bad parking]] </li>
<li style="display: inline-block;"> [[File:bye.png|thumb|350px|Final screen after wich the robot will drive off]] </li>
</ul>
</center>
 
== Primary users ==
 
In the previous section, the different types of users were elaborated. In this section the needs of the primary user are discussed.
 
The primary users are the companies which own and manage the parking lot. In order for them to invest in the parking assistant robot, the robot needs to be more beneficial than the current system in several aspects. The first aspect is cost. If the robotic system offers similar benefits for a smaller price, companies might consider to buy the system. Another scenario might be that the robotic system is slightly more expensive, but offers features to increase parking lot profits. An example of this could be that lots which are close to the exits are made premium parking lots. The secondary user could specify to the robot that he/she desires a premium parking lot with additional charge. Another aspect is the amount of parking lots available. Currently, parking garages count the arriving and exiting cars at the barrier. This method is flawed as some drivers rapidly follow after the previous driver. On top of that, double parking is not accounted for. With the robot, a more accurate count can be kept of the available spaces so that a better indication could be given to arriving customers. Additionally, parking lots for regular customers with a subscription could also be used if the customers are not using the lots. The system could message these users. If an incentive is given to these users for offering their space, such as a discount, both the primary user and secondary user could significantly profit. Finally, the most important factor is safety. The primary user will not invest if the robot endangers users.
 
==Software==
The first deliverable is the software which can be used in the parking robot to determine the best free parking space in the parking lot dependent on the preferences of the users. This software is developed in this chapter of the wiki page.
 
===State-of-the-art===
<p> A lot of technologies are produced for the tracking of the availability of parking spaces.
The simplest and first technology for tracking the availability, is the tracking of the total capacity of the parking lot and the amount of cars which enter and leave the space. This is already used in a lot parking spaces of malls, theme parks or other parking lots with a clear enter and leave point.<ref>Teodoroviç D. & Luciç P. (2006). Intelligent parking systems, European Journal of Operational Research, Volume 175, Issue 3, Pages 1666-1681</ref> </p>
 
<p> The second method is to check if there is a vehicle on a parking spot with a detection unit on every parking unit itself. This detection unit can for example be an induction coil, ultrasonic sensor, infrared sensor, pressure sensor or a microwave sensor. The information of all detection devices is then gathered in one management system, to check the overall availability of the parking lot. The individual spots can be characterized by giving a value of 1 or 0 in the system or by setting them as “AVAILABLE” or “OCCUPIED” on the place where it is shown to the user.<ref>Muraki (2003). United States Patent: Parking lot guidance system and parking lot guidance program , Patent No.: US 6,650,250 B2</ref> <ref>Li (2005). United States Patent: Management method and system for a parking lot , Patent No.: US 6,917,307 B2</ref>  </p>
 
<p> Another method for the tracking of free parking spaces, is to use a given three-dimensional model of the parking lot. A capture device can then be used to represent an image of the parking lot, which can be compared with the three-dimensional model of an empty parking lot. From this comparison of the two three-dimensional models, the availability of parking spots can be determined and translated back to the user.<ref>Winter et al. (2006) United States Patent: Apparatus and method for sensing the occupancy status of parking spaces in a parking lot, Patent No.: US 7,116,246 B2</ref> </p>
 
<p> The parking lot can also be divided in different slots of a certain number of parking spaces. For example, ten parking spaces can be divided into two slots of five parking spaces. The GPS of cars can be used to track in which parking slot the car is located. From this information can be determined how many parking spaces are left in each parking slot and can the next car be directed to the parking slot with available parking spaces. <ref>Panayappan, Ramu and Trivedi, Jayini Mukul and Studer, Ahren and Perrig, Adrian (2007). VANET-Based Approach for Parking Space Availability, Proceedings of the Fourth ACM International Workshop on Vehicular Ad Hoc Networks, Pages 75-76, doi: 10.1145/1287748.1287763</ref> </p>
 
<p> All the previous systems use some kind of tracking method to determine the availability of the parking spaces. Another method is predicting the availability of parking spaces by looking at patterns in old data. With this method is giving a precise number of available parking spaces not possible, due to the accuracy of long term predictions, the other parking lots in the area and the user behavior. However, if the accuracy of this method is high enough, can it still result in good approximations of the vacant places on parking lots. <ref> Felix Caicedo, Carola Blazquez, Pablo Miranda (2012). Prediction of parking space availability in real time,Expert Systems with Applications, Volume 39, Issue 8, Pages 7281-7290, doi: 10.1016/j.eswa.2012.01.091 </ref> <ref>Yanxu Zheng, S. Rajasegarar and C. Leckie (2015).  Parking availability prediction for sensor-enabled car parks in smart cities IEEE Tenth International Conference on Intelligent Sensors, Sensor Networks and Information Processing (ISSNIP), Pages 1-6.</ref> </p>
 
=== Product ===
<p> A prototype was written for the software that could manage the parking lot, the API. This software keeps track of the state of the parking lot, determines the best parking spaces given some preferences and calculates the routes for the robots to take. This software is not ready for real world usage, it covers most of the necessary managment but ignores important details. <p>
 
<p> The software relies on a simplification of the parking lot, in the form of a graph<ref>https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)</ref>. This means that owners of the system will have to model their parking lot into a suitable graph. This graph is stored in a simple JSON<ref>https://www.json.org/json-en.html</ref> format, similar to an adjacency list<ref>https://en.wikipedia.org/wiki/Adjacency_list#:~:text=In%20graph%20theory%20and%20computer,for%20use%20in%20computer%20programs</ref>. In order to help the parking lot owner to create this graph, the software creates a simple graph editor with basic functionality. Every edge and node in the graph should be labeled with a relevant subset of the following node and edge tags:</p>
Node:
{| border=1 style="border-collapse: collapse;" cellpadding="3" |-
! type !! description !! color
|-
| Parking spot || Indicates that the given node is a parking spot || <span style="color:#ff00ff">magenta</span>
|-
| Vehicle entrance || Indicates that the given node is a vehicle entrance of the lot || <span style="color:#00ff00">green</span>
|-
| Vehicle exit || Indicates that the given node is a vehicle exit of the lot || <span style="color:#ff0000">red</span>
|-
| Pedestrian entrance || Indicates that the given node is a pedestrian entrance of the lot || <span style="color:#009900">dark green</span>
|-
| Pedestrian exit || Indicates that the given node is a pedestrian exit of the lot || <span style="color:#990000">dark red</span>
|-
| Robot queue || Indicates that the given node is a node that a robot can stand when idle, any edge leading up to such a node can be considered part of the queue || black
|-
| Robot spawn || Indicates that the given node is a node that a robot can be added at, and leads to a queue node through (implicit) queue edges || black
|}
Edge:
{| border=1 style="border-collapse: collapse;" cellpadding="3" |-
! type !! description
|-
| Robot path || Indicates that the given edge may be traversed by a robot
|-
| Vehicle path || Indicates that the given edge may be traversed by a vehicle
|-
| Pedestrian path || Indicates that the given edge may be traversed by a pedestrian
|}
Within the graph editor every node gets the color of the first assigned tag of the node to increase readability. A node can have multiple tags at once without issues, but only the color of the first tag will be displayed.
 
<p>Because there was not managed to create a prototype of the robots during this project, the software contains a webpage that visualizes a simple simulation. This simulation uses the centralized API that the robots would also use, meaning that the parking lot information is shared between different clients. Every person that opens up this webpage will act as a robot in the system, thus adding 1 robot to the parking lot. In order to add multiple bots, one can simply open up multiple tabs with the same site. These tabs need to be visible however, or otherwise most browsers will go into a background mode that slows down the simulation.</p>
 
==== User manual ====
The software is currently hosted at [https://botparker.herokuapp.com/ https://botparker.herokuapp.com/] for demonstration purposes. This site may be offline in the future, in which case the results can be viewed by manualy hosting the code. Instructions on how to achieve this are present in the implementation details section below.
 
'''Graph Editor'''
<p> The graph editor can be reached at the <code>/edit</code> path of the website, E.g. [https://botparker.herokuapp.com/edit https://botparker.herokuapp.com/edit]. 
The editor consists of two section: The main section containing the graph on the left, and the controls section on the right. <br>
The graph can be moved by dragging the mouse while holding down the scroll wheel, and can be scalled by scrolling while holding the ctrl key down. <br>
The controls section contains 3 subsections: The view filters, IO, and tools sections. These controls are described below.
Tools can be switched by either pressing the tab of the tool, or scrolling the mousewheel without holding down the ctrl key. </p>
 
[[File:ParkingLotEditor.png|center|thumb|700px|Parking lot editor page]]
 
''' View filters '''
What nodes and edges are shown in the graph section can be altered using the filters in the controls section. The top area shows two dropdown boxes in which tags can be selected.
Only nodes and edges containing these tags will be shown in the graph section. A special 'tag' with the name <code>empty</code> is also provided to include nodes that don't have any tags.
''' IO '''
This section contains two buttons, for importing and exporting the graph. Both of these buttons bring up a modal box with a textbox that can be used to either copy the graph from or paste it to.
The graph is represented in a json format and can also easily be modified programmatically using for instance javascript. The type of the graph can be described using the following TypeScript<ref name="TS">https://www.typescriptlang.org/</ref> code:
    type IParkingGraph = {[ID: string]: IParkingNode};
    type IParkingNode = {
        x: number;
        y: number;
        edges: INormalizedParkingEdge[];
        tags: IParkingNodeTag[];
    }
    type IParkingEdge = {
        end: string;
        tags: IParkingEdgeTag[];
    }
    type IParkingNodeTag =
        | "spot"
        | "entrance"
        | "exit"
        | "pedestrianEntrance"
        | "pedestrianExit"
        | "botQueue"
        | "botSpawn"
    type IParkingEdgeTag =
        | "carPath"
        | "pedestrianPath"
        | "botPath"
''' Selector tool '''
The selector tool can be used to select and edit nodes and edges. When the tool is selected, clicking in the graph will result in selected nearby nodes and edges. Only a single node or edge can be selected at a time, and it will cycle through nearby nodes and edges on every click to make all accessible (even if they overlap). Both nodes and edges will show a delete button when selected, in order to delete them from the graph, as well as a dropdown to select the tags to apply. In addition, nodes show their name and location, while edges show the IDs of the start and end location.
''' Node tool '''
The node tool can be used to add new nodes to the graph. When the tool is selected, clicking in the graph will result in a new node being created. This node will simply get a new unique ID by counting upwards, but can be renamed later using the selector tool. The node tool allows you to specify the position precision, in order to snap nodes to locations in the grid. If E.G. 0.25 is selected, both the x and y coordinates will automatically become a multiple of 0.25 when the node is created. In addition a tags dropdown is provided in order to specify the tags that newly placed nodes should spawn with.
''' Edge tool '''
The edge tool can be used to add new edges to the graph. When the tool is selected, clicking a node and dragging to another node will create an edge from the start to end node. A toggle is provided to allow edges to be created in both directions with a single drag. In addition a tags dropdown is provided in order to specify the tags that newly added edges should spawn with.
 
===== Simulation =====
The simulation can be reached by going to the root path of the website, E.G. [https://botparker.herokuapp.com/ https://botparker.herokuapp.com/].
The editor consists of two sections: The main section containing the graph on the left, and the controls section on the right. <br>
The graph can be moved by dragging the mouse while holding down the scroll wheel, and can be scalled by scrolling while holding the ctrl key down.
Each client that connects to the simulation will provide their own robot to guide customers and add it to the simulation. This robot should automatically become visible in the graph. <br>
The controls section contains 3 subsections: The view filters, customer controls, and override controls.
 
[[File:ParkingLotSimulation.png|center|thumb|700px|Parking lot editor page]]
 
''' View filters '''
What nodes and edges are shown in the graph section can be altered using the filters in the controls section. The top area shows two dropdown boxes in which tags can be selected.
Only nodes and edges containing these tags will be shown in the graph section. A special 'tag' with the name <code>empty</code> is also provided to include nodes that don't have any tags.
The API creates routes for customers while performing its calculation to find the optimal parking spot. When a robot requests a parking space, this route is returned as well. The last dropdown box can be used to show or hide sections of this planned customer route.
 
''' Customer Controls '''
Customers can be added using the 'Add customer' button. This button will spawn a new car at the lot entrance and store the preferences in the customer. These preferences can be entered using the two textboxes above: walk cost and turn cost.
<p>The walk cost represents how much someone dislikes to walk, in relation to driving. If E.G. '5' is entererd, it means that the customer would rather drive 5 meters than walking 1 meter. So if you want to be as close as possible to the pedestrian exit, you would want to enter a very high number here, lets say 1000 000 000 (since we can quite safely assume no parking lot would ever require you to drive this far). This way the cost of walking totally outweighs the cost of driving. This could however result in having to drive very far in order to get close to an exit, while perfectly fine parking spots are available nearby, which may also be close to exits. This high of a walking cost is probably not preferable in practice. On the other end of the spectrum, we could set the walking cost to 0. This would result in the system totally ignoring how far away the parking spot is from a pedestrian exit. It would instead make sure that the parking space is as close to the vehicle entrance and exit as possible, such that the least amount of driving is required. </p>
<p>The turn cost represent how much someone dislikes to take turns, in relation to driving straight. If E.G. '5' is entered, it means that the customer would rather drive 5 meters than to take a turn of 90 degrees. So if you want a path with as few turns as possible, you would want to enter a very high number here (E.G. 1000 000 000 as mentioned before). This can be used to find simpler routes, at the expense of being longer, in order to accommodate people with poor driving skills.</p>
Customers will automatically be assigned to robots in the simulation, which will guide them to the best available spot according to their preferences. These preferences would of course not be presented using numeric inputs like this in practice. It would instead provide a couple of buttons with preset values. This simulation provides them as numeric inputs such that people can experiment with precise values andd really see what impact they have on the result. Some of these results are discussed in a section that will follow. <br>
When a customer reaches their parking spot they will leave the car and head to the pedestrian exit. After a random amount of time between 20 seconds and 5 minutes have elapsed, the customer will return to their car and leave the parking lot. Once they fully left the lot, their parking space will become available to the system again.
When the API plans a route, it considers the worst case scenario. This means that it will be able to drive cars across unclaimed parking spaces in order to reach their parking space right now, but cars can not cross any parking spaces on their way out. It may be that a driver can take a significantly shorter path on their way out by driving over an empty parking space, but we can't ensure this parking space will be available when the customer leaves. Therefor the spot finding algorithm simply ignores this possibility and may therefor choose an option that turns out to be worse in hindsight. The simulation is based on these routes that the API calculates. This results in cars and pedestrians sometimes taking longer illogical paths on their exit route, simply to not cross any parking spaces (even though they may be traversable).
 
 
''' Override controls '''
<p> When a client disconnects from the simulation, it will also destroy their robot and all the customers that it added. If any of the customers still occupied a parking spot, this could result in parking spots still being occupied according to the API, and never becoming available again on their own. In order to manually fix this, a 'Release all spaces' button is available. This will simply tell the API that all parking spaces are available again, even if it's still occupied in reality. </p>
<p> In addition, we can control parking space state for each node individually. We can select a parking space by clicking on it, which results in an extra dropdown appearing in the controls area. Here we can select whether the parking space is available, claimed or taken. This allows us to manually create specific scenerios and see how the spot search algorithm handles it. </p>
 
==== Results ====
Note that that in all images below, the darker magenta parking spaces indicate that the space is claimed or taken. In addition, not all visible edges are edges that all entity types may traverse. Edges allowed to be traversed by cars can be seen below:
 
[[File:LotCarPaths.png|center|thumb|400px|Car paths of the parking lot]]
 
<p> When the turn cost is put to a high value, there can be seen that the search algorithm chooses a very simple path, which only requires the customer to make two 90 degree turns. The customer will however have to walk slightly further to get to the pedestrian exit. It seems like the API could have chosen an alternative driving route to the same space that requires the least amount of walking, while also requiring only two turns. This is however only true in case that the parking space in front of the car is still available when the customer returns, which may not be the case. As discussed in the customer controls section, the API will simply ignore the possibility of these spaces being available at all. </p>
 
<center>
<ul>
<li style="display: inline-block;"> [[File:EmptyLotNoTurnCostCarRoute.png|thumb|400px|Car route when there are no turn costs]] </li>
<li style="display: inline-block;"> [[File:EmptyLotNoTurnCostPedestrianRoute.png|thumb|400px|Pedestrian route when there are no turn costs]] </li>
</ul>
<ul>
<li style="display: inline-block;"> [[File:EmptyLotTurnCostCarRoute.png|thumb|400px|Car route when there is a turn cost]] </li>
<li style="display: inline-block;"> [[File:EmptyLotTurnCostPedestrianRoute.png|thumb|400px|Pedestrian route when there is a turn cost]] </li>
</ul>
</center>
 
<p> When we decrease the walking cost to 0, we see similar result to a high turn cost in an empty lot, since this simpler path also requires less driving.</p>
[[File:EmptyLotNoWalkCostCarRoute.png|center|thumb|400px|Car route when there are no walking costs]]
 
<p> We can however see a difference between a high turn cost and low walking cost in more complicated situations, like the one below. </p>
[[File:OccupiedLotNoTurnCosts.png|center|thumb|400px|Car route when there is a normal walking cost and no turn cost]]
[[File:OccupiedLotHighTurnCosts.png|center|thumb|400px|Car route when there is a normal walking cost and a high turn cost]]
[[File:OccupiedLotHighWalkCosts.png|center|thumb|400px|Car route when there is a high walking cost, and no turn cost]]
 
==== Known issues ====
===== Known breaking bugs =====
''' Robot collision '''
When multiple robots run into one and another heads on, neither of them will proceed. This results in the whole simulation halting, until one of the robot's client disconnects to remove the robot. This is the result of the simple code used to make the robots properly wait in the queue. Proper collision avoidance was too difficult for this project, see limitations.
 
''' Car collision '''
When a car gets to close to a robot it will stop moving. If another robot than the one guiding the car gets in front of the car, the car won't be able to proceed. Once again the client will have to disconnect in order to resolve the issue.
 
===== Minor bugs =====
''' Space claim '''
When a client disconnects while still occupying parking spaces, those parking spaces will never become available again on their own. Someone will manually have to indicate them to be available again in order to be usable by the API.
 
''' Node tag indication '''
Only a single tag of a node is visualized by giving it the corresponding color. This means that if a node is both the parking lot entrance and exit, it will appear to be only the entrance or the exit. This doesn't affect functionality, only visuals.
 
===== Limitations and future work =====
 
===== Collision detection =====
In order to focus on the parking spot assignment and the user preferences aspects, no time was invested in the guiding robot software. This software would handle the collision detection, and other important difficult aspects of guiding the customer. Since the simulation is only meant to visualize the tasks that the API handles, collision detection has been left out. Properly handling all the dynamics that arise in real world scenarios when guiding customers was too difficult to be added to the simulation with the limited available resources. This results in people visually being run over by cars in many situations. This obviously isn't the desired real world behavior of the system.
 
''' Dynamic planning '''
The system is currently rather static. The API doesn't consider routes that other robots are taking to guide users, nor locations where people are walking, etc. The efficiency in real world scenarios could probably be increased by using this information while planning a route. It could for instance be beneficial to guide people to different aisles in order prevent them from slowing each other down while parking. This is something that could be researched in order to augment the current spot assignment algorithm.
 
''' Extra user preferences '''
More user preferences could be considered while looking for parking spaces. A couple of possible preferences that have been suggested are listed below.
* Option to park closer to an elevator (compared to staircase exit, in case they are some distance apart)
* Option to specify preference for perpendicular parking, angle parking or parallel parking (in case a parking lot has different space types)
* Option to specify what direction they have to head in (in case there are pedestrian entrances and exits at multiple sides of the building)
 
 
''' Production readiness '''
The software is currently generally not in a state to be deployed. There is no proper way specifying the graph of the parking lot, the API provides no security, and the way of installing the software is not as easy as it could be.
It is currently in more of a research/test state than anything else, so if someone would want to deploy it with its current feature set it would still need to be finalized.
 
=== Implementation details ===
==== Installation ====
The source code for the software can be found at [https://github.com/TarVK/parkingBot https://github.com/TarVK/parkingBot]. This code can be cloned using git<ref>https://git-scm.com/</ref>.
 
In order to run this code, NodeJS<ref name="Node">https://nodejs.org/en/</ref> has to be installed. <br />
Then using node, the dependencies of the project can be installed by calling <code>npm install</code> in the terminal within the root of the project.
 
===== Production =====
Currently there is no way to specify the parking lot graph without altering code, so there is no fully proper way of deploying the software.
<p> The parking lot graph would have to be added or replaced [https://github.com/TarVK/parkingBot/tree/master/src/server/parkingLots here] and the correct graph would need to be imported [https://github.com/TarVK/parkingBot/blob/master/src/server/App.ts#L4 here]. </p>
 
The code can be built by running <code>npm run build</code> in the terminal within the root of the project. After which <code>npm start</code> can be ran to start the application.
 
===== Development =====
The source code is split into two sections, the API (server) and the simulation (client). These can be ran independently (althrough the simulation requires the API to be running somewhere), or together in one process.
We can run them in development mode, which will make sure to automatically compile the code and restart the software whenever a change is made.
The following commands can be ran from the terminal to achieve this:
* npm run dev-server (To only run the development mode of the server)
* npm run dev-client (To only run the development mode of the client)
* npm run dev (To run both the development mode of the server and client in one process)
 
==== Used technologies ====
The main software that was written is the API. This API is able to run on a local server at a parking lot, and all robots are able to communicate with it over an internet connection.
It's written in TypeScript<ref name="TS" /> and runs in  NodeJS<ref name="Node" />. It uses Socket.io<ref>https://socket.io/</ref> in order to facilitate symmetric communication.
In addition, a front-end web application is provided through the server, in order to show a simple simulation of the parking lot. This was added to show the capabilities of the system without having to create the physical robots. This application is also written in TypeScript<ref name="TS" /> and uses the following important libraries:
* React<ref>https://reactjs.org/</ref> for view creation
* Model-React<ref>https://www.npmjs.com/package/model-react</ref> for data management
* PixiJS<ref>https://www.pixijs.com/</ref> for dynamic graphics
* React-Pixi-Fiber <ref>https://github.com/michalochman/react-pixi-fiber</ref> to use PixiJS with React
* Fluent UI<ref>https://developer.microsoft.com/en-us/fluentui</ref> for UI components
 
==== Algorithms ====
''' Search algorithm '''
Dijkstra's algorithm<ref name="dijkstra">https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm</ref> together with a min-heap<ref>https://en.wikipedia.org/wiki/Min-max_heap</ref> is used to perform the search.
This algorithm can find the cheapest path between two nodes in a graph, in an efficient manner. It computes the cheapest path from a start node to any node in the graph.
This by itself is not sufficient for our search however, since we aren't just interested in the distance between two points. We want to consider a number of variables, including:
* Total driving distance from entrance to exit
* Total walking distance from parking spot to an pedestrian exit
* Total walking distance from a pedestrian entrance to the parking spot (in case there are seperate entrances and exits)
* Difficulty to get to a parking spot (based on E.G. number of turns required)
In order to consider all these aspects, graph transformations are used to obtain graphs that Dijkstra's algorithm<ref name="dijkstra"/> can be used on.
 
''' Graph transformations '''
Given the graph of the parking lot, the software will create so called 'search graphs'. These are graphs where the physical location of nodes is abstracted away. These do not represent the parking lot in a physical manor anymore, but all relevant information to determine the ideal spot is retained. This relevant information is encoded in the form of edge weights, which can be used to determine costs from one node to another. This way the cost to get from the entrance to a parking spot can still be determined, without having to consider physical location. Each node also contains a reference to the node it was created from, in order to translate path found in the search graph back to a physical route.
The system creates 3 different search graphs, which are all used in the final search that combines the information:
* Pedestrian entrance to spot graph
* Pedestrian exit to spot graph
* Vehicle entrance through spot to exit graph
These graphs are only created once when the system starts up, therefor efficiency of creating these isn't a major concern.
 
''' Pedestrian entrance to spot graph '''
This graph is a simple graph that uses Euclidean distance as weights on all edges, and only retains nodes and edges that may be traversed by pedestrians. This graph therefor allows the distance between a given entrance and any parking spot to be determined
 
''' Pedestrian exit to spot graph '''
Similar to the other pedestrian graph, this graph uses Euclidean distance as weights on all edges, and only retains nodes and edges that may be traversed by pedestrians. In addition, it reverses all edges, such that if you were only allowed to walk towards the exit over a path, you are now only allowed to walk away from the exit over said path. This graph therefor allows the distance between a given exit and any parking spot to be determined
 
''' Vehicle entrance through spot to exit graph '''
This graph only retains edges traversable by vehicles. It first creates two instances of the graph, where the first doesn't contain any vehicle exits, and the second doesn't contain any vehicle entrances. Then it connects the two graph through the parking spots. An example illustration is provided below.
<center>
<ul>
<li style="display: inline-block;"> [[File:SpotRoutingBefore.png|thumb|400px|A simple parking graph before applying the routing transformation]] </li>
<li style="display: inline-block;"> [[File:SpotRoutingAfter.png|thumb|400px|A simple parking graph after applying the routing transformation]] </li>
</ul>
</center>
 
This way we can search for the cheapest path from a vehicle entrance to a vehicle exit, which has to pass through at least one parking spot. In this graph, all edge weights are simply the euclidian distance between the nodes.
 
A second transformation is applied to this graph, which introduces costs for each turn taken. In most graph algorithms like Dijkstra's algorithm, the position of nodes is meaningless. When having to consider the costs of taking a turn, it is meaningful information however. So a transformation is performed that translates this meaningful position data into edge data. After the transformation has been applied, the node position is no longer meaningful. The transformation replaces every node in the original graph by the product of the set of incoming and exiting edges. This way we add an edge between any pair of incoming and exiting edges, and give it a weight relative to the turn that's required to make this transition. An example illustration is provided below.
<center>
<ul>
<li style="display: inline-block;"> [[File:CornerWeightBefore.png|thumb|400px|A simple graph before applying the turn costs transformation]] </li>
<li style="display: inline-block;"> [[File:CornerWeightAfter.png|thumb|400px|A simple graph after applying the turn costs transformation]] </li>
</ul>
</center>
 
Using this graph we can find the spot that requires the minimal distance to be driven, and fewest turns to be taken.
 
''' Graph search '''
In the search algorithm, the information of all 3 graphs is combined. First a search is executed on both pedestrian graphs in order to determine the cost to reach any spot by foot. In this search a 'walk cost' is used to multiply the distances with in order to consider user preferences.
 
Then a search is done in the vehicle graph. In this search any turn edge is multiplied with a 'turn cost' to once again consider user preferences. When the search algorithm encounters an edge through a parking spot, the walking cost calculated in the previous spot is provided. In addition an infinite cost is provided in case the parking spot is already taken. The result of this search will is the cheapest path from the entrance to the exit of the parking lot, passing through a parking spot.
The parking spot is extracted from this path in order to retrieve the pedestrian paths to and from this spot as well, and all paths are returned as the search result.
 
The costly graph transformations are only executed once, and per search we only have to use Dijkstra's simple and efficient search algorithm a couple of times.
 
==Hardware==
The second thing that will be delivered is a design with specifications of the parking robot. This design is developed in this chapter.
 
===State-of-the-art===
<p> If the information of the available parking places is measured, it is important that the system can choose the best possible parking spot for the vehicle. There are different performance measures for the best parking spot, but the most used ones are a combination of that the time riding to the parking spot and the time walking from the parking spot to the destination are minimal.<ref>C. Richard Cassady, John E. Kobza (1998). A Probabilistic Approach to Evaluate Strategies for Selecting a Parking Space, Transportation Science, Volume 32, Issue 1, Pages 3-85</ref> </p>
 
<p> When the optimal parking spot is chosen, this can be passed to the user in different ways. The first one is to show the route to the parking spot on the dashboard of the vehicle. A lot of cars nowadays have GPS on the dashboard and this can be used to show the information of the parking spots. This results in that there needs to be a continuous information flow between the vehicle and the availability of the parking space.<ref>Schuessler (1998). Method and device for guiding vehicles as a function of the traffic situation , Patent No.: US 5,818,356</ref> <ref>P. M. d'Orey, J. Azevedo and M. Ferreira (2016) Exploring the solution space of self-automated parking lots: An empirical evaluation of vehicle control strategies, IEEE 19th International Conference on Intelligent Transportation Systems (ITSC), Pages 1134-1140.</ref> </p>
 
<p> This can however also be done with predicted information of the availability of the parking spaces. This information can be given to the GPS of the vehicle, such that the route to the predicted available spot is displayed on the dashboard.</p>
 
<p> A lot of the times, employers are deployed to guide the vehicles to the empty parking spots. This can be seen on parking lots for places like festival, amusement parks and museums. This can be replaced by robotic solutions.  Signs can be set on the ground with information on where the vehicle needs to go for the empty parking spot. For example a sign with an arrow or an cross can be used to show in a simple way for the user, which way he needs to follow. <ref>Li (2005). United States Patent: Management method and system for a parking lot , Patent No.: US 6,917,307 B2</ref> </p>
 
<p> The employers can also be replaced by robotic vehicles that lead the vehicle to the best parking spot. These robots can fully ride the way of the beginning of the parking lot to the parking spot, or can be used as robotic employers, by going to the crossings and then showing the right way to the user in the vehicle. </p>
 
===Concepts===
==== Obstacle avoidance and parking availability ====
In order for the system to avoid parked cars and guide drivers safely to their designated parking spot, the system should be able to observe its environment and determine its position. To be able to this, two types of sensors can be used, namely: dead reckoning sensors and environmental sensors. Dead reckoning sensor operate by integrating sensor data over time to determine the vehicles position. Environmental sensors are used to gather information about the vehicles surroundings. <ref > Cox, I. J., & Wilfong, G. T. (1990).Autonomous Robot Vehicles(Vol. 6). Springer, New York, NY. doi:https://doi-org.dianus.libr.tue.nl/10.1007/978-1-4613-8997-2 </ref>
 
The first sensor option is to use cameras which can observe in 360° short or long range. These cameras can be placed either on top of the vehicle, on the sides of the vehicles or externally placed (see figure below). The key application for this cameras is to recognize objects. Some tasks such as traffic light identification is only possible with the use of cameras. However, because of the great amount of pixels, camera data processing can be intensive. On top of that, camera quality is susceptible to environmental conditions such as rain, fog or snow. 
 
Radar can also be used either at short or long range. Different objects reflect the radio waves differently. The advantage of using radar is that positional and velocity data can be acquired simultaneously. On top of that, radars are impervious to weather conditions. Despite, radar acquired data yields low resolution and a 2D image.
 
Lidar uses light to receive information about distances between objects. Lidar is used for short range applications. It is used to obtain position and geometry of an object. <ref>Zhao, X., Sun, P., Xu, Z., Min, H., & Yu, H. (2020). Fusion of 3D LIDAR and Camera Data for ObjectDetection  in Autonomous  Vehicle  Applications.IEEE Sensors Journal,20(9),  4901–4913.  doi:10.1109/JSEN.2020.2966034</ref> If multiple Emitter and receiver sets are placed on the vehicle, Lidar can be used to create a 3D image of the environment. Next to that, because dark and light objects reflect light at a different intensity, Lidar can be used to detect road markings. A disadvantage is that Lidar data can be affected by the weather.
 
Ultrasonic sensors are short range and unaffected by weather conditions. Currently, ultrasonic sensors are used for parking assist.
 
GPS can be used to determine the vehicle position globally. GPS, however, is not enough to determine the position with great accuracy, as GPS can only obtain an objects position with 1-2 m accuracy.
 
In general, all of the sensors considered above have pros and cons. Hence, these sensors are often used in combination in self-driving vehicles. <ref>Vozar,  S.  (n.d.).Sensors for Autonomous Vehicles.Retrieved  fromhttps://ieeexplore-ieee-org.dianus.libr.tue.nl/courses/details/EDP538 </ref>
 
 
[[File:Sketches 32.JPG|400px|Image: 800 pixels|center|thumb|The partial solutions to obstacle avoidance and parking availability.]]
 
==== Vehicle motion ====
Another crucial aspect of the parking assistant robot is motion. The robot should both be able to operate on asphalt and rough terrain. Therefore, a solution must be found to allow smooth operation in both environments.
 
The first option is to use large wheels with a thick profile. If the wheels are independently propelled and sprung, the vehicle will even be able to have grip in a muddy and bumpy environment. Another option is to use tracks. Tracks are used in the most inaccessible terrains. However, tracks are not as suitable for use on asphalt. Another option is to use legs. The advantage of legs as that they can move the vehicle in nearly all environments. Nonetheless, legs often require complex mechanical actuating systems (see figure below).
 
Additionally, steering must be considered. This can either be done by rotating left and right wheels or tracks at different speeds or by turning the front or back wheels.
 
[[File:Sketches 33.JPG|400px|Image: 800 pixels|center|thumb|The partial solutions to vehicle motion.]]
=== Integrated solutions ===
Requirement: able to turn on its place
Preference: as small footprint as possible
 
==== Solution 1 ====
A two wheel based self-stabilizing robot – like a segway
* Display on eye level
* Sensors on top
* Weight distribution on top en bottom in order to maintain balance
 
Pros
* Small wheelbase, able to navigate to relative small places
* Agile
* Ability to keep itself upright after perturbation
Cons
* Possibly less stable
* Possibly dangerous movements when trying to keep itself upright
 
[[File:Sketches 36.JPG|400px|Image: 800 pixels|center|thumb|A two wheel based self-stabilizing robot.]]
 
==== Solution 2 ====
A four wheel based robot – two powered wheels, two caster wheels
* Display on eye level
* Sensors on top
* Weight distribution on bottom in order to lower center of mass
 
Pros
* Stable from itself
Cons
* Less ability to react to perturbations to keep itself upright
* Because of the dimensions of the robot (way taller then wide) not that stable
* Bigger footprint then two wheel based
 
[[File:Sketches 40.JPG|400px|Image: 800 pixels|center|thumb|A four wheel based robot – two powered wheels, two caster wheels.]]
 
==== Solution 3 ====
A two wheel based robot, with added extra control wheel.
The arm of this of this extra control wheel is sprung and shock absorbing, the wheel can be a fixed one or a castor wheel and is in normal use not touching the ground.
 
Pros
* Same as solution 1
Cons
* More stable then solution 1
* Because of the added control wheel smaller correction suffice to keep upright, so it is less dangerous
 
[[File:Sketches 39.JPG|400px|Image: 800 pixels|center|thumb|A two wheel based robot, with added extra control wheel.]]
 
==== Solution 4 ====
With the previous two wheel based solutions, stability is a key issue. Also, with a narrow base four wheel base robot, tipping over is a risk. Therefore, this concept has four wheels with a larger width and length to reduce this risk. The advantage of the two wheel concepts is the maneuverability. In order to have the same maneuverability, four omnidirectional wheels are used to allow the robot to rotate at its position. 
 
[[File:Sketches 41.JPG|500px|Image: 800 pixels|center|thumb|A four wheel based robot, with omnidirectional wheels.]]
 
===Detailing===
The final design has several important features to fulfill the requirements, preferences and constraints. The first requirement applicable to hardware is the detection of correct parking. To allow the robot to do this, the robot has been fitted with a Lidar. This sensor can both create a 3D-image of the environment and detect road markings. If a car is double parked, the system will indicate this and try to guide the user to re-park their car. If the user refuses to do so, the parking robot can indicate that a double charge will be applied. On top of that, Lidar can be used to detect the size of an arriving car. This is important so that the system can select a large enough parking space for the user's vehicle. Secondly, the system should not come closer than 0.7 m from the secondary user when guiding. A large screen (55") ensures that readable instructions can be given to the secondary user at this distance. With regard to the input of parking preferences, the screen is also a touchscreen which is mounted on a pivot point (see the figure below). The system can drive next to the driver window so that the secondary user can reach the screen. Among the several preferences available to choose from on the touchscreen are a help function, feedback function and emergency function. Finally with regard to requirements, the body of the car ensures that the components inside remain dry.
 
[[File:Pivotpoint.png|800px|center]]
 
Also a variety of preferences are taken into account. Concerning the parking payment method, two options are possible. The first option is that secondary users can pay contact less with a debit card at the exit. The parking charge is automatically coupled to the license plate. The second option is that for regular users a payment plan is coupled to a license plate so they can immediately leave the parking garage. With regard to appearance, the robot does not look like a human. The main reason for this is that the robot has four wheels which are at a relatively large distance from each other to increase stability. Therefore, it is not possible to create a human figure. Nonetheless, considering license plate recognition, the robot has a camera to be able to perform this task. The license plates are coupled to the specific parking spot and stored in a database. By doing this, the system knows where specific cars are parked and which parking spots are taken. Now, a tablet at the person entrance of the parking garage allows users to search their license plate to see where their car is parked. 
 
====Approximations ====
In order to find appropriate components for the robot, estimations have to be made. Therefore, in this section some global parameters are established.
 
In the figure at solution 4, the current concept is depicted. This figure gives a course overview of all the components that need to be present in the final design. The final design needs to have the following components; a screen or light display for interaction with the secondary user, wheels, suspension, actuators, sensors, a computer, a battery pack and additional lighting.
 
With regard to mass, the led screen of the robot has an approximate mass of 20 kg. <ref>https://www.coolblue.nl/product/827634/samsung-qe55q70r-qled.html</ref> Next to that, the four omnidirectional Mecanum wheels of 254 mm diameter have a combined mass of 12 kg <ref>https://robotdiscounter.com/a-set-of-254mm-aluminium-mecanum-wheels-4-pieces-bearing-rollers-14131?utm_source=kelkoonl&utm_medium=cpc&utm_campaign=kelkooclick&utm_term=A+set+of+254mm+Aluminium+Mecanum+Wheels+</ref>. Concerning the sensors, these consist of Lidars, camera's and radar. The weight of these sensors combined is expected to be 1 kg. <ref>https://www.kamera-express.nl/product/12224571/kodak-pixpro-orbit360-4k-action-cam-standard/?channable=e13909.MTIyMjQ1NzE&gclid=CjwKCAjwkun1BRAIEiwA2mJRWZEzqWN6lqiHoi8hXR6fY_an8EiIgA3UmhNDRge7aXZuR0PQDvwzfhoCQowQAvD_BwE</ref><ref>https://nl.rs-online.com/web/p/photoelectric-sensors/1893497?cm_mmc=NL-PLA-DS3A-_-google-_-CSS_NL_NL_Automation_And_Control_Gear_New-_-Sensors_And_Transducers%7CPhotoelectric_Sensors-_-PRODUCT_GROUP&matchtype=&pla-308865050060&gclid=CjwKCAjwkun1BRAIEiwA2mJRWZUZTu59GieFll1VvDDsd2i1LC6pBzw6Rmu2mKRu4pDt8SaDB-ak4RoCLr8QAvD_BwE&gclsrc=aw.ds</ref>
In order to compute the algorithm, hardware is needed. This hardware is guessed to be 10 kg.
 
All components have to be put together in a structure. This structure needs to be rigid and needs to resist minor crash loads. The structure combined with the spring dampers is expected to weigh 20 kg.
 
The wheels have to be individually propelled with actuators. These actuators need to accelerate and decelerate (using dc injection braking). The robot will travel at an average velocity of 15 km/h in the parking lot. If the robot has a maximum speed of 30 km/h and accelerates at a maximum acceleration of 2 m/s^2, for a robot weighing 100 kg, a force of 200 N is needed. Given a wheel diameter of 254 mm, the required torque is equal to 25 Nm and the total power 1700 W. To prevent needing a gearbox, the maximum rpm of the actuator should be equal to:
 
[[File:rpm.PNG|100px|center]]
 
 
Hence, <math>\omega</math> is equal to 4000 rpm. The required power can be distributed over four actuators. Therefore, each actuator needs a power of 425 W, a torque of 6.25 Nm and a maximum of 4000 rpm. The Transmotec D123182-12 fits the power requirements running at a slightly lower rpm. <ref>https://www.transmotec.com/product/d123182-12/?c=eur</ref> This actuator weighs approximately 7.5 kg. In total the actuators have a weight of 30 kg.
 
Finally, the actuators, screen and computer components have to be supplied with power. The actuators need to provide a mechanical power of 1700 W. The efficiency of an electric motor is dependent of the work load of the motor.  <ref>https://www.energy.gov/sites/prod/files/2014/04/f15/10097517.pdf</ref> If the efficiency is assumed 70%, the required electric power is equal to 2500 W. On top of that, the screen has an electric power of 130 W. Finally, the processing power of the computer is approximated at 1000 W. The sensors also require power combined with the additional lighting, this amounts to a total electric power of 4 kW. Assuming that the batteries can charge at the end of the day, the robot needs to be functional for eight hours. Therefore, the batteries need to store 32 kWh, if losses are neglected. The capacity of a lithium-ion battery is 265 Wh/kg <ref>https://en.wikipedia.org/wiki/Lithium-ion_battery</ref>. This means the battery pack would weigh 120 kg. This is not feasible, therefore, it is assumed that the robot can charge during the day. If the robot has an operating duration of two hours, the battery needs a capacity of 8000 kWh. This would result in a mass of 30 kg.
 
In total, the robot would weigh approximately 120 kg. Next to mass, volume is an important factor. The battery has an energy density of 693 Wh/L. Therefore, the battery pack has a volume of 12 L. The actuators have a combined volume of 9 L.
 
====Appearance====
If the previous approximations are taken into account, the parking assistant robot could take the following appearance:
[[File:Sideview_Group8.png|800px|Image: 800 pixels|center|thumb|A possible appearance for the parking assistant robotic system.]]
[[File:Render_interiorpng.png|900px|Image: 800 pixels|center|thumb|The interior of the parking assistant robotic system.]]
 
In the figure above, the interior of the robot can be observed. Each of the wheels is driven with a motor. Although the road in a parking garage is often smooth, the robot should also be able to cross speed bumps. For this reason, the motor and wheels are attached to the chassis with a double wishbone suspension. The spring-damper combination needs to be critically damped for the best performance. Hence, the spring stiffness and damping coefficient have to be determined. This can be done with the use of the following formulas:
 
[[File:Natural_frequency.PNG|100px|center]]
 
With &omega;_n the natural frequency in rad/s, k the spring stiffness in N/m and m the mass in kg.
 
[[File:damping ratio.PNG|100px|center]]
 
With &zeta; the damping ratio and c the damping coefficient in N s/m
 
[[File:Damped_frequency.PNG|150px|center]]
 
With &omega;_d the damped frequency in rad/s <ref>Besselink, D. I. I. (2015). Introduction Vehicle Dynamics and Powertrains , 4AUB0. , 1{198}.</ref>.
 
The unsprung mass is equal to 50 kg. Hence, the sprung mass is equal to 70 kg.
 
[[File:Group8_sideview_parkinggarage.png|800px|center]]
 
==Cost and profit==
An important consideration is the cost of the system. If the robotic parking assistant system is more expensive than current solutions, primary users will not invest. Available solutions such as an indicator light can cost up to €200 to €500 per parking spot. These lights indicate with a red or green light if the parking spot is free. In order to do this, they make use of an ultrasonic sensor to detect a car. For a parking garage with a 1000 spots, this solution would cost €500.000. Therefore, the parking assistant robot system must be cheaper than this. In short, there are several costs which need to be taken into account. These costs are material/part cost, manufacturing cost, depreciation cost and maintenance cost. Concerning part costs, a single robot has €10.000 worth of parts. However, this becomes less as production scale increases. This also applies to manufacturing cost. If only a few robots are made, manufacturing cost will be considerable. If it is assumed that all parts are pre-made and can be assembled by several workers within a week, the manufacturing cost could be €5000. Together with profit to ensure financial growth of the manufacturer, a primary user would pay €20.000 per robot. Additionally, a charging station is needed which costs €2000 per robot with €2000 installation cost for the entire charging station. <ref>https://www.drivegreen.nj.gov/SiteOwners.pdf</ref><ref>https://theicct.org/sites/default/files/publications/ICCT_EV_Charging_Cost_20190813.pdf</ref>
 
In order to make the system profitable for parking garage owners, capacity needs to be considered. Parking garages often need to deal with rush hours. An important business model of this robotic solution is user experience. If 200 drivers arrive within 1 hour, but have to wait to be serviced, the experience is ruined. On the other hand, if the amount of robots is determined to be sufficient to cope with this peak efficiently, many robots will be stationary throughout the rest of the day. Therefore, the system mainly focuses on premium users. Secondary users can reserve parking spots prior to arrival. Once they arrive during rush hour, they are serviced first. Additionally, secondary users can be charged for other special treatments such as electric car parking spots, family parking spots, fast entrance and exit spots. If during rush hour 100 premium drivers arrive in hour, the robotic system needs to deal with 2 cars a minute. If the average interaction time of a robot is equal to 10 minutes, 20 robots are needed in the parking garage during rush hour. Therefore, the total system would cost €442.000. This is less than the previously specified cost of €500.000. Therefore, the parking assistant robot system offers a more advantageous solution and thus is profitable for the primary user.
 
==Conclusion==
 
In the beginning was decided to work on three different aspects of the parking assistance robot. Firstly, the users for the parking assistance robot were determined. The primary users are the companies that are dealing with large parking lots. They can benefit from the service of the robot by charging the customers for a more special treatment. This can be done with subscriptions for different parking spots in the parking lot or charging for customers to give their preferences. There is also thought about the cost of the robot and how this compares to the cost of sensors on every parking lot. The secondary users are the customers who park their car in the parking lot and the parking assistance robot can help them in finding the best parking spot depending on their preferences. For this to work, it is needed that the user-robot interaction is good. The robot must be clear and fast such that the user sees the benefits of the parking assistance robot over normal parking. Therefore, a survey was done under 175 people to get information about the wants and needs of the secondary users. This information is translated back in the ways that the robot interacts with the secondary users.
 
The second deliverable is the software which can be used in the parking robot to determine the best free parking space in the parking lot dependent on the preferences of the users. The delivered software can manage the parking lot. The software keeps track of the state of the parking lot and determines the best parking spots depending on the different preferences. The parking lot itself is simplified to the form of a graph and the software shows how the robot will drive through this simplified parking lot to the best parking spot for the secondary user.
 
The last deliverable is a design with specifications of the parking assistance robot. This design incorporates the sensors which are necessary for the robot to scan the parking lot and know its location. There is also thought about the way of driving of the robot. The interior is chosen in such a way that the robot can drive with 15 km/h and turn on his place such that it can come close to cars. The design of the robot is chosen to make it fit in a parking space and easy to use by the users. The design is made in such a way that the battery life is long and the touchscreen is big and easy to use by the users.
 
In conclusion, the hardware and software for the parking assistance robot is designed and the interaction with all the users is worked out to show how this robot can improve the current situation in parking lots.
 
==Discussion==


When organizing a large scale event, there are several key aspects to take into account with regard to transportation and vehicle placement or traffic management in general. The first key bottleneck to consider is the road capacity <cite>[1]</cite>. Accessibility to event sites is often limited due to the fact that the location was not designed for large events. Next to that, cost is an important factor when planning an event. In most cases, it would not be sensible to construct a parking lot for a single event. Finally, the time scale of an event is important. Can visitors arrive over the course of several days or mere hours? In order to create an effective event transportation plan, the traffic bottlenecks need to be dealt with. The first measure to optimize the transportation, is to create travel capacity. This can either be done by reducing transport system demand or by increasing capacity. For instance, if the event is planned during a holiday, more transportation facilities such as buses are available to be used for the special event. A second approach is to inform visitors that transportation and parking will take considerable time. Essentially, by conveying a warning, visitors might decide to arrive earlier which spreads demand peaks. Another improvement is to take traffic efficiency measures. For example, by using traffic signals to favor the event traffic flow, delays can be reduced. Additionally, travel bans can be implemented to open capacity for event traffic. Finally, the emphasis should be on public transportation to prevent parking issues in the first place <cite>[2]</cite>. If all these measures still lead to congestion, a new solution must be found.
Overall should the different factors that are developed in the course be linked together. Now, we do have a software on a webpage and a design of the hardware, but if this project was picked up later the hardware should be realized in real-life. The software must then be incorporated into the design.


Analogously with large events, in large cities, parking is also a considerable problem. Nearly 30% of traffic congestion in cities is caused by drivers looking for a parking spot <cite>[3]</cite>. Optimizing a parking lot such that drivers can find a parking faster is therefore essential. Common solutions involve a LED system to indicate free and occupied parking spaces, however, these solutions do not control traffic flow. Another option which does take into account traffic flow is automatic parking spot assignment. Automatic parking assignment can compute optimal routes taking into account lot occupancy, travel distance, conflict avoidance and walking distance <cite>[4]</cite>. Nonetheless, this solution is limited to mobile phone use.  
There is a lot of thought put into the user interaction with the parking assistance robot. There is now chosen for a survey to ask the opinions of the secondary users, but it would be better if the interaction of the user with the robot could be tested with a prototype of the robot. In this way can really be tested if the robot fulfils the requirements listed in the beginning.  


The software should be improved more in the future. Now the software simplifies the parking lot in a graph, but in real life are parking lots much more difficult to map, because of gaps or different floors. Also, the robots in this software do not communicate with each other. If two robots guide a vehicle to a parking space and meet each other halfway, they will stop with driving. In the future, the software could be improved such that the robots communicate with each other continuously and change their route such that they will not get stuck with each other, implemeting obstacle avoidance. Safety is a big requirement which is set in the beginning, there was stated that the robot should not come closer than 0.7 meters to the secondary users.  This can result in different problems in real-life if this 0.7 meters cannot be met and at this moment the software does not include the many pedestrians, which usually walk through the parking lot. The software should thus be improved in the future with how the robot must react to pedestrians and other things in the parking lot. Furthermore, there is not thought about the peak hours in a parking lot. For example in a parking lot for a big company are there some hours that there are a lot of people coming in and some hours that it will be very quiet in the parking lot. The software should also be changed in such a way that it can test how many robots there are necessary for a parking lot. In this way, there can be tested what the right amount of robots is for some parking lot, such that the service can still be given in a good way in the peak hours.


[1] Ruan, J. M., Liu, B., Wei, H., Qu, Y., Zhu, N., & Zhou, X.  (2016).  How Many and Where to LocateParking Lots?  A Space–time Accessibility-Maximization Modeling Framework for Special EventTraffic Management.Urban Rail Transit,2(2), 59–70.  doi:  10.1007/s40864-016-0038-9
The design and specifications of the hardware are made in such a way that it will fulfill the RPC’s that were decided upon in the beginning. However, there are still some things that are not thought about and could change the design. The first thing is the charging of the robot. A lot of the time, there is not enough electricity in a parking lot for a lot of electronic parking spaces, so there needs to be thought about if there is enough electricity for the parking assistance robot to be recharged. It is also important to think about the place in the parking lot where the recharging can happen. There is usually not a lot of spare room in parking lots, so maybe the design should be changed such that it can be stored and recharged more easily. In conclusion, the design incorporates a lot of the requirements to make a good parking assistance robot. When this project would be picked up in the future, it is necessary to test the design more such that it can work in a real-life parking lot.


[2] Currie, G., & Shalaby, A. (2012).  Synthesis of Transport Planning Approaches for the World’s LargestEvents.Transport Reviews,32(1), 113–136.  doi:  10.1080/01441647.2011.601352
In the end, all the parts of the project should be worked out more for it to be able to be used in real-life. In the beginning, there was chosen to work on all the different aspects of the robot, such that the full picture could be shown in the end. This resulted in that there is made a good part of every aspect, but the detailing before it can be used in real-life could not be entirely done. However, the approach would not be changed in the future, because a good idea of the robotic solution is delivered and it is shown that it is a good solution for the parking problem.


[3] Maheshwari,  K.  A.,  &  Bagavathi  Sivakumar,  P.  (2018).  Use  of  predictive  analytics  towards  bettermanagement of parking lot using image processing.Lecture Notes in Computational Vision andBiomechanics,28, 774–787.  doi:  10.1007/978-3-319-71767-8{\}67
==Recommendations==


[4] Han, Y., Shan, J., Wang, M., & Yang, G.  (2017).  Optimization design and evaluation of parking routebased on automatic assignment mechanism of parking lot.Advances in Mechanical Engineering,9(7), 1–9.  doi:  10.1177/1687814017712416


== Problem Statement ==
The parking robot could have some additional features to enhance its performance and employability that both benefits the primary and secondary users. These recommendations have been determined following the meeting with Ronald Freijns, Peter Steijns and Jordy van Senden. Ronald Freijns and Peter Steijns are currently working at Qpark. Jordy van Senden is a PhD student who is working on robotic systems, he also has his own company with Qpark as his main client.
In summary, the key issues to resolve are the enormous rise in demand of parking spaces, the inadequate parking management, congestion and frustration of drivers, limited staff availability.


== Solution Concepts ==
Jordy van Senden mentioned that criminal activities are a great problem for parking lots. The parking robot could help with this. When the parking robot is driving randomly through the parking lot it could also keep track of suspicious behaviour and when necessary contact the police. Furthermore, Jordy van Senden is working on a litter detection robot to clean parking lots. The parking robot could be extended with this feature such that it can clean parking lots while guiding people to a parking spot and keeping track of criminal activities.
Our solution can be split into 2 seperate components:
* Tracking what parking places are available
* Guiding user vehicles to parking places


For both of these categories we present and discuss several possible solutions.
Ronald Frijns and Peter Steijns mentioned that people often call their information number to gain information about, for example, the location of the exit of the parking lot. In addition to our robotic system, a display could be added at the entrance and/or exit of the parking lot for frequently asked questions. Such that the parking lot has to employ fewer people for answering these questions and thus reducing their overall costs. The same display could also be used to help the users find back their parking spot. By, for example, entering their license plate number after which the display shows the shortest walking route to their parking spot.  


=== Tracking parking spaces ===
The way the robot guides users to their parking spot could also be adapted. Instead of interacting with one parking robot from the entrance until the arrival at the parking spot, the drivers could, for example, communicate their preferences with a parking robot at the entrance after which this parking robot refers them to another parking robot to guide them to their parking spot. It is also possible that the before mentioned display is used at the entrance of the parking lot to communicate preferences. After which a parking robot comes to pick them up to take them to their parking spot. These changes can have the advantage that there is a shorter waiting time at the entrance of the parking lot. Making the whole process from entering till parking more efficient.
==== Offline scan ====
This solution would perform a scan of the parking lot at the start of the day and check what spots are available.
Afterwards, it will keep track of available spaces virtually. A spot will only be taken if it was already taken at the start of the day, or the system itself assigned it to a vehicle during the day.
This technique would uses the assumption that when a spot is taken somewhere during the day, it will remain occupied throughout the day. If this is not the case, the system will waste parking spots.
In addition, the system could perform another scan during the day to catch the spots that might have become available, when the system thinks all spots are occupied.


The scan of the parking lot itself can be rather simple in this case, since it doesn't have to be very efficient (as it doesn't happen often).
The parking robot is now only able to work on smooth and flat surfaces, this could be adapted such that it is also able to work on hills and rough terrains. Such that it, for example, can be used on (temporary) grass parking spaces too. When the robot could ride on those surfaces, it is possible to use the robot for different events which use a big grass field for a parking spot. In this way can maybe a rent system be used for the robots in case of temporary events.
Two feasible options are:
* Manual 'scanning' by employees. This could be rather feasable in some specific situations, such at our running example of the Efteling;
** At the start of the day (before opening) there are barely any cars on the lot
** When employees have to rescan when the system thinks no spaces are left, there will probably not be many empty spaces
* Scanning by autonomous ground vehicles. A ground vehicle, which might be used to guide cars as well, may be used to go over each spot in the parking lot and check if it's taken. If it passes each spot, it could simply use a distance sensor to decide whether a car is present. It may also use a camera with simple computer vision to achieve the same, but this might already be slightly more complex.


==== Online per spot tracking ====
People with a disabled parking card are allowed to make use of the disabled parking spots. With the current design, people can communicate their preference for a disabled parking spot after which the parking robot guides them there. The parking robot is not able yet to check if these people are actually allowed to. The design could be extended with a disabled parking card scanner to check if they are allowed to park there before guiding them to their spot. Such that there will be less misusage of the disabled parking spots.
A sensor could be used for each parking spot individually to determine whether a car is present.  
Multiple sensors could be used to achieve this:
* A weight sensor within the parking space to detect the weight of a car
* A distance sensor at the end of the parking space, to detect whether something is within a certain distance


This way the system could easily and accurately see what spots are available at any given time, without having to make any assumptions.
== Planning ==


==== Online global scan ====
{| class="wikitable" | border="1" style="border-collapse:collapse" cellpadding="3"
Cameras with computer vision could be deployed to track whole areas of the parking lot at once.
! style="font-weight:bold"; |
This would involve installing enough cameras to cover the whole parking lot, and making use of computer vision to detect whether a spot is taken at any given time.
! style="font-weight:bold"; | Activities
! style="font-weight:bold"; | Person(s)
|-
! scope="row"| Week 1
|
* Introduction lecture
* Brainstorm on possible subjects
* Choosing subject
* Literature study
|
* All
* All
* All
* All
|-
! scope="row"| Week 2
|
* Tutor meeting 1
* Problem definition
* State of the Art research
* User analysis
* Possible solutions
* Planning
* Updating wiki page
|
* All
* Sietse
* Luc
* Mandy
* Tar
* Rien
* All
|-
! scope="row"| Week 3
|
* Tutor meeting 2
* Improvement RPC's
* Research user interaction possibilities
* Concepting on hardware solutions
* Start on parking tracking software
* Updating wiki page
|
* All
* Mandy + Luc
* Rien
* Sietse
* Tar
* All
|-
! scope="row"| Week 4
|
* Tutor meeting 3
* Reforming wiki page to make it more cohesive
* Research in hardware concepts necessities
* Continuing parking tracking software
* User interaction analysis and making survey
* Updating wiki page
|
* All
* Luc
* Sietse
* Tar
* Mandy + Rien
* All
|-
! scope="row"| Week 5
|
* Tutor meeting 4
* First design hardware solution
* Distributing survey for user interaction methods
* Writing part about user interaction
* Translate user feedback in improvement points for design
* Continuing on software
* Updating wiki page
|
* All
* Sietse
* Mandy, Rien
* All
* Luc, Mandy
* Tar
* All
|-


==== Semi-Online scan ====
! scope="row"| Week 6
An autonomous aerial vehicle could regularly fly over the parking lot and scan what spaces are available, using a similar camera setup as with global tracking.
|
The aerial vehicle could cover the area quite quickly compared to ground vehicles and thus makes it possible to perform these scans many times an hour. Moreover, since these are aerial vehicles, the scans don't interfere with car guiding operations at all.
* Tutor Meeting 5
* Finishing hardware solution design, with user feedback
* Finishing software
* Finishing user, society and enterprise part in wiki
* Brainstorm and first start on the visuals
* Updating wiki page
|
* All
* Sietse
* Tar
* Luc, Mandy
* Sietse
* All
|-


! scope="row"| Week 7
|
* Tutor meeting 6
* Start on presentation
* Finishing wiki page
* Writing conclusion
* Writing discussion
* Working on the visuals
|
* All
* Rien
* Luc, Mandy
* Luc, Mandy
* Luc, Mandy
* Tar, Sietse
|-
! scope="row"| Week 8
|
* Tutor meeting 7
* Finishing presentation
* Final presentation
* Finishing visuals
* Finalizing project
|
* All
* Tar, Sietse, Rien
* Luc, Rien
* Tar, Rien
* Luc, Mandy
|-
|}


=== Guiding vehicles ===
== Log ==
==== Following ground drones ====
==== Week 1 ====
An autonomous ground vehicle could be deployed to physically guide a vehicle to their designated parking spot. This vehicle would start in front of the car that needs to park, and drive towards the assigned parking spot, somehow signalling the user vehicles to follow.
This would requite the autonomous vehicle to be large enough to be noticed by the user vehicle, and not be run over. In addition it should drive fast enough to have a pleasant speed to be followed by user vehicles.
Since this process would be rather slow, multiple of these robots should be deployed to guide vehicles in parallel.
These vehicles need to somehow return back to the queue after having assigned a user vehicle to their spot. This would require a route to the start that doesn't interfere with guidance of other vehicles.


==== Following air drones ====
{| border=1 style="border-collapse: collapse;" cellpadding="3"
An autonomous aerial vehicle could be deployed to physically guide a vehicle to their designated parking spot. This would work similar to the ground drones, but have one additional problem.
!style="text-align:left;"| Name
Since these are aerial vehicles, it's probably difficult to make them large and remain safe, thus it becomes more of a challenge to make them stand out and noticable by the user vehicle. For these vehicles, lights can be used to grab user attention instead.
!style="text-align:left;"| Hours
Having return paths becomes easier for these vehicles, compared to ground vehicles, because they could simply be flying at an other attitude to prevent collisions.
!style="text-align:left;"| Summary
|-
| Luc    || 15 || Introduction lecture, two meetings, brainstorm on possible subjects, literature study, written: State-of-art
|-
| Mandy  || 15 || Introduction lecture, two meetings, brainstorm on possible subjects, literature study, written: User, Society, and Enterprise
|-
| Rien  || 15 || Introduction lecture, two meetings, brainstorm on possible subjects, literature study
|-
| Sietse || 17 || Introduction lecture, two meetings, brainstorm on possible subjects, literature study, problem statement, RPCs
|-
| Tar    || 10 || Introduction lecture, two meetings, brainstorm on possible subjects, literature study
|-
|}


==== Following ground drone instructions ====
==== Week 2 ====
In certain cases, when the parking lot is rather simple/structured, a pair of autonomous ground vehicles could be deployed to point indicate the parking spot to be used.
If the parking spot is a simple structured grid, any parking spot can easily be indicated by showing the row and column of the spot.
Ground vehicles could do this physically by stopping at the row and column to be parked in. One of these vehicles would always remain on the main path and indicate the row to be parked in. The other vehicle would be present within said row and indicate the column to be parked in.
These autonomous vehicles should be provided with a means of pointing the user vehicle in a direction to move, since user vehicle is not expected to physically follow the vehicles in this situation.
The autonomous vehicles would simply move to the next column and or row whe a spot is taken.


== Solution Concepts Discussion ==
{| border=1 style="border-collapse: collapse;" cellpadding="3"
None of the suggested solutions is perfect, so below is a discussion of the pros and cons of each approach.
!style="text-align:left;"| Name
For each of the solutions, it's also mentioned how feasible it would be to develop the technology by our group.
!style="text-align:left;"| Hours
!style="text-align:left;"| Summary
|-
| Luc    || 10 || Two meetings, RPC's
|-
| Mandy  || 10 || Meeting with tutor, meeting with group afterwards, improved: user, society, enterprise, researched valet parking costs
|-
| Rien  || 10 || Two meetings, RPC's
|-
| Sietse || 9 || Concepting: researching and drawing partial solutions, and drawing entire solutions.  
|-
| Tar    || 6 || Two meetings, Concept descriptions
|-
|}


=== Tracking parking spaces ===
==== Week 3 ====
==== Offline scan ====
Pros:
* Can be very simple to deploy in case:
** Employees are used and the parking lot is always almost completely full or empty at time of the scane.
** Ground vehicles are also used for guiding vehicles already.
* Doesn't require any electronics to be permanently installed.
Cons:
* Relies on the assumption that vehicles primarily leave at the end of the day.
* Scanning may take a considerable amount of time, and may block the guidance system from functioning.


Feasibility:
{| border=1 style="border-collapse: collapse;" cellpadding="3"
* May not require any electronics when relying on employees (and is thus entirely feasible).
!style="text-align:left;"| Name
* May reuse behavior that must already be present in guidance by autonomous ground vehicles, and thus not present any new challenges.
!style="text-align:left;"| Hours
!style="text-align:left;"| Summary
|-
| Luc    || 5|| Meeting Tutor + Meeting Group afterwards, Meeting RPC's with Mandy: improved RPC's
|-
| Mandy  || 5 || Meeting Tutor + Meeting Group afterwards, Meeting RPC's with Luc: improved RPC's
|-
| Rien  || 5 || Meeting Tutor + Meeting Group afterwards, concepting hardware solutions
|-
| Sietse || 5 || Meeting Tutor + Meeting Group afterwards, devising and drawing a new four wheel omnidirectional concept
|-
| Tar    || 18 || Meeting Tutor + Meeting Group afterwards, wrote something about objectives and other small sections, started parking tracking software
|-
|}


==== Online per spot tracking ====
==== Week 4 ====
Pros:
* Gives an entirely accurate live overview of the parking lot.
* Is very robust, due to the simple sensor setup.
Cons:
* Requires installation of each of the parking spaces of the parking lot.


Feasibility:
{| border=1 style="border-collapse: collapse;" cellpadding="3"
* Requires only very simple sensor usage, and thus be very feasible.
!style="text-align:left;"| Name
!style="text-align:left;"| Hours
!style="text-align:left;"| Summary
|-
| Luc    || 10 || Meeting Tutor + 2x Meeting group, changing wiki and making it more coherent, working on the survey for the user-robot interaction
|-
| Mandy  || 11 || Meeting tutor + 2x Meeting Group, Meeting with Rien about the communication of the robot and the survey, meeting with Luc and Rien to finish the survey
|-
| Rien  || 15 || Meeting tutor + 2x Meeting Group, About HRI and the survey, concepting and designing possible interaction methods for the survey,
|-
| Sietse || 20 || Meeting Tutor + 2 x Meeting group, researching and approximating important robot parameters (required motors, wheel, battery pack, etc.), creating 3D geometry of body, Rendering geometry.
|-
| Tar    || 18 || Meeting Tutor + 2 x Meeting group, improved parking search algorithm, wrote some text about software, started parking lot editor
|-
|}


==== Online global scan ====
==== Week 5 ====
Pros:
- Gives a live overview of the parking lot.
Cons:
* Requires installation of several cameras throughout the parking lot.
* Is not entirely reliable due to usage of computer vision, which is error prone.


Feasibility:
{| border=1 style="border-collapse: collapse;" cellpadding="3"
* Requires usage of computer vision, which can be challenging.
!style="text-align:left;"| Name
!style="text-align:left;"| Hours
!style="text-align:left;"| Summary
|-
| Luc    || 8 || Meeting with tutor, finished the survey and spread the survey, worked on the wiki page, meeting to process the data obtained by the survey
|-
| Mandy  || 8 || Meeting with tutor, finished the survey and spread the survey, meeting to process the data obtained by the survey
|-
| Rien  || 7 || Meeting with tutor, finished the survey and spread the survey, meeting to process the data obtained by the survey, contact with Jordy Senden
|-
| Sietse || 8 || Meeting with tutor, creating 3D parking space environment for presentation video, writing the primary user chapter
|-
| Tar    || 13 || Meeting with tutor, finished parking lot editor, created a simple parking lot, improved search algorithm and added spot management
|-
|}


==== Semi-Online scan ====
==== Week 6 ====
Pros:
* Doesn't require any installation.
* Gives an almost live overview of the parking lot.
Cons:
* Is not entirely reliable due to usage of computer vision, which is error prone.


Feasibility:
{| border=1 style="border-collapse: collapse;" cellpadding="3"
* Requires usage of computer vision, which can be challenging.
!style="text-align:left;"| Name
* Requires autonomous operation of an aerial vehicle, which can be very challenging:
!style="text-align:left;"| Hours
** Usage of GPS for approximate location tracking, which is doable, but may not be accurate enough to target exactly 1 parking space.
!style="text-align:left;"| Summary
** Requires some very precise autonomous control in order to be docked, which is very difficult.
|-
| Luc    || 10 || Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group, 2 Meetings to work on the data of the survey
|-
| Mandy  || 10 || Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group,  2 Meetings to work on the data of the survey
|-
| Rien  || 10 || Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group,  2 Meetings to work on the data of the survey
|-
| Sietse || 10 || Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group, creating video and adding touchscreen in CAD
|-
| Tar    || 14 || Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group, Started adding entities to the parking system in order to make a simulation
|-
|}


=== Guiding vehicles ===
==== Week 7 ====
==== Following ground drones ====
Pros:
* Can be a large vehicle, with large capacity batteries, thus not requiring an autonomous docking solution.
* May be easy to understand by user vehicles (research would need to be conducted).
Cons:
* Requires many vehicles to be efficient.
* Wastes a lot of resources:
** Requires to drive all the way from the start of the queue to the designated parking spot per user vehicle, costing a lot of energy.
** Requires to drive all the way back to the queue, during which it's not of use to anyone.
* Requires a separate return path that doesn't interfere with the other vehicles being guided.


Feasibility:
{| border=1 style="border-collapse: collapse;" cellpadding="3"
* Requires autonomous operation of a ground vehicle, which can be challenging but should be achievable:
!style="text-align:left;"| Name
** Usage of GPS for approximate location tracking, which is doable.
!style="text-align:left;"| Hours
** Usage of computer vision for more accurate obstacle avoidance, which should be doable.
!style="text-align:left;"| Summary
* Requires usage of computer vision, for checking whether user vehicles are parked and for obstacle avoidance, which can be challenging.
|-
* Can be challenging to coordinate multiple autonomous vehicles at once.
| Luc    || 10 || Meeting with tutor, preparing presentation
|-
| Mandy  || 10|| Meeting with tutor, preparing presentation, starting interface of the robot
|-
| Rien  || 15 || Meeting with tutor, preparing presentation
|-
| Sietse || 20 || Meeting with tutor, creating a 3D environment in CAD for final presentation, creating an animation of the presentation
|-
| Tar    || X || Meeting with tutor, finished software simulation and documentation
|-
|}


==== Following air drones ====
==== Week 8 ====
Pros:
* Doesn't require a special return path, a different altitude can be used instead
* Doesn't have a lot of wasted time by returning to the queue, due to the speed fyling vehicles can easily have.
Cons:
* Requires many vehicles to be efficient.
* Wastes a lot of resources:
** Requires frequent recharging due to the small battery capacity in order to be light enough to fly.


Feasibility:
{| border=1 style="border-collapse: collapse;" cellpadding="3"
* Doesn't require active obstacle avoidance, since there are only other drones in the air (which should just be properly coordinated)
!style="text-align:left;"| Name
* Requires autonomous operation of an aerial vehicle, which can be very challenging:
!style="text-align:left;"| Hours
** Usage of GPS for approximate location tracking, which is doable, but may not be accurate enough to target exactly 1 parking space.
!style="text-align:left;"| Summary
** Requires some very precise autonomous control in order to be docked, which is very difficult.
|-
* Requires usage of computer vision, for checking whether user vehicles are parked, which can be challenging.
| Luc    || 18 || Recording presentation, writing discussion + conclusion, finishing wiki
* Can be challenging to coordinate multiple autonomous vehicles at once.
|-
In short, when compared to following ground drones, it's easier in the sense that no active obstacle avoidance is needed, but harder in the sense that it requires docking.
| Mandy  || 14|| Finished interface of the robot, writing recommendations, finishing wiki page
|-
| Rien  || 25 || Conducting interviews, helping Tar with 3D demo, editting final presentation video
|-
| Sietse || 23 || Finalizing animations for the presentation, creating animations for the user interface
|-
| Tar    || 30 || Worked on 3d demo for in the video
|-
|}


==== Following ground drone instructions ====
== Peer review ==
Pros:
[[File:Peerreviewgroup8.PNG|600px|center]]
* Only requires 2 ground drones.
* Doesn't require the drones to cover a large distance (and are thus relatively energy efficient).
Cons:
* Requires the parking lot to have a really specific and simple layout.
* Has to have a clear way of signalling instructions to cars
* Can not easily fill random spots that have become available
* Has some reset time once it hit the end of the parking lot, and may even pose difficulties if the entire queue already moved along to the last row


Feasibility:
== References ==
* Requires autonomous operation of a ground vehicle, which can be challenging but should be achievable:
<references />
** Usage of GPS for approximate location tracking, which is doable.
<!--
** Usage of computer vision for more accurate obstacle avoidance, which should be doable.
</div>
* Requires usage of computer vision, for checking whether user vehicles are parked, which can be challenging.
</div> -->
In short, when compared to following ground drones, it's easier since it doesn't require complex coordination of multiple drones.

Latest revision as of 15:41, 25 June 2020

Towards a Design and Model of a Parking Assistant Robotic System


Group Members

Name Student ID
Sietse Backx 1255924 s.backx@student.tue.nl
Rien Boonstoppel 0946480 d.j.boonstoppel@student.tue.nl
Luc Geurts 1237117 l.p.a.geurts@student.tue.nl
Mandy Grooters 1236053 m.grooters1@student.tue.nl
Tar van Kieken 1244433 t.m.k.v.krieken@student.tue.nl

Introduction

Visiting the airport usually results in a lot of stress. You need to take your clumsy luggage through the whole airport, wait a lot in different lines and after that sit in a too-small chair in the plane before again entering different waiting lines at your destination. However, it can get worse by trying to park your car in what seems to be a never-ending, saturated parking lot on the airport. Parking demand often does not meet the supply and in combination with a shortage of parking staff, this results in leaving drivers with frustration.

A survey performed by the Airports Council International has revealed that up to 50% of the total revenue of an airport is generated by non-aeronautical services, including parking. For example in Denver, 13% of the total revenue from the parking services and in Minnesota even 30%. This also includes the rental of vehicles for people on their holiday or business trips. [1] This shows that parking is a big and important part of the revenue of airports and that making parking more efficient and attractive for users, could have a big positive impact on the income of the airport.

When opening a parking lot for an airport, there are several key aspects to take into account with regard to transportation and vehicle placement or traffic management in general. Often, there is not a lot of road capacity at the airport, which makes it hard to build a big parking lot. Also are the costs a big and important factor for the building and maintaining of a parking lot, because a parking lot is a big investment of an airport. A solution to this problem is to use more public transport as a way to get to the airport. [2] Schiphol, for example, has his own train station under the airport, to encourage people to get to the airport with the train. If all these measures still lead to congestion, a new solution must be found.

Analogously with airport parking lots, in large cities, parking is also a considerable problem. Nearly 30% of traffic congestion in cities is caused by drivers looking for a parking spot [3]. Designing a parking system such that drivers can find a parking spot faster is therefore essential. Common solutions involve a LED system to indicate free and occupied parking spaces, however, these solutions do not control traffic flow. Another option which does take into account traffic flow is automatic parking spot assignment. Automatic parking assignment can compute optimal routes taking into account lot occupancy, travel distance, conflict avoidance and walking distance [4]. Nonetheless, this solution is limited to mobile phone use.

Objectives

In this part is stated what the goal of the project is. The subject and problem statement is listed and RPC's are chosen to focus on in the project itself. In the end is decided which end products we want to deliver.

Subject

A robotic parking assistant which helps drivers to find a parking spot in a parking lot of an airport (in this case Schiphol) and simultaneously optimizes traffic flow for faster parking.

Problem Statement

In summary, the key issues to resolve are the enormous rise in demand of better parking conditions in parking lots. These issues result in congestion and frustration of drivers due to the delay suffered from finding a parking space. This project researches the possibility to improve the parking experience on parking lots. Focus is on parking lots with a proper road surface and a limited number of entrances/exit. These constraints exclude temporary parking lots on meadows or general parking spots along a road. In addition to the research, a partial solution is designed for the issue by making a design of the parts of the system that the user would interface with, and software to manage the parking lot plus a simple simulation.

RPC's

In order to investigate possible solutions, requirements, preferences and constraints have to be established.

Requirements

  • The system should be able to know in which path and row in the parking lot it is located at any moment in time.
  • The system should be able to operate autonomously.
  • The system should regulate traffic flow for both entrance and exit of the parking lot, taking into account the total capacity of the parking lot.
  • The system should detect if cars are parked on the wrong parking spot or more than 20 cm over the parking lines and take this into account in the determination of free parking spots.
  • The system should not come closer than 0.7 meters to the secondary users [5] [6]
  • The system should be able to detect when the secondary user needs a parking spot for disabled or older people.
  • The system should be able to communicate with the secondary users in a clear way where they need to go for their designated parking spot (97% of the people should understand the communication).
  • The system should have a help option to solve parking issues and if needed contact the primary user to help the secondary users
  • The system should handle cars up to 5 meters in length and up to 1.8 meters in width. [7] [8]
  • The system should be waterproof.
  • The system should be cheaper to exploit than current valet-parking options over a span of 10 years.

Preferences

  • The system should be able to handle payments at the exit.
  • The system should be able to read the licence plate of the cars.
  • The system should be able to guide the user to its car when they forgot their parking space, based on the license plate.
  • The system should be able to investigate the parking layout by itself.
  • The system should give users the opportunity to state their parking preferences and handle those accordingly.
  • The system should be able to instruct the driver to park their vehicle properly if it is misplaced.
  • The system should have a feedback option.
  • The system should have an emergency option.
  • The system should be able to fill a parking lot with cars in a shorter time than current valet-parking options.
  • The system should be able to measure the length, width and height of the incoming car, in order to know whether it fits in certain parking spaces.


Constraints

  • The system should be ground-based.
  • The parking lot has clear entrance(s) and exit(s) which can be regulated and entrance.
  • A parking space has the following dimensions in the Netherlands. [9]
    • 5 meter length by 2.4 meter width, when perpendicular parking.
    • 6 meter length by 2.5 meter width, when parallel parking.
    • 6 meter length by 3.5 meter width for the disabled parking space when parallel parking.
    • 5 meter length by 3.5 meter width for the disabled parking space when perpendicular parking.

Airport

There is chosen for the focus of the parking robot on an airport parking lot. One property of such kind of parking lot is that there will be cars entering and leaving the parking lot the whole day. This is different from things like amusement parks, where you have a spike in people entering at the opening time and a spike of people leaving at the closing time. This results in that the robot needs to be good in the managing of the available parking spots in the lot. In an amusement park or event, it is easier to just fill the parking spots from the entrance until the back. However, in an airport parking lot are there continuously people leaving and entering, which makes it more of a challenge for the software to choose the best parking spot available at any time. Another parking lot, for example at a mall, could also be chosen for this project. This would also have the challenge of people continuously leaving and entering. There is however chosen for the airport parking lot application because there are more user preferences in an airport parking space. There are people with a lot of luggage, who want to park close to an elevator, people who want to park close to the entrance, people who only want to drop a person off and so on. This makes that there needs to be more focus on the users and thus more on the preferences of the car drivers. This must be incorporated into the software and result in a bigger challenge.

Deliverables

The goal of the project is to deliver a design for the parking robot. This design is dependent on the needs of the users, the requirements made earlier and the working space, which is, in this case, a parking lot on an airport, like Schiphol. Furthermore, a software needs to be developed, which recognizes parking spaces and gives the best parking spot dependent on the preferences of the user. This wiki page will also be finished in such a way that it shows the complete progress made during this project. Lastly, a presentation video will be made, that shows the steps that made in this project.

User, Society and Enterprise

There are different users which will use the parking robot. It is important for the design of the hardware and software to take the needs of these different users into account. This chapter lists the different users with their needs and researches the best way for the interaction of the robot with the users.

Users

The primary users of the parking robot are companies that are dealing with large parking lots. Such as airports. These companies want to improve the experience of their visitors by avoiding parking problems. The parking robot will significantly decrease the waiting times for a parking spot and thus increase the overall experience of the visitors.

The secondary users are the visitors of the airport that are directly interacting with the parking robot to find a parking spot. The parking robot can quickly guide them to a parking spot. Without the parking robot, visitors would have to wait longer which adds stress and frustration to their day which will decrease their experience [10]. These secondary users can be divided into different categories which are again assigned to their designated parking areas. The primary users can assign these specific areas to their preferences and it depends on their targeted audience. As an example, one can have a different parking area for disabled people, an area for the elderly and an area for large families. These groups all have different preferences with respect to where they want to park. To elaborate on this, the elderly for example, they want to have parking spaces closer to their destination which will provide them with a shorter walking distance. Disabled people will also want their designated parking spots close to their final destination and extra room for parking as they sometimes are dependent on wheelchairs or other devices. As for the family category, they don’t need any special preferences as they can just be used to fill up the remaining parking spots when all the others have been assigned.

Society

For society, the parking robot can have great improvement opportunities. The parking robot will be more efficient than the current traffic controllers, which will improve the traffic flow around the parking lots. Consequently, the traffic flow on high- and motorways around the parking spot will improve. Therefore, people that do not visit the airport will not experience any delay in their travel due to this effect. Furthermore, congestion increases fuel consumption, environmental pollution and traffic accidents. [11] So the parking robot will have a decreasing effect on these matters too.

Enterprise

From an enterprise perspective, multiple groups can take advantage of the parking robot. First, the organization of airport parking garages. They don’t have to deploy traffic controllers anymore. Which eventually could decrease their overall costs. Secondly, the research that will be done is interesting for the development of other robots. The navigation and communication technique used in the parking robot could be applied in other areas as well. When the parking robot will be developed on a larger scale, robot companies have to produce more robots than they do now, which will eventually decrease the cost per robot. The profit companies make, because of the enhanced traffic flow caused by the parking robot, could be used to do more research on parking robots or robots who use this navigation and communication technology in general. Such can lead to the continuous improvement of the used techniques.

When summarized, the following user groups can be identified:

  • Deployer companies: The companies deploying the system.
  • Drivers: The people that need to park their car.
    • Disabled people: People that need to find a parking spot suitable for people with physical disabilities.
    • Infirm people: People that have walking difficulties.
    • Bad drivers: People that have more difficulty with driving and parking.
    • Average people: People that don't have special needs of any type.

Human Robot Interaction

It is very important that the robot can interact in a clear way to the primary and secondary users. In this chapter, research is done in the different ways that the robot can interact with the users. These different ways are first listed and then is a survey under secondary users done to decide on the best way to let the robot interact with the user.

Communication Methods

4 different communication methods between robot and user are listed below with a drawing in the end to show how this will look like in the case of our robot.

Touchscreens

Because of the current state of the world about the coronavirus touch screens might be a debatable choice. Although it is not yet scientifically proven that this virus is spreading over surfaces, it is widely proven that touchscreens are a possible contamination hazard. [12]

When looking into possibilities to keep touchscreens clean and safe to use, two options where found. The first option is the so-called ‘NanoSeptic Continuously Self-Cleaning Surfaces’. This company makes mats that keeps its surface clean by using mineral nanocrystals, which are powered by light and generate an oxidation reaction stronger than bleach[1]. Those mats are also produced in clear films, which can be applied to touchscreens. The latest test by an independent FDA-compliant US lab showed that the NanoSeptic surface eradicated the human Coronavirus in less than 30 minutes. Results from overseas research centres have also confirmed its effectiveness. [2] The second option isn’t available (yet). It is based on a patent that Microsoft filed a couple of years ago [3]. Using a UV backlight in the touchscreen panel, germs and viruses are killed. With a combination of total internal reflection and proximity sensor the panel will make sure the user isn’t exposed to the UV. However, because the first option is already on the market and proven to be effective, it is best to use a NanoSeptic clean film, instead of investigating in the possibilities of the UV backlight.

Speech-based

The voice is the most prominent and the primary method of communication among human beings. With speech, humans can also communicate with robotic systems. However, the possibility that the proposed system is going to be used in busy and noisy environments is quite high. So there needs to be some sort of enhancement over a simple microphone. In 1990 already the research on the use of microphone arrays in order to enhance speech recognition based on beamforming. [13] In recent days, Google has made huge improvements with their Cocktail Party challenge. With only a single audio track but with an added video feed, they were able to completely isolate voices. [14] So possibly by combining those both solutions will lead to a great performance on speech recognition in busy and noisy environments.

Gestures based

The second possible way for interaction with the robotic system is gesture-based. Some research is done on the use of gestures for the interaction. [15] For example by using cameras or a Kinect to view gestures of the secondary users. However, this can be difficult because of the restricted space a driver has behind the wheel. Maybe using hand signals is possible.

Touchless display

A different, more experimental approach is more like a classic touchscreen. However, without touching the actual screen. A touchless display is developed which can sense local variations of the humidity in the air.[16] When you point a finger, local air humidity changes, which can be translated tot spatial information using those ultrasensitive humidity sensors. The simplicity of the interaction via a touchscreen-like display is already widely acknowledged, so that is an advantage. But it is a very experimental display so its reliability has yet to be proven.


The partial solutions to driver communication.

Survey

A survey was done to investigate the secondary users’ opinion about communication with the parking robot. The goal was to determine which form of user-robot interaction is preferred. This was done by asking questions about the way of communication between the robot and the secondary users and about what people would do in situations that may occur. Such as what they would do when they don’t understand the robot. This data is used to determine the way the robot will communicate with the secondary users.

A total of 175 people have filled in the survey. The largest part of the people (around 60%) are in the age group of 18-30 years old. The other 40% consists of mostly people between 31-50 years old (25%) and people between 51 and 70 years old (15%). Furthermore, there is asked about the education, if the person has a driver license and if they have a technical background. The education was found out to be quite split between high school (28%), vocational education(19%), university of applied sciences (25%) and University (26%). Over 85% had a driver licence and over 60% had a technical background, which can be a technical study or working in a technical company.

There was also asked about the affinity the participants have with robots. Because this may influence their opinion on the parking robot. And with this data the participants general view on robots can be compared and connected with their view on the parking robot. People could rate their affinity with robots with a grade between 1-10. Where 1 means no affinity at all and 10 means that they have a lot of affinity with robots. The average grade people gave was a 5.7.

To determine the participant's opinion about the ways of communication, several scenarios were presented in which they could choose their preferred way of communication. For example, people could choose how they want to be greeted by the robot and how they would like to communicate any special preferences they may have.

The robot can communicate with the secondary user in several ways and each method has its own advantages and disadvantages. Touchscreens are a common and easy way to communicate. However, touchscreens are a source of bacteria and the current coronavirus might change the participants opinions about touch screens. Another option is to use speech, but this can be hard to communicate clearly if, for example, someone doesn't master the language or if the communication takes place in a noisy environment. These disadvantages were also presented to the participants such that they could take this into account while answering the questions.


Touchscreens/speech

Despite the coronavirus, 60 % of the participants preferred to communicate their preferences with the use of a touchscreen. Only 4% of the participants would like the robot to communicate via speech at which they have to react via speech. So, there is concluded that the parking robot will communicate with the secondary users by using a touchscreen. And since it is necessary to make the touchscreen clean and safe to use, a self-cleaning surface will be used.

Text/icons

Furthermore, some questions were asked about the way that the parking place should be communicated in the best and clearest way to the driver. There is chosen for the options of icons, text or icons with text to communicate with the driver. There was also an option of an attached arm to the robot, which shows the direction where the driver needs to go. From these questions, it was found that most of the participants want to have text, sometimes accompanied by icons because they think that this is the clearest method. The only option in which they did give this answer, was with the arrow icon, which when you arrived at your parking spot. The conclusion from this is that it is only chosen for non-ambiguous emojis. The arrow emoji is in this situation the only emoji from which it is immediately very clear what it means without more explanation with text. From this data, it is decided that arrow icons are used to point at the designated parking spot, but a combination of icons and text is used at the arrival and departure.

Preferences

In the beginning of the survey was asked if the user would want to give preferences to the parking robot when they enter the parking lot. Over 75% of the users did want to communicate their preferences to the robot if that means that they get a better parking spot that takes their preferences into account. When asked what preferences the users have in the survey, it was found that 63% of the people would like the parking spot closest to the entrance. There were also a lot of people who wanted to have the largest parking space or the easiest driving route. There were also some preferences added, such as the parking space with the easiest way out of the parking lot and the safest way to park their car. From these results can be concluded that the secondary users indeed have preferences with respect to their parking spot. Hence, the option that allows the secondary users to communicate their preferences will be included in the parking robot. The preferences of the users will be communicated with the robot via a touchscreen. As an addition, the parking robot will have the option to remember the preferences connected to each license plate. Such that people who visit the parking lot multiple times can be guided to their parking spot even faster. When someone enters or leaves the parking lot they will get the question if they want the robot to remember their preferences. Current parking lots also save license plates to keep track of the number of cars that are in the parking lot. The robot will also remember license plates for the same reason. When a car leaves the parking lot, this data will be deleted if the user did not give consent to save the preferences.

Correcting function of the robot

When someone is not parked neatly this could make that the parking lot cannot be used completely or that it is harder to park for other people. The participants were informed about this and were told that the parking robot can correct someone when they did not park neatly to solve this problem. The participants were first asked to rate how they would feel about a robot correcting someone in general with a grade between 1-10. Where 1 means that they do not like that idea at all and 10 means that they really like the idea. After this, they were asked to rate how they would feel if the robot would correct them. People rated correcting someone in general with an average of 7.0 and correction themselves with an average of 6.3. From this can be concluded that people like the idea of the robot correcting someone and this will be implemented in our robot. The robot can correct someone in several ways, the robot can display a text, show an animation of a car that parks again, or use augmented reality to show where the car is not parked correctly. The two options that were chosen the most were augmented reality (36%) and text (35%). Only 11% would like an animation that shows a car that parks again. There is chosen to combine text and augmented reality to give the clearest instructions to the drivers. When someone does not react to the robot the robot will try again by showing the text and augmented reality footage. There needs to be tested how many times the robot needs to continue with correcting the wrong parked driver. The robot should then be placed behind the parking spot, such that the driver can see the robot displayed in the rearview mirror, or in front of them if he is parked back first. When the driver still doesn’t park again the parking robot will registrate how the car is parked and will take this into account when assigning parking spots to other cars. When someone parked their car a large part across the line, the robot will check if cars are still able to park next to that car. And if necessary, the robot will only assign the partly occupied parking spot to a smaller car or registrate that no car will fit in there. Most importantly, the robot should always be kind to the drivers, and never be offensive or pushy, even when someone is not following the directions of the robot.

Not understanding the robot

It could happen that someone does not understand the robot and there is asked how people would react in such a situation. The two options that were chosen the most were that the person would drive off and just find a parking spot themself (50%) and that the driver would stand still and wait on clearer instructions (40%). The first option will not be a big problem for the robot, only that the robot does need to know where the user eventually parks such that the system will not see this as a free parking spot. The second option can be a big problem for the parking lot, because it obstructs the traffic flow when someone would standstill in the middle of the parking lot. The robot should be able to notice when someone is not understanding the directions and is standing still. When this happens the robot will show the directions once again. There needs to be tested how many times the robot needs to continue with giving explanations. When after some time the driver is still standing still, the robot will show a screen that says the driver can search for a parking spot on their own. After this, the robot should register their chosen parking spot. But there needs to be made sure that the communication between the robot and the user is very clear such that the previously mentioned situations will not occur often.

Finding back your parking spot

The parking robot could help people with finding back their parking spot by remembering their license plate. The participants were asked if they would like this feature. Most of the participants (79%) think this feature is useful. The other 21% has some objections towards this feature such as a lack of privacy or not wanting to remember their license plates themselves. People are not required to use this feature, so not remembering their license plates won’t be a problem.

When someone wishes to make use of this feature, one can walk to a dashboard at the beginning of the parking lot. Here can the user fill in their licence plate and the display will show a map of where their car is parked. One can read more about this feature in the recommendations.

Interface of the robot

Below one can see some parts of the interface of the robot that followed from the survey.

  • Welcome screen
  • Select your desired language
  • Communication of preferences
  • Remembering of the preferences
  • Follow the robot on your way to the designated parking spot
  • Arrived at the parking spot, arrow is pointing at the parking spot
  • Correction of bad parking
  • Final screen after wich the robot will drive off

Primary users

In the previous section, the different types of users were elaborated. In this section the needs of the primary user are discussed.

The primary users are the companies which own and manage the parking lot. In order for them to invest in the parking assistant robot, the robot needs to be more beneficial than the current system in several aspects. The first aspect is cost. If the robotic system offers similar benefits for a smaller price, companies might consider to buy the system. Another scenario might be that the robotic system is slightly more expensive, but offers features to increase parking lot profits. An example of this could be that lots which are close to the exits are made premium parking lots. The secondary user could specify to the robot that he/she desires a premium parking lot with additional charge. Another aspect is the amount of parking lots available. Currently, parking garages count the arriving and exiting cars at the barrier. This method is flawed as some drivers rapidly follow after the previous driver. On top of that, double parking is not accounted for. With the robot, a more accurate count can be kept of the available spaces so that a better indication could be given to arriving customers. Additionally, parking lots for regular customers with a subscription could also be used if the customers are not using the lots. The system could message these users. If an incentive is given to these users for offering their space, such as a discount, both the primary user and secondary user could significantly profit. Finally, the most important factor is safety. The primary user will not invest if the robot endangers users.

Software

The first deliverable is the software which can be used in the parking robot to determine the best free parking space in the parking lot dependent on the preferences of the users. This software is developed in this chapter of the wiki page.

State-of-the-art

A lot of technologies are produced for the tracking of the availability of parking spaces. The simplest and first technology for tracking the availability, is the tracking of the total capacity of the parking lot and the amount of cars which enter and leave the space. This is already used in a lot parking spaces of malls, theme parks or other parking lots with a clear enter and leave point.[17]

The second method is to check if there is a vehicle on a parking spot with a detection unit on every parking unit itself. This detection unit can for example be an induction coil, ultrasonic sensor, infrared sensor, pressure sensor or a microwave sensor. The information of all detection devices is then gathered in one management system, to check the overall availability of the parking lot. The individual spots can be characterized by giving a value of 1 or 0 in the system or by setting them as “AVAILABLE” or “OCCUPIED” on the place where it is shown to the user.[18] [19]

Another method for the tracking of free parking spaces, is to use a given three-dimensional model of the parking lot. A capture device can then be used to represent an image of the parking lot, which can be compared with the three-dimensional model of an empty parking lot. From this comparison of the two three-dimensional models, the availability of parking spots can be determined and translated back to the user.[20]

The parking lot can also be divided in different slots of a certain number of parking spaces. For example, ten parking spaces can be divided into two slots of five parking spaces. The GPS of cars can be used to track in which parking slot the car is located. From this information can be determined how many parking spaces are left in each parking slot and can the next car be directed to the parking slot with available parking spaces. [21]

All the previous systems use some kind of tracking method to determine the availability of the parking spaces. Another method is predicting the availability of parking spaces by looking at patterns in old data. With this method is giving a precise number of available parking spaces not possible, due to the accuracy of long term predictions, the other parking lots in the area and the user behavior. However, if the accuracy of this method is high enough, can it still result in good approximations of the vacant places on parking lots. [22] [23]

Product

A prototype was written for the software that could manage the parking lot, the API. This software keeps track of the state of the parking lot, determines the best parking spaces given some preferences and calculates the routes for the robots to take. This software is not ready for real world usage, it covers most of the necessary managment but ignores important details.

The software relies on a simplification of the parking lot, in the form of a graph[24]. This means that owners of the system will have to model their parking lot into a suitable graph. This graph is stored in a simple JSON[25] format, similar to an adjacency list[26]. In order to help the parking lot owner to create this graph, the software creates a simple graph editor with basic functionality. Every edge and node in the graph should be labeled with a relevant subset of the following node and edge tags:

Node:

type description color
Parking spot Indicates that the given node is a parking spot magenta
Vehicle entrance Indicates that the given node is a vehicle entrance of the lot green
Vehicle exit Indicates that the given node is a vehicle exit of the lot red
Pedestrian entrance Indicates that the given node is a pedestrian entrance of the lot dark green
Pedestrian exit Indicates that the given node is a pedestrian exit of the lot dark red
Robot queue Indicates that the given node is a node that a robot can stand when idle, any edge leading up to such a node can be considered part of the queue black
Robot spawn Indicates that the given node is a node that a robot can be added at, and leads to a queue node through (implicit) queue edges black

Edge:

type description
Robot path Indicates that the given edge may be traversed by a robot
Vehicle path Indicates that the given edge may be traversed by a vehicle
Pedestrian path Indicates that the given edge may be traversed by a pedestrian

Within the graph editor every node gets the color of the first assigned tag of the node to increase readability. A node can have multiple tags at once without issues, but only the color of the first tag will be displayed.

Because there was not managed to create a prototype of the robots during this project, the software contains a webpage that visualizes a simple simulation. This simulation uses the centralized API that the robots would also use, meaning that the parking lot information is shared between different clients. Every person that opens up this webpage will act as a robot in the system, thus adding 1 robot to the parking lot. In order to add multiple bots, one can simply open up multiple tabs with the same site. These tabs need to be visible however, or otherwise most browsers will go into a background mode that slows down the simulation.

User manual

The software is currently hosted at https://botparker.herokuapp.com/ for demonstration purposes. This site may be offline in the future, in which case the results can be viewed by manualy hosting the code. Instructions on how to achieve this are present in the implementation details section below.

Graph Editor

The graph editor can be reached at the /edit path of the website, E.g. https://botparker.herokuapp.com/edit. The editor consists of two section: The main section containing the graph on the left, and the controls section on the right.
The graph can be moved by dragging the mouse while holding down the scroll wheel, and can be scalled by scrolling while holding the ctrl key down.
The controls section contains 3 subsections: The view filters, IO, and tools sections. These controls are described below. Tools can be switched by either pressing the tab of the tool, or scrolling the mousewheel without holding down the ctrl key.

Parking lot editor page

View filters What nodes and edges are shown in the graph section can be altered using the filters in the controls section. The top area shows two dropdown boxes in which tags can be selected. Only nodes and edges containing these tags will be shown in the graph section. A special 'tag' with the name empty is also provided to include nodes that don't have any tags. IO This section contains two buttons, for importing and exporting the graph. Both of these buttons bring up a modal box with a textbox that can be used to either copy the graph from or paste it to. The graph is represented in a json format and can also easily be modified programmatically using for instance javascript. The type of the graph can be described using the following TypeScript[27] code:

   type IParkingGraph = {[ID: string]: IParkingNode};
   type IParkingNode = {
       x: number;
       y: number;
       edges: INormalizedParkingEdge[];
       tags: IParkingNodeTag[];
   }
   type IParkingEdge = {
       end: string;
       tags: IParkingEdgeTag[];
   }
   type IParkingNodeTag =
       | "spot"
       | "entrance"
       | "exit"
       | "pedestrianEntrance"
       | "pedestrianExit"
       | "botQueue"
       | "botSpawn"
   type IParkingEdgeTag =
       | "carPath"
       | "pedestrianPath"
       | "botPath"

Selector tool The selector tool can be used to select and edit nodes and edges. When the tool is selected, clicking in the graph will result in selected nearby nodes and edges. Only a single node or edge can be selected at a time, and it will cycle through nearby nodes and edges on every click to make all accessible (even if they overlap). Both nodes and edges will show a delete button when selected, in order to delete them from the graph, as well as a dropdown to select the tags to apply. In addition, nodes show their name and location, while edges show the IDs of the start and end location. Node tool The node tool can be used to add new nodes to the graph. When the tool is selected, clicking in the graph will result in a new node being created. This node will simply get a new unique ID by counting upwards, but can be renamed later using the selector tool. The node tool allows you to specify the position precision, in order to snap nodes to locations in the grid. If E.G. 0.25 is selected, both the x and y coordinates will automatically become a multiple of 0.25 when the node is created. In addition a tags dropdown is provided in order to specify the tags that newly placed nodes should spawn with. Edge tool The edge tool can be used to add new edges to the graph. When the tool is selected, clicking a node and dragging to another node will create an edge from the start to end node. A toggle is provided to allow edges to be created in both directions with a single drag. In addition a tags dropdown is provided in order to specify the tags that newly added edges should spawn with.

Simulation

The simulation can be reached by going to the root path of the website, E.G. https://botparker.herokuapp.com/. The editor consists of two sections: The main section containing the graph on the left, and the controls section on the right.
The graph can be moved by dragging the mouse while holding down the scroll wheel, and can be scalled by scrolling while holding the ctrl key down. Each client that connects to the simulation will provide their own robot to guide customers and add it to the simulation. This robot should automatically become visible in the graph.
The controls section contains 3 subsections: The view filters, customer controls, and override controls.

Parking lot editor page

View filters What nodes and edges are shown in the graph section can be altered using the filters in the controls section. The top area shows two dropdown boxes in which tags can be selected. Only nodes and edges containing these tags will be shown in the graph section. A special 'tag' with the name empty is also provided to include nodes that don't have any tags. The API creates routes for customers while performing its calculation to find the optimal parking spot. When a robot requests a parking space, this route is returned as well. The last dropdown box can be used to show or hide sections of this planned customer route.

Customer Controls Customers can be added using the 'Add customer' button. This button will spawn a new car at the lot entrance and store the preferences in the customer. These preferences can be entered using the two textboxes above: walk cost and turn cost.

The walk cost represents how much someone dislikes to walk, in relation to driving. If E.G. '5' is entererd, it means that the customer would rather drive 5 meters than walking 1 meter. So if you want to be as close as possible to the pedestrian exit, you would want to enter a very high number here, lets say 1000 000 000 (since we can quite safely assume no parking lot would ever require you to drive this far). This way the cost of walking totally outweighs the cost of driving. This could however result in having to drive very far in order to get close to an exit, while perfectly fine parking spots are available nearby, which may also be close to exits. This high of a walking cost is probably not preferable in practice. On the other end of the spectrum, we could set the walking cost to 0. This would result in the system totally ignoring how far away the parking spot is from a pedestrian exit. It would instead make sure that the parking space is as close to the vehicle entrance and exit as possible, such that the least amount of driving is required.

The turn cost represent how much someone dislikes to take turns, in relation to driving straight. If E.G. '5' is entered, it means that the customer would rather drive 5 meters than to take a turn of 90 degrees. So if you want a path with as few turns as possible, you would want to enter a very high number here (E.G. 1000 000 000 as mentioned before). This can be used to find simpler routes, at the expense of being longer, in order to accommodate people with poor driving skills.

Customers will automatically be assigned to robots in the simulation, which will guide them to the best available spot according to their preferences. These preferences would of course not be presented using numeric inputs like this in practice. It would instead provide a couple of buttons with preset values. This simulation provides them as numeric inputs such that people can experiment with precise values andd really see what impact they have on the result. Some of these results are discussed in a section that will follow.
When a customer reaches their parking spot they will leave the car and head to the pedestrian exit. After a random amount of time between 20 seconds and 5 minutes have elapsed, the customer will return to their car and leave the parking lot. Once they fully left the lot, their parking space will become available to the system again. When the API plans a route, it considers the worst case scenario. This means that it will be able to drive cars across unclaimed parking spaces in order to reach their parking space right now, but cars can not cross any parking spaces on their way out. It may be that a driver can take a significantly shorter path on their way out by driving over an empty parking space, but we can't ensure this parking space will be available when the customer leaves. Therefor the spot finding algorithm simply ignores this possibility and may therefor choose an option that turns out to be worse in hindsight. The simulation is based on these routes that the API calculates. This results in cars and pedestrians sometimes taking longer illogical paths on their exit route, simply to not cross any parking spaces (even though they may be traversable).


Override controls

When a client disconnects from the simulation, it will also destroy their robot and all the customers that it added. If any of the customers still occupied a parking spot, this could result in parking spots still being occupied according to the API, and never becoming available again on their own. In order to manually fix this, a 'Release all spaces' button is available. This will simply tell the API that all parking spaces are available again, even if it's still occupied in reality.

In addition, we can control parking space state for each node individually. We can select a parking space by clicking on it, which results in an extra dropdown appearing in the controls area. Here we can select whether the parking space is available, claimed or taken. This allows us to manually create specific scenerios and see how the spot search algorithm handles it.

Results

Note that that in all images below, the darker magenta parking spaces indicate that the space is claimed or taken. In addition, not all visible edges are edges that all entity types may traverse. Edges allowed to be traversed by cars can be seen below:

Car paths of the parking lot

When the turn cost is put to a high value, there can be seen that the search algorithm chooses a very simple path, which only requires the customer to make two 90 degree turns. The customer will however have to walk slightly further to get to the pedestrian exit. It seems like the API could have chosen an alternative driving route to the same space that requires the least amount of walking, while also requiring only two turns. This is however only true in case that the parking space in front of the car is still available when the customer returns, which may not be the case. As discussed in the customer controls section, the API will simply ignore the possibility of these spaces being available at all.

  • Car route when there are no turn costs
  • Pedestrian route when there are no turn costs
  • Car route when there is a turn cost
  • Pedestrian route when there is a turn cost

When we decrease the walking cost to 0, we see similar result to a high turn cost in an empty lot, since this simpler path also requires less driving.

Car route when there are no walking costs

We can however see a difference between a high turn cost and low walking cost in more complicated situations, like the one below.

Car route when there is a normal walking cost and no turn cost
Car route when there is a normal walking cost and a high turn cost
Car route when there is a high walking cost, and no turn cost

Known issues

Known breaking bugs

Robot collision When multiple robots run into one and another heads on, neither of them will proceed. This results in the whole simulation halting, until one of the robot's client disconnects to remove the robot. This is the result of the simple code used to make the robots properly wait in the queue. Proper collision avoidance was too difficult for this project, see limitations.

Car collision When a car gets to close to a robot it will stop moving. If another robot than the one guiding the car gets in front of the car, the car won't be able to proceed. Once again the client will have to disconnect in order to resolve the issue.

Minor bugs

Space claim When a client disconnects while still occupying parking spaces, those parking spaces will never become available again on their own. Someone will manually have to indicate them to be available again in order to be usable by the API.

Node tag indication Only a single tag of a node is visualized by giving it the corresponding color. This means that if a node is both the parking lot entrance and exit, it will appear to be only the entrance or the exit. This doesn't affect functionality, only visuals.

Limitations and future work
Collision detection

In order to focus on the parking spot assignment and the user preferences aspects, no time was invested in the guiding robot software. This software would handle the collision detection, and other important difficult aspects of guiding the customer. Since the simulation is only meant to visualize the tasks that the API handles, collision detection has been left out. Properly handling all the dynamics that arise in real world scenarios when guiding customers was too difficult to be added to the simulation with the limited available resources. This results in people visually being run over by cars in many situations. This obviously isn't the desired real world behavior of the system.

Dynamic planning The system is currently rather static. The API doesn't consider routes that other robots are taking to guide users, nor locations where people are walking, etc. The efficiency in real world scenarios could probably be increased by using this information while planning a route. It could for instance be beneficial to guide people to different aisles in order prevent them from slowing each other down while parking. This is something that could be researched in order to augment the current spot assignment algorithm.

Extra user preferences More user preferences could be considered while looking for parking spaces. A couple of possible preferences that have been suggested are listed below.

  • Option to park closer to an elevator (compared to staircase exit, in case they are some distance apart)
  • Option to specify preference for perpendicular parking, angle parking or parallel parking (in case a parking lot has different space types)
  • Option to specify what direction they have to head in (in case there are pedestrian entrances and exits at multiple sides of the building)


Production readiness The software is currently generally not in a state to be deployed. There is no proper way specifying the graph of the parking lot, the API provides no security, and the way of installing the software is not as easy as it could be. It is currently in more of a research/test state than anything else, so if someone would want to deploy it with its current feature set it would still need to be finalized.

Implementation details

Installation

The source code for the software can be found at https://github.com/TarVK/parkingBot. This code can be cloned using git[28].

In order to run this code, NodeJS[29] has to be installed.
Then using node, the dependencies of the project can be installed by calling npm install in the terminal within the root of the project.

Production

Currently there is no way to specify the parking lot graph without altering code, so there is no fully proper way of deploying the software.

The parking lot graph would have to be added or replaced here and the correct graph would need to be imported here.

The code can be built by running npm run build in the terminal within the root of the project. After which npm start can be ran to start the application.

Development

The source code is split into two sections, the API (server) and the simulation (client). These can be ran independently (althrough the simulation requires the API to be running somewhere), or together in one process. We can run them in development mode, which will make sure to automatically compile the code and restart the software whenever a change is made. The following commands can be ran from the terminal to achieve this:

  • npm run dev-server (To only run the development mode of the server)
  • npm run dev-client (To only run the development mode of the client)
  • npm run dev (To run both the development mode of the server and client in one process)

Used technologies

The main software that was written is the API. This API is able to run on a local server at a parking lot, and all robots are able to communicate with it over an internet connection. It's written in TypeScript[27] and runs in NodeJS[29]. It uses Socket.io[30] in order to facilitate symmetric communication. In addition, a front-end web application is provided through the server, in order to show a simple simulation of the parking lot. This was added to show the capabilities of the system without having to create the physical robots. This application is also written in TypeScript[27] and uses the following important libraries:

  • React[31] for view creation
  • Model-React[32] for data management
  • PixiJS[33] for dynamic graphics
  • React-Pixi-Fiber [34] to use PixiJS with React
  • Fluent UI[35] for UI components

Algorithms

Search algorithm Dijkstra's algorithm[36] together with a min-heap[37] is used to perform the search. This algorithm can find the cheapest path between two nodes in a graph, in an efficient manner. It computes the cheapest path from a start node to any node in the graph. This by itself is not sufficient for our search however, since we aren't just interested in the distance between two points. We want to consider a number of variables, including:

  • Total driving distance from entrance to exit
  • Total walking distance from parking spot to an pedestrian exit
  • Total walking distance from a pedestrian entrance to the parking spot (in case there are seperate entrances and exits)
  • Difficulty to get to a parking spot (based on E.G. number of turns required)

In order to consider all these aspects, graph transformations are used to obtain graphs that Dijkstra's algorithm[36] can be used on.

Graph transformations Given the graph of the parking lot, the software will create so called 'search graphs'. These are graphs where the physical location of nodes is abstracted away. These do not represent the parking lot in a physical manor anymore, but all relevant information to determine the ideal spot is retained. This relevant information is encoded in the form of edge weights, which can be used to determine costs from one node to another. This way the cost to get from the entrance to a parking spot can still be determined, without having to consider physical location. Each node also contains a reference to the node it was created from, in order to translate path found in the search graph back to a physical route. The system creates 3 different search graphs, which are all used in the final search that combines the information:

  • Pedestrian entrance to spot graph
  • Pedestrian exit to spot graph
  • Vehicle entrance through spot to exit graph

These graphs are only created once when the system starts up, therefor efficiency of creating these isn't a major concern.

Pedestrian entrance to spot graph This graph is a simple graph that uses Euclidean distance as weights on all edges, and only retains nodes and edges that may be traversed by pedestrians. This graph therefor allows the distance between a given entrance and any parking spot to be determined

Pedestrian exit to spot graph Similar to the other pedestrian graph, this graph uses Euclidean distance as weights on all edges, and only retains nodes and edges that may be traversed by pedestrians. In addition, it reverses all edges, such that if you were only allowed to walk towards the exit over a path, you are now only allowed to walk away from the exit over said path. This graph therefor allows the distance between a given exit and any parking spot to be determined

Vehicle entrance through spot to exit graph This graph only retains edges traversable by vehicles. It first creates two instances of the graph, where the first doesn't contain any vehicle exits, and the second doesn't contain any vehicle entrances. Then it connects the two graph through the parking spots. An example illustration is provided below.

  • A simple parking graph before applying the routing transformation
  • A simple parking graph after applying the routing transformation

This way we can search for the cheapest path from a vehicle entrance to a vehicle exit, which has to pass through at least one parking spot. In this graph, all edge weights are simply the euclidian distance between the nodes.

A second transformation is applied to this graph, which introduces costs for each turn taken. In most graph algorithms like Dijkstra's algorithm, the position of nodes is meaningless. When having to consider the costs of taking a turn, it is meaningful information however. So a transformation is performed that translates this meaningful position data into edge data. After the transformation has been applied, the node position is no longer meaningful. The transformation replaces every node in the original graph by the product of the set of incoming and exiting edges. This way we add an edge between any pair of incoming and exiting edges, and give it a weight relative to the turn that's required to make this transition. An example illustration is provided below.

  • A simple graph before applying the turn costs transformation
  • A simple graph after applying the turn costs transformation

Using this graph we can find the spot that requires the minimal distance to be driven, and fewest turns to be taken.

Graph search In the search algorithm, the information of all 3 graphs is combined. First a search is executed on both pedestrian graphs in order to determine the cost to reach any spot by foot. In this search a 'walk cost' is used to multiply the distances with in order to consider user preferences.

Then a search is done in the vehicle graph. In this search any turn edge is multiplied with a 'turn cost' to once again consider user preferences. When the search algorithm encounters an edge through a parking spot, the walking cost calculated in the previous spot is provided. In addition an infinite cost is provided in case the parking spot is already taken. The result of this search will is the cheapest path from the entrance to the exit of the parking lot, passing through a parking spot. The parking spot is extracted from this path in order to retrieve the pedestrian paths to and from this spot as well, and all paths are returned as the search result.

The costly graph transformations are only executed once, and per search we only have to use Dijkstra's simple and efficient search algorithm a couple of times.

Hardware

The second thing that will be delivered is a design with specifications of the parking robot. This design is developed in this chapter.

State-of-the-art

If the information of the available parking places is measured, it is important that the system can choose the best possible parking spot for the vehicle. There are different performance measures for the best parking spot, but the most used ones are a combination of that the time riding to the parking spot and the time walking from the parking spot to the destination are minimal.[38]

When the optimal parking spot is chosen, this can be passed to the user in different ways. The first one is to show the route to the parking spot on the dashboard of the vehicle. A lot of cars nowadays have GPS on the dashboard and this can be used to show the information of the parking spots. This results in that there needs to be a continuous information flow between the vehicle and the availability of the parking space.[39] [40]

This can however also be done with predicted information of the availability of the parking spaces. This information can be given to the GPS of the vehicle, such that the route to the predicted available spot is displayed on the dashboard.

A lot of the times, employers are deployed to guide the vehicles to the empty parking spots. This can be seen on parking lots for places like festival, amusement parks and museums. This can be replaced by robotic solutions. Signs can be set on the ground with information on where the vehicle needs to go for the empty parking spot. For example a sign with an arrow or an cross can be used to show in a simple way for the user, which way he needs to follow. [41]

The employers can also be replaced by robotic vehicles that lead the vehicle to the best parking spot. These robots can fully ride the way of the beginning of the parking lot to the parking spot, or can be used as robotic employers, by going to the crossings and then showing the right way to the user in the vehicle.

Concepts

Obstacle avoidance and parking availability

In order for the system to avoid parked cars and guide drivers safely to their designated parking spot, the system should be able to observe its environment and determine its position. To be able to this, two types of sensors can be used, namely: dead reckoning sensors and environmental sensors. Dead reckoning sensor operate by integrating sensor data over time to determine the vehicles position. Environmental sensors are used to gather information about the vehicles surroundings. [42]

The first sensor option is to use cameras which can observe in 360° short or long range. These cameras can be placed either on top of the vehicle, on the sides of the vehicles or externally placed (see figure below). The key application for this cameras is to recognize objects. Some tasks such as traffic light identification is only possible with the use of cameras. However, because of the great amount of pixels, camera data processing can be intensive. On top of that, camera quality is susceptible to environmental conditions such as rain, fog or snow.

Radar can also be used either at short or long range. Different objects reflect the radio waves differently. The advantage of using radar is that positional and velocity data can be acquired simultaneously. On top of that, radars are impervious to weather conditions. Despite, radar acquired data yields low resolution and a 2D image.

Lidar uses light to receive information about distances between objects. Lidar is used for short range applications. It is used to obtain position and geometry of an object. [43] If multiple Emitter and receiver sets are placed on the vehicle, Lidar can be used to create a 3D image of the environment. Next to that, because dark and light objects reflect light at a different intensity, Lidar can be used to detect road markings. A disadvantage is that Lidar data can be affected by the weather.

Ultrasonic sensors are short range and unaffected by weather conditions. Currently, ultrasonic sensors are used for parking assist.

GPS can be used to determine the vehicle position globally. GPS, however, is not enough to determine the position with great accuracy, as GPS can only obtain an objects position with 1-2 m accuracy.

In general, all of the sensors considered above have pros and cons. Hence, these sensors are often used in combination in self-driving vehicles. [44]


The partial solutions to obstacle avoidance and parking availability.

Vehicle motion

Another crucial aspect of the parking assistant robot is motion. The robot should both be able to operate on asphalt and rough terrain. Therefore, a solution must be found to allow smooth operation in both environments.

The first option is to use large wheels with a thick profile. If the wheels are independently propelled and sprung, the vehicle will even be able to have grip in a muddy and bumpy environment. Another option is to use tracks. Tracks are used in the most inaccessible terrains. However, tracks are not as suitable for use on asphalt. Another option is to use legs. The advantage of legs as that they can move the vehicle in nearly all environments. Nonetheless, legs often require complex mechanical actuating systems (see figure below).

Additionally, steering must be considered. This can either be done by rotating left and right wheels or tracks at different speeds or by turning the front or back wheels.

The partial solutions to vehicle motion.

Integrated solutions

Requirement: able to turn on its place Preference: as small footprint as possible

Solution 1

A two wheel based self-stabilizing robot – like a segway

  • Display on eye level
  • Sensors on top
  • Weight distribution on top en bottom in order to maintain balance

Pros

  • Small wheelbase, able to navigate to relative small places
  • Agile
  • Ability to keep itself upright after perturbation

Cons

  • Possibly less stable
  • Possibly dangerous movements when trying to keep itself upright
A two wheel based self-stabilizing robot.

Solution 2

A four wheel based robot – two powered wheels, two caster wheels

  • Display on eye level
  • Sensors on top
  • Weight distribution on bottom in order to lower center of mass

Pros

  • Stable from itself

Cons

  • Less ability to react to perturbations to keep itself upright
  • Because of the dimensions of the robot (way taller then wide) not that stable
  • Bigger footprint then two wheel based
A four wheel based robot – two powered wheels, two caster wheels.

Solution 3

A two wheel based robot, with added extra control wheel. The arm of this of this extra control wheel is sprung and shock absorbing, the wheel can be a fixed one or a castor wheel and is in normal use not touching the ground.

Pros

  • Same as solution 1

Cons

  • More stable then solution 1
  • Because of the added control wheel smaller correction suffice to keep upright, so it is less dangerous
A two wheel based robot, with added extra control wheel.

Solution 4

With the previous two wheel based solutions, stability is a key issue. Also, with a narrow base four wheel base robot, tipping over is a risk. Therefore, this concept has four wheels with a larger width and length to reduce this risk. The advantage of the two wheel concepts is the maneuverability. In order to have the same maneuverability, four omnidirectional wheels are used to allow the robot to rotate at its position.

A four wheel based robot, with omnidirectional wheels.

Detailing

The final design has several important features to fulfill the requirements, preferences and constraints. The first requirement applicable to hardware is the detection of correct parking. To allow the robot to do this, the robot has been fitted with a Lidar. This sensor can both create a 3D-image of the environment and detect road markings. If a car is double parked, the system will indicate this and try to guide the user to re-park their car. If the user refuses to do so, the parking robot can indicate that a double charge will be applied. On top of that, Lidar can be used to detect the size of an arriving car. This is important so that the system can select a large enough parking space for the user's vehicle. Secondly, the system should not come closer than 0.7 m from the secondary user when guiding. A large screen (55") ensures that readable instructions can be given to the secondary user at this distance. With regard to the input of parking preferences, the screen is also a touchscreen which is mounted on a pivot point (see the figure below). The system can drive next to the driver window so that the secondary user can reach the screen. Among the several preferences available to choose from on the touchscreen are a help function, feedback function and emergency function. Finally with regard to requirements, the body of the car ensures that the components inside remain dry.

Pivotpoint.png

Also a variety of preferences are taken into account. Concerning the parking payment method, two options are possible. The first option is that secondary users can pay contact less with a debit card at the exit. The parking charge is automatically coupled to the license plate. The second option is that for regular users a payment plan is coupled to a license plate so they can immediately leave the parking garage. With regard to appearance, the robot does not look like a human. The main reason for this is that the robot has four wheels which are at a relatively large distance from each other to increase stability. Therefore, it is not possible to create a human figure. Nonetheless, considering license plate recognition, the robot has a camera to be able to perform this task. The license plates are coupled to the specific parking spot and stored in a database. By doing this, the system knows where specific cars are parked and which parking spots are taken. Now, a tablet at the person entrance of the parking garage allows users to search their license plate to see where their car is parked.

Approximations

In order to find appropriate components for the robot, estimations have to be made. Therefore, in this section some global parameters are established.

In the figure at solution 4, the current concept is depicted. This figure gives a course overview of all the components that need to be present in the final design. The final design needs to have the following components; a screen or light display for interaction with the secondary user, wheels, suspension, actuators, sensors, a computer, a battery pack and additional lighting.

With regard to mass, the led screen of the robot has an approximate mass of 20 kg. [45] Next to that, the four omnidirectional Mecanum wheels of 254 mm diameter have a combined mass of 12 kg [46]. Concerning the sensors, these consist of Lidars, camera's and radar. The weight of these sensors combined is expected to be 1 kg. [47][48] In order to compute the algorithm, hardware is needed. This hardware is guessed to be 10 kg.

All components have to be put together in a structure. This structure needs to be rigid and needs to resist minor crash loads. The structure combined with the spring dampers is expected to weigh 20 kg.

The wheels have to be individually propelled with actuators. These actuators need to accelerate and decelerate (using dc injection braking). The robot will travel at an average velocity of 15 km/h in the parking lot. If the robot has a maximum speed of 30 km/h and accelerates at a maximum acceleration of 2 m/s^2, for a robot weighing 100 kg, a force of 200 N is needed. Given a wheel diameter of 254 mm, the required torque is equal to 25 Nm and the total power 1700 W. To prevent needing a gearbox, the maximum rpm of the actuator should be equal to:

Rpm.PNG


Hence, [math]\displaystyle{ \omega }[/math] is equal to 4000 rpm. The required power can be distributed over four actuators. Therefore, each actuator needs a power of 425 W, a torque of 6.25 Nm and a maximum of 4000 rpm. The Transmotec D123182-12 fits the power requirements running at a slightly lower rpm. [49] This actuator weighs approximately 7.5 kg. In total the actuators have a weight of 30 kg.

Finally, the actuators, screen and computer components have to be supplied with power. The actuators need to provide a mechanical power of 1700 W. The efficiency of an electric motor is dependent of the work load of the motor. [50] If the efficiency is assumed 70%, the required electric power is equal to 2500 W. On top of that, the screen has an electric power of 130 W. Finally, the processing power of the computer is approximated at 1000 W. The sensors also require power combined with the additional lighting, this amounts to a total electric power of 4 kW. Assuming that the batteries can charge at the end of the day, the robot needs to be functional for eight hours. Therefore, the batteries need to store 32 kWh, if losses are neglected. The capacity of a lithium-ion battery is 265 Wh/kg [51]. This means the battery pack would weigh 120 kg. This is not feasible, therefore, it is assumed that the robot can charge during the day. If the robot has an operating duration of two hours, the battery needs a capacity of 8000 kWh. This would result in a mass of 30 kg.

In total, the robot would weigh approximately 120 kg. Next to mass, volume is an important factor. The battery has an energy density of 693 Wh/L. Therefore, the battery pack has a volume of 12 L. The actuators have a combined volume of 9 L.

Appearance

If the previous approximations are taken into account, the parking assistant robot could take the following appearance:

A possible appearance for the parking assistant robotic system.
The interior of the parking assistant robotic system.

In the figure above, the interior of the robot can be observed. Each of the wheels is driven with a motor. Although the road in a parking garage is often smooth, the robot should also be able to cross speed bumps. For this reason, the motor and wheels are attached to the chassis with a double wishbone suspension. The spring-damper combination needs to be critically damped for the best performance. Hence, the spring stiffness and damping coefficient have to be determined. This can be done with the use of the following formulas:

Natural frequency.PNG

With ω_n the natural frequency in rad/s, k the spring stiffness in N/m and m the mass in kg.

Damping ratio.PNG

With ζ the damping ratio and c the damping coefficient in N s/m

Damped frequency.PNG

With ω_d the damped frequency in rad/s [52].

The unsprung mass is equal to 50 kg. Hence, the sprung mass is equal to 70 kg.

Group8 sideview parkinggarage.png

Cost and profit

An important consideration is the cost of the system. If the robotic parking assistant system is more expensive than current solutions, primary users will not invest. Available solutions such as an indicator light can cost up to €200 to €500 per parking spot. These lights indicate with a red or green light if the parking spot is free. In order to do this, they make use of an ultrasonic sensor to detect a car. For a parking garage with a 1000 spots, this solution would cost €500.000. Therefore, the parking assistant robot system must be cheaper than this. In short, there are several costs which need to be taken into account. These costs are material/part cost, manufacturing cost, depreciation cost and maintenance cost. Concerning part costs, a single robot has €10.000 worth of parts. However, this becomes less as production scale increases. This also applies to manufacturing cost. If only a few robots are made, manufacturing cost will be considerable. If it is assumed that all parts are pre-made and can be assembled by several workers within a week, the manufacturing cost could be €5000. Together with profit to ensure financial growth of the manufacturer, a primary user would pay €20.000 per robot. Additionally, a charging station is needed which costs €2000 per robot with €2000 installation cost for the entire charging station. [53][54]

In order to make the system profitable for parking garage owners, capacity needs to be considered. Parking garages often need to deal with rush hours. An important business model of this robotic solution is user experience. If 200 drivers arrive within 1 hour, but have to wait to be serviced, the experience is ruined. On the other hand, if the amount of robots is determined to be sufficient to cope with this peak efficiently, many robots will be stationary throughout the rest of the day. Therefore, the system mainly focuses on premium users. Secondary users can reserve parking spots prior to arrival. Once they arrive during rush hour, they are serviced first. Additionally, secondary users can be charged for other special treatments such as electric car parking spots, family parking spots, fast entrance and exit spots. If during rush hour 100 premium drivers arrive in hour, the robotic system needs to deal with 2 cars a minute. If the average interaction time of a robot is equal to 10 minutes, 20 robots are needed in the parking garage during rush hour. Therefore, the total system would cost €442.000. This is less than the previously specified cost of €500.000. Therefore, the parking assistant robot system offers a more advantageous solution and thus is profitable for the primary user.

Conclusion

In the beginning was decided to work on three different aspects of the parking assistance robot. Firstly, the users for the parking assistance robot were determined. The primary users are the companies that are dealing with large parking lots. They can benefit from the service of the robot by charging the customers for a more special treatment. This can be done with subscriptions for different parking spots in the parking lot or charging for customers to give their preferences. There is also thought about the cost of the robot and how this compares to the cost of sensors on every parking lot. The secondary users are the customers who park their car in the parking lot and the parking assistance robot can help them in finding the best parking spot depending on their preferences. For this to work, it is needed that the user-robot interaction is good. The robot must be clear and fast such that the user sees the benefits of the parking assistance robot over normal parking. Therefore, a survey was done under 175 people to get information about the wants and needs of the secondary users. This information is translated back in the ways that the robot interacts with the secondary users.

The second deliverable is the software which can be used in the parking robot to determine the best free parking space in the parking lot dependent on the preferences of the users. The delivered software can manage the parking lot. The software keeps track of the state of the parking lot and determines the best parking spots depending on the different preferences. The parking lot itself is simplified to the form of a graph and the software shows how the robot will drive through this simplified parking lot to the best parking spot for the secondary user.

The last deliverable is a design with specifications of the parking assistance robot. This design incorporates the sensors which are necessary for the robot to scan the parking lot and know its location. There is also thought about the way of driving of the robot. The interior is chosen in such a way that the robot can drive with 15 km/h and turn on his place such that it can come close to cars. The design of the robot is chosen to make it fit in a parking space and easy to use by the users. The design is made in such a way that the battery life is long and the touchscreen is big and easy to use by the users.

In conclusion, the hardware and software for the parking assistance robot is designed and the interaction with all the users is worked out to show how this robot can improve the current situation in parking lots.

Discussion

Overall should the different factors that are developed in the course be linked together. Now, we do have a software on a webpage and a design of the hardware, but if this project was picked up later the hardware should be realized in real-life. The software must then be incorporated into the design.

There is a lot of thought put into the user interaction with the parking assistance robot. There is now chosen for a survey to ask the opinions of the secondary users, but it would be better if the interaction of the user with the robot could be tested with a prototype of the robot. In this way can really be tested if the robot fulfils the requirements listed in the beginning.

The software should be improved more in the future. Now the software simplifies the parking lot in a graph, but in real life are parking lots much more difficult to map, because of gaps or different floors. Also, the robots in this software do not communicate with each other. If two robots guide a vehicle to a parking space and meet each other halfway, they will stop with driving. In the future, the software could be improved such that the robots communicate with each other continuously and change their route such that they will not get stuck with each other, implemeting obstacle avoidance. Safety is a big requirement which is set in the beginning, there was stated that the robot should not come closer than 0.7 meters to the secondary users. This can result in different problems in real-life if this 0.7 meters cannot be met and at this moment the software does not include the many pedestrians, which usually walk through the parking lot. The software should thus be improved in the future with how the robot must react to pedestrians and other things in the parking lot. Furthermore, there is not thought about the peak hours in a parking lot. For example in a parking lot for a big company are there some hours that there are a lot of people coming in and some hours that it will be very quiet in the parking lot. The software should also be changed in such a way that it can test how many robots there are necessary for a parking lot. In this way, there can be tested what the right amount of robots is for some parking lot, such that the service can still be given in a good way in the peak hours.

The design and specifications of the hardware are made in such a way that it will fulfill the RPC’s that were decided upon in the beginning. However, there are still some things that are not thought about and could change the design. The first thing is the charging of the robot. A lot of the time, there is not enough electricity in a parking lot for a lot of electronic parking spaces, so there needs to be thought about if there is enough electricity for the parking assistance robot to be recharged. It is also important to think about the place in the parking lot where the recharging can happen. There is usually not a lot of spare room in parking lots, so maybe the design should be changed such that it can be stored and recharged more easily. In conclusion, the design incorporates a lot of the requirements to make a good parking assistance robot. When this project would be picked up in the future, it is necessary to test the design more such that it can work in a real-life parking lot.

In the end, all the parts of the project should be worked out more for it to be able to be used in real-life. In the beginning, there was chosen to work on all the different aspects of the robot, such that the full picture could be shown in the end. This resulted in that there is made a good part of every aspect, but the detailing before it can be used in real-life could not be entirely done. However, the approach would not be changed in the future, because a good idea of the robotic solution is delivered and it is shown that it is a good solution for the parking problem.

Recommendations

The parking robot could have some additional features to enhance its performance and employability that both benefits the primary and secondary users. These recommendations have been determined following the meeting with Ronald Freijns, Peter Steijns and Jordy van Senden. Ronald Freijns and Peter Steijns are currently working at Qpark. Jordy van Senden is a PhD student who is working on robotic systems, he also has his own company with Qpark as his main client.

Jordy van Senden mentioned that criminal activities are a great problem for parking lots. The parking robot could help with this. When the parking robot is driving randomly through the parking lot it could also keep track of suspicious behaviour and when necessary contact the police. Furthermore, Jordy van Senden is working on a litter detection robot to clean parking lots. The parking robot could be extended with this feature such that it can clean parking lots while guiding people to a parking spot and keeping track of criminal activities.

Ronald Frijns and Peter Steijns mentioned that people often call their information number to gain information about, for example, the location of the exit of the parking lot. In addition to our robotic system, a display could be added at the entrance and/or exit of the parking lot for frequently asked questions. Such that the parking lot has to employ fewer people for answering these questions and thus reducing their overall costs. The same display could also be used to help the users find back their parking spot. By, for example, entering their license plate number after which the display shows the shortest walking route to their parking spot.

The way the robot guides users to their parking spot could also be adapted. Instead of interacting with one parking robot from the entrance until the arrival at the parking spot, the drivers could, for example, communicate their preferences with a parking robot at the entrance after which this parking robot refers them to another parking robot to guide them to their parking spot. It is also possible that the before mentioned display is used at the entrance of the parking lot to communicate preferences. After which a parking robot comes to pick them up to take them to their parking spot. These changes can have the advantage that there is a shorter waiting time at the entrance of the parking lot. Making the whole process from entering till parking more efficient.

The parking robot is now only able to work on smooth and flat surfaces, this could be adapted such that it is also able to work on hills and rough terrains. Such that it, for example, can be used on (temporary) grass parking spaces too. When the robot could ride on those surfaces, it is possible to use the robot for different events which use a big grass field for a parking spot. In this way can maybe a rent system be used for the robots in case of temporary events.

People with a disabled parking card are allowed to make use of the disabled parking spots. With the current design, people can communicate their preference for a disabled parking spot after which the parking robot guides them there. The parking robot is not able yet to check if these people are actually allowed to. The design could be extended with a disabled parking card scanner to check if they are allowed to park there before guiding them to their spot. Such that there will be less misusage of the disabled parking spots.

Planning

Activities Person(s)
Week 1
  • Introduction lecture
  • Brainstorm on possible subjects
  • Choosing subject
  • Literature study
  • All
  • All
  • All
  • All
Week 2
  • Tutor meeting 1
  • Problem definition
  • State of the Art research
  • User analysis
  • Possible solutions
  • Planning
  • Updating wiki page
  • All
  • Sietse
  • Luc
  • Mandy
  • Tar
  • Rien
  • All
Week 3
  • Tutor meeting 2
  • Improvement RPC's
  • Research user interaction possibilities
  • Concepting on hardware solutions
  • Start on parking tracking software
  • Updating wiki page
  • All
  • Mandy + Luc
  • Rien
  • Sietse
  • Tar
  • All
Week 4
  • Tutor meeting 3
  • Reforming wiki page to make it more cohesive
  • Research in hardware concepts necessities
  • Continuing parking tracking software
  • User interaction analysis and making survey
  • Updating wiki page
  • All
  • Luc
  • Sietse
  • Tar
  • Mandy + Rien
  • All
Week 5
  • Tutor meeting 4
  • First design hardware solution
  • Distributing survey for user interaction methods
  • Writing part about user interaction
  • Translate user feedback in improvement points for design
  • Continuing on software
  • Updating wiki page
  • All
  • Sietse
  • Mandy, Rien
  • All
  • Luc, Mandy
  • Tar
  • All
Week 6
  • Tutor Meeting 5
  • Finishing hardware solution design, with user feedback
  • Finishing software
  • Finishing user, society and enterprise part in wiki
  • Brainstorm and first start on the visuals
  • Updating wiki page
  • All
  • Sietse
  • Tar
  • Luc, Mandy
  • Sietse
  • All
Week 7
  • Tutor meeting 6
  • Start on presentation
  • Finishing wiki page
  • Writing conclusion
  • Writing discussion
  • Working on the visuals
  • All
  • Rien
  • Luc, Mandy
  • Luc, Mandy
  • Luc, Mandy
  • Tar, Sietse
Week 8
  • Tutor meeting 7
  • Finishing presentation
  • Final presentation
  • Finishing visuals
  • Finalizing project
  • All
  • Tar, Sietse, Rien
  • Luc, Rien
  • Tar, Rien
  • Luc, Mandy

Log

Week 1

Name Hours Summary
Luc 15 Introduction lecture, two meetings, brainstorm on possible subjects, literature study, written: State-of-art
Mandy 15 Introduction lecture, two meetings, brainstorm on possible subjects, literature study, written: User, Society, and Enterprise
Rien 15 Introduction lecture, two meetings, brainstorm on possible subjects, literature study
Sietse 17 Introduction lecture, two meetings, brainstorm on possible subjects, literature study, problem statement, RPCs
Tar 10 Introduction lecture, two meetings, brainstorm on possible subjects, literature study

Week 2

Name Hours Summary
Luc 10 Two meetings, RPC's
Mandy 10 Meeting with tutor, meeting with group afterwards, improved: user, society, enterprise, researched valet parking costs
Rien 10 Two meetings, RPC's
Sietse 9 Concepting: researching and drawing partial solutions, and drawing entire solutions.
Tar 6 Two meetings, Concept descriptions

Week 3

Name Hours Summary
Luc 5 Meeting Tutor + Meeting Group afterwards, Meeting RPC's with Mandy: improved RPC's
Mandy 5 Meeting Tutor + Meeting Group afterwards, Meeting RPC's with Luc: improved RPC's
Rien 5 Meeting Tutor + Meeting Group afterwards, concepting hardware solutions
Sietse 5 Meeting Tutor + Meeting Group afterwards, devising and drawing a new four wheel omnidirectional concept
Tar 18 Meeting Tutor + Meeting Group afterwards, wrote something about objectives and other small sections, started parking tracking software

Week 4

Name Hours Summary
Luc 10 Meeting Tutor + 2x Meeting group, changing wiki and making it more coherent, working on the survey for the user-robot interaction
Mandy 11 Meeting tutor + 2x Meeting Group, Meeting with Rien about the communication of the robot and the survey, meeting with Luc and Rien to finish the survey
Rien 15 Meeting tutor + 2x Meeting Group, About HRI and the survey, concepting and designing possible interaction methods for the survey,
Sietse 20 Meeting Tutor + 2 x Meeting group, researching and approximating important robot parameters (required motors, wheel, battery pack, etc.), creating 3D geometry of body, Rendering geometry.
Tar 18 Meeting Tutor + 2 x Meeting group, improved parking search algorithm, wrote some text about software, started parking lot editor

Week 5

Name Hours Summary
Luc 8 Meeting with tutor, finished the survey and spread the survey, worked on the wiki page, meeting to process the data obtained by the survey
Mandy 8 Meeting with tutor, finished the survey and spread the survey, meeting to process the data obtained by the survey
Rien 7 Meeting with tutor, finished the survey and spread the survey, meeting to process the data obtained by the survey, contact with Jordy Senden
Sietse 8 Meeting with tutor, creating 3D parking space environment for presentation video, writing the primary user chapter
Tar 13 Meeting with tutor, finished parking lot editor, created a simple parking lot, improved search algorithm and added spot management

Week 6

Name Hours Summary
Luc 10 Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group, 2 Meetings to work on the data of the survey
Mandy 10 Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group, 2 Meetings to work on the data of the survey
Rien 10 Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group, 2 Meetings to work on the data of the survey
Sietse 10 Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group, creating video and adding touchscreen in CAD
Tar 14 Meeting with tutor, Meeting with Jordy Senden about our project, Meeting with group, Started adding entities to the parking system in order to make a simulation

Week 7

Name Hours Summary
Luc 10 Meeting with tutor, preparing presentation
Mandy 10 Meeting with tutor, preparing presentation, starting interface of the robot
Rien 15 Meeting with tutor, preparing presentation
Sietse 20 Meeting with tutor, creating a 3D environment in CAD for final presentation, creating an animation of the presentation
Tar X Meeting with tutor, finished software simulation and documentation

Week 8

Name Hours Summary
Luc 18 Recording presentation, writing discussion + conclusion, finishing wiki
Mandy 14 Finished interface of the robot, writing recommendations, finishing wiki page
Rien 25 Conducting interviews, helping Tar with 3D demo, editting final presentation video
Sietse 23 Finalizing animations for the presentation, creating animations for the user interface
Tar 30 Worked on 3d demo for in the video

Peer review

Peerreviewgroup8.PNG

References

  1. Javid, M., & Seneviratne, P. (2000). Investment Risk Analysis in Airport Parking Facility Development. J. Constr. Eng. Manage. 126(4), 298-305.
  2. Currie, G., & Shalaby, A. (2012). Synthesis of Transport Planning Approaches for the World’s LargestEvents. Transport Reviews,32(1), 113–136. doi: 10.1080/01441647.2011.601352
  3. Maheshwari, K. A., & Bagavathi Sivakumar, P. (2018). Use of predictive analytics towards better management of parking lot using image processing. Lecture Notes in Computational Vision and Biomechanics,28, 774–787. doi: 10.1007/978-3-319-71767-8{\}67
  4. Han, Y., Shan, J., Wang, M., & Yang, G. (2017). Optimization design and evaluation of parking route-based on automatic assignment mechanism of a parking lot. Advances in Mechanical Engineering,9(7), 1–9. doi: 10.1177/1687814017712416
  5. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4236010/
  6. https://dl.acm.org/doi/pdf/10.1145/2157689.2157769
  7. https://www.anwb.nl/juridisch-advies/in-het-verkeer/verkeersregels/afmetingen-van-autos-en-aanhangers
  8. https://www.nu.nl/algemeen/647351/autos-te-groot-voor-parkeervak.html?redirect=1
  9. https://ocw.tudelft.nl/course-readings/parkeren/
  10. Winter Nie, Waiting: integrating social and psychological perspectives in operations management, Omega, Volume 28, Issue 6, 2000, Pages 611-629, ISSN 0305-0483
  11. Chin, Hoong & Rahman, Md. Habibur. (2011). An Impact Evaluation of Traffic Congestion on Ecology. Planning Studies & Practice. 3. 32-44.
  12. Charles P.Gerba. Adam L.Wuollet, Peter Raisanen, Gerardo U.Lopez (2016). Bacterial contamination of computer touch screens, American Journal of Infection Control, Volume 44, Issue 3, Pages 358-360, doi: 10.1016/j.ajic.2015.10.013
  13. Dirk Van Compernolle, Weiye Ma, Fei Xie, Marc Van Diest (1990), Speech recognition in noisy environments with the aid of microphone arrays, Speech Communication Volume 9, Issues 5–6, Pages 433-442, doi: 10.1016/0167-6393(90)90019-6
  14. https://ai.googleblog.com/2018/04/looking-to-listen-audio-visual-speech.html
  15. Stefan Waldherr, Roseli Romero, Sebastian Thrun (1990). A Gesture Based Interface for Human-Robot Interaction, Autonomous Robots volume 9, Pages 151–173, doi: 10.1023/A:1008918401478.
  16. Katalin Szendrei, Pirmin Ganter, Olalla Sànchez‐Sobrado, Roland Eger, Alexander Kuhn, Bettina V. Lotsch (2015). Touchless Optical Finger Motion Tracking Based on 2D Nanosheets with Giant Moisture Responsiveness, Advanced Materials, Volume 27, Issue 41, Pages 6341-6348, doi: 10.1002/adma.201503463
  17. Teodoroviç D. & Luciç P. (2006). Intelligent parking systems, European Journal of Operational Research, Volume 175, Issue 3, Pages 1666-1681
  18. Muraki (2003). United States Patent: Parking lot guidance system and parking lot guidance program , Patent No.: US 6,650,250 B2
  19. Li (2005). United States Patent: Management method and system for a parking lot , Patent No.: US 6,917,307 B2
  20. Winter et al. (2006) United States Patent: Apparatus and method for sensing the occupancy status of parking spaces in a parking lot, Patent No.: US 7,116,246 B2
  21. Panayappan, Ramu and Trivedi, Jayini Mukul and Studer, Ahren and Perrig, Adrian (2007). VANET-Based Approach for Parking Space Availability, Proceedings of the Fourth ACM International Workshop on Vehicular Ad Hoc Networks, Pages 75-76, doi: 10.1145/1287748.1287763
  22. Felix Caicedo, Carola Blazquez, Pablo Miranda (2012). Prediction of parking space availability in real time,Expert Systems with Applications, Volume 39, Issue 8, Pages 7281-7290, doi: 10.1016/j.eswa.2012.01.091
  23. Yanxu Zheng, S. Rajasegarar and C. Leckie (2015). Parking availability prediction for sensor-enabled car parks in smart cities IEEE Tenth International Conference on Intelligent Sensors, Sensor Networks and Information Processing (ISSNIP), Pages 1-6.
  24. https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)
  25. https://www.json.org/json-en.html
  26. https://en.wikipedia.org/wiki/Adjacency_list#:~:text=In%20graph%20theory%20and%20computer,for%20use%20in%20computer%20programs
  27. 27.0 27.1 27.2 https://www.typescriptlang.org/
  28. https://git-scm.com/
  29. 29.0 29.1 https://nodejs.org/en/
  30. https://socket.io/
  31. https://reactjs.org/
  32. https://www.npmjs.com/package/model-react
  33. https://www.pixijs.com/
  34. https://github.com/michalochman/react-pixi-fiber
  35. https://developer.microsoft.com/en-us/fluentui
  36. 36.0 36.1 https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
  37. https://en.wikipedia.org/wiki/Min-max_heap
  38. C. Richard Cassady, John E. Kobza (1998). A Probabilistic Approach to Evaluate Strategies for Selecting a Parking Space, Transportation Science, Volume 32, Issue 1, Pages 3-85
  39. Schuessler (1998). Method and device for guiding vehicles as a function of the traffic situation , Patent No.: US 5,818,356
  40. P. M. d'Orey, J. Azevedo and M. Ferreira (2016) Exploring the solution space of self-automated parking lots: An empirical evaluation of vehicle control strategies, IEEE 19th International Conference on Intelligent Transportation Systems (ITSC), Pages 1134-1140.
  41. Li (2005). United States Patent: Management method and system for a parking lot , Patent No.: US 6,917,307 B2
  42. Cox, I. J., & Wilfong, G. T. (1990).Autonomous Robot Vehicles(Vol. 6). Springer, New York, NY. doi:https://doi-org.dianus.libr.tue.nl/10.1007/978-1-4613-8997-2
  43. Zhao, X., Sun, P., Xu, Z., Min, H., & Yu, H. (2020). Fusion of 3D LIDAR and Camera Data for ObjectDetection in Autonomous Vehicle Applications.IEEE Sensors Journal,20(9), 4901–4913. doi:10.1109/JSEN.2020.2966034
  44. Vozar, S. (n.d.).Sensors for Autonomous Vehicles.Retrieved fromhttps://ieeexplore-ieee-org.dianus.libr.tue.nl/courses/details/EDP538
  45. https://www.coolblue.nl/product/827634/samsung-qe55q70r-qled.html
  46. https://robotdiscounter.com/a-set-of-254mm-aluminium-mecanum-wheels-4-pieces-bearing-rollers-14131?utm_source=kelkoonl&utm_medium=cpc&utm_campaign=kelkooclick&utm_term=A+set+of+254mm+Aluminium+Mecanum+Wheels+
  47. https://www.kamera-express.nl/product/12224571/kodak-pixpro-orbit360-4k-action-cam-standard/?channable=e13909.MTIyMjQ1NzE&gclid=CjwKCAjwkun1BRAIEiwA2mJRWZEzqWN6lqiHoi8hXR6fY_an8EiIgA3UmhNDRge7aXZuR0PQDvwzfhoCQowQAvD_BwE
  48. https://nl.rs-online.com/web/p/photoelectric-sensors/1893497?cm_mmc=NL-PLA-DS3A-_-google-_-CSS_NL_NL_Automation_And_Control_Gear_New-_-Sensors_And_Transducers%7CPhotoelectric_Sensors-_-PRODUCT_GROUP&matchtype=&pla-308865050060&gclid=CjwKCAjwkun1BRAIEiwA2mJRWZUZTu59GieFll1VvDDsd2i1LC6pBzw6Rmu2mKRu4pDt8SaDB-ak4RoCLr8QAvD_BwE&gclsrc=aw.ds
  49. https://www.transmotec.com/product/d123182-12/?c=eur
  50. https://www.energy.gov/sites/prod/files/2014/04/f15/10097517.pdf
  51. https://en.wikipedia.org/wiki/Lithium-ion_battery
  52. Besselink, D. I. I. (2015). Introduction Vehicle Dynamics and Powertrains , 4AUB0. , 1{198}.
  53. https://www.drivegreen.nj.gov/SiteOwners.pdf
  54. https://theicct.org/sites/default/files/publications/ICCT_EV_Charging_Cost_20190813.pdf