A .NET Core framework for building telepresent robots with modular functionality through plugins and custom drivers. Overkill is meant to allow for the easy development of robots controllable from anywhere.
Instead of having a single Locomotion Message that user interfaces send to the vehicle, this allows the vehicle to declare valid inputs itself - even registering default bindings for keyboard keys and gamepad buttons.
This change allows user interfaces to not need to care about logic that is used to decide what values are sent to the vehicle's interface (speed, how far to turn the wheels, etc) and leave that up to the vehicle driver instead.
The Locomotion message and topic still remain in case there is a use case where someone needs direct angle and speed control - and so Plugins may still instruct the vehicle to move.
These controls have names so that the user interface can re-map to any other key or gamepad button - the second argument is just the default suggested button. These inputs are specified in the configuration file like so:
If a vehicle driver attempts to register an input that is not named in this file, the value in the file is incorrect, or a handler has already been registered, a relevant exception is thrown.
Instead of having a single Locomotion Message that user interfaces send to the vehicle, this allows the vehicle to declare valid inputs itself - even registering default bindings for keyboard keys and gamepad buttons.
This change allows user interfaces to not need to care about logic that is used to decide what values are sent to the vehicle's interface (speed, how far to turn the wheels, etc) and leave that up to the vehicle driver instead.
The Locomotion message and topic still remain in case there is a use case where someone needs direct angle and speed control - and so Plugins may still instruct the vehicle to move.
Example from the Traxxas test project:
These controls have names so that the user interface can re-map to any other key or gamepad button - the second argument is just the default suggested button. These inputs are specified in the configuration file like so:
If a vehicle driver attempts to register an input that is not named in this file, the value in the file is incorrect, or a handler has already been registered, a relevant exception is thrown.