chrono::vehicle::ChPathSteeringControllerPP Class Reference

Description

"Pure Pursuit" path-following controller This implementation is based on the CARLA Pure Pursuit controller: https://carla.org// https://thomasfermi.github.io/Algorithms-for-Automated-Driving/Control/PurePursuit.html Original algorithm documented at: https://www.ri.cmu.edu/pub_files/pub3/coulter_r_craig_1992_1/coulter_r_craig_1992_1.pdf

#include <ChSteeringController.h>

Inheritance diagram for chrono::vehicle::ChPathSteeringControllerPP:
Collaboration diagram for chrono::vehicle::ChPathSteeringControllerPP:

Public Member Functions

 ChPathSteeringControllerPP (std::shared_ptr< ChBezierCurve > path, double max_wheel_turn_angle=0.0, double wheel_base=2.0)
 Construct a steering controller to track the specified path. More...
 
 ChPathSteeringControllerPP (const std::string &filename, std::shared_ptr< ChBezierCurve > path, double max_wheel_turn_angle=0.0, double wheel_base=2.0)
 Construct a steering controller to track the specified path. More...
 
void SetGain (double Kd)
 Set the gain for the PP controller.
 
void SetPreviewDistance (double pvd)
 
void SetStartSpeed (double v_start)
 
virtual double Advance (const ChFrameMoving<> &ref_frame, double time, double step) override
 Advance the state of the Stanley controller.
 
virtual void Reset (const ChFrameMoving<> &ref_frame) override
 Reset the PID controller. More...
 
virtual void CalcTargetLocation () override
 Calculate the current target point location. More...
 
double CalcHeadingError (ChVector3d &a, ChVector3d &b)
 
- Public Member Functions inherited from chrono::vehicle::ChSteeringController
virtual ~ChSteeringController ()
 Destructor.
 
void SetLookAheadDistance (double dist)
 Specify the look-ahead distance. More...
 
const ChVector3dGetSentinelLocation () const
 Return the current location of the sentinel point. More...
 
const ChVector3dGetTargetLocation () const
 Return the current value of the target point. More...
 
std::shared_ptr< ChBezierCurveGetPath () const
 Return a pointer to the Bezier curve.
 
void StartDataCollection ()
 Start/restart data collection.
 
void StopDataCollection ()
 Suspend/stop data collection.
 
bool IsDataCollectionEnabled () const
 Return true if data is being collected.
 
bool IsDataAvailable () const
 Return true if data is available for output.
 
void WriteOutputFile (const std::string &filename)
 Output data collected so far to the specified file.
 

Additional Inherited Members

- Protected Member Functions inherited from chrono::vehicle::ChSteeringController
 ChSteeringController (std::shared_ptr< ChBezierCurve > path)
 Construct a steering controller with default parameters.
 
- Protected Attributes inherited from chrono::vehicle::ChSteeringController
std::shared_ptr< ChBezierCurvem_path
 tracked path (piecewise cubic Bezier curve)
 
double m_dist
 look-ahead distance
 
ChVector3d m_sentinel
 position of sentinel point in global frame
 
ChVector3d m_target
 position of target point in global frame
 
double m_err
 current error (signed distance to target point)
 
double m_errd
 error derivative
 
double m_erri
 integral of error
 
utils::ChWriterCSVm_csv
 ChWriterCSV object for data collection.
 
bool m_collect
 flag indicating whether or not data is being collected
 

Constructor & Destructor Documentation

◆ ChPathSteeringControllerPP() [1/2]

chrono::vehicle::ChPathSteeringControllerPP::ChPathSteeringControllerPP ( std::shared_ptr< ChBezierCurve path,
double  max_wheel_turn_angle = 0.0,
double  wheel_base = 2.0 
)

Construct a steering controller to track the specified path.

This version uses default controller parameters (zero gains). The user is responsible for calling SetGains and SetLookAheadDistance.

◆ ChPathSteeringControllerPP() [2/2]

chrono::vehicle::ChPathSteeringControllerPP::ChPathSteeringControllerPP ( const std::string &  filename,
std::shared_ptr< ChBezierCurve path,
double  max_wheel_turn_angle = 0.0,
double  wheel_base = 2.0 
)

Construct a steering controller to track the specified path.

This version reads controller gains and lookahead distance from the specified JSON file.

Member Function Documentation

◆ CalcTargetLocation()

void chrono::vehicle::ChPathSteeringControllerPP::CalcTargetLocation ( )
overridevirtual

Calculate the current target point location.

The target point is the point on the associated path that is closest to the current location of the sentinel point.

Implements chrono::vehicle::ChSteeringController.

◆ Reset()

void chrono::vehicle::ChPathSteeringControllerPP::Reset ( const ChFrameMoving<> &  ref_frame)
overridevirtual

Reset the PID controller.

This function resets the underlying path tracker using the current location of the sentinel point.

Reimplemented from chrono::vehicle::ChSteeringController.


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