Safety - BILLyTheLiTTle/RCController GitHub Wiki

When we are talking about safety we mean safety for people and for the equipment. Safety, mostly, falls into the user of the rc car. Apart from user's responsibility, the software must be helpful enough to keep things safe, but it should not interfere in bad ways and ruin the joy of playing. Most of the severe problems have been solved in the rc car. There are also some different kind of problems to be solved which affect the control of the car and the user feedback.

Problems

  • The hill start problem: Have you tried to start a car in an uphill? It is very difficult to calculate the right throttle that should be applied in order to avoid the burnout or unintentional reverse rolling until right amount of throttle has been applied. How the hill-holder mechanism could be applied here?
  • The phone call problem: The car is controlled by a controller (wow, that's an innovation said here!). This controller is a handheld device (you keep learning new things all the time!) like a mobile phone or a tablet. These kind of devices may accept phone calls or other notification as pop-up messages (yes, some of you still prefer the pop-up notifications!). During any of the aforementioned circumstances, the controller application will be moved to the background by the system. Namely, because your mom has to remind you to take a jacket, you will have a fast car running around uncontrolled. This is not a option!
  • The amateur problem: What could be possibly gone wrong when you have a fast car at amateur hands? Everything! Do you trust any kid who wants to drive your car that he will not push the throttle to the max? Of course not. Somehow we have to make this toy safe for him, the car owner and all the people around. The first option is to write some guidelines that this car should be used only by children with the age of 15 years old, but I am not going to write something like that. A true solution must be found.
  • The feedback problem: The first solution is a hardcore one that is used by any rc mechanic/driver around the globe. For temperature feedback you could measure the temperature after a couple of rounds using an electronic thermometer. For battery status you can connect a multimeter and measure the voltage! That's how we did it that's how it should be done for any rc car, but not for this one!
  • The race car problem: Any race car should not have any electronic assistance. But this should be true only in a track. This car also can and should be used in public areas too. Every safety assistance should be implemented in respect to the quote "The car should interfere as less as possible and should let the driver do the driving". I don't if this is absolutely possible but this project is going to give a try?

Solutions

In case you have a better solution or suggestion about any of the following feel free to be a member of this project!

  • The hill start problem: The SeekBar which represents the throttle does not start throttling from zero (0) value. There is a threshold which changes the usage of the SeekBar. This threshold is the value of ten (10) at the SeekBar.
    • Use case 1: The user holds the car in "braking still" mode: The user can hold the car in "braking still" mode by sliding and holding the SeekBar at bottom, the zero (0) value. When The user starts sliding the throttle SeekBar upwards the car will be in "neutral" mode (when the SeekBar will be at value of 10 (ten)). Afterwards a throttle value will be applied depending the progress of the SeekBar.
    • Use case 2: The car is in "parking brake" mode: The car can be still by applying the "parking brake". When the user first touches the throttle SeekBarthe controller tells the car to be at "braking still" mode. Afterwards a throttle value will be applied depending the progress of the SeekBar.
  • The phone call problem: Whenever another Activity comes to foreground the current Activity (the controller) will be moved to the background. When any Activity is moved to the background the onPause function will be called. So, in this function the "parking brake" mode will be automatically activated. It will only be deactivate from the user.
  • The amateur problem: Any user without previous experience in rc car racing could destroy this car. The handling demands good reflexes. The only way to make this car safer is to limit the overall throttle by a specific percentage when the car is driven by an inexperienced driver. That's why there is a speed limiter ImageView in the controller. The overall throttle can be decreased by clicking the speed limit ImageView and can be increased by long-clicking it.
  • The feedback problem: The feedback by itself is not the problem. The real problem is that the user must see the feedback. Must see it in time and understand it really fast. In case of the battery status feedback, it is not good to write the percentage because while the user driving must keep his eyes on the road and he should not struggle to see the battery status. The solution to this problem is to:
    • use a server in the handheld device in order to receive info in real time
    • vibrate the device for a standard period in order to notify the user that something is wrong
    • use different images and colors to depict the problem. The images and colors should be something familiar with his everyday life (for example red means low status, danger etc, green means that everything is alright, so on and so forth).
  • The race car problem: The solution here is really simple. Give the options to user to do what he wants. The handling assistance options are:
    • No assistance: Neither there will be any assistance to help the driver nor to inform his about errors for the handling (traction control system, collision detection, etc)
    • Warning assistance: There will be no assistance to help the driver but the controller will inform the user about errors for the handling (traction control system, collision detection, etc). I don't know if this will be helpful because the user must see the screen most of the time but it will be implemented in the controller anyway. The device will be vibrated for a tiny period of time (less than "The feedback problem"'s vibration period) in order to notify the user without disturbing the driving just to keep the driver aware that something has gone "differently"!
    • Full assistance: There will be assistance to help the driver and the controller will inform the user about errors for the handling (traction control system, collision detection, etc). I don't know if this will be helpful because the user must see the screen most of the time but it will be implemented in the controller anyway. The device will be vibrated for a tiny period of time (less than "The feedback problem"'s vibration period) in order to notify the user without disturbing the driving just to keep the driver aware that something could have gone "differently" but it didn't!