Skip to content

Commit

Permalink
Add top-level bullet-featherstone README (#443)
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Carroll <[email protected]>
  • Loading branch information
mjcarroll authored Oct 25, 2022
1 parent cd40651 commit 1836a0b
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ Refer to the following table for information about important directories and fil
```
gz-physics
├── bullet Files for bullet plugin component.
├── bullet-featherstone Files for bullet-featherstone plugin component.
├── dartsim Files for dartsim plugin component.
├── example Examples about how to use the library
├── heightmap Heightmap related header files.
Expand Down
97 changes: 97 additions & 0 deletions bullet-featherstone/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Bullet Featherstone Physics Plugin

This component enables the use of this [Bullet Physics](https://github.com/bulletphysics/bullet3) `btMultiBody` Featherstone implementation.
The Featherstone uses minimal coordinates to represent articulated bodies and efficiently simulate them.

# Features

Originally tracked via: [Bullet featherstone meta-ticket](https://github.com/gazebosim/gz-physics/issues/423)

## High-level feature list

* Constructing SDF Models
* Constructing SDF Worlds
* Joint Types:
* Fixed
* Prismatic
* Revolute
* Ball Joint
* Stepping the simulation world
* Applying external forces/torques
* Free Groups
* Contact sensor

## Physics features list

These are the specific physics API features implemented.

* Entity Management Features
* ConstructEmptyWorldFeature
* GetEngineInfo
* GetJointFromModel
* GetLinkFromModel
* GetModelFromWorld
* GetShapeFromLink
* GetWorldFromEngine
* RemoveModelFromWorld
* FreeGroupFeatures
* FindFreeGroupFeature
* SetFreeGroupWorldPose
* SetFreeGroupWorldVelocity
* Kinematics Features
* LinkFrameSemantics
* ModelFrameSemantics
* FreeGroupFrameSemantics
* Joint Features
* GetBasicJointState
* SetBasicJointState
* GetBasicJointProperties
* SetJointVelocityCommandFeature
* SetJointTransformFromParentFeature
* AttachFixedJointFeature
* DetachJointFeature
* GetRevoluteJointProperties
* GetPrismaticJointProperties
* FixedJointCast
* Link Features
* AddLinkExternalForceTorque
* Sdf Features
* sdf::ConstructSDFModel
* sdf::ConstructSDFWorld
* sdf::ConstructSDFCollision
* Shapes Features
* GetShapeBoundingBox
* GetBoxShapeProperties
* AttachBoxShapeFeature
* GetCapsuleShapeProperties
* AttachCapsuleShapeFeature
* GetCylinderShapeProperties
* AttachCylinderShapeFeature
* GetEllipsoidShapeProperties
* AttachEllipsoidShapeFeature
* GetSphereShapeProperties
* AttachSphereShapeFeature
* Simulation Features
* ForwardStep
* GetContactsFromLastStepFeature
* World Features
* Gravity

# Caveats

* All links _must_ have a collision element.

In order for links to be active, bullet checks for the presence of collision elements.
In the case that collisions aren't available, adding a small sphere at the link origin is sufficient (but won't get good collision behavior)

* All links/joints of a model must be constructed with the model

Additional links/joints cannot be added to a model after initial construction.

* Ellipse axis-aligned bounding box returns invalid values on Ubuntu Focal

Tracked via: https://github.com/gazebosim/gz-physics/issues/440

* Joint transmitted wrench doesn't accurately report forces/torques

Tracked via: https://github.com/gazebosim/gz-physics/pull/434

0 comments on commit 1836a0b

Please sign in to comment.