Project Chrono: chrono::vehicle::ChPathSteeringController Class Reference

Public Member Functions | List of all members
chrono::vehicle::ChPathSteeringController Class Reference
VEHICLE module » Utility classes

## Description

Path-following steering PID controller.

The path to be followed is specified as a ChBezierCurve object and the target point is defined to be the point on that path that is closest to the current location of the sentinel point.

The parameters of a steering controller can also be specified through a JSON file; sample JSON input file:

         {
             "Gains":
             {
                 "Kp":   0.5,
                 "Ki" : 0.0,
                 "Kd" : 0.0
             },

             "Lookahead Distance": 20.0
         }

`#include <ChSteeringController.h>`

Inheritance diagram for chrono::vehicle::ChPathSteeringController:
[legend]
Collaboration diagram for chrono::vehicle::ChPathSteeringController:
[legend]

## Public Member Functions
| ChPathSteeringController (std::shared_ptr< ChBezierCurve > path)
| Construct a steering controller to track the specified path.
| ChPathSteeringController (const std::string &filename, std::shared_ptr< ChBezierCurve > path)
| Construct a steering controller to track the specified path.
void | SetGains (double Kp, double Ki, double Kd)
| Set the gains for the PID controller.
virtual void | Reset (const ChFrameMoving<> &ref_frame) override
| Reset the PID controller.
virtual void | CalcTargetLocation () override
| Calculate the current target point location.
virtual double | Advance (const ChFrameMoving<> &ref_frame, double time, double step) override
| Advance the state of the PID controller.
Public Member Functions inherited from chrono::vehicle::ChSteeringController
virtual | ~ChSteeringController ()
| Destructor.
void | SetLookAheadDistance (double dist)
| Specify the look-ahead distance.
const ChVector3d & | GetSentinelLocation () const
| Return the current location of the sentinel point.
const ChVector3d & | GetTargetLocation () const
| Return the current value of the target point.
std::shared_ptr< ChBezierCurve > | GetPath () 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< ChBezierCurve > | m_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::ChWriterCSV * | m_csv
| ChWriterCSV object for data collection.
bool | m_collect
| flag indicating whether or not data is being collected

## Constructor & Destructor Documentation

## ◆ ChPathSteeringController() [1/2]

chrono::vehicle::ChPathSteeringController::ChPathSteeringController | ( | std::shared_ptr< ChBezierCurve > | path | ) |

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.

## ◆ ChPathSteeringController() [2/2]

chrono::vehicle::ChPathSteeringController::ChPathSteeringController | ( | const std::string & | filename,
|  | std::shared_ptr< ChBezierCurve > | path )

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

## ◆ Advance()

double chrono::vehicle::ChPathSteeringController::Advance | ( | const ChFrameMoving<> & | ref_frame,
|  | double | time,
|  | double | step )
| overridevirtual

Advance the state of the PID controller.

This function performs the required integration for the integral component of the PID controller and returns the calculated steering value.

Implements chrono::vehicle::ChSteeringController.

## ◆ CalcTargetLocation()

void chrono::vehicle::ChPathSteeringController::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::ChPathSteeringController::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:

- D:/W/B/src/chrono-9.0.1/src/chrono_vehicle/utils/ChSteeringController.h
- D:/W/B/src/chrono-9.0.1/src/chrono_vehicle/utils/ChSteeringController.cpp