Description

Ground vehicle modeling and simulation.

This module introduces template-based modeling tools for creating wheeled and tracked vehicles.

For additional information, see:

Collaboration diagram for VEHICLE module:

Modules

 Driver system
 
 Powertrain system
 
 Terrain system
 
 Utility classes
 
 Run-time visualization
 
 Wheeled vehicles
 Wheeled vehicle subsystems.
 
 Tracked vehicles
 Tracked vehicle subsystems.
 
 Co-simulation
 Co-simulation support for vehicle-terrain interaction.
 

Namespaces

 chrono::vehicle
 Namespace with classes for the VEHICLE module.
 
 chrono::vehicle::WheeledCollisionFamily
 Enumerations for wheeled vehicle collision families.
 
 chrono::vehicle::TrackedCollisionFlag
 Enumerations for track collision flags.
 
 chrono::vehicle::TrackedCollisionFamily
 Enumerations for tracked vehicle collision families.
 

Classes

class  chrono::vehicle::ChassisConnectorArticulated
 Articulated chassis connector model constructed with data from file (JSON format). More...
 
class  chrono::vehicle::ChassisConnectorHitch
 Hitch chassis connector model constructed with data from file (JSON format). More...
 
class  chrono::vehicle::ChassisConnectorTorsion
 Torsion chassis connector model constructed with data from file (JSON format). More...
 
class  chrono::vehicle::ChChassisConnectorArticulated
 Template for an articulation chassis connector. More...
 
class  chrono::vehicle::ChChassisConnectorHitch
 Template for a hitch chassis connector. This is a passive connector, modeled with a spherical joint. More...
 
class  chrono::vehicle::ChChassisConnectorTorsion
 Template for a torsion chassis connector. More...
 
class  chrono::vehicle::ChRigidChassis
 Template for a rigid-body main chassis vehicle subsystem. More...
 
class  chrono::vehicle::ChRigidChassisRear
 Template for a rigid-body rear chassis vehicle subsystem. More...
 
class  chrono::vehicle::RigidChassis
 Vehicle rigid chassis model constructed with data from file (JSON format). More...
 
class  chrono::vehicle::RigidChassisRear
 Vehicle rigid rear chassis model constructed with data from file (JSON format). More...
 
class  chrono::vehicle::ChChassis
 Base class for the chassis vehicle subsystem. More...
 
class  chrono::vehicle::ChChassisRear
 Base class for a rear chassis vehicle subsystem. More...
 
class  chrono::vehicle::ChChassisConnector
 Base class for a chassis connector subsystem. More...
 
class  chrono::vehicle::ChDriveline
 Base class for a vehicle driveline subsystem. More...
 
class  chrono::vehicle::ChPart
 Base class for a vehicle subsystem. More...
 
struct  chrono::vehicle::BodyState
 Structure to communicate a full body state. More...
 
struct  chrono::vehicle::WheelState
 Structure to communicate a full wheel body state. More...
 
struct  chrono::vehicle::TerrainForce
 Structure to communicate a set of generalized terrain contact forces (tire or track shoe). More...
 
struct  chrono::vehicle::DriverInputs
 Driver (vehicle control) inputs. More...
 
class  chrono::vehicle::SpringForce
 Base class for linear and nonlinear translational spring forces. More...
 
class  chrono::vehicle::LinearSpringForce
 Utility class for specifying a linear translational spring force with pre-tension. More...
 
class  chrono::vehicle::NonlinearSpringForce
 Utility class for specifying a nonlinear translational spring force with pre-tension. More...
 
class  chrono::vehicle::LinearDamperForce
 Utility class for specifying a linear translational damper force. More...
 
class  chrono::vehicle::NonlinearDamperForce
 Utility class for specifying a nonlinear translational damper force. More...
 
class  chrono::vehicle::DegressiveDamperForce
 Utility class for specifying a degressive translational damper force. More...
 
class  chrono::vehicle::LinearSpringDamperForce
 Utility class for specifying a linear translational spring-damper force with pre-tension. More...
 
