31#include "vehicle2/PxVehicleAPI.h"
33namespace snippetvehicle2
37using namespace physx::vehicle2;
70 if (!axleDescription.isValid())
76 if (!suspensionStateCalculationParams.isValid())
79 if (!brakeResponseParams[0].isValid(axleDescription))
81 if (!brakeResponseParams[1].isValid(axleDescription))
83 if (!steerResponseParams.isValid(axleDescription))
85 if (!ackermannParams[0].isValid(axleDescription))
88 for (PxU32 i = 0; i < axleDescription.
nbWheels; i++)
92 if (!suspensionParams[wheelId].isValid())
94 if (!suspensionComplianceParams[wheelId].isValid())
96 if (!suspensionForceParams[wheelId].isValid())
99 if (!tireForceParams[wheelId].isValid())
102 if (!wheelParams[wheelId].isValid())
106 if (!rigidBodyParams.isValid())
116 PxReal brakeCommandResponseStates[PxVehicleLimits::eMAX_NB_WHEELS];
117 PxReal steerCommandResponseStates[PxVehicleLimits::eMAX_NB_WHEELS];
146 for (
unsigned int i = 0; i < PxVehicleLimits::eMAX_NB_WHEELS; i++)
148 brakeCommandResponseStates[i] = 0.0;
149 steerCommandResponseStates[i] = 0.0f;
151 actuationStates[i].setToDefault();
153 roadGeomStates[i].setToDefault();
155 suspensionStates[i].setToDefault();
156 suspensionComplianceStates[i].setToDefault();
157 suspensionForces[i].setToDefault();
159 tireGripStates[i].setToDefault();
160 tireDirectionStates[i].setToDefault();
161 tireSpeedStates[i].setToDefault();
162 tireSlipStates[i].setToDefault();
163 tireCamberAngleStates[i].setToDefault();
164 tireStickyStates[i].setToDefault();
165 tireForces[i].setToDefault();
167 wheelRigidBody1dStates[i].setToDefault();
168 wheelLocalPoses[i].setToDefault();
171 rigidBodyState.setToDefault();
195 virtual void destroy() {}
199 virtual void initComponentSequence(
bool addPhysXBeginEndComponents) = 0;
212 axleDescription = &mBaseParams.axleDescription;
213 rigidBodyParams = &mBaseParams.rigidBodyParams;
214 suspensionForces.
setData(mBaseState.suspensionForces);
215 tireForces.
setData(mBaseState.tireForces);
216 antiRollTorque = NULL;
217 rigidBodyState = &mBaseState.rigidBodyState;
237 axleDescription = &mBaseParams.axleDescription;
238 rigidBodyParams = &mBaseParams.rigidBodyParams;
239 suspensionStateCalculationParams = &mBaseParams.suspensionStateCalculationParams;
240 steerResponseStates.
setData(mBaseState.steerCommandResponseStates);
241 rigidBodyState = &mBaseState.rigidBodyState;
242 wheelParams.
setData(mBaseParams.wheelParams);
243 suspensionParams.
setData(mBaseParams.suspensionParams);
244 suspensionComplianceParams.
setData(mBaseParams.suspensionComplianceParams);
245 suspensionForceParams.
setData(mBaseParams.suspensionForceParams);
247 wheelRoadGeomStates.
setData(mBaseState.roadGeomStates);
248 suspensionStates.
setData(mBaseState.suspensionStates);
249 suspensionComplianceStates.
setData(mBaseState.suspensionComplianceStates);
250 suspensionForces.
setData(mBaseState.suspensionForces);
251 antiRollTorque = NULL;
254 virtual void getDataForTireComponent(
275 axleDescription = &mBaseParams.axleDescription;
276 steerResponseStates.
setData(mBaseState.steerCommandResponseStates);
277 rigidBodyState = &mBaseState.rigidBodyState;
278 actuationStates.
setData(mBaseState.actuationStates);
279 wheelParams.
setData(mBaseParams.wheelParams);
280 suspensionParams.
setData(mBaseParams.suspensionParams);
281 tireForceParams.
setData(mBaseParams.tireForceParams);
282 roadGeomStates.
setData(mBaseState.roadGeomStates);
283 suspensionStates.
setData(mBaseState.suspensionStates);
284 suspensionComplianceStates.
setData(mBaseState.suspensionComplianceStates);
285 suspensionForces.
setData(mBaseState.suspensionForces);
286 wheelRigidBody1DStates.
setData(mBaseState.wheelRigidBody1dStates);
287 tireGripStates.
setData(mBaseState.tireGripStates);
288 tireDirectionStates.
setData(mBaseState.tireDirectionStates);
289 tireSpeedStates.
setData(mBaseState.tireSpeedStates);
290 tireSlipStates.
setData(mBaseState.tireSlipStates);
291 tireCamberAngleStates.
setData(mBaseState.tireCamberAngleStates);
292 tireStickyStates.
setData(mBaseState.tireStickyStates);
293 tireForces.
setData(mBaseState.tireForces);
296 virtual void getDataForWheelComponent(
308 axleDescription = &mBaseParams.axleDescription;
309 steerResponseStates.
setData(mBaseState.steerCommandResponseStates);
310 wheelParams.
setData(mBaseParams.wheelParams);
311 suspensionParams.
setData(mBaseParams.suspensionParams);
312 actuationStates.
setData(mBaseState.actuationStates);
313 suspensionStates.
setData(mBaseState.suspensionStates);
314 suspensionComplianceStates.
setData(mBaseState.suspensionComplianceStates);
315 tireSpeedStates.
setData(mBaseState.tireSpeedStates);
316 wheelRigidBody1dStates.
setData(mBaseState.wheelRigidBody1dStates);
317 wheelLocalPoses.
setData(mBaseState.wheelLocalPoses);
322 BaseVehicleParams mBaseParams;
323 BaseVehicleState mBaseState;
333 PxU8 mComponentSequenceSubstepGroupHandle;
Forward integrate the momentum and pose of the vehicle's rigid body after applying forces and torques...
Definition PxVehicleRigidBodyComponents.h:53
Definition PxVehicleSuspensionComponents.h:59
Definition PxVehicleTireComponents.h:57
Definition PxVehicleWheelComponents.h:54
virtual void getDataForRigidBodyComponent(const PxVehicleAxleDescription *&axleDescription, const PxVehicleRigidBodyParams *&rigidBodyParams, PxVehicleArrayData< const PxVehicleSuspensionForce > &suspensionForces, PxVehicleArrayData< const PxVehicleTireForce > &tireForces, const PxVehicleAntiRollTorque *&antiRollTorque, PxVehicleRigidBodyState *&rigidBodyState)
Retrieve pointers to the parameter and state data required to update the dynamic state of a rigid bod...
Definition Base.h:204
virtual void getDataForSuspensionComponent(const PxVehicleAxleDescription *&axleDescription, const PxVehicleRigidBodyParams *&rigidBodyParams, const PxVehicleSuspensionStateCalculationParams *&suspensionStateCalculationParams, PxVehicleArrayData< const PxReal > &steerResponseStates, const PxVehicleRigidBodyState *&rigidBodyState, PxVehicleArrayData< const PxVehicleWheelParams > &wheelParams, PxVehicleArrayData< const PxVehicleSuspensionParams > &suspensionParams, PxVehicleArrayData< const PxVehicleSuspensionComplianceParams > &suspensionComplianceParams, PxVehicleArrayData< const PxVehicleSuspensionForceParams > &suspensionForceParams, PxVehicleSizedArrayData< const PxVehicleAntiRollForceParams > &antiRollForceParams, PxVehicleArrayData< const PxVehicleRoadGeometryState > &wheelRoadGeomStates, PxVehicleArrayData< PxVehicleSuspensionState > &suspensionStates, PxVehicleArrayData< PxVehicleSuspensionComplianceState > &suspensionComplianceStates, PxVehicleArrayData< PxVehicleSuspensionForce > &suspensionForces, PxVehicleAntiRollTorque *&antiRollTorque)
Retrieve pointers to the parameter and state data required to compute the suspension state and the fo...
Definition Base.h:220
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
A description of a single axle that is to be affected by Ackermann steer correction.
Definition PxVehicleSteeringParams.h:86
The anti-roll torque of all anti-roll bars accumulates in a single torque to apply to the vehicle's r...
Definition PxVehicleSuspensionStates.h:168
Helper struct to pass array type data to vehice components and functions.
Definition PxVehicleParams.h:249
PX_FORCE_INLINE void setData(T *data)
Set the data as an array of structs.
Definition PxVehicleParams.h:261
Definition PxVehicleParams.h:53
PxU32 wheelIdsInAxleOrder[PxVehicleLimits::eMAX_NB_WHEELS]
The list of all wheel ids on the vehicle.
Definition PxVehicleParams.h:149
PxU32 nbWheels
The number of wheels on the vehicle.
Definition PxVehicleParams.h:150
Distribute a brake response to the wheels of a vehicle.
Definition PxVehicleBrakingParams.h:56
Definition PxVehicleComponentSequence.h:57
Definition PxVehicleParams.h:174
The properties of the rigid body.
Definition PxVehicleRigidBodyParams.h:50
Definition PxVehicleRigidBodyStates.h:47
Definition PxVehicleRoadGeometryState.h:46
Definition PxVehicleParams.h:224
Definition PxVehicleParams.h:672
Definition PxVehicleParams.h:369
PX_FORCE_INLINE void setEmpty()
Set as empty.
Definition PxVehicleParams.h:397
Distribute a steer response to the wheels of a vehicle.
Definition PxVehicleSteeringParams.h:58
Compliance describes how toe and camber angle and force application points are affected by suspension...
Definition PxVehicleSuspensionParams.h:155
The effect of suspension compliance on toe and camber angle and on the tire and suspension force appl...
Definition PxVehicleSuspensionStates.h:97
Suspension force is computed by converting suspenson state to suspension force under the assumption o...
Definition PxVehicleSuspensionParams.h:236
The force and torque for a single suspension to apply to the vehicle's rigid body.
Definition PxVehicleSuspensionStates.h:132
Definition PxVehicleSuspensionParams.h:51
Definition PxVehicleSuspensionParams.h:113
Definition PxVehicleSuspensionStates.h:53
Camber angle of the tire relative to the ground plane.
Definition PxVehicleTireStates.h:118
PxVehicleTireDirectionState stores the world frame lateral and longtidinal axes of the tire after pro...
Definition PxVehicleTireStates.h:52
Definition PxVehicleTireParams.h:49
The longitudinal/lateral forces/torques that develop on the tire.
Definition PxVehicleTireStates.h:148
The load and friction experienced by a tire.
Definition PxVehicleTireStates.h:95
The lateral and longitudinal tire slips.
Definition PxVehicleTireStates.h:82
PxVehicleTireSpeedState stores the components of the instantaneous velocity of the rigid body at the ...
Definition PxVehicleTireStates.h:68
Prolonged low speeds in the lateral and longitudinal directions may be handled with "sticky" velocity...
Definition PxVehicleTireStates.h:134
It is useful to know if a brake or drive torque is to be applied to a wheel.
Definition PxVehicleWheelStates.h:50
Definition PxVehicleWheelStates.h:94
Definition PxVehicleWheelParams.h:47
Definition PxVehicleWheelStates.h:61