chrono::vehicle::ChPathFollowerDriver Class Reference

Description

Closed-loop path-follower driver model.

A driver model that uses a path steering controller and a speed controller. The steering controller adjusts the steering input to follow the prescribed path. The output from the speed controller is used to adjust throttle and braking inputs in order to maintain the prescribed constant vehicle speed.

See Also
ChPathSteeringController
ChSpeedController

#include <ChPathFollowerDriver.h>

Inheritance diagram for chrono::vehicle::ChPathFollowerDriver:
Collaboration diagram for chrono::vehicle::ChPathFollowerDriver:

Public Member Functions

 ChPathFollowerDriver (ChVehicle &vehicle, std::shared_ptr< ChBezierCurve > path, const std::string &path_name, double target_speed, bool isClosedPath=false)
 Construct using the specified Bezier curve. More...
 
 ChPathFollowerDriver (ChVehicle &vehicle, const std::string &steering_filename, const std::string &speed_filename, std::shared_ptr< ChBezierCurve > path, const std::string &path_name, double target_speed, bool isClosedPath=false)
 Construct using JSON specification files. More...
 
void SetDesiredSpeed (double val)
 Set the desired vehicle speed.
 
void SetThreshholdThrottle (double val)
 Specify the throttle value below which braking is enabled. More...
 
ChPathSteeringControllerGetSteeringController ()
 Get the underlying steering controller object.
 
ChSpeedControllerGetSpeedController ()
 Get the underlying speed controller object.
 
void Reset ()
 Reset the underlying controllers.
 
virtual void Advance (double step) override
 Advance the state of this driver system by the specified duration.
 
void ExportPathPovray (const std::string &out_dir)
 Export the Bezier curve for POV-Ray postprocessing.
 
- 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 Synchronize (double time)
 Update the state of this driver system at the current time.
 
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.
 

Additional Inherited Members

- 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::ChPathFollowerDriver::ChPathFollowerDriver ( ChVehicle vehicle,
std::shared_ptr< ChBezierCurve path,
const std::string &  path_name,
double  target_speed,
bool  isClosedPath = false 
)

Construct using the specified Bezier curve.

Parameters
vehicleassociated vehicle
pathBezier curve with target path
path_namename of the path curve
target_speedconstant target speed
isClosedPathTreat the path as a closed loop
chrono::vehicle::ChPathFollowerDriver::ChPathFollowerDriver ( ChVehicle vehicle,
const std::string &  steering_filename,
const std::string &  speed_filename,
std::shared_ptr< ChBezierCurve path,
const std::string &  path_name,
double  target_speed,
bool  isClosedPath = false 
)

Construct using JSON specification files.

The two files must contain specification for the path-follower steering controller and the constant-speed controller, respectively.

Parameters
vehicleassociated vehicle
steering_filenameJSON file with steering controller specification
speed_filenameJSON file with speed controller specification
pathBezier curve with target path
path_namename of the path curve
target_speedconstant target speed
isClosedPathTreat the path as a closed loop

Member Function Documentation

void chrono::vehicle::ChPathFollowerDriver::SetThreshholdThrottle ( double  val)

Specify the throttle value below which braking is enabled.

If the vehicle is moving faster than the set speed, the controller attempts to reduce speed either by reducing the throttle input (if the current throttle input is above the threshold value) or by applying brakes (otherwise).