class  chrono::vehicle::NonlinearSpringDamperForce
 Utility class for specifying a nonlinear translational spring-damper force with pre-tension. More...
 
class  chrono::vehicle::MapSpringDamperForce
 Utility class for specifying a general nonlinear translational spring-damper force with pre-tension. More...
 
class  chrono::vehicle::LinearSpringTorque
 Utility class for specifying a linear rotational spring torque. More...
 
class  chrono::vehicle::NonlinearSpringTorque
 Utility class for specifying a nonlinear rotational spring torque. More...
 
class  chrono::vehicle::LinearDamperTorque
 Utility class for specifying a linear rotational damper torque. More...
 
class  chrono::vehicle::NonlinearDamperTorque
 Utility class for specifying a nonlinear rotational damper torque. More...
 
class  chrono::vehicle::LinearSpringDamperTorque
 Utility class for specifying a linear rotational spring-damper torque. More...
 
class  chrono::vehicle::NonlinearSpringDamperTorque
 Utility class for specifying a nonlinear rotational spring-damper torque. More...
 
class  chrono::vehicle::ChVehicle
 Base class for chrono vehicle systems. More...
 
class  chrono::vehicle::ChVehicleGeometry
 Utility class defining geometry (visualization and collision) and contact materials for a rigid vehicle body. More...
 
class  chrono::vehicle::ChTSDAGeometry
 Utility class defining visualization geometry for a vehicle TSDA. More...
 
struct  chrono::vehicle::ChVehicleBushingData
 Stiffness and damping data for a vehicle bushing specification. More...
 
class  chrono::vehicle::ChVehicleJoint
 Wrapper class for a joint in a vehicle system which can be either a kinematic joint or a bushing. More...
 
class  chrono::vehicle::ChVehicleOutput
 Base class for a vehicle output database. More...
 
class  chrono::vehicle::ChWorldFrame
 Definition of the world frame for Chrono::Vehicle simulations. More...
 
class  chrono::vehicle::ChVehicleOutputASCII
 ASCII text vehicle output database. More...
 
class  chrono::vehicle::ChVehicleOutputHDF5
 HDF5 vehicle output database. More...
 

Typedefs

typedef std::vector< std::shared_ptr< ChChassisRear > > chrono::vehicle::ChChassisRearList
 Vector of handles to rear chassis subsystems.
 
typedef std::vector< std::shared_ptr< ChChassisConnector > > chrono::vehicle::ChChassisConnectorList
 Vector of handles to rear chassis subsystems.
 
typedef std::vector< BodyStatechrono::vehicle::BodyStates
 Vector of body state structures.
 
typedef std::vector< WheelStatechrono::vehicle::WheelStates
 Vector of wheel state structures.
 
typedef std::vector< TerrainForcechrono::vehicle::TerrainForces
 Vector of terrain conatct force structures.
 

Enumerations

enum  chrono::vehicle::VehicleSide { chrono::vehicle::LEFT = 0, chrono::vehicle::RIGHT = 1 }
 Enum for the side (left/right) of a vehicle. More...
 
enum  chrono::vehicle::WheelLocation { chrono::vehicle::SINGLE = 0, chrono::vehicle::INNER = 1, chrono::vehicle::OUTER = 2 }
 Enum for wheel location on spindle. More...
 
enum  chrono::vehicle::VisualizationType { chrono::vehicle::VisualizationType::NONE, chrono::vehicle::VisualizationType::PRIMITIVES, chrono::vehicle::VisualizationType::MESH }
 Enum for visualization types. More...
 
enum  chrono::vehicle::TireModelType {
  chrono::vehicle::TireModelType::RIGID, chrono::vehicle::TireModelType::RIGID_MESH, chrono::vehicle::TireModelType::FIALA, chrono::vehicle::TireModelType::ANCF,
  chrono::vehicle::TireModelType::REISSNER, chrono::vehicle::TireModelType::FEA, chrono::vehicle::TireModelType::PAC89, chrono::vehicle::TireModelType::TMEASY,
  chrono::vehicle::TireModelType::PAC02, chrono::vehicle::TireModelType::TMSIMPLE
}
 Enum for available tire models. More...
 
