raisim::DeformableTerrain
final class · #include <raisim/object/terrain/DeformableTerrain.hpp>
Inherits: raisim::HeightMap
A triangulated soil surface with no particles or soil inertia. The surface deforms along its local +Z axis. Bekker pressure-sinkage and elastic unloading describe a calibrated soil bed; this is a surface terramechanics model, not a volumetric FEM or an excavation model. Contacts are area quadrature samples coupled implicitly to rigid/articulated dynamics. The mesh spacing controls spatial accuracy; pressure and forces are independent of the number of contact rows. Create with World::addDeformableTerrain(). Rendering and ray queries use the deformed mesh.
Nested classes
structMaterialstructStatestructStepStats — Counters of the last step. contacts counts the quadrature rows near bodies, including rows that the body has not loaded. contactArea (m^2) and normalForce (N) cover the loaded rows.
Constructors & destructor
DeformableTerrain
DeformableTerrain(
size_t xSamples,
size_t ySamples,
double xSize,
double ySize,
double centerX,
double centerY,
const std::vector<double> &heights,
const Material &material)Public member functions
getSoilMaterial
const Material &getSoilMaterial() constgetUndeformedHeights
const std::vector<double> &getUndeformedHeights() constgetSoilState
const State &getSoilState() constgetSoilStepStats
const StepStats &getSoilStepStats() constsetSoilState
void setSoilState(const State &state)Restore a validated state and synchronize the collision/render mesh. Throws on bad input.
resetSoil
void resetSoil()setBodyType
void setBodyType(BodyType type) overrideSoil is a fixed bed. Its frame may be placed between steps, but cannot move dynamically.
pressure
double pressure(
double sinkage,
double plasticSinkage,
double contactWidth) constConstitutive pressure without viscosity (Pa). Width is the narrowest projected footprint width.
Inherited members
From raisim::HeightMap: destroyCollisionBodies, getCenterX, getCenterY, getColor, getColorMap, getContactHeight, getContactHeightVector, getHeight, getHeightMap, getHeightRowRevisions, getHeightVector, getNormal, getVisualDirtyRegion, getXSamples, getXSize, getYSamples, getYSize, hasVisualHeightUpdate, init, isUpdated, setColor, setColorPatch, setOrientation, setPosition, setUpdatedFalse, update, updateCollision, updateContactAabbs, updateVisualHeight, updateVisualHeightPatch
From raisim::SingleBodyObject: clearExternalForcesAndTorques, getAngularVelocity, getAppearance, getBodyToComPosition_rs, getCollisionBody, getCollisionGroup, getCollisionMask, getCom, getComPosition, getComPosition_rs, getContactPointVel, getDOF, getEnergy, getGeneralizedCoordinateDim, getGyroscopicMode, getInertiaMatrix_B, getInertiaMatrix_B_rs, getInertiaMatrix_W, getInertiaMatrix_W_rs, getKineticEnergy, getLinearMomentum, getLinearVelocity, getMass, getObjectType, getOrientation, getPosition, getPotentialEnergy, getQuaternion, getRotationMatrix, getVelocity, integrate, preContactSolverUpdate1, preContactSolverUpdate2, setAngularDamping, setAngularVelocity, setAppearance, setCom, setConstraintForce, setExternalForce, setExternalTorque, setGyroscopicMode, setInertia, setLinearDamping, setLinearVelocity, setMass, setOrientation, setPose, setPosition, setVelocity
From raisim::Object: addContactToPerObjectContact, clearPerObjectContact, getBodyType, getContactAabb, getContactAabbCount, getContacts, getExternalForce, getExternalForcePosition, getExternalTorque, getExternalTorquePosition, getId, getIndexInWorld, getName, getRenderRevision, Id, lock, lockMutex, setIndexInWorld, setName, try_lock, unlock, unlockMutex