Description

Interactive driver model using keyboard inputs.

Irrlicht-based GUI driver for the a vehicle. This class implements the functionality required by its base ChDriver class using keyboard or joystick inputs. As an Irrlicht event receiver, its OnEvent() callback is used to keep track and update the current driver inputs.

See also
ChDataDriver

#include <ChIrrGuiDriver.h>

Inheritance diagram for chrono::vehicle::ChIrrGuiDriver:
Collaboration diagram for chrono::vehicle::ChIrrGuiDriver:

Public Types

enum  InputMode { InputMode::LOCK, InputMode::KEYBOARD, InputMode::DATAFILE, InputMode::JOYSTICK }
 Functioning modes for a ChIrrGuiDriver. More...
 

Public Member Functions

 ChIrrGuiDriver (ChVehicleVisualSystemIrrlicht &vsys)
 Construct an Irrlicht GUI driver.
 
virtual bool OnEvent (const irr::SEvent &event) override
 Intercept and process keyboard inputs.
 
virtual void Initialize () override
 Initialize this driver system.
 
virtual void Synchronize (double time) override
 Update the state of this driver system at the specified time.
 
virtual void Advance (double step) override
 Advance the state of this driver system by the specified time step.
 
void SetInputMode (InputMode mode)
 Set the current functioning mode.
 
std::string GetInputModeAsString () const
 Return the current functioning mode as a string.
 
void SetThrottleDelta (double delta)
 Set the increment in throttle input for each recorded keypress (default 1/50).
 
void SetSteeringDelta (double delta)
 Set the increment in steering input for each recorded keypress (default 1/50).
 
void SetBrakingDelta (double delta)
 Set the increment in braking input for each recorded keypress (default 1/50).
 
void SetStepsize (double val)
 Set the step size for integration of the internal driver dynamics.
 
void SetGains (double steering_gain, double throttle_gain, double braking_gain)
 Set gains for internal dynamics. More...
 
void SetInputDataFile (const std::string &filename)
 Set the input file for the underlying data driver.
 
void SetJoystickConfigFile (const std::string &filename)
 Set joystick JSON configuration file name.
 
void SetJoystickDebug (bool val)
 Enable/disable joystick debugging output (default: false).
 
void SetButtonCallback (int button, void(*cbfun)())
 Feed button number and callback function to implement a custom callback.
 
- Public Member Functions inherited from chrono::vehicle::ChDriver
 ChDriver (ChVehicle &vehicle)
 Construct a driver subsystem associated with the given vehicle.
 
double GetThrottle () const
 Get the driver throttle input (in the range [0,1])
 
double GetSteering () const
 Get the driver steering input (in the range [-1,+1])
 
double GetBraking () const
 Get the driver braking input (in the range [0,1])
 
DriverInputs GetInputs () const
 Get all current inputs at once.
 
bool LogInit (const std::string &filename)
 Initialize output file for recording driver inputs.
 
bool Log (double time)
 Record the current driver inputs to the log file.
 
void SetSteering (double val, double min_val=-1, double max_val=1)
 Overwrite the value for the driver steering input.
 
void SetThrottle (double val, double min_val=0, double max_val=1)
 Overwrite the value for the driver throttle input.
 
void SetBraking (double val, double min_val=0, double max_val=1)
 Overwrite the value for the driver braking input.
 

Protected Member Functions

bool ProcessJoystickEvents (const irr::SEvent &event)
 
bool ProcessKeyboardEvents (const irr::SEvent &event)
 

Protected Attributes

ChVehicleVisualSystemIrrlichtm_vsys
 
InputMode m_mode
 current mode of the driver
 
double m_steering_target
 current target value for steering input
 
double m_throttle_target
 current target value for throttle input
 
double m_braking_target
 current target value for braking input
 
double m_stepsize
 time step for internal dynamics
 
double m_steering_delta
 steering increment on each keypress
 
double m_throttle_delta
 throttle increment on each keypress
 
double m_braking_delta
 braking increment on each keypress
 
double m_steering_gain
 gain for steering internal dynamics
 
double m_throttle_gain
 gain for throttle internal dynamics
 
double m_braking_gain
 gain for braking internal dynamics
 
irr::core::array< irr::SJoystickInfo > m_joystick_info
 Irrlicht joystick information.
 
std::string m_joystick_file
 JSON specification file.
 
int m_joystick_proccess_frame
 counter for successive event processing frames
 
bool m_joystick_debug
 enable/disable debug output
 
int m_joystick_debug_frame
 counter for successive output frames
 
ChIrrJoystickAxis steerAxis
 
ChIrrJoystickAxis throttleAxis
 
ChIrrJoystickAxis brakeAxis
 
ChIrrJoystickAxis clutchAxis
 
ChIrrJoystickButton shiftUpButton
 
ChIrrJoystickButton shiftDownButton
 
ChIrrJoystickButton gearReverseButton
 
ChIrrJoystickButton gear1Button
 
ChIrrJoystickButton gear2Button
 
ChIrrJoystickButton gear3Button
 
ChIrrJoystickButton gear4Button
 
ChIrrJoystickButton gear5Button
 
ChIrrJoystickButton gear6Button
 
ChIrrJoystickButton gear7Button
 
ChIrrJoystickButton gear8Button
 
ChIrrJoystickButton gear9Button
 
ChIrrJoystickButton toggleManualGearboxButton
 
int m_callback_button
 joystick button associated to the custom callback
 
void(* m_callback_function )()
 custom callback, can be implemented in the application
 
double m_time_shift
 time at which mode was switched to DATAFILE
 
std::shared_ptr< ChDataDriverm_data_driver
 embedded data driver (for playback)
 
- Protected Attributes inherited from chrono::vehicle::ChDriver
ChVehiclem_vehicle
 reference to associated vehicle
 
double m_throttle
 current value of throttle input
 
double m_steering
 current value of steering input
 
double m_braking
 current value of braking input
 

Member Enumeration Documentation

◆ InputMode

Functioning modes for a ChIrrGuiDriver.

Enumerator
LOCK 

driver inputs locked at current values

KEYBOARD 

driver inputs from keyboard

DATAFILE 

driver inputs from data file

JOYSTICK 

driver inputs from joystick

Member Function Documentation

◆ ProcessJoystickEvents()

bool chrono::vehicle::ChIrrGuiDriver::ProcessJoystickEvents ( const irr::SEvent &  event)
protected

Gear is set to reverse

◆ SetGains()

void chrono::vehicle::ChIrrGuiDriver::SetGains ( double  steering_gain,
double  throttle_gain,
double  braking_gain 
)

Set gains for internal dynamics.

Default values are 4.0.


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_vehicle/driver/ChIrrGuiDriver.h
  • /builds/uwsbel/chrono/src/chrono_vehicle/driver/ChIrrGuiDriver.cpp