sightsdev / sights

A complete teleoperative robot control interface
https://www.sights.dev
GNU General Public License v3.0
12 stars 8 forks source link

Add emergency stop button to interface #77

Open Conr86 opened 4 years ago

Conr86 commented 4 years ago

Is your feature request related to a problem? Please describe. The RoboCup Rescue league rules specify that a major league robot must have a software (GUI) emergency stop button, in addition to a physical one.

All robots need a big GUI element (button) to do an emergency stop, which is always visible and accessible.

If we want SIGHTS to be a valid option for this level of robotics, this would be an important feature to have.

Describe the solution you'd like An optional emergency stop button that can be enabled through the config file.

It should be large and always visible. Perhaps a floating red button in the lower right of the screen?

While it can be disabled through the config editor for robots that do not need or want one, it should not be able to be hidden at runtime (i.e. with a hide button, or when other elements are shown on the interface), to abide by the RRL rules.

Additional context

WilliamsJack commented 4 years ago

The emergency stop button should be disabled rather than enabled by the config. This means it is always visible until the interface receives a config file that specifies otherwise.

How should we implement this? There are a number of different levels of control possible, from simply stopping servos (works for all robots) to cutting power (would require additional hardware).

What level of the code does this run at? We probably don't want it as part of the SIGHTS service, since it would have to be running in order to work. Supervisor is a good option, since it is (most likely) running if the interface is accessible. Implementing it with PHP is even lower, since the webserver is always running if the interface is accessible, allowing the button to work even if Supervisor is not available - but I don't think we need to go that far.