Description
Base class for chrono tracked vehicle systems.
This class provides the interface between the vehicle system and other systems (terrain, driver, etc.)
#include <ChTrackedVehicle.h>
Public Member Functions | |
virtual | ~ChTrackedVehicle () |
Destructor. | |
virtual std::string | GetTemplateName () const override |
Get the name of the vehicle system template. | |
std::shared_ptr< ChTrackAssembly > | GetTrackAssembly (VehicleSide side) const |
Get the specified suspension subsystem. | |
std::shared_ptr< ChDrivelineTV > | GetDriveline () const |
Get a handle to the vehicle's driveline subsystem. | |
size_t | GetNumTrackSuspensions (VehicleSide side) const |
Get the number of suspensions in the specified track assembly. | |
size_t | GetNumTrackShoes (VehicleSide side) const |
Get the number of shoes in the specified track assembly. | |
std::shared_ptr< ChTrackShoe > | GetTrackShoe (VehicleSide side, size_t id) const |
Get a handle to the specified track shoe. | |
BodyState | GetTrackShoeState (VehicleSide side, size_t shoe_id) const |
Get the complete state for the specified track shoe. More... | |
void | GetTrackShoeStates (VehicleSide side, BodyStates &states) const |
Get the complete states for all track shoes of the specified track assembly. More... | |
void | SetSprocketVisualizationType (VisualizationType vis) |
Set visualization type for the sprocket subsystem. | |
void | SetIdlerVisualizationType (VisualizationType vis) |
Set visualization type for the idler subsystem. | |
void | SetSuspensionVisualizationType (VisualizationType vis) |
Set visualization type for the suspension subsystems. | |
void | SetIdlerWheelVisualizationType (VisualizationType vis) |
Set visualization type for the idler wheel subsystem. | |
void | SetRoadWheelVisualizationType (VisualizationType vis) |
Set visualization type for the road-wheel subsystems. | |
void | SetRollerVisualizationType (VisualizationType vis) |
Set visualization type for the roller subsystems. | |
void | SetTrackShoeVisualizationType (VisualizationType vis) |
Set visualization type for the track shoe subsystems. | |
void | SetSprocketCollide (bool state) |
Enable/disable collision for the sprocket subsystem. | |
void | SetIdlerCollide (bool state) |
Enable/disable collision for the idler subsystem. | |
void | SetRoadWheelCollide (bool state) |
Enable/disable collision for the road-wheel subsystems. | |
void | SetRollerCollide (bool state) |
Enable/disable collision for the roller subsystems. | |
void | SetTrackShoeCollide (bool state) |
Enable/disable collision for the track shoe subsystems. | |
void | EnableCollision (int flags) |
Set collision flags for the various subsystems. More... | |
virtual void | SetChassisVehicleCollide (bool state) override |
Enable/disable collision between the chassis and all other vehicle subsystems. More... | |
void | EnableCustomContact (std::shared_ptr< ChTrackCustomContact > callback) |
Enable user-defined contact forces between track shoes and idlers and/or road-wheels and/or ground. More... | |
void | MonitorContacts (int flags) |
Set contacts to be monitored. More... | |
void | SetRenderContactNormals (bool val) |
Render normals of all monitored contacts. | |
void | SetRenderContactForces (bool val, double scale) |
Render forces of all monitored contacts. | |
void | SetContactCollection (bool val) |
Turn on/off contact data collection. More... | |
bool | IsPartInContact (TrackedCollisionFlag::Enum part) const |
Return true if the specified vehicle part is currently experiencing a collision. | |
ChVector3d | GetSprocketResistiveTorque (VehicleSide side) const |
Return estimated resistive torque on the specified sprocket. More... | |
void | WriteContacts (const std::string &filename) |
Write contact information to file. More... | |
void | SetTrackAssemblyOutput (VehicleSide side, bool state) |
Enable/disable output for the track assemblies. More... | |
virtual void | Initialize (const ChCoordsys<> &chassisPos, double chassisFwdVel=0) override |
Initialize this vehicle at the specified global location and orientation. More... | |
virtual void | InitializeInertiaProperties () override final |
Calculate total vehicle mass. More... | |
void | Synchronize (double time, const DriverInputs &driver_inputs) |
Update the state of this vehicle at the current time. More... | |
void | Synchronize (double time, const DriverInputs &driver_inputs, const TerrainForces &shoe_forces_left, const TerrainForces &shoe_forces_right) |
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 | LockDifferential (bool lock) |
Lock/unlock the differential (if available). | |
void | DisconnectDriveline () |
Disconnect driveline. 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 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. | |
std::shared_ptr< ChPowertrainAssembly > | GetPowertrainAssembly () const |
Get the powertrain attached to this vehicle. | |
std::shared_ptr< ChEngine > | GetEngine () const |
Get the engine in the powertrain assembly (if a powertrain is attached). | |
std::shared_ptr< ChTransmission > | GetTransmission () const |
Get the transmission in the powertrain assembly (if a powertrain is attached). | |
double | GetMass () const |
Get the vehicle total mass. More... | |
const ChFrame & | GetCOMFrame () const |
Get the current vehicle COM frame (relative to and expressed in the vehicle reference frame). More... | |
const ChMatrix33 & | GetInertia () const |
Get the current vehicle inertia (relative to the vehicle COM frame). | |
const ChFrameMoving & | GetRefFrame () const |
Get the current vehicle reference frame. More... | |
const ChFrame & | GetTransform () const |
Get the current vehicle transform relative to the global frame. More... | |
const ChVector3d & | GetPos () const |
Get the vehicle global location. More... | |
ChQuaternion | GetRot () const |
Get the vehicle orientation. More... | |
double | GetRoll () const |
Get vehicle roll angle. More... | |
double | GetPitch () const |
Get vehicle pitch angle. More... | |
double | GetRoll (const ChTerrain &terrain) const |
Get vehicle roll angle (relative to local terrain). More... | |
double | GetPitch (const ChTerrain &terrain) const |
Get vehicle pitch angle (relative to local terrain). More... | |
double | GetSpeed () const |
Get the vehicle speed (velocity component in the vehicle forward direction). More... | |
double | GetSlipAngle () const |
Get the vehicle slip angle. More... | |
double | GetRollRate () const |
Get the vehicle roll rate. More... | |
double | GetPitchRate () const |
Get the vehicle pitch rate. More... | |
double | GetYawRate () const |
Get the vehicle yaw rate. More... | |
double | GetTurnRate () const |
Get the vehicle turn rate. More... | |
ChVector3d | GetPointLocation (const ChVector3d &locpos) const |
Get the global position of the specified point. More... | |
ChVector3d | GetPointVelocity (const ChVector3d &locpos) const |
Get the global velocity of the specified point. More... | |
ChVector3d | GetPointAcceleration (const ChVector3d &locpos) const |
Get the acceleration at the specified point. More... | |
ChVector3d | GetDriverPos () const |
Get the global location of the driver. | |
void | EnableRealtime (bool val) |
Enable/disable soft real-time (default: false). More... | |
double | GetRTF () const |
Get current estimated RTF (real time factor). More... | |
double | GetStepRTF () const |
Get current estimated step RTF (real time factor). More... | |
void | SetCollisionSystemType (ChCollisionSystem::Type 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 | SetOutput (ChVehicleOutput::Type type, std::ostream &out_stream, double output_step) |
Enable output for this vehicle system using an existing output stream. More... | |
void | InitializePowertrain (std::shared_ptr< ChPowertrainAssembly > powertrain) |
Initialize the given powertrain assembly and associate it to this vehicle. 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 | |
ChTrackedVehicle (const std::string &name, ChContactMethod contact_method=ChContactMethod::NSC) | |
Construct a vehicle system with a default ChSystem. More... | |
ChTrackedVehicle (const std::string &name, ChSystem *system) | |
Construct a vehicle system using the specified ChSystem. More... | |
virtual void | UpdateInertiaProperties () override final |
Calculate current vehicle inertia properties. More... | |
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... | |
void | SetSystem (ChSystem *sys) |
Set the associated Chrono system. | |
Protected Attributes | |
std::shared_ptr< ChTrackAssembly > | m_tracks [2] |
track assemblies (left/right) | |
std::shared_ptr< ChDrivelineTV > | m_driveline |
driveline subsystem | |
std::shared_ptr< ChTrackCollisionManager > | m_collision_manager |
manager for internal collisions | |
std::shared_ptr< ChTrackContactManager > | m_contact_manager |
manager for internal contacts | |
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 | |
double | m_mass |
total vehicle mass | |
ChFrame | m_com |
current vehicle COM (relative to the vehicle reference frame) | |
ChMatrix33 | m_inertia |
current total vehicle inertia (Relative to the vehicle COM frame) | |
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) | |
std::shared_ptr< ChPowertrainAssembly > | m_powertrain_assembly |
associated powertrain system | |
Friends | |
class | ChTrackedVehicleVisualSystemIrrlicht |
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
◆ ChTrackedVehicle() [1/2]
|
protected |
Construct a vehicle system with a default ChSystem.
- Parameters
-
[in] name vehicle name [in] contact_method contact method
◆ ChTrackedVehicle() [2/2]
|
protected |
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.
Reimplemented from chrono::vehicle::ChVehicle.
◆ DisconnectDriveline()
void chrono::vehicle::ChTrackedVehicle::DisconnectDriveline | ( | ) |
Disconnect driveline.
This function has no effect if called before vehicle initialization.
◆ EnableCollision()
void chrono::vehicle::ChTrackedVehicle::EnableCollision | ( | int | flags | ) |
Set collision flags for the various subsystems.
By default, collision is enabled for chassis, sprocket, idler, road wheels, and track shoes. To override these default settings, this function must be called called after the call to Initialize(). The 'flags' argument can be any of the TrackedCollisionFlag enums, or a combination thereof (using bit-wise operators).
◆ EnableCustomContact()
void chrono::vehicle::ChTrackedVehicle::EnableCustomContact | ( | std::shared_ptr< ChTrackCustomContact > | callback | ) |
Enable user-defined contact forces between track shoes and idlers and/or road-wheels and/or ground.
By default, contact forces are generated by the underlying Chrono contact processing. If enabled, no contact forces are applied automatically for specified collision types. Instead, these collisions are cached and passed to the user-supplied callback which must compute the contact force for each individual collision.
◆ 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.
◆ GetSprocketResistiveTorque()
|
inline |
Return estimated resistive torque on the specified sprocket.
This torque is available only if monitoring of contacts for that sprocket is enabled.
◆ GetTrackShoeState()
|
inline |
Get the complete state for the specified track shoe.
This includes the location, orientation, linear and angular velocities, all expressed in the global reference frame.
◆ GetTrackShoeStates()
|
inline |
Get the complete states for all track shoes of the specified track assembly.
It is assumed that the vector of body states was properly sized.
◆ 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 tracked vehicle subsystems (the two track assemblies and the driveline).
- Parameters
-
[in] chassisPos initial global position and orientation [in] chassisFwdVel initial chassis forward velocity
Reimplemented from chrono::vehicle::ChVehicle.
Reimplemented in chrono::vehicle::marder::Marder_Vehicle, chrono::vehicle::m113::M113_Vehicle, and chrono::vehicle::TrackedVehicle.
◆ InitializeInertiaProperties()
|
finaloverridevirtual |
Calculate total vehicle mass.
This function is called at the end of the vehicle initialization, but can also be called explicitly.
Implements chrono::vehicle::ChVehicle.
◆ MonitorContacts()
|
inline |
Set contacts to be monitored.
Contact information will be tracked for the specified subsystems.
◆ SetChassisVehicleCollide()
|
overridevirtual |
Enable/disable collision between the chassis and all other vehicle subsystems.
This only controls collisions between the chassis and the track shoes. All other internal collisions involving the chassis are always ignored.
Reimplemented from chrono::vehicle::ChVehicle.
◆ SetContactCollection()
|
inline |
Turn on/off contact data collection.
If enabled, contact information will be collected for all monitored subsystems.
◆ SetTrackAssemblyOutput()
void chrono::vehicle::ChTrackedVehicle::SetTrackAssemblyOutput | ( | VehicleSide | side, |
bool | state | ||
) |
Enable/disable output for the track assemblies.
See also ChVehicle::SetOuput.
◆ Synchronize() [1/2]
void chrono::vehicle::ChTrackedVehicle::Synchronize | ( | double | time, |
const DriverInputs & | driver_inputs | ||
) |
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).
- Parameters
-
[in] time current time [in] driver_inputs current driver inputs
◆ Synchronize() [2/2]
void chrono::vehicle::ChTrackedVehicle::Synchronize | ( | double | time, |
const DriverInputs & | driver_inputs, | ||
const TerrainForces & | shoe_forces_left, | ||
const TerrainForces & | shoe_forces_right | ||
) |
Update the state of this vehicle at the current time.
This version can be used in a co-simulation framework and it provides the terrain forces on the track shoes (assumed to be expressed in the global reference frame).
- Parameters
-
[in] time current time [in] driver_inputs current driver inputs [in] shoe_forces_left vector of track shoe forces (left side) [in] shoe_forces_right vector of track shoe forces (left side)
◆ UpdateInertiaProperties()
|
finaloverrideprotectedvirtual |
Calculate current vehicle inertia properties.
This function is called at the end of each vehicle state advance.
Implements chrono::vehicle::ChVehicle.
◆ WriteContacts()
|
inline |
Write contact information to file.
If data collection was enabled and at least one subsystem is monitored, contact information is written (in CSV format) to the specified file.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono_vehicle/tracked_vehicle/ChTrackedVehicle.h
- /builds/uwsbel/chrono/src/chrono_vehicle/tracked_vehicle/ChTrackedVehicle.cpp