Description
Base class for chrono wheeled vehicle systems.
This class provides the interface between the vehicle system and other systems (tires, driver, etc.). The reference frame for a vehicle follows the ISO standard: Z-axis up, X-axis pointing forward, and Y-axis towards the left of the vehicle.
#include <ChWheeledVehicle.h>
Public Member Functions | |
ChWheeledVehicle (const std::string &name, ChMaterialSurface::ContactMethod contact_method=ChMaterialSurface::NSC) | |
Construct a vehicle system with a default ChSystem. More... | |
ChWheeledVehicle (const std::string &name, ChSystem *system) | |
Construct a vehicle system using the specified ChSystem. More... | |
virtual | ~ChWheeledVehicle () |
Destructor. | |
virtual std::string | GetTemplateName () const override |
Get the name of the vehicle system template. | |
virtual std::shared_ptr< ChPowertrain > | GetPowertrain () const override |
Get the powertrain attached to this vehicle. | |
const ChAxleList & | GetAxles () const |
Get all vehicle axle subsystems. | |
std::shared_ptr< ChAxle > | GetAxle (int id) const |
Get the specified vehicle axle subsystem. | |
std::shared_ptr< ChSuspension > | GetSuspension (int id) const |
Get the specified suspension subsystem. | |
std::shared_ptr< ChSteering > | GetSteering (int id) const |
Get the specified steering subsystem. | |
std::shared_ptr< ChWheel > | GetWheel (int axle, VehicleSide side, WheelLocation location=SINGLE) const |
Get the specified vehicle wheel, by specifying the axle, side, and wheel location. More... | |
std::shared_ptr< ChDrivelineWV > | GetDriveline () const |
Get a handle to the vehicle's driveline subsystem. | |
virtual double | GetVehicleMass () const override |
Get the vehicle total mass. More... | |
virtual ChVector | GetVehicleCOMPos () const override |
Get the current global vehicle COM location. | |
virtual std::shared_ptr< ChShaft > | GetDriveshaft () const override |
Get a handle to the vehicle's driveshaft body. | |
virtual double | GetDriveshaftSpeed () const override |
Get the angular speed of the driveshaft. More... | |
virtual int | GetNumberAxles () const =0 |
Return the number of axles for this vehicle. | |
const ChVector & | GetSpindlePos (int axle, VehicleSide side) const |
Get the global location of the specified spindle. | |
const ChQuaternion & | GetSpindleRot (int axle, VehicleSide side) const |
Get the orientation of the specified spindle. More... | |
const ChVector & | GetSpindleLinVel (int axle, VehicleSide side) const |
Get the linear velocity of the specified spindle. More... | |
ChVector | GetSpindleAngVel (int axle, VehicleSide side) const |
Get the angular velocity of the specified spindle. More... | |
double | GetSpindleOmega (int axle, VehicleSide side) const |
Get the angular speed of the specified spindle. More... | |
virtual double | GetWheelbase () const =0 |
Return the vehicle wheelbase. | |
double | GetWheeltrack (int id) const |
Return the vehicle wheel track of the specified suspension subsystem. | |
virtual double | GetMinTurningRadius () const |
Return the minimum turning radius. More... | |
virtual double | GetMaxSteeringAngle () const |
Return the maximum steering angle. More... | |
void | InitializeTire (std::shared_ptr< ChTire > tire, std::shared_ptr< ChWheel > wheel, VisualizationType tire_vis=VisualizationType::PRIMITIVES, ChTire::CollisionType tire_coll=ChTire::CollisionType::SINGLE_POINT) |
Initialize the given tire and attach it to the specified wheel. More... | |
void | InitializePowertrain (std::shared_ptr< ChPowertrain > powertrain) |
Initialize the given powertrain system and associate it to this vehicle. More... | |
void | SetSuspensionVisualizationType (VisualizationType vis) |
Set visualization type for the suspension subsystems. More... | |
void | SetSteeringVisualizationType (VisualizationType vis) |
Set visualization type for the steering subsystems. More... | |
void | SetWheelVisualizationType (VisualizationType vis) |
Set visualization type for the wheel subsystems. More... | |
virtual void | SetChassisVehicleCollide (bool state) override |
Enable/disable collision between the chassis and all other vehicle subsystems. More... | |
void | SetSuspensionOutput (int id, bool state) |
Enable/disable output from the suspension subsystems. More... | |
void | SetSteeringOutput (int id, bool state) |
Enable/disable output from the steering subsystems. More... | |
void | SetAntirollbarOutput (int id, bool state) |
Enable/disable output from the anti-roll bar subsystems. More... | |
void | SetDrivelineOutput (bool state) |
Enable/disable output from the driveline subsystem. More... | |
virtual void | Synchronize (double time, const ChDriver::Inputs &driver_inputs, const ChTerrain &terrain) |
Update the state of this vehicle at the current time. More... | |
virtual void | Advance (double step) override final |
Advance the state of this vehicle by the specified time step. More... | |
void | LockAxleDifferential (int axle, bool lock) |
Lock/unlock the differential on the specified axle. More... | |
void | LockCentralDifferential (int which, bool lock) |
Lock/unlock the specified central differential. More... | |
virtual void | LogConstraintViolations () override |
Log current constraint violations. | |
virtual std::string | ExportComponentList () const override |
Return a JSON string with information on all modeling components in the vehicle system. More... | |
virtual void | ExportComponentList (const std::string &filename) const override |
Write a JSON-format file with information on all modeling components in the vehicle system. More... | |
Public Member Functions inherited from chrono::vehicle::ChVehicle | |
virtual | ~ChVehicle () |
Destructor. | |
const std::string & | GetName () const |
Get the name identifier for this vehicle. | |
void | SetName (const std::string &name) |
Set the name identifier for this vehicle. | |
ChSystem * | GetSystem () |
Get a pointer to the Chrono ChSystem. | |
double | GetChTime () const |
Get the current simulation time of the underlying ChSystem. | |
std::shared_ptr< ChChassis > | GetChassis () const |
Get a handle to the vehicle's chassis subsystem. | |
std::shared_ptr< ChBodyAuxRef > | GetChassisBody () const |
Get a handle to the vehicle's chassis body. | |
const ChVector & | GetVehiclePos () const |
Get the vehicle location. More... | |
const ChQuaternion & | GetVehicleRot () const |
Get the vehicle orientation. More... | |
double | GetVehicleSpeed () const |
Get the vehicle speed. More... | |
double | GetVehicleSpeedCOM () const |
Get the speed of the chassis COM. More... | |
ChVector | GetVehiclePointLocation (const ChVector<> &locpos) const |
Get the global position of the specified point. More... | |
ChVector | GetVehiclePointVelocity (const ChVector<> &locpos) const |
Get the global velocity of the specified point. More... | |
ChVector | GetVehicleAcceleration (const ChVector<> &locpos) const |
Get the acceleration at the specified point. More... | |
ChVector | GetDriverPos () const |
Get the global location of the driver. | |
void | SetOutput (ChVehicleOutput::Type type, const std::string &out_dir, const std::string &out_name, double output_step) |
Enable output for this vehicle system. More... | |
virtual void | Initialize (const ChCoordsys<> &chassisPos, double chassisFwdVel=0)=0 |
Initialize this vehicle at the specified global location and orientation. More... | |
void | SetChassisVisualizationType (VisualizationType vis) |
Set visualization mode for the chassis subsystem. | |
void | SetChassisCollide (bool state) |
Enable/disable collision for the chassis subsystem. More... | |
void | SetChassisOutput (bool state) |
Enable/disable output from the chassis subsystem. | |
Protected Member Functions | |
virtual void | Output (int frame, ChVehicleOutput &database) const override |
Output data for all modeling components in the vehicle system. | |
Protected Member Functions inherited from chrono::vehicle::ChVehicle | |
ChVehicle (const std::string &name, ChMaterialSurface::ContactMethod contact_method=ChMaterialSurface::NSC) | |
Construct a vehicle system with an underlying ChSystem. More... | |
ChVehicle (const std::string &name, ChSystem *system) | |
Construct a vehicle system using the specified ChSystem. More... | |
Protected Attributes | |
ChAxleList | m_axles |
list of axle subsystems | |
ChSteeringList | m_steerings |
list of steering subsystems | |
std::shared_ptr< ChDrivelineWV > | m_driveline |
driveline subsystem | |
std::shared_ptr< ChPowertrain > | m_powertrain |
associated powertrain system | |
Protected Attributes inherited from chrono::vehicle::ChVehicle | |
std::string | m_name |
vehicle name | |
ChSystem * | m_system |
pointer to the Chrono system | |
bool | m_ownsSystem |
true if system created at construction | |
bool | m_output |
generate ouput for this vehicle system | |
ChVehicleOutput * | m_output_db |
vehicle output database | |
double | m_output_step |
output time step | |
double | m_next_output_time |
time for next output | |
int | m_output_frame |
current output frame | |
std::shared_ptr< ChChassis > | m_chassis |
handle to the chassis subsystem | |
Additional Inherited Members | |
Static Protected Member Functions inherited from chrono::vehicle::ChVehicle | |
template<typename T > | |
static bool | AnyOutput (const std::vector< std::shared_ptr< T >> &list) |
Utility function for testing if any subsystem in a list generates output. | |
Constructor & Destructor Documentation
◆ ChWheeledVehicle() [1/2]
chrono::vehicle::ChWheeledVehicle::ChWheeledVehicle | ( | const std::string & | name, |
ChMaterialSurface::ContactMethod | contact_method = ChMaterialSurface::NSC |
||
) |
Construct a vehicle system with a default ChSystem.
- Parameters
-
[in] name vehicle name [in] contact_method contact method
◆ ChWheeledVehicle() [2/2]
chrono::vehicle::ChWheeledVehicle::ChWheeledVehicle | ( | const std::string & | name, |
ChSystem * | system | ||
) |
Construct a vehicle system using the specified ChSystem.
- Parameters
-
[in] name vehicle name [in] system containing mechanical system
Member Function Documentation
◆ Advance()
|
finaloverridevirtual |
Advance the state of this vehicle by the specified time step.
In addition to advancing the state of the multibody system (if the vehicle owns the underlying system), this function also advances the state of the associated powertrain and the states of all associated tires.
Reimplemented from chrono::vehicle::ChVehicle.
◆ ExportComponentList() [1/2]
|
overridevirtual |
Return a JSON string with information on all modeling components in the vehicle system.
These include bodies, shafts, joints, spring-damper elements, markers, etc.
Implements chrono::vehicle::ChVehicle.
◆ ExportComponentList() [2/2]
|
overridevirtual |
Write a JSON-format file with information on all modeling components in the vehicle system.
These include bodies, shafts, joints, spring-damper elements, markers, etc.
Implements chrono::vehicle::ChVehicle.
◆ GetDriveshaftSpeed()
|
overridevirtual |
Get the angular speed of the driveshaft.
This function provides the interface between a vehicle system and a powertrain system.
Implements chrono::vehicle::ChVehicle.
◆ GetMaxSteeringAngle()
|
virtual |
Return the maximum steering angle.
This default implementation estimates the maximum steering angle based on a bicycle model and the vehicle minimum turning radius.
Reimplemented in chrono::vehicle::uaz::UAZBUS_Vehicle, chrono::vehicle::citybus::CityBus_Vehicle, chrono::vehicle::sedan::Sedan_Vehicle, chrono::vehicle::generic::Generic_Vehicle, chrono::vehicle::WheeledVehicle, and chrono::vehicle::hmmwv::HMMWV_Vehicle.
◆ GetMinTurningRadius()
|
inlinevirtual |
Return the minimum turning radius.
A concrete wheeled vehicle class should override the default value (20 m).
Reimplemented in chrono::vehicle::uaz::UAZBUS_Vehicle, chrono::vehicle::citybus::CityBus_Vehicle, chrono::vehicle::sedan::Sedan_Vehicle, chrono::vehicle::generic::Generic_Vehicle, chrono::vehicle::WheeledVehicle, and chrono::vehicle::hmmwv::HMMWV_Vehicle.
◆ GetSpindleAngVel()
ChVector chrono::vehicle::ChWheeledVehicle::GetSpindleAngVel | ( | int | axle, |
VehicleSide | side | ||
) | const |
Get the angular velocity of the specified spindle.
Return the angular velocity of the spindle frame, expressed in the global reference frame.
◆ GetSpindleLinVel()
const ChVector & chrono::vehicle::ChWheeledVehicle::GetSpindleLinVel | ( | int | axle, |
VehicleSide | side | ||
) | const |
Get the linear velocity of the specified spindle.
Return the linear velocity of the spindle center, expressed in the global reference frame.
◆ GetSpindleOmega()
double chrono::vehicle::ChWheeledVehicle::GetSpindleOmega | ( | int | axle, |
VehicleSide | side | ||
) | const |
Get the angular speed of the specified spindle.
This is the angular speed of the spindle shaft.
◆ GetSpindleRot()
const ChQuaternion & chrono::vehicle::ChWheeledVehicle::GetSpindleRot | ( | int | axle, |
VehicleSide | side | ||
) | const |
Get the orientation of the specified spindle.
Return a quaternion representing a rotation with respect to the global reference frame.
◆ GetVehicleMass()
|
overridevirtual |
Get the vehicle total mass.
This includes the mass of the chassis and all vehicle subsystems, but not the mass of tires.
Implements chrono::vehicle::ChVehicle.
◆ GetWheel()
std::shared_ptr< ChWheel > chrono::vehicle::ChWheeledVehicle::GetWheel | ( | int | axle, |
VehicleSide | side, | ||
WheelLocation | location = SINGLE |
||
) | const |
Get the specified vehicle wheel, by specifying the axle, side, and wheel location.
Axles are assumed to be indexed starting from the front of the vehicle. On each axle, wheels are assumed to be ordered from inner to outer wheels, first left then right: for a single-wheel axle the order is left wheel, right wheel; for a double-wheel axle, the order is inner left, inner right, outer left, outer right.
◆ InitializePowertrain()
void chrono::vehicle::ChWheeledVehicle::InitializePowertrain | ( | std::shared_ptr< ChPowertrain > | powertrain | ) |
Initialize the given powertrain system and associate it to this vehicle.
The powertrain is initialized by connecting it to this vehicle's chassis and driveline shaft.
◆ InitializeTire()
void chrono::vehicle::ChWheeledVehicle::InitializeTire | ( | std::shared_ptr< ChTire > | tire, |
std::shared_ptr< ChWheel > | wheel, | ||
VisualizationType | tire_vis = VisualizationType::PRIMITIVES , |
||
ChTire::CollisionType | tire_coll = ChTire::CollisionType::SINGLE_POINT |
||
) |
Initialize the given tire and attach it to the specified wheel.
Optionally, specify tire visualization mode and tire-terrain collision detection method. This function should be called only after vehicle initialization.
◆ LockAxleDifferential()
void chrono::vehicle::ChWheeledVehicle::LockAxleDifferential | ( | int | axle, |
bool | lock | ||
) |
Lock/unlock the differential on the specified axle.
By convention, axles are counted front to back, starting with index 0.
◆ LockCentralDifferential()
void chrono::vehicle::ChWheeledVehicle::LockCentralDifferential | ( | int | which, |
bool | lock | ||
) |
Lock/unlock the specified central differential.
By convention, central differentials are counted from front to back, starting with index 0 for the central differential between the two front-most axles.
◆ SetAntirollbarOutput()
void chrono::vehicle::ChWheeledVehicle::SetAntirollbarOutput | ( | int | id, |
bool | state | ||
) |
Enable/disable output from the anti-roll bar subsystems.
See also ChVehicle::SetOuput.
◆ SetChassisVehicleCollide()
|
overridevirtual |
Enable/disable collision between the chassis and all other vehicle subsystems.
This only controls collisions between the chassis and the tire systems.
Reimplemented from chrono::vehicle::ChVehicle.
◆ SetDrivelineOutput()
void chrono::vehicle::ChWheeledVehicle::SetDrivelineOutput | ( | bool | state | ) |
Enable/disable output from the driveline subsystem.
See also ChVehicle::SetOuput.
◆ SetSteeringOutput()
void chrono::vehicle::ChWheeledVehicle::SetSteeringOutput | ( | int | id, |
bool | state | ||
) |
Enable/disable output from the steering subsystems.
See also ChVehicle::SetOuput.
◆ SetSteeringVisualizationType()
void chrono::vehicle::ChWheeledVehicle::SetSteeringVisualizationType | ( | VisualizationType | vis | ) |
Set visualization type for the steering subsystems.
This function should be called only after vehicle initialization.
◆ SetSuspensionOutput()
void chrono::vehicle::ChWheeledVehicle::SetSuspensionOutput | ( | int | id, |
bool | state | ||
) |
Enable/disable output from the suspension subsystems.
See also ChVehicle::SetOuput.
◆ SetSuspensionVisualizationType()
void chrono::vehicle::ChWheeledVehicle::SetSuspensionVisualizationType | ( | VisualizationType | vis | ) |
Set visualization type for the suspension subsystems.
This function should be called only after vehicle initialization.
◆ SetWheelVisualizationType()
void chrono::vehicle::ChWheeledVehicle::SetWheelVisualizationType | ( | VisualizationType | vis | ) |
Set visualization type for the wheel subsystems.
This function should be called only after vehicle initialization.
◆ Synchronize()
|
virtual |
Update the state of this vehicle at the current time.
The vehicle system is provided the current driver inputs (throttle between 0 and 1, steering between -1 and +1, braking between 0 and 1), and a reference to the terrain system.
- Parameters
-
[in] time current time [in] driver_inputs current driver inputs [in] terrain reference to the terrain system
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono_vehicle/wheeled_vehicle/ChWheeledVehicle.h
- /builds/uwsbel/chrono/src/chrono_vehicle/wheeled_vehicle/ChWheeledVehicle.cpp