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 inputs. As an Irrlicht event receiver, its OnEvent() callback is used to keep track and update the current driver inputs. As such it does not need to override the default no-op Advance() virtual method.

See also
ChDataDriver

#include <ChIrrGuiDriver.h>

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

Public Types

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

Public Member Functions

 ChIrrGuiDriver (ChVehicleIrrApp &app)
 Construct an Irrlicht GUI driver. More...
 
virtual bool OnEvent (const irr::SEvent &event) override
 Intercept and process keyboard inputs. More...
 
virtual void Synchronize (double time) override
 Update the state of this driver system at the specified time.
 
void SetThrottleDelta (double delta)
 Set the time response for throttle control. More...
 
void SetSteeringDelta (double delta)
 Set the time response for steering control. More...
 
void SetBrakingDelta (double delta)
 Set the time response for braking control. More...
 
void SetInputDataFile (const std::string &filename)
 Set the input file for the underlying data driver.
 
void SetInputMode (InputMode mode)
 Set the current functioning mode.
 
std::string GetInputModeAsString () const
 Return the current functioning mode as a string.
 
- Public Member Functions inherited from chrono::vehicle::ChDriver
 ChDriver (ChVehicle &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])
 
virtual void Initialize ()
 Initialize this driver system.
 
virtual void Advance (double step)
 Advance the state of this driver system by the specified time step.
 
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 Attributes

ChVehicleIrrAppm_app
 
double m_throttleDelta
 
double m_steeringDelta
 
double m_brakingDelta
 
int m_dT
 
InputMode m_mode
 
double m_time_shift
 
std::shared_ptr< ChDataDriverm_data_driver
 
- 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
 

Constructor & Destructor Documentation

chrono::vehicle::ChIrrGuiDriver::ChIrrGuiDriver ( ChVehicleIrrApp app)

Construct an Irrlicht GUI driver.

Activates joysticks, if available

Member Function Documentation

bool chrono::vehicle::ChIrrGuiDriver::OnEvent ( const irr::SEvent &  event)
overridevirtual

Intercept and process keyboard inputs.

Only handles joystick events

Driver only handles input every 16 ticks (~60 Hz)

Gear is set to reverse

Only interpret keyboard inputs.

Reimplemented in chrono::vehicle::ChIrrGuiDriverTTR.

void chrono::vehicle::ChIrrGuiDriver::SetBrakingDelta ( double  delta)

Set the time response for braking control.

Parameters
deltatime (in seconds) to go from 0 to 1
void chrono::vehicle::ChIrrGuiDriver::SetSteeringDelta ( double  delta)

Set the time response for steering control.

Parameters
deltatime (in seconds) to go from 0 to 1 (or to -1)
void chrono::vehicle::ChIrrGuiDriver::SetThrottleDelta ( double  delta)

Set the time response for throttle control.

Parameters
deltatime (in seconds) to go from 0 to 1