Description

Base class definition of a single-wheel test rig.

  • Accepts an arbitrary wheel assembly (derived from ChWheelTestRig::WheelAssembly)
  • Works with Rigid, SCM, DEM granular, or CRM terrain
  • Allows variation of longitudinal speed, wheel angular speed, and wheel slip angle as functions of time
  • Provides support for automatic selection of longitudinal and angular speeds in order to enforce a specified longitudinal slip value
  • Allows specification of camber angle (kept constant through the simulation)

#include <ChWheelTestRig.h>

Inheritance diagram for chrono::vehicle::ChWheelTestRigBase:
Collaboration diagram for chrono::vehicle::ChWheelTestRigBase:

Classes

class  SuspensionAssembly
 Definition of a suspension assembly for rig testing. More...
 
struct  TerrainParamsGranular
 Granular terrain patch parameters. More...
 
struct  TerrainParamsRigid
 Rigid terrain patch parameters. More...
 
struct  TerrainParamsSCM
 SCM terrain patch parameters. More...
 
struct  TerrainPatchSize
 Terrain patch dimensions. More...
 
class  WheelAssembly
 Definition of a wheel assembly for rig testing. More...
 

Public Types

enum  Mode { Mode::SUSPEND, Mode::DROP, Mode::TEST }
 Tire test rig operation mode. More...
 
enum  TerrainType {
  SCM, RIGID, CRG, GRANULAR,
  CRM, NONE
}
 Terrain type.
 

Public Member Functions

void SetGravitationalAcceleration (double grav)
 Set gravitational acceleration (default: 9.81 m/s2).
 
void SetNormalLoad (double load)
 Set desired normal load (default: 1000 N).
 
void SetLongSpeedFunction (std::shared_ptr< ChFunction > funct)
 Specify rig carrier longitudinal speed as function of time (default: none). More...
 
void SetAngSpeedFunction (std::shared_ptr< ChFunction > funct)
 Specify wheel angular speed as function of time (default: none). More...
 
void SetConstantLongitudinalSlip (double long_slip, double base_speed=1)
 Specify a constant given longitudinal slip. More...
 
void SetStepsize (double step)
 Set the time step for advancing wheel assembly dynamics (default: 1e-3 s).
 
void SetVisualizationType (VisualizationType vis)
 Set visualization type for the wheel assembly (default: PRIMITIVES).
 
void SetTerrainRigid (const TerrainPatchSize &size, const TerrainParamsRigid &params)
 Enable use of rigid terrain.
 
void SetTerrainRigid (const TerrainPatchSize &size, float mu, float cr, float Y)
 Enable use of rigid terrain. More...
 
void SetTerrainSCM (const TerrainPatchSize &size, const TerrainParamsSCM &params)
 Enable use of SCM terrain.
 
void SetTerrainSCM (const TerrainPatchSize &size, double Bekker_Kphi, double Bekker_Kc, double Bekker_n, double Mohr_cohesion, double Mohr_friction, double Janosi_shear, double grid_spacing=0.125)
 Enable use of SCM terrain. More...
 
void SetTerrainGranular (const TerrainPatchSize &size, const TerrainParamsGranular &params)
 Enable use of granular terrain. More...
 
void SetTerrainGranular (const TerrainPatchSize &size, double radius, double density, double friction, double cohesion, double Young_modulus)
 Enable use of granular terrain. More...
 
void SetTimeDelay (double delay)
 Set time delay before applying motion functions (default: 0 s). More...
 
double GetTimeDelay () const
 Get time delay after which measurements are calculated. More...
 
bool OutputEnabled () const
 Check if kinematic and kinetic quantities are collected. More...
 
void Initialize (Mode mode, double drop_speed=0.1)
 Initialize the rig system. More...
 
void Advance (double step)
 Advance system state by the specified time step.
 
void GetSuggestedCollisionSettings (double &collision_envelope, ChVector3i &collision_bins) const
 Get suggested collision settings. More...
 
double GetNormalLoad () const
 Get the normal load.
 
double GetMass () const
 Get total rig mass.
 
std::shared_ptr< ChTerrainGetTerrain () const
 Get a handle to the underlying terrain subsystem.
 
const ChVector3dGetPos () const
 Get current carrier body position.
 
ChVector3d GetWheelPos () const
 Get current wheel position.
 
TerrainForce ReportWheelForce () const
 Get the current terrain forces acting on the wheel as applied to the wheel hub.
 
double GetDBP () const
 Return current drawbar-pull value. More...
 
double GetLongitudinalSlip () const
 Get current wheel longitudinal slip. More...
 
double GetSlipAngle () const
 Get current wheel slip angle. More...
 
double GetCamberAngle () const
 Get current wheel camber angle. More...
 
std::shared_ptr< ChLinkMotorLinearSpeedGetMotorCarrier () const
 Get the linear motor used to actuate the carrier.
 
std::shared_ptr< ChShaftsMotorSpeedGetMotorWheel () const
 Get the rotation motor used to actuate the wheel.
 

Protected Member Functions

 ChWheelTestRigBase (ChSystem &system, std::shared_ptr< WheelAssembly > wheel)
 Construct a test rig within the specified system using the given custom wheel.
 