enum  chrono::vehicle::EngineModelType { chrono::vehicle::EngineModelType::SHAFTS, chrono::vehicle::EngineModelType::SIMPLE_MAP, chrono::vehicle::EngineModelType::SIMPLE }
 Enum for available engine model templates. More...
 
enum  chrono::vehicle::TransmissionModelType { chrono::vehicle::TransmissionModelType::AUTOMATIC_SHAFTS, chrono::vehicle::TransmissionModelType::AUTOMATIC_SIMPLE_MAP, chrono::vehicle::TransmissionModelType::MANUAL_SHAFTS }
 Enum for available transmission model templates. More...
 
enum  chrono::vehicle::SuspensionTypeWV {
  chrono::vehicle::SuspensionTypeWV::DOUBLE_WISHBONE, chrono::vehicle::SuspensionTypeWV::DOUBLE_WISHBONE_REDUCED, chrono::vehicle::SuspensionTypeWV::HENDRICKSON_PRIMAXX, chrono::vehicle::SuspensionTypeWV::LEAF_SPRING_AXLE,
  chrono::vehicle::SuspensionTypeWV::SAE_LEAF_SPRING_AXLE, chrono::vehicle::SuspensionTypeWV::MACPHERSON_STRUT, chrono::vehicle::SuspensionTypeWV::MULTI_LINK, chrono::vehicle::SuspensionTypeWV::RIGID_PINNED,
  chrono::vehicle::SuspensionTypeWV::RIGID_SUSPENSION, chrono::vehicle::SuspensionTypeWV::SEMI_TRAILING_ARM, chrono::vehicle::SuspensionTypeWV::SOLID_AXLE, chrono::vehicle::SuspensionTypeWV::SOLID_THREE_LINK_AXLE,
  chrono::vehicle::SuspensionTypeWV::SOLID_BELLCRANK_THREE_LINK_AXLE, chrono::vehicle::SuspensionTypeWV::THREE_LINK_IRS, chrono::vehicle::SuspensionTypeWV::TOE_BAR_LEAF_SPRING_AXLE, chrono::vehicle::SuspensionTypeWV::SAE_TOE_BAR_LEAF_SPRING_AXLE,
  chrono::vehicle::SuspensionTypeWV::PUSHPIPE_AXLE, chrono::vehicle::SuspensionTypeWV::TOEBAR_PUSHPIPE_AXLE
}
 Enum for available wheeled-vehicle suspension model templates. More...
 
enum  chrono::vehicle::BrakeType { chrono::vehicle::BrakeType::SHAFTS, chrono::vehicle::BrakeType::SIMPLE }
 Enum for available brake model templates. More...
 
enum  chrono::vehicle::SteeringTypeWV { chrono::vehicle::SteeringTypeWV::PITMAN_ARM, chrono::vehicle::SteeringTypeWV::PITMAN_ARM_SHAFTS, chrono::vehicle::SteeringTypeWV::RACK_PINION }
 Enum for available wheeled-vehicle steering model templates. More...
 
enum  chrono::vehicle::DrivelineTypeWV {
  chrono::vehicle::DrivelineTypeWV::FWD, chrono::vehicle::DrivelineTypeWV::RWD, chrono::vehicle::DrivelineTypeWV::AWD, chrono::vehicle::DrivelineTypeWV::AWD6,
  chrono::vehicle::DrivelineTypeWV::AWD8, chrono::vehicle::DrivelineTypeWV::SIMPLE, chrono::vehicle::DrivelineTypeWV::SIMPLE_XWD
}
 Enum for wheeled-vehicle driveline types. More...
 
enum  chrono::vehicle::DrivelineTypeTV { chrono::vehicle::DrivelineTypeTV::BDS, chrono::vehicle::DrivelineTypeTV::SIMPLE }
 Enum for tracked-vehicle driveline types. More...
 
