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>


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 ¶ms) |
| 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 ¶ms) |
| 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 ¶ms) |
| 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< ChTerrain > | GetTerrain () const |
| Get a handle to the underlying terrain subsystem. | |
| const ChVector3d & | GetPos () 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< ChLinkMotorLinearSpeed > | GetMotorCarrier () const |
| Get the linear motor used to actuate the carrier. | |
| std::shared_ptr< ChShaftsMotorSpeed > | GetMotorWheel () 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 | |
| ChSystem & | m_system |
| containing Chrono system | |
| Mode | m_mode |
| testing mode | |
| bool | m_output |
| if false, report default measurements (typically 0) | |
| std::shared_ptr< ChTerrain > | m_terrain |
| handle to underlying terrain subsystem | |
| std::shared_ptr< WheelAssembly > | m_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< ChBody > | m_ground_body |
| ground body | |
| std::shared_ptr< ChBodyAuxRef > | m_carrier_body |
| rig carrier body | |
| std::shared_ptr< ChBodyAuxRef > | m_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< ChFunction > | m_ls_fun |
| longitudinal speed function of time | |
| std::shared_ptr< ChFunction > | m_rs_fun |
| angular speed function of time | |
| std::shared_ptr< ChLinkMotorLinearSpeed > | m_drop_motor |
| actuator for controlled wheel drop | |
| std::shared_ptr< ChLinkMotorLinearSpeed > | m_lin_motor |
| carrier actuator | |
| std::shared_ptr< ChShaftsMotorSpeed > | m_rot_motor |
| wheel actuator | |
Member Enumeration Documentation
◆ Mode
|
strong |
Member Function Documentation
◆ 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_envelope suggested envelope based on particle radius collision_bins suggested number of bins for broad-phase collision detection
◆ GetTimeDelay()
|
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()
|
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()
|
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()
|
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
-
size terrain patch size radius particle radius [m] density particle material density [kg/m3] friction inter-particle coefficient of friction cohesion inter-particle cohesion pressure [Pa] Young_modulus particle 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
-
size terrain patch size mu coefficient of friction cr coefficient of restitution Y contact 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
-
size terrain patch size Bekker_Kphi Kphi, frictional modulus in Bekker model Bekker_Kc Kc, cohesive modulus in Bekker model Bekker_n n, exponent of sinkage in Bekker model (usually 0.6...1.8) Mohr_cohesion cohesion [Pa], for shear failure Mohr_friction Friction angle [degrees], for shear failure Janosi_shear shear parameter J [m], (usually a few mm or cm) grid_spacing SCM grid spacing
◆ SetTimeDelay()
|
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