virtual void CreateMechanism ()
 Create the single-wheel test rig mechanism.
 
void CreateTerrain ()
 Create the terrain patch of specified type.
 
void CreateTerrainSCM ()
 
void CreateTerrainRigid ()
 
void CreateTerrainGranular ()
 
virtual void OnCreateMechanism (double dim)=0
 Additional operations to be performed during rig construction. More...
 
virtual void OnInitialize (Mode mode)
 Additional operations to be performed on rig initialization.
 
virtual void OnAdvance (double step)
 Additional operations to be performed on rig advance.
 
virtual void OnStartActuation ()
 Additional operations to be performed when actuation is enabled. More...
 

Protected Attributes

ChSystemm_system
 containing Chrono system
 
Mode m_mode
 testing mode
 
bool m_output
 if false, report default measurements (typically 0)
 
std::shared_ptr< ChTerrainm_terrain
 handle to underlying terrain subsystem
 
std::shared_ptr< WheelAssemblym_wheel_assembly
 wheel assembly
 
VisualizationType m_vis_type
 visualization type for wheel assembly
 
double m_step_size
 step size for wheel assembly integration
 
double m_grav
 gravitational acceleration
 
double m_normal_load
 desired normal load
 
double m_total_mass
 total sprung mass
 
double m_time_delay
 time delay before applying external load
 
TerrainType m_terrain_type
 terrain type
 
double m_terrain_offset
 Y coordinate of wheel center.
 
double m_terrain_height
 height coordinate for terrain subsystem
 
TerrainPatchSize m_terrain_size
 terrain patch dimensions
 
TerrainParamsSCM m_params_SCM
 SCM soil parameters.
 
TerrainParamsRigid m_params_rigid
 rigid terrain contact material properties
 
TerrainParamsGranular m_params_granular
 granular terrain parameters
 
ChAABB m_wheel_AABB
 AABB for the entire wheel assembly (estimated or user-provided)
 
std::shared_ptr< ChBodym_ground_body
 ground body
 
std::shared_ptr< ChBodyAuxRefm_carrier_body
 rig carrier body
 
std::shared_ptr< ChBodyAuxRefm_chassis_body
 "chassis" body which carries normal load
 
bool m_ls_actuated
 is linear speed actuated?
 
bool m_rs_actuated
 is angular speed actuated?
 
bool m_long_slip_constant
 true if constant longitudinal slip was specified
 
double m_long_slip
 user-specified longitudinal slip
 
double m_base_speed
 base speed for long slip calculation
 
std::shared_ptr< ChFunctionm_ls_fun
 longitudinal speed function of time
 
std::shared_ptr< ChFunctionm_rs_fun
 angular speed function of time
 
std::shared_ptr< ChLinkMotorLinearSpeedm_drop_motor
 actuator for controlled wheel drop
 
std::shared_ptr< ChLinkMotorLinearSpeedm_lin_motor
 carrier actuator
 
std::shared_ptr< ChShaftsMotorSpeedm_rot_motor
 wheel actuator
 

Member Enumeration Documentation

◆ Mode

Tire test rig operation mode.

Enumerator
SUSPEND 

suspended wheel (locked spindle)

DROP 

wheel drop test

TEST 

normal wheel test

Member Function Documentation

◆ CreateTerrainGranular()

void chrono::vehicle::ChWheelTestRigBase::CreateTerrainGranular ( )
protected

< estimate for integration step size

◆ GetCamberAngle()

double chrono::vehicle::ChWheelTestRigBase::GetCamberAngle ( ) const

Get current wheel camber angle.

This value is calculated from the current hub normal direction.

◆ GetDBP()

double chrono::vehicle::ChWheelTestRigBase::GetDBP ( ) const

Return current drawbar-pull value.

This is the reaction force in the linear motor used to enforce the specified rig longitudinal speed.

◆ GetLongitudinalSlip()

double chrono::vehicle::ChWheelTestRigBase::GetLongitudinalSlip ( ) const

Get current wheel longitudinal slip.

This value is calculated from the horizontal speed of the hub body and its angular rotation speed.

◆ GetSlipAngle()

double chrono::vehicle::ChWheelTestRigBase::GetSlipAngle ( ) const

Get current wheel slip angle.

This value is calculated from the current hub normal direction.

◆ GetSuggestedCollisionSettings()

void chrono::vehicle::ChWheelTestRigBase::GetSuggestedCollisionSettings ( double &  collision_envelope,
ChVector3i collision_bins 
) const

Get suggested collision settings.

These values are meaningful only when using granular terrain and Chrono::Multicore.

Parameters
collision_envelopesuggested envelope based on particle radius
collision_binssuggested number of bins for broad-phase collision detection

◆ GetTimeDelay()

double chrono::vehicle::ChWheelTestRigBase::GetTimeDelay ( ) const
inline

Get time delay after which measurements are calculated.

After the drop phase (TEST mode only), this value is set to the input time delay increased by the wheel drop time. Before the drop phase is completed, this function returns the input time delay.

◆ Initialize()

