|
| TwoBodyTire (agx::RigidBody *tireBody, agx::Real outerRadius, agx::RigidBody *hubBody, agx::Real innerRadius, const agx::AffineMatrix4x4 &localTransform=agx::AffineMatrix4x4()) |
| Construct tire given rigid body (with wheel geometry/geometries) and radius.
|
|
| AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agxModel::TwoBodyTire) |
|
virtual agx::Real | getDampingCoefficient (DeformationMode mode) |
| Gets the damping coefficient for a deformation mode.
|
|
agx::Hinge * | getHinge () |
| Gets the hinge (with active Lock1D) connecting the tire to the hub.
|
|
agx::RigidBody * | getHubRigidBody () |
|
const agx::RigidBody * | getHubRigidBody () const |
|
agx::Vec2 | getImplicitFrictionMultiplier () const |
|
agx::Real | getInnerRadius () const |
|
virtual agx::Real | getLoadedRadius () const override |
| Gets the current loaded radius.
|
|
agx::Real | getOuterRadius () const |
|
const agx::Frame * | getReferenceFrame () const |
|
virtual agx::Real | getStiffness (DeformationMode mode) |
| Gets the stiffness for a deformation mode.
|
|
agx::RigidBody * | getTireRigidBody () |
|
const agx::RigidBody * | getTireRigidBody () const |
|
virtual bool | isValid () const |
|
virtual bool | setDampingCoefficient (const agx::Real dampingCoefficient, DeformationMode mode) |
| Sets the damping coefficient for a deformation mode.
|
|
void | setImplicitFrictionMultiplier (const agx::Vec2 &implicitFrictionMultiplier) |
| Set the implicit friction multiplier in order to get different behavior for different friction directions (forwards, sideways).
|
|
virtual bool | setStiffness (const agx::Real stiffness, DeformationMode mode) |
| Sets the stiffness for a deformation mode.
|
|
virtual agx::Real | getLoadedRadius () const |
| Gets the current loaded radius.
|
|
agx::Real | getRadius () const |
| Gets radius.
|
|
| Assembly () |
| Default constructor.
|
|
bool | add (agx::Constraint *constraint) |
| Add a constraint to the assembly.
|
|
bool | add (agx::ContactMaterial *contactMaterial) |
| Add a contact material to this assembly.
|
|
bool | add (agx::Emitter *emitter) |
| Add an emitter to this assembly.
|
|
bool | add (agx::Interaction *interaction) |
| Add an interaction to this assembly.
|
|
bool | add (agx::MergedBody *mergedBody) |
| Add a MergedBody to this assembly.
|
|
bool | add (agx::ObserverFrame *observerFrame) |
| Add an ObserverFrame to this assembly.
|
|
bool | add (agx::RigidBody *body) |
| Add a rigid body to the assembly.
|
|
bool | add (agxCollide::Geometry *geometry) |
| Add a geometry to the assembly.
|
|
bool | add (agxSDK::EventListener *listener) |
| Add a listener to the assembly.
|
|
bool | add (agxSDK::TerrainInstance *terrainInstance) |
| Add a TerrainInstance to this assembly.
|
|
bool | add (agxSDK::TerrainToolInstance *toolInstance) |
| Add a TerrainToolInstance to this assembly.
|
|
bool | add (agxStream::Serializable *object) |
| Add an object of type serialized.
|
|
bool | add (Assembly *assembly) |
| Add another assembly as child to this assembly.
|
|
virtual void | addNotification (agxSDK::Simulation *) |
| Called when this assembly is added to a simulation (given that it not already is in the simulation).
|
|
virtual void | addNotification (Assembly *) |
| Called when this assembly is added to another assembly.
|
|
| AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agxSDK::Assembly) |
|
size_t | collect (agx::ConstraintRefVector &result, bool recursive=true) |
|
size_t | collect (agx::EmitterRefVector &result, bool recursive=true) |
|
size_t | collect (agx::InteractionRefVector &result, bool recursive=true) |
|
size_t | collect (agx::MergedBodyRefVector &result, bool recursive=true) |
|
size_t | collect (agx::ObserverFrameRefVector &result, bool recursive=true) |
|
size_t | collect (agx::ParticleSystemRefVector &result, bool recursive=true) |
|
size_t | collect (agx::RigidBodyRefVector &result, bool recursive=true) |
|
size_t | collect (agxCollide::GeometryRefVector &result, bool recursive=true) |
|
size_t | collect (agxSDK::AssemblyRefVector &result, bool recursive=true) |
|
size_t | collect (agxSDK::EventListenerRefVector &result, bool recursive=true) |
|
size_t | collect (agxSDK::TerrainInstanceRefVector &result, bool recursive=true) |
|
size_t | collect (agxSDK::TerrainToolInstanceRefVector &result, bool recursive=true) |
|
bool | empty () const |
|
const AssemblyRefSetVector & | getAssemblies () const |
|
agxSDK::Assembly * | getAssembly (const agx::Name &name, bool recursive=true) |
| Find (linear search) and return named Assembly.
|
|
const agxSDK::Assembly * | getAssembly (const agx::Name &name, bool recursive=true) const |
| Find (linear search) and return named Assembly.
|
|
agxSDK::Assembly * | getAssembly (const agx::Uuid &uuid, bool recursive=true) |
| Find (linear search) and return an Assembly matching the given uuid.
|
|
const agxSDK::Assembly * | getAssembly (const agx::Uuid &uuid, bool recursive=true) const |
| Find (linear search) and return an Assembly matching the given uuid.
|
|
agx::Constraint * | getConstraint (const agx::Name &name, bool recursive=true) |
| Find (linear search) and return named Constraint.
|
|
template<typename T > |
T * | getConstraint (const agx::Name &name, bool recursive=true) |
| Find and return named Constraint of a template type, for example Hinge:
|
|
const agx::Constraint * | getConstraint (const agx::Name &name, bool recursive=true) const |
| Find (linear search) and return named Constraint.
|
|
template<typename T > |
const T * | getConstraint (const agx::Name &name, bool recursive=true) const |
| Find and return named Constraint of a template type, for example Hinge:
|
|
agx::Constraint * | getConstraint (const agx::Uuid &uuid, bool recursive=true) |
| Find and return a pointer to a Constraint with the given uuid.
|
|
const agx::Constraint * | getConstraint (const agx::Uuid &uuid, bool recursive=true) const |
| Find (linear search) and return a pointer to a Constraint with the given uuid.
|
|
agx::Constraint1DOF * | getConstraint1DOF (const agx::Name &name, bool recursive=true) |
|
agx::Constraint2DOF * | getConstraint2DOF (const agx::Name &name, bool recursive=true) |
|
const agx::ConstraintRefSetVector & | getConstraints () const |
|
const agx::EmitterRefSetVector & | getEmitters () const |
|
const EventListenerRefSetVector & | getEventListeners () const |
|
virtual agx::Frame * | getFrame () |
| Return a reference to the frame containing transformation and velocity information for this assembly.
|
|
virtual const agx::Frame * | getFrame () const |
|
const agxCollide::GeometryRefSetVector & | getGeometries () const |
|
agxCollide::Geometry * | getGeometry (const agx::Name &name, bool recursive=true) |
| Find (linear search) and return named collision Geometry.
|
|
const agxCollide::Geometry * | getGeometry (const agx::Name &name, bool recursive=true) const |
| Find (linear search) and return named collision Geometry.
|
|
agxCollide::Geometry * | getGeometry (const agx::Uuid &uuid, bool recursive=true) |
| Find (linear search) and return a Geometry matching the given uuid.
|
|
const agxCollide::Geometry * | getGeometry (const agx::Uuid &uuid, bool recursive=true) const |
| Find (linear search) and return a Geometry matching the given uuid.
|
|
const agx::InteractionRefSetVector & | getInteractions () const |
|
agx::Vec3 | getLocalPosition () const |
|
agx::Quat | getLocalRotation () const |
|
const agx::AffineMatrix4x4 & | getLocalTransform () const |
|
const agx::MergedBodyRefSetVector & | getMergedBodies () const |
|
agx::MergedBody * | getMergedBody (const agx::Uuid &uuid, bool recursive=true) |
| Find (linear search) and return an MergedBody matching the given uuid.
|
|
const agx::MergedBody * | getMergedBody (const agx::Uuid &uuid, bool recursive=true) const |
| Find (linear search) and return an MergedBody matching the given uuid.
|
|
agx::Name | getName () const |
|
agx::ObserverFrame * | getObserverFrame (const agx::Name &name, bool recursive=true) |
| Find (linear search) and return an ObserverFrame matching the given uuid.
|
|
const agx::ObserverFrame * | getObserverFrame (const agx::Name &name, bool recursive=true) const |
| Find (linear search) and return an ObserverFrame matching the given uuid.
|
|
agx::ObserverFrame * | getObserverFrame (const agx::Uuid &uuid, bool recursive=true) |
| Find (linear search) and return an ObserverFrame matching the given uuid.
|
|
const agx::ObserverFrame * | getObserverFrame (const agx::Uuid &uuid, bool recursive=true) const |
| Find (linear search) and return an ObserverFrame matching the given uuid.
|
|
const agx::ObserverFrameRefSetVector & | getObserverFrames () const |
|
Assembly * | getParent () |
|
const Assembly * | getParent () const |
|
agx::Frame * | getParentFrame () |
|
const agx::Frame * | getParentFrame () const |
|
const agx::ParticleSystemRefSetVector & | getParticleSystems () const |
|
const agx::RigidBodyRefSetVector & | getRigidBodies () const |
|
agx::RigidBody * | getRigidBody (const agx::Name &name, bool recursive=true) |
| Find (linear search) and return named RigidBody.
|
|
const agx::RigidBody * | getRigidBody (const agx::Name &name, bool recursive=true) const |
| Find (linear search) and return named RigidBody.
|
|
agx::RigidBody * | getRigidBody (const agx::Uuid &uuid, bool recursive=true) |
| Find (linear search) and return a pointer to a RigidBody with the given uuid.
|
|
const agx::RigidBody * | getRigidBody (const agx::Uuid &uuid, bool recursive=true) const |
| Find (linear search) and return a pointer to a RigidBody with the given uuid.
|
|
agxSDK::Simulation * | getSimulation () |
|
const agxSDK::Simulation * | getSimulation () const |
|
agxSDK::TerrainInstance * | getTerrainInstance (const agx::Uuid &uuid, bool recursive=true) |
| Find (linear search) and return an TerrainInstance matching the given uuid.
|
|
const agxSDK::TerrainInstance * | getTerrainInstance (const agx::Uuid &uuid, bool recursive=true) const |
| Find (linear search) and return an TerrainInstance matching the given uuid.
|
|
const agxSDK::TerrainInstanceRefSetVector & | getTerrainInstances () const |
|
agxSDK::TerrainToolInstance * | getTerrainToolInstance (const agx::Uuid &uuid, bool recursive=true) |
| Find (linear search) and return an TerrainToolInstance matching the given uuid.
|
|
const agxSDK::TerrainToolInstance * | getTerrainToolInstance (const agx::Uuid &uuid, bool recursive=true) const |
| Find (linear search) and return an TerrainToolInstance matching the given uuid.
|
|
const agxSDK::TerrainToolInstanceRefSetVector & | getTerrainToolInstances () const |
|
Type | getType () const |
|
bool | remove (agx::Constraint *constraint) |
| Remove a constraint from this assembly (does not recurse down in tree).
|
|
bool | remove (agx::ContactMaterial *contactMaterial) |
| Remove a contact material from this assembly.
|
|
bool | remove (agx::Emitter *emitter) |
| Remove an emitter from this assembly.
|
|
bool | remove (agx::Interaction *interaction) |
| Remove an interaction from this assembly.
|
|
bool | remove (agx::MergedBody *mergedBody) |
| Remove a MergedBody from this assembly.
|
|
bool | remove (agx::ObserverFrame *observerFrame, bool resetParentFrame=true) |
| Remove an ObserverFrame from this assembly.
|
|
bool | remove (agx::RigidBody *body, bool removeAssociatedGeometries=false, bool resetParentFrame=true) |
| Remove a rigid body from this assembly (does not recurse down in tree).
|
|
bool | remove (agxCollide::Geometry *geometry, bool resetParentFrame=true) |
| Remove a geometry from this assembly (does not recurse down in tree).
|
|
bool | remove (agxSDK::TerrainInstance *terrainInstance) |
| Remove a TerrainInstance from this assembly.
|
|
bool | remove (agxSDK::TerrainToolInstance *toolInstance) |
| Remove a TerrainToolInstance from this assembly.
|
|
bool | remove (Assembly *assembly, bool resetParentFrame=true) |
| Remove a child assembly from a parent.
|
|
bool | remove (EventListener *listener) |
| Remove an EventListener from the assembly.
|
|
virtual void | removeNotification (agxSDK::Simulation *) |
| Called when this assembly is removed from a simulation.
|
|
virtual void | removeNotification (Assembly *) |
| Called when this assembly is removed from another assembly.
|
|
bool | reset (bool resetParentFrame=true) |
| If this assembly is not added to a simulation it will clear all added bodies etc.
|
|
virtual void | setAngularVelocity (const agx::Vec3 &velocity) |
| Set the angular velocity (in world frame) recursively for all rigid bodies stored in assembly.
|
|
void | setLocalPosition (agx::Real x, agx::Real y, agx::Real z) |
| Set the position of the assembly relative to its frame's parent frame.
|
|
void | setLocalPosition (const agx::Vec3 &p) |
| Set the position of the assembly relative to its frame's parent frame.
|
|
void | setLocalRotation (const agx::EulerAngles &e) |
| Set the rotation of the assembly relative to its frame's parent frame.
|
|
void | setLocalRotation (const agx::Quat &q) |
| Set the rotation of the assembly relative to its frame's parent frame.
|
|
void | setLocalTransform (const agx::AffineMatrix4x4 &matrix) |
| Assign the local transformation matrix for this assembly, ignoring any eventual parent transformation.
|
|
void | setName (const agx::Name &name) |
| Set the name of this Assembly.
|
|
bool | setParentFrame (agx::Frame *frame) |
| Set the parent frame of this assembly's frame.
|
|
void | setPosition (agx::Real x, agx::Real y, agx::Real z) |
| Set the position of the frame in world coordinates.
|
|
void | setPosition (const agx::Vec3 &p) |
| Set the position of the frame in world coordinates.
|
|
void | setRotation (const agx::EulerAngles &e) |
| Set the rotation of the assembly relative to world frame.
|
|
void | setRotation (const agx::OrthoMatrix3x3 &m) |
| Set the rotation of the assembly relative to world frame.
|
|
void | setRotation (const agx::Quat &q) |
| Set the rotation of the assembly relative to world frame.
|
|
void | setTransform (const agx::AffineMatrix4x4 &matrix) |
| Set the transform of the assembly.
|
|
virtual void | setVelocity (const agx::Vec3 &velocity) |
| Set the linear velocity (in world frame) recursively for all rigid bodies stored in assembly.
|
|
bool | transfer (agxSDK::Assembly *target) |
| Transfer all the content from this assembly to the target , including name and transformation.
|
|
virtual void | traverse (AssemblyVisitor *visitor) |
| Traverse the assembly tree recursively using a visitor.
|
|
virtual void | traverse (const AssemblyVisitor *visitor) const |
|
| Referenced () |
| Default constructor.
|
|
| Referenced (const Referenced &) |
|
template<typename T > |
T * | as () |
| Subclass casting.
|
|
template<typename T > |
const T * | as () const |
|
template<typename T > |
T * | asSafe () |
| Safe subclass casting, return nullptr if template type does not match.
|
|
template<typename T > |
const T * | asSafe () const |
|
int | getReferenceCount () const |
|
template<typename T > |
bool | is () const |
| Subclass test.
|
|
Referenced & | operator= (const Referenced &) |
| Assignment operator. Will increment the number of references to the referenced object.
|
|
void | reference (void *ptr=nullptr) const |
| Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
|
|
void | unreference (void *ptr=nullptr) const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it.
|
|
void | unreference_nodelete () const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it.
|
|
virtual | ~Serializable () |
| Destructor for normal C++ use but hidden from SWIG bindings.
|
|
virtual const char * | getClassName () const |
|
bool | getEnableSerialization () const |
|
bool | getEnableUuidGeneration () |
|
agx::UInt32 | getIndex () const |
| This index is given at creation of this object.
|
|
virtual StorageAgent * | getStorageAgent () const =0 |
|
agx::Uuid | getUuid () const |
|
bool | isFinished () const |
|
void | setEnableSerialization (bool flag) |
| Set to false to disable serialization of this object.
|
|
void | setFinished () |
| Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
|
|
void | setUuid (const agx::Uuid &uuid) |
| Explicitly set a Uuid on a serializable object.
|
|
- Note
- : This is an experimental feature, not fully tested yet.
A simple tire model with two rigid bodies - the hub and the tire. To model any deformation/elastic behavior, the joint settings between hub and tire are being modified.
- Note
- The shapes in the Tire and the Hub rigidbody, should have no rotation related to its geometries as this will cause an undefined direction for the parameters below. The rotational axis of the hub should be aligned with the shapes used as the tire (typically a cylinder).
Notes on stiffness and damping:
There are four internal deformation modes for the tire which can be expressed via its constraint: Radial stiffness/damping affects translation orthogonal to tire rotation axis. Lateral stiffness/damping affects translation in axis of rotation. Bending stiffness/damping affects rotation orthogonal to axis of rotation. Torsional stiffness/damping affects rotation in axis of rotation.
The unit for translational stiffness is force/displacement (if using SI: N/m) The unit for rotational stiffness is torque/angular displacement (if using SI: Nm/rad) The unit for the translational damping coefficient is force * time/displacement (if using SI: Ns/m) The unit for the rotational damping coefficient is torque * time/angular displacement (if using SI: Nms/rad)
Implementation-details: 1.) stiffness and damping coefficient are set directly on the constraint when using the setStiffness and setDampingCoefficient methods. Since the agx-internal damping is based on stiffness (or rather, compliance) as well, setStiffness will have an effect on the result of getDampingCoefficient. (The constraint can also directly be worked with via getHinge
- if setting values there, getStiffness and getDampingCoefficient might not work as expected.) 2.) The tire will copy a GeometryContacts' ContactMaterial and modify the copy to apply special tire friction. This is done both for implicit and explicit ContactMaterials. Both are queried for via MaterialManager (internal materials will be ignored).
Definition at line 147 of file TwoBodyTire.h.