enum  chrono::vehicle::TrackShoeType { chrono::vehicle::TrackShoeType::SINGLE_PIN, chrono::vehicle::TrackShoeType::DOUBLE_PIN, chrono::vehicle::TrackShoeType::BAND_BUSHING, chrono::vehicle::TrackShoeType::BAND_ANCF }
 Enum for track shoe types. More...
 
enum  chrono::vehicle::DoublePinTrackShoeType { chrono::vehicle::DoublePinTrackShoeType::TWO_CONNECTORS, chrono::vehicle::DoublePinTrackShoeType::ONE_CONNECTOR }
 Topology of the double-pin track shoe. More...
 
enum  chrono::vehicle::GuidePinType { chrono::vehicle::GuidePinType::CENTRAL_PIN, chrono::vehicle::GuidePinType::LATERAL_PIN }
 Enum for guide pin (track shoe/roadwheel/idler). More...
 
enum  chrono::vehicle::OutputInformation { chrono::vehicle::OUT_SPRINGS = 1 << 0, chrono::vehicle::OUT_SHOCKS = 1 << 1, chrono::vehicle::OUT_CONSTRAINTS = 1 << 2, chrono::vehicle::OUT_TESTRIG = 1 << 3 }
 Flags for output (log/debug). More...
 
enum  chrono::vehicle::BodyID {
  CHASSIS_BODY = -99990, SPROCKET_BODY = -99991, IDLER_BODY = -99992, WHEEL_BODY = -99993,
  ROLER_BODY = -99994, SHOE_BODY = -99995
}
 Identifiers for specific component bodies.
 

Functions

void chrono::vehicle::SetDataPath (const std::string &path)
 Set the path to the Chrono::Vehicle data directory (ATTENTION: not thread safe).
 
const std::string & chrono::vehicle::GetDataPath ()
 Get the current path to the Chrono::Vehicle data directory (thread safe).
 
std::string chrono::vehicle::GetDataFile (const std::string &filename)
 Get the complete path to the specified filename (thread safe). More...
 

Enumeration Type Documentation

◆ BrakeType

Enum for available brake model templates.

Enumerator
SHAFTS 

brake model using a clutch between two shafts

SIMPLE 

brake model using a simple speed-dependent torque

◆ DoublePinTrackShoeType

Topology of the double-pin track shoe.

The "full" double-pin track shoe mechanism uses separate bodies for the left and right connector bodies. The "reduced" model uses a single connector body. The mass and inertia of the composite connector body in the reduced model are calculated based on the provided values for an individual connector body. Furthermore, the collision geometry is the same, meaning both models of a double-pin track shoe can interact with the same type of sprocket.

Enumerator
TWO_CONNECTORS 

two connector bodies

ONE_CONNECTOR 

one connector body

◆ DrivelineTypeTV

Enum for tracked-vehicle driveline types.

Enumerator
BDS 

braked differential steering

SIMPLE 

simple kinematic driveline

◆ DrivelineTypeWV

Enum for wheeled-vehicle driveline types.

Enumerator
FWD 

front-wheel drive

RWD 

rear-wheel drive

AWD 

all-wheel drive (4x4)

AWD6 

all-wheel drive (6x4 / 6x6 locked)

AWD8 

all-wheel drive (8x8)

SIMPLE 

simple kinematic driveline

SIMPLE_XWD 

simple kinematic driveline for more than 2 axles

◆ EngineModelType

Enum for available engine model templates.

Enumerator
SHAFTS 

engine model based on ChShaft elements

SIMPLE_MAP 

simple model based on engine maps

SIMPLE 

simple engine model (similar to a DC motor)

◆ GuidePinType

Enum for guide pin (track shoe/roadwheel/idler).

Enumerator
CENTRAL_PIN 

track shoes with central guiding pin and double wheels

LATERAL_PIN 

track shoes with lateral guiding pins and single wheels

◆ OutputInformation

Flags for output (log/debug).

These flags can be bit-wise ORed and used as a mask.

Enumerator
OUT_SPRINGS 

suspension spring information

OUT_SHOCKS 

suspension shock information

OUT_CONSTRAINTS 

constraint violation information

OUT_TESTRIG 

test-rig specific information

