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, ChContactMethod contact_method=ChContactMethod::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< ChTire > | GetTire (int axle, VehicleSide side, WheelLocation location=SINGLE) const |
Get the specified vehicle tire, by specifying the axle, side, and wheel location. More... | |
std::shared_ptr< ChBrake > | GetBrake (int axle, VehicleSide side) const |
Get the specified vehicle brake, by specifying the axle and side. More... | |
std::shared_ptr< ChDrivelineWV > | GetDriveline () const |
Get a handle to the vehicle's driveline subsystem. | |
std::shared_ptr< ChSubchassis > | GetSubchassis (int id) const |
Get the subchassis system (if none present, returns an empty pointer). | |
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 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. | |
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 | SetSubchassisVisualizationType (VisualizationType vis) |
Set visualization mode for the sub-chassis subsystems. | |
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 | Initialize (const ChCoordsys<> &chassisPos, double chassisFwdVel=0) override |
Initialize this vehicle at the specified global location and orientation. 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... | |
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... | |
void | EnableBrakeLocking (bool lock) |
Enable/disable brake locking. More... | |
void | ApplyParkingBrake (bool lock) |
Engage/disengage parking brake. More... | |
bool | ParkingBrake () const |
Returns the state of the parking brake (true if enagaged, false otherwise). | |
void | DisconnectDriveline () |
Disconnect driveline. More... | |
virtual void | LogConstraintViolations () override |
Log current constraint violations. | |
void | LogSubsystemTypes () |
Log the types (template names) of current vehicle subsystems. | |
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 main chassis subsystem. | |
std::shared_ptr< ChChassisRear > | GetChassisRear (int id) const |
Get the specified specified rear chassis subsystem. | |
std::shared_ptr< ChChassisConnector > | GetChassisConnector (int id) const |
Get a handle to the specified chassis connector. | |
std::shared_ptr< ChBodyAuxRef > | GetChassisBody () const |
Get a handle to the vehicle's chassis body. | |
std::shared_ptr< ChBodyAuxRef > | GetChassisRearBody (int id) const |
Get a handle to the specified rear chassis body. | |
const ChVector & | GetVehiclePos () const |
Get the vehicle location. More... | |
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 | GetVehiclePointAcceleration (const ChVector<> &locpos) const |
Get the acceleration at the specified point. More... | |
ChVector | GetDriverPos () const |
Get the global location of the driver. | |
void | SetCollisionSystemType (collision::ChCollisionSystemType collsys_type) |
Change the default collision detection system. More... | |
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... | |
void | SetChassisVisualizationType (VisualizationType vis) |
Set visualization mode for the chassis subsystem. | |
void | SetChassisRearVisualizationType (VisualizationType vis) |
Set visualization mode for the rear chassis subsystems. | |
void | SetChassisCollide (bool state) |
Enable/disable collision for the chassis subsystem. More... | |
void | SetChassisOutput (bool state) |
Enable/disable output from the chassis subsystem. | |
bool | HasBushings () const |
Return true if the vehicle model contains bushings. | |
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, ChContactMethod contact_method=ChContactMethod::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 | |
ChSubchassisList | m_subchassis |
list of subchassis subsystems (typically empty) | |
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 | |
bool | m_parking_on |
indicates whether or not parking brake is engaged | |
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 main chassis subsystem | |
ChChassisRearList | m_chassis_rear |
list of rear chassis subsystems (can be empty) | |
ChChassisConnectorList | m_chassis_connectors |
list of chassis connector (must match m_chassis_rear) | |
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, |
ChContactMethod | contact_method = ChContactMethod::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.
◆ ApplyParkingBrake()
void chrono::vehicle::ChWheeledVehicle::ApplyParkingBrake | ( | bool | lock | ) |
Engage/disengage parking brake.
If engaged and supported by the concrete brake type on this vehicle, this locks all vehicle brakes.
◆ DisconnectDriveline()
void chrono::vehicle::ChWheeledVehicle::DisconnectDriveline | ( | ) |
Disconnect driveline.
This function has no effect if called before vehicle initialization.
◆ EnableBrakeLocking()
void chrono::vehicle::ChWheeledVehicle::EnableBrakeLocking | ( | bool | lock | ) |
Enable/disable brake locking.
If supported by the concrete brake type used on this vehicle, the brakes will be locked for large enough braking inputs. By default, brakes do not lock.
◆ 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.
◆ GetBrake()
std::shared_ptr< ChBrake > chrono::vehicle::ChWheeledVehicle::GetBrake | ( | int | axle, |
VehicleSide | side | ||
) | const |
Get the specified vehicle brake, by specifying the axle and side.
Axles are assumed to be indexed starting from the front of the vehicle.
◆ 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_SAEVehicle, chrono::vehicle::feda::FEDA_Vehicle, chrono::vehicle::rccar::RCCar_Vehicle, chrono::vehicle::gator::Gator_Vehicle, chrono::vehicle::fmtv::LMTV_Vehicle, chrono::vehicle::fmtv::MTV_Vehicle, chrono::vehicle::uaz::UAZBUS_Vehicle, chrono::vehicle::sedan::Sedan_Vehicle, chrono::vehicle::citybus::CityBus_Vehicle, chrono::vehicle::generic::Generic_Vehicle, chrono::vehicle::hmmwv::HMMWV_Vehicle, chrono::vehicle::mrole::mrole_Vehicle, chrono::vehicle::WheeledVehicle, and chrono::vehicle::kraz::Kraz_tractor.
◆ 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_SAEVehicle, chrono::vehicle::feda::FEDA_Vehicle, chrono::vehicle::rccar::RCCar_Vehicle, chrono::vehicle::gator::Gator_Vehicle, chrono::vehicle::fmtv::LMTV_Vehicle, chrono::vehicle::fmtv::MTV_Vehicle, chrono::vehicle::uaz::UAZBUS_Vehicle, chrono::vehicle::sedan::Sedan_Vehicle, chrono::vehicle::citybus::CityBus_Vehicle, chrono::vehicle::generic::Generic_Vehicle, chrono::vehicle::hmmwv::HMMWV_Vehicle, chrono::vehicle::mrole::mrole_Vehicle, chrono::vehicle::WheeledVehicle, and chrono::vehicle::kraz::Kraz_tractor.
◆ 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()
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.
◆ GetTire()
std::shared_ptr< ChTire > chrono::vehicle::ChWheeledVehicle::GetTire | ( | int | axle, |
VehicleSide | side, | ||
WheelLocation | location = SINGLE |
||
) | const |
Get the specified vehicle tire, 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.
◆ 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.
◆ Initialize()
|
overridevirtual |
Initialize this vehicle at the specified global location and orientation.
This base class implementation only initializes the main chassis subsystem. Derived classes must extend this function to initialize all other wheeled vehicle subsystems (axles, steerings, driveline).
- Parameters
-
[in] chassisPos initial global position and orientation [in] chassisFwdVel initial chassis forward velocity
Implements chrono::vehicle::ChVehicle.
Reimplemented in chrono::vehicle::uaz::UAZBUS_SAEVehicle, chrono::vehicle::feda::FEDA_Vehicle, chrono::vehicle::rccar::RCCar_Vehicle, chrono::vehicle::fmtv::LMTV_Vehicle, chrono::vehicle::fmtv::MTV_Vehicle, chrono::vehicle::uaz::UAZBUS_Vehicle, chrono::vehicle::sedan::Sedan_Vehicle, chrono::vehicle::citybus::CityBus_Vehicle, chrono::vehicle::hmmwv::HMMWV_VehicleFull, chrono::vehicle::gator::Gator_Vehicle, chrono::vehicle::mrole::mrole_VehicleFull, chrono::vehicle::generic::Generic_Vehicle, chrono::vehicle::kraz::Kraz_tractor, chrono::vehicle::hmmwv::HMMWV_VehicleReduced, chrono::vehicle::mrole::mrole_VehicleReduced, and chrono::vehicle::WheeledVehicle.
◆ 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