Base class for all ODE collisions. More...
#include <ODECollision.hh>
Inherits Collision.
Public Types | |
enum | EntityType { BASE = 0x00000000, ENTITY = 0x00000001, MODEL = 0x00000002, LINK = 0x00000004, COLLISION = 0x00000008, ACTOR = 0x00000016, LIGHT = 0x00000010, VISUAL = 0x00000020, JOINT = 0x00000040, BALL_JOINT = 0x00000080, HINGE2_JOINT = 0x00000100, HINGE_JOINT = 0x00000200, SLIDER_JOINT = 0x00000400, SCREW_JOINT = 0x00000800, UNIVERSAL_JOINT = 0x00001000, GEARBOX_JOINT = 0x00002000, FIXED_JOINT = 0x00004000, SHAPE = 0x00010000, BOX_SHAPE = 0x00020000, CYLINDER_SHAPE = 0x00040000, HEIGHTMAP_SHAPE = 0x00080000, MAP_SHAPE = 0x00100000, MULTIRAY_SHAPE = 0x00200000, RAY_SHAPE = 0x00400000, PLANE_SHAPE = 0x00800000, SPHERE_SHAPE = 0x01000000, MESH_SHAPE = 0x02000000, POLYLINE_SHAPE = 0x04000000, SENSOR_COLLISION = 0x10000000 } |
Unique identifiers for all entity types. More... | |
Public Member Functions | |
ODECollision (LinkPtr _parent) | |
Constructor. More... | |
virtual | ~ODECollision () |
Destructor. More... | |
void | AddChild (BasePtr _child) |
Add a child to this entity. More... | |
void | AddType (EntityType _type) |
Add a type specifier. More... | |
void | FillMsg (msgs::Collision &_msg) |
Fill a collision message. More... | |
virtual void | Fini () |
Finalize the collision. More... | |
virtual math::Box | GetBoundingBox () const |
Get the bounding box for this collision. More... | |
BasePtr | GetByName (const std::string &_name) |
Get by name. More... | |
BasePtr | GetChild (unsigned int _i) const |
Get a child by index. More... | |
BasePtr | GetChild (const std::string &_name) |
Get a child by name. More... | |
CollisionPtr | GetChildCollision (const std::string &_name) |
Get a child collision entity, if one exists. More... | |
unsigned int | GetChildCount () const |
Get the number of children. More... | |
LinkPtr | GetChildLink (const std::string &_name) |
Get a child linke entity, if one exists. More... | |
math::Box | GetCollisionBoundingBox () const |
Returns collision bounding box. More... | |
int | GetCollisionClass () const |
Get the ODE collision class. More... | |
dGeomID | GetCollisionId () const |
Return the collision id. More... | |
const math::Pose & | GetDirtyPose () const |
Returns Entity::dirtyPose. More... | |
uint32_t | GetId () const |
Return the ID of this entity. More... | |
math::Pose | GetInitialRelativePose () const |
Get the initial relative pose. More... | |
float | GetLaserRetro () const |
Get the laser retro reflectiveness. More... | |
LinkPtr | GetLink () const |
Get the link this collision belongs to. More... | |
virtual unsigned int | GetMaxContacts () |
returns number of contacts allowed for this collision. More... | |
ModelPtr | GetModel () const |
Get the model this collision belongs to. More... | |
std::string | GetName () const |
Return the name of the entity. More... | |
void | GetNearestEntityBelow (double &_distBelow, std::string &_entityName) |
Get the distance to the nearest entity below (along the Z-axis) this entity. More... | |
ODESurfaceParamsPtr | GetODESurface () const |
Similar to Collision::GetSurface, but provides dynamically casted pointer to ODESurfaceParams. More... | |
BasePtr | GetParent () const |
Get the parent. More... | |
int | GetParentId () const |
Return the ID of the parent. More... | |
ModelPtr | GetParentModel () |
Get the parent model, if one exists. More... | |
virtual math::Vector3 | GetRelativeAngularAccel () const |
Get the angular acceleration of the collision. More... | |
virtual math::Vector3 | GetRelativeAngularVel () const |
Get the angular velocity of the collision. More... | |
virtual math::Vector3 | GetRelativeLinearAccel () const |
Get the linear acceleration of the collision. More... | |
virtual math::Vector3 | GetRelativeLinearVel () const |
Get the linear velocity of the collision. More... | |
math::Pose | GetRelativePose () const |
Get the pose of the entity relative to its parent. More... | |
bool | GetSaveable () const |
Get whether the object should be "saved", when the user selects to save the world to xml. More... | |
std::string | GetScopedName (bool _prependWorldName=false) const |
Return the name of this entity with the model scope model1::...::modelN::entityName. More... | |
virtual const sdf::ElementPtr | GetSDF () |
Get the SDF values for the object. More... | |
ShapePtr | GetShape () const |
Get the collision shape. More... | |
unsigned int | GetShapeType () const |
Get the shape type. More... | |
dSpaceID | GetSpaceId () const |
Get the collision's space ID. More... | |
CollisionState | GetState () |
Get the collision state. More... | |
SurfaceParamsPtr | GetSurface () const |
Get the surface parameters. More... | |
unsigned int | GetType () const |
Get the full type definition. More... | |
const WorldPtr & | GetWorld () const |
Get the World this object is in. More... | |
virtual math::Vector3 | GetWorldAngularAccel () const |
Get the angular acceleration of the collision in the world frame. More... | |
virtual math::Vector3 | GetWorldAngularVel () const |
Get the angular velocity of the collision in the world frame. More... | |
virtual math::Vector3 | GetWorldLinearAccel () const |
Get the linear acceleration of the collision in the world frame. More... | |
virtual math::Vector3 | GetWorldLinearVel () const |
Get the linear velocity of the collision in the world frame. More... | |
virtual const math::Pose & | GetWorldPose () const |
Get the absolute pose of the entity. More... | |
bool | HasType (const EntityType &_t) const |
Returns true if this object's type definition has the given type. More... | |
virtual void | Init () |
Initialize the collision. More... | |
bool | IsCanonicalLink () const |
A helper function that checks if this is a canonical body. More... | |
bool | IsPlaceable () const |
Return whether this collision is movable. More... | |
bool | IsSelected () const |
True if the entity is selected by the user. More... | |
bool | IsStatic () const |
Return whether this entity is static. More... | |
virtual void | Load (sdf::ElementPtr _sdf) |
Load the collision. More... | |
virtual void | OnPoseChange () |
This function is called when the entity's (or one of its parents) pose of the parent has changed. More... | |
bool | operator== (const Base &_ent) const |
Returns true if the entities are the same. More... | |
void | PlaceOnEntity (const std::string &_entityName) |
Move this entity to be ontop of another entity by name. More... | |
void | PlaceOnNearestEntityBelow () |
Move this entity to be ontop of the nearest entity below. More... | |
void | Print (const std::string &_prefix) |
Print this object to screen via gzmsg. More... | |
void | ProcessMsg (const msgs::Collision &_msg) |
Update parameters from a message. More... | |
virtual void | RemoveChild (unsigned int _id) |
Remove a child from this entity. More... | |
void | RemoveChild (const std::string &_name) |
Remove a child by name. More... | |
void | RemoveChild (physics::BasePtr _child) |
Remove a child by pointer. More... | |
void | RemoveChildren () |
Remove all children. More... | |
virtual void | Reset () |
Reset the entity. More... | |
virtual void | Reset (Base::EntityType _resetType) |
Calls recursive Reset on one of the Base::EntityType's. More... | |
void | SetAnimation (const common::PoseAnimationPtr &_anim, boost::function< void()> _onComplete) |
Set an animation for this entity. More... | |
void | SetAnimation (common::PoseAnimationPtr _anim) |
Set an animation for this entity. More... | |
void | SetCanonicalLink (bool _value) |
Set to true if this entity is a canonical link for a model. More... | |
virtual void | SetCategoryBits (unsigned int bits) |
Set the category bits, used during collision detection. More... | |
virtual void | SetCollideBits (unsigned int bits) |
Set the collide bits, used during collision detection. More... | |
void | SetCollision (dGeomID _collisionId, bool _placeable) |
Set the encapsulated collsion object. More... | |
void | SetCollision (bool _placeable) |
Set the encapsulated collsion object. More... | |
void | SetInitialRelativePose (const math::Pose &_pose) |
Set the initial pose. More... | |
void | SetLaserRetro (float _retro) |
Set the laser retro reflectiveness. More... | |
virtual void | SetMaxContacts (unsigned int _maxContacts) |
Number of contacts allowed for this collision. More... | |
virtual void | SetName (const std::string &_name) |
Set the name of the entity. More... | |
void | SetParent (BasePtr _parent) |
Set the parent. More... | |
void | SetRelativePose (const math::Pose &_pose, bool _notify=true, bool _publish=true) |
Set the pose of the entity relative to its parent. More... | |
void | SetSaveable (bool _v) |
Set whether the object should be "saved", when the user selects to save the world to xml. More... | |
void | SetScale (const math::Vector3 &_scale) |
Set the scale of the collision. More... | |
virtual bool | SetSelected (bool _show) |
Set whether this entity has been selected by the user through the gui. More... | |
void | SetShape (ShapePtr _shape) |
Set the shape for this collision. More... | |
void | SetSpaceId (dSpaceID _spaceid) |
Set the collision's space ID. More... | |
void | SetState (const CollisionState &_state) |
Set the current collision state. More... | |
void | SetStatic (const bool &_static) |
Set whether this entity is static: immovable. More... | |
void | SetWorld (const WorldPtr &_newWorld) |
Set the world this object belongs to. More... | |
void | SetWorldPose (const math::Pose &_pose, bool _notify=true, bool _publish=true) |
Set the world pose of the entity. More... | |
void | SetWorldPoseDirty () |
Indicate that the world pose should be recalculated. More... | |
void | SetWorldTwist (const math::Vector3 &_linear, const math::Vector3 &_angular, bool _updateChildren=true) |
Set angular and linear rates of an physics::Entity. More... | |
virtual void | StopAnimation () |
Stop the current animation, if any. More... | |
virtual void | Update () |
Update the object. More... | |
virtual void | UpdateParameters (sdf::ElementPtr _sdf) |
Update the parameters using new sdf values. More... | |
Protected Member Functions | |
void | ComputeScopedName () |
Compute the scoped name of this object based on its parents. More... | |
Protected Attributes | |
common::PoseAnimationPtr | animation |
Current pose animation. More... | |
event::ConnectionPtr | animationConnection |
Connection used to update an animation. More... | |
math::Pose | animationStartPose |
Start pose of an animation. More... | |
Base_V | children |
Children of this entity. More... | |
dGeomID | collisionId |
ID for the collision. More... | |
std::vector< event::ConnectionPtr > | connections |
All our event connections. More... | |
math::Pose | dirtyPose |
The pose set by a physics engine. More... | |
LinkPtr | link |
The link this collision belongs to. More... | |
transport::NodePtr | node |
Communication node. More... | |
BasePtr | parent |
Parent of this entity. More... | |
EntityPtr | parentEntity |
A helper that prevents numerous dynamic_casts. More... | |
bool | placeable |
Flag for placeable. More... | |
common::Time | prevAnimationTime |
Previous time an animation was updated. More... | |
transport::PublisherPtr | requestPub |
Request publisher. More... | |
ignition::math::Vector3d | scale |
Scale of the entity. More... | |
sdf::ElementPtr | sdf |
The SDF values for this object. More... | |
ShapePtr | shape |
Pointer to physics::Shape. More... | |
dSpaceID | spaceId |
Collision space for this. More... | |
SurfaceParamsPtr | surface |
The surface parameters. More... | |
transport::PublisherPtr | visPub |
Visual publisher. More... | |
msgs::Visual * | visualMsg |
Visual message container. More... | |
WorldPtr | world |
Pointer to the world. More... | |
math::Pose | worldPose |
World pose of the entity. More... | |
Base class for all ODE collisions.
|
inherited |
Unique identifiers for all entity types.
Enumerator | |
---|---|
BASE | Base type. |
ENTITY | Entity type. |
MODEL | Model type. |
LINK | Link type. |
COLLISION | Collision type. |
ACTOR | Actor type. |
LIGHT | Light type. |
VISUAL | Visual type. |
JOINT | Joint type. |
BALL_JOINT | BallJoint type. |
HINGE2_JOINT | Hing2Joint type. |
HINGE_JOINT | HingeJoint type. |
SLIDER_JOINT | SliderJoint type. |
SCREW_JOINT | ScrewJoint type. |
UNIVERSAL_JOINT | UniversalJoint type. |
GEARBOX_JOINT | GearboxJoint type. |
FIXED_JOINT | FixedJoint type. |
SHAPE | Shape type. |
BOX_SHAPE | BoxShape type. |
CYLINDER_SHAPE | CylinderShape type. |
HEIGHTMAP_SHAPE | HeightmapShape type. |
MAP_SHAPE | MapShape type. |
MULTIRAY_SHAPE | MultiRayShape type. |
RAY_SHAPE | RayShape type. |
PLANE_SHAPE | PlaneShape type. |
SPHERE_SHAPE | SphereShape type. |
MESH_SHAPE | MeshShape type. |
POLYLINE_SHAPE | PolylineShape type. |
SENSOR_COLLISION | Indicates a collision shape used for sensing. |
|
explicit |
Constructor.
[in] | _link | Parent Link |
|
virtual |
Destructor.
|
inherited |
|
inherited |
Add a type specifier.
[in] | _type | New type to append to this objects type definition. |
Referenced by Base::Update().
|
protectedinherited |
Compute the scoped name of this object based on its parents.
Referenced by Base::Update().
|
inherited |
Fill a collision message.
[out] | _msg | The message to fill with this collision's data. |
|
virtual |
Finalize the collision.
Reimplemented from Collision.
|
virtual |
|
inherited |
Get by name.
[in] | _name | Get a child (or self) object by name |
Referenced by Base::Update().
|
inherited |
Get a child by index.
[in] | _i | Index of the child to retreive. |
Referenced by Base::Update().
|
inherited |
Get a child by name.
[in] | _name | Name of the child. |
|
inherited |
Get a child collision entity, if one exists.
[in] | _name | Name of the child collision object. |
|
inherited |
|
inherited |
|
inherited |
Returns collision bounding box.
int GetCollisionClass | ( | ) | const |
Get the ODE collision class.
dGeomID GetCollisionId | ( | ) | const |
Return the collision id.
|
inherited |
Returns Entity::dirtyPose.
The dirty pose is the pose set by the physics engine before it's value is propagated to the rest of the simulator.
|
inherited |
|
inherited |
Get the initial relative pose.
|
inherited |
Get the laser retro reflectiveness.
|
virtualinherited |
returns number of contacts allowed for this collision.
This overrides global value (in PhysicsEngine) if specified.
Referenced by Collision::GetSurface().
|
inherited |
Get the model this collision belongs to.
|
inherited |
|
inherited |
Get the distance to the nearest entity below (along the Z-axis) this entity.
[out] | _distBelow | The distance to the nearest entity below. |
[out] | _entityName | The name of the nearest entity below. |
ODESurfaceParamsPtr GetODESurface | ( | ) | const |
Similar to Collision::GetSurface, but provides dynamically casted pointer to ODESurfaceParams.
|
inherited |
|
inherited |
|
inherited |
Get the parent model, if one exists.
|
virtualinherited |
Get the angular acceleration of the collision.
Reimplemented from Entity.
|
virtualinherited |
Get the angular velocity of the collision.
Reimplemented from Entity.
|
virtualinherited |
Get the linear acceleration of the collision.
Reimplemented from Entity.
|
virtualinherited |
Get the linear velocity of the collision.
Reimplemented from Entity.
|
inherited |
Get the pose of the entity relative to its parent.
|
inherited |
Get whether the object should be "saved", when the user selects to save the world to xml.
Referenced by Base::Update().
|
inherited |
Return the name of this entity with the model scope model1::...::modelN::entityName.
[in] | _prependWorldName | True to prended the returned string with the world name. The result will be world::model1::...::modelN::entityName. |
Referenced by Base::Update().
|
virtualinherited |
Get the SDF values for the object.
Reimplemented in Actor, and Model.
Referenced by Base::Update().
|
inherited |
Get the collision shape.
|
inherited |
dSpaceID GetSpaceId | ( | ) | const |
Get the collision's space ID.
|
inherited |
Get the collision state.
|
inlineinherited |
Get the surface parameters.
References Collision::GetMaxContacts(), Collision::GetWorldPose(), Collision::SetMaxContacts(), Collision::SetWorldPoseDirty(), and Collision::surface.
|
inherited |
|
inherited |
Get the World this object is in.
Referenced by Base::Update().
|
virtualinherited |
Get the angular acceleration of the collision in the world frame.
Reimplemented from Entity.
|
virtualinherited |
Get the angular velocity of the collision in the world frame.
Reimplemented from Entity.
|
virtualinherited |
Get the linear acceleration of the collision in the world frame.
Reimplemented from Entity.
|
virtualinherited |
Get the linear velocity of the collision in the world frame.
Reimplemented from Entity.
|
virtualinherited |
Get the absolute pose of the entity.
Reimplemented from Entity.
Referenced by Collision::GetSurface().
|
inherited |
Returns true if this object's type definition has the given type.
[in] | _t | Type to check. |
Referenced by Base::Update().
|
virtualinherited |
|
inlineinherited |
A helper function that checks if this is a canonical body.
|
inherited |
Return whether this collision is movable.
Example on an immovable object is a ray.
|
inherited |
True if the entity is selected by the user.
Referenced by Base::Update().
|
inherited |
Return whether this entity is static.
|
virtual |
|
virtual |
This function is called when the entity's (or one of its parents) pose of the parent has changed.
Implements Entity.
|
inherited |
Returns true if the entities are the same.
Checks only the name.
[in] | _ent | Base object to compare with. |
Referenced by Base::Update().
|
inherited |
|
inherited |
Move this entity to be ontop of the nearest entity below.
|
inherited |
Print this object to screen via gzmsg.
[in] | _prefix | Usually a set of spaces. |
Referenced by Base::Update().
|
inherited |
Update parameters from a message.
[in] | _msg | Message to update from. |
|
virtualinherited |
Remove a child from this entity.
[in] | _id | ID of the child to remove. |
Referenced by Base::Update().
|
inherited |
Remove a child by name.
[in] | _name | Name of the child. |
|
inherited |
Remove a child by pointer.
[in] | _child | Pointer to the child. |
|
inherited |
Remove all children.
Referenced by Base::Update().
|
virtualinherited |
|
virtualinherited |
Calls recursive Reset on one of the Base::EntityType's.
[in] | _resetType | The type of reset operation |
|
inherited |
Set an animation for this entity.
[in] | _anim | Pose animation. |
[in] | _onComplete | Callback for when the animation completes. |
|
inherited |
Set an animation for this entity.
[in] | _anim | Pose animation. |
|
inherited |
Set to true if this entity is a canonical link for a model.
[in] | _value | True if the link is canonical. |
|
virtual |
Set the category bits, used during collision detection.
[in] | _bits | The bits to set. |
Implements Collision.
|
virtual |
Set the collide bits, used during collision detection.
[in] | _bits | The bits to set. |
Implements Collision.
void SetCollision | ( | dGeomID | _collisionId, |
bool | _placeable | ||
) |
Set the encapsulated collsion object.
[in] | _collisionId | ODE id of the collision object. |
[in] | _placeable | True to make the object movable. |
Referenced by ODESphereShape::SetRadius(), ODECylinderShape::SetSize(), and ODEBoxShape::SetSize().
|
inherited |
Set the encapsulated collsion object.
[in] | _placeable | True to make the object movable. |
|
inherited |
Set the initial pose.
[in] | _pose | The initial pose. |
|
inherited |
Set the laser retro reflectiveness.
[in] | _retro | The laser retro value. |
|
virtualinherited |
Number of contacts allowed for this collision.
This overrides global value (in PhysicsEngine) if specified.
[in] | _maxContacts | max num contacts allowed for this collision. |
Referenced by Collision::GetSurface().
|
virtualinherited |
|
inherited |
|
inherited |
Set the pose of the entity relative to its parent.
[in] | _pose | The new pose. |
[in] | _notify | True = tell children of the pose change. |
[in] | _publish | True to publish the pose. |
|
inherited |
Set whether the object should be "saved", when the user selects to save the world to xml.
[in] | _v | Set to True if the object should be saved. |
Referenced by Base::Update().
|
inherited |
Set the scale of the collision.
[in] | _scale | Scale to set the collision to. |
|
virtualinherited |
Set whether this entity has been selected by the user through the gui.
[in] | _show | True to set this entity as selected. |
Reimplemented in Link.
Referenced by Base::Update().
|
inherited |
Set the shape for this collision.
[in] | _shape | The shape for this collision object. |
void SetSpaceId | ( | dSpaceID | _spaceid | ) |
Set the collision's space ID.
[in] | _spaceid | ID of an ODE collision space. |
|
inherited |
Set the current collision state.
[in] | The | collision state. |
|
inherited |
Set whether this entity is static: immovable.
[in] | _static | True = static. |
|
inherited |
Set the world this object belongs to.
This will also set the world for all children.
[in] | _newWorld | The new World this object is part of. |
Referenced by Base::Update().
|
inherited |
Set the world pose of the entity.
[in] | _pose | The new world pose. |
[in] | _notify | True = tell children of the pose change. |
[in] | _publish | True to publish the pose. |
|
inherited |
Indicate that the world pose should be recalculated.
The recalculation will be done when Collision::GetWorldPose is called.
Referenced by Collision::GetSurface().
|
inherited |
Set angular and linear rates of an physics::Entity.
[in] | _linear | Linear twist. |
[in] | _angular | Angular twist. |
[in] | _updateChildren | True to pass this update to child entities. |
|
virtualinherited |
Stop the current animation, if any.
Reimplemented in Model.
|
inlinevirtualinherited |
Update the object.
Reimplemented in MultiRayShape, Joint, Actor, RayShape, Model, DARTModel, MapShape, DARTRayShape, ODERayShape, DARTMeshShape, MeshShape, BulletRayShape, ODEMeshShape, ODEPolylineShape, and SimbodyRayShape.
References Base::AddChild(), Base::AddType(), Base::ComputeScopedName(), Base::GetByName(), Base::GetChild(), Base::GetChildCount(), Base::GetId(), Base::GetName(), Base::GetParent(), Base::GetParentId(), Base::GetSaveable(), Base::GetScopedName(), Base::GetSDF(), Base::GetType(), Base::GetWorld(), Base::HasType(), Base::IsSelected(), Base::operator==(), Base::Print(), Base::RemoveChild(), Base::RemoveChildren(), Base::SetName(), Base::SetParent(), Base::SetSaveable(), Base::SetSelected(), Base::SetWorld(), and Base::UpdateParameters().
|
virtualinherited |
Update the parameters using new sdf values.
[in] | _sdf | SDF values to update from. |
Reimplemented from Entity.
|
protectedinherited |
Current pose animation.
|
protectedinherited |
Connection used to update an animation.
|
protectedinherited |
Start pose of an animation.
|
protectedinherited |
Children of this entity.
|
protected |
ID for the collision.
|
protectedinherited |
All our event connections.
|
protectedinherited |
The pose set by a physics engine.
|
protectedinherited |
The link this collision belongs to.
|
protectedinherited |
Communication node.
|
protectedinherited |
Parent of this entity.
|
protectedinherited |
A helper that prevents numerous dynamic_casts.
|
protectedinherited |
Flag for placeable.
|
protectedinherited |
Previous time an animation was updated.
|
protectedinherited |
Request publisher.
|
protectedinherited |
Scale of the entity.
|
protectedinherited |
The SDF values for this object.
|
protectedinherited |
Pointer to physics::Shape.
|
protected |
Collision space for this.
|
protectedinherited |
The surface parameters.
Referenced by Collision::GetSurface().
|
protectedinherited |
Visual publisher.
|
protectedinherited |
Visual message container.
|
protectedinherited |
Pointer to the world.
|
mutableprotectedinherited |
World pose of the entity.