◆ SteeringTypeWV

Enum for available wheeled-vehicle steering model templates.

Enumerator
PITMAN_ARM 

Pitman arm (input to revolute joint)

PITMAN_ARM_SHAFTS 

Pitman arm with compliant column (input to steering wheel)

RACK_PINION 

rack-pinion (input to pinion)

◆ SuspensionTypeWV

Enum for available wheeled-vehicle suspension model templates.

Enumerator
DOUBLE_WISHBONE 

double wishbone

DOUBLE_WISHBONE_REDUCED 

simplified double wishbone (constraint-based)

HENDRICKSON_PRIMAXX 

Hendrickson PRIMAXX (walking beam)

LEAF_SPRING_AXLE 

leaf-spring solid axle

SAE_LEAF_SPRING_AXLE 

leaf-spring solid axle with kinematic leaf-spring model

MACPHERSON_STRUT 

MacPherson strut.

MULTI_LINK 

multi-link

RIGID_PINNED 

pinned rigid beam

RIGID_SUSPENSION 

rigid suspension

SEMI_TRAILING_ARM 

semi trailing arm

SOLID_AXLE 

solid axle

SOLID_THREE_LINK_AXLE 

rigid suspension + 3 guiding links

SOLID_BELLCRANK_THREE_LINK_AXLE 

rigid suspension + 3 guiding links + bellcrank steering mechanism

THREE_LINK_IRS 

three-link independent rear suspension

TOE_BAR_LEAF_SPRING_AXLE 

steerable leaf-spring solid axle

SAE_TOE_BAR_LEAF_SPRING_AXLE 

steerable leaf-spring solid axle with kinematic leaf-spring model

PUSHPIPE_AXLE 

solid axle with pushpipe and panhard rod

TOEBAR_PUSHPIPE_AXLE 

steerable solid axle with pushpipe and panhard rod

◆ TireModelType

Enum for available tire models.

Enumerator
RIGID 

rigid tire (cylindrical)

RIGID_MESH 

rigid tire (mesh)

FIALA 

Fiala tire.

ANCF 

ANCF shell element-based tire.

REISSNER 

Reissner 6-field shell element-based tire.

FEA 

FEA co-rotational tire.

PAC89 

Pacejka 89 (magic formula) tire, version 1989.

TMEASY 

Tire Model Made Easy tire (G. Rill)

PAC02 

Pacejka 02 (magic formula) tire, version 2002 or later.

TMSIMPLE 

Tire Model Simple (W. Hirschberg)

◆ TrackShoeType

Enum for track shoe types.

Enumerator
SINGLE_PIN 

single-pin track shoe and sprocket

DOUBLE_PIN 

double-pin track shoe and sprocket

BAND_BUSHING 

rigid tooth-rigid web continuous band track shoe and sprocket

BAND_ANCF 

rigid tooth-ANCF web continuous band track shoe and sprocket

◆ TransmissionModelType

Enum for available transmission model templates.

Enumerator
AUTOMATIC_SHAFTS 

automatic transmission model based of ChShaft elements

AUTOMATIC_SIMPLE_MAP 

automatic transmission model based on TC maps

MANUAL_SHAFTS 

manual transmission model based on ChShaft elements

◆ VehicleSide

Enum for the side (left/right) of a vehicle.

Enumerator
LEFT 

left side of vehicle is always 0

RIGHT 

right side of vehicle is always 1

◆ VisualizationType

Enum for visualization types.

Enumerator
NONE 

no visualization

PRIMITIVES 

use primitve shapes

MESH 

use meshes

◆ WheelLocation

Enum for wheel location on spindle.

Enumerator
SINGLE 

wheel on one side of a single-wheel axle

INNER 

inner wheel on one side of a double-wheel axle

OUTER 

outer wheel on one side of a double-wheel axle

Function Documentation

◆ GetDataFile()

CH_VEHICLE_API std::string chrono::vehicle::GetDataFile ( const std::string &  filename)

Get the complete path to the specified filename (thread safe).

The filename is assumed to be given relative to the Chrono::Vehicle model data directory.