void chrono::vehicle::ChWheelTestRigBase::Initialize ( Mode  mode,
double  drop_speed = 0.1 
)

Initialize the rig system.

It is the user's responsibility to set the operation mode and motion functions in a consistent way. In TEST mode, the wheel is lowered onto the terrain with a speed equal to drop_speed.

◆ OnCreateMechanism()

virtual void chrono::vehicle::ChWheelTestRigBase::OnCreateMechanism ( double  dim)
protectedpure virtual

Additional operations to be performed during rig construction.

A derived class must:

  • create any additional necessary bodies, links, and motors;
  • initialize the wheel assembly and connect it to the rig mechanism;
  • adjust mass properties of the rig bodies to be commensurate with those of the wheel assembly. 'dim' represents a characteristic length for the rig mechanism.

◆ OnStartActuation()

virtual void chrono::vehicle::ChWheelTestRigBase::OnStartActuation ( )
inlineprotectedvirtual

Additional operations to be performed when actuation is enabled.

This is called a single time and only in TEST mode at the end of the drop phase.

◆ OutputEnabled()

bool chrono::vehicle::ChWheelTestRigBase::OutputEnabled ( ) const
inline

Check if kinematic and kinetic quantities are collected.

This function returns true only in TEST mode once the motion functions are activated.

◆ SetAngSpeedFunction()

void chrono::vehicle::ChWheelTestRigBase::SetAngSpeedFunction ( std::shared_ptr< ChFunction funct)

Specify wheel angular speed as function of time (default: none).

If a function is not specified, the wheel is not actuated.

◆ SetConstantLongitudinalSlip()

void chrono::vehicle::ChWheelTestRigBase::SetConstantLongitudinalSlip ( double  long_slip,
double  base_speed = 1 
)

Specify a constant given longitudinal slip.

This version overrides the motion functions for the carrier longitudinal slip and for the wheel angular speed to enforce the specified longitudinal slip value. A positive slip value indicates that the wheel is spinning. A negative slip value indicates that the wheel is sliding (skidding); in particular, s=-1 indicates sliding without rotation.

◆ SetLongSpeedFunction()

void chrono::vehicle::ChWheelTestRigBase::SetLongSpeedFunction ( std::shared_ptr< ChFunction funct)

Specify rig carrier longitudinal speed as function of time (default: none).

If a function is not specified, the carrier is not actuated.

◆ SetTerrainGranular() [1/2]

void chrono::vehicle::ChWheelTestRigBase::SetTerrainGranular ( const TerrainPatchSize size,
const TerrainParamsGranular params 
)

Enable use of granular terrain.

The terrain subsystem consists of identical spherical particles initialized in layers. A moving-patch option is used.

◆ SetTerrainGranular() [2/2]

void chrono::vehicle::ChWheelTestRigBase::SetTerrainGranular ( const TerrainPatchSize size,
double  radius,
double  density,
double  friction,
double  cohesion,
double  Young_modulus 
)

Enable use of granular terrain.

Specify contact material properties. The terrain subsystem consists of identical spherical particles initialized in layers. A moving-patch option is used.

Parameters
sizeterrain patch size
radiusparticle radius [m]
densityparticle material density [kg/m3]
frictioninter-particle coefficient of friction
cohesioninter-particle cohesion pressure [Pa]
Young_modulusparticle contact material Young's modulus [Pa]

◆ SetTerrainRigid()

void chrono::vehicle::ChWheelTestRigBase::SetTerrainRigid ( const TerrainPatchSize size,
float  mu,
float  cr,
float  Y 
)

Enable use of rigid terrain.

Specify contact material properties and patch dimensions.

Parameters
sizeterrain patch size
mucoefficient of friction
crcoefficient of restitution
Ycontact material Young's modulus [Pa]

◆ SetTerrainSCM()

void chrono::vehicle::ChWheelTestRigBase::SetTerrainSCM ( const TerrainPatchSize size,
double  Bekker_Kphi,
double  Bekker_Kc,
double  Bekker_n,
double  Mohr_cohesion,
double  Mohr_friction,
double  Janosi_shear,
double  grid_spacing = 0.125 
)

Enable use of SCM terrain.

Specify SCM soil parameters and patch dimensions.

Parameters
sizeterrain patch size
Bekker_KphiKphi, frictional modulus in Bekker model
Bekker_KcKc, cohesive modulus in Bekker model
Bekker_nn, exponent of sinkage in Bekker model (usually 0.6...1.8)
Mohr_cohesioncohesion [Pa], for shear failure
Mohr_frictionFriction angle [degrees], for shear failure
Janosi_shearshear parameter J [m], (usually a few mm or cm)
grid_spacingSCM grid spacing

◆ SetTimeDelay()

void chrono::vehicle::ChWheelTestRigBase::SetTimeDelay ( double  delay)
inline

Set time delay before applying motion functions (default: 0 s).

In TEST mode, this delay is measured after the wheel bottom point reaches the terrain height.


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_vehicle/wheeled_vehicle/test_rig/ChWheelTestRig.h
  • /builds/uwsbel/chrono/src/chrono_vehicle/wheeled_vehicle/test_rig/ChWheelTestRig.cpp