Skip to content

Commit

Permalink
Forward port 6 to main
Browse files Browse the repository at this point in the history
Signed-off-by: Nate Koenig <nate@openrobotics.org>
  • Loading branch information
Nate Koenig committed Feb 11, 2023
2 parents d2f636d + a9861f8 commit 2d5808f
Show file tree
Hide file tree
Showing 154 changed files with 7,186 additions and 1,438 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ gz_find_package(DART
# Find bullet for the bullet plugin wrapper
gz_find_package(GzBullet
VERSION 2.87
REQUIRED_BY bullet
REQUIRED_BY bullet bullet-featherstone
PKGCONFIG bullet
PKGCONFIG_VER_COMPARISON >=)

Expand All @@ -101,7 +101,7 @@ set(GZ_PHYSICS_ENGINE_INSTALL_DIR
# Configure the build
#============================================================================
gz_configure_build(QUIT_IF_BUILD_ERRORS
COMPONENTS sdf heightmap mesh dartsim tpe bullet)
COMPONENTS sdf heightmap mesh dartsim tpe bullet bullet-featherstone)


#============================================================================
Expand Down
204 changes: 203 additions & 1 deletion Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,172 @@

### Gazebo Physics 6.x.x (202X-XX-XX)

### Gazebo Physics 6.3.0 (2023-02-02)

1. Fix windows warnings related to bullet #473
* [Pull request #473](https://github.com/gazebosim/gz-physics/pull/473)

1. ign -> gz : Remove redundant namespace references
* [Pull request #400](https://github.com/gazebosim/gz-physics/pull/400)

1. Resolve joints in nested models
* [Pull request #464](https://github.com/gazebosim/gz-physics/pull/464)

1. Apply gravity external to dartsim for added mass
* [Pull request #462](https://github.com/gazebosim/gz-physics/pull/462)

1. Refactor the VectorApprox to a single location
* [Pull request #470](https://github.com/gazebosim/gz-physics/pull/470)

1. Port: 5 to 6
* [Pull request #467](https://github.com/gazebosim/gz-physics/pull/467)

1. Simplify "falling" test to not require LinkFrameSemantics
* [Pull request #461](https://github.com/gazebosim/gz-physics/pull/461)

1. Install the common test executables to libexec
* [Pull request #458](https://github.com/gazebosim/gz-physics/pull/458)

1. [bullet]: Fix how changed link poses are computed
* [Pull request #460](https://github.com/gazebosim/gz-physics/pull/460)

### Gazebo Physics 6.2.0 (2022-11-28)

1. Reduce error to debug and add notes
* [Pull request #452](https://github.com/gazebosim/gz-physics/pull/452)

1. Support fluid added mass
* [Pull request #384](https://github.com/gazebosim/gz-physics/pull/384)

1. Deduplicate common tests part1
* [Pull request #448](https://github.com/gazebosim/gz-physics/pull/448)

### Gazebo Physics 6.1.1 (2022-11-07)

1. Suppress MSVC warning that is not applicable
* [Pull request #446](https://github.com/gazebosim/gz-physics/pull/446)

1. Fix construction of nested models
* [Pull request #445](https://github.com/gazebosim/gz-physics/pull/445)

### Gazebo Physics 6.1.0 (2022-10-27)

1. Removed GetCollision API it's redundant
* [Pull request #444](https://github.com/gazebosim/gz-physics/pull/444)

1. Add bullet-featherstone plugin
* [Pull request #373](https://github.com/gazebosim/gz-physics/pull/373)

1. Fix bullet cmake, probably bad merge
* [Pull request #436](https://github.com/gazebosim/gz-physics/pull/436)

### Gazebo Physics 6.0.0 (2022-09-21)

1. Improved documentation and instructions
* [Pull request #421](https://github.com/gazebosim/gz-physics/pull/421)
* [Pull request #419](https://github.com/gazebosim/gz-physics/pull/419)
* [Pull request #422](https://github.com/gazebosim/gz-physics/pull/422)
* [Pull request #417](https://github.com/gazebosim/gz-physics/pull/417)
* [Pull request #416](https://github.com/gazebosim/gz-physics/pull/416)
* [Pull request #316](https://github.com/gazebosim/gz-physics/pull/316)
* [Pull request #312](https://github.com/gazebosim/gz-physics/pull/312)
* [Pull request #401](https://github.com/gazebosim/gz-physics/pull/401)

1. Added common tests
* [Pull request #414](https://github.com/gazebosim/gz-physics/pull/414)
* [Pull request #412](https://github.com/gazebosim/gz-physics/pull/412)
* [Pull request #411](https://github.com/gazebosim/gz-physics/pull/411)
* [Pull request #410](https://github.com/gazebosim/gz-physics/pull/410)
* [Pull request #409](https://github.com/gazebosim/gz-physics/pull/409)
* [Pull request #408](https://github.com/gazebosim/gz-physics/pull/408)
* [Pull request #407](https://github.com/gazebosim/gz-physics/pull/407)
* [Pull request #364](https://github.com/gazebosim/gz-physics/pull/364)
* [Pull request #362](https://github.com/gazebosim/gz-physics/pull/362)
* [Pull request #360](https://github.com/gazebosim/gz-physics/pull/360)
* [Pull request #363](https://github.com/gazebosim/gz-physics/pull/363)
* [Pull request #357](https://github.com/gazebosim/gz-physics/pull/357)

1. dartsim: fix handling inertia matrix pose rotation
* [Pull request #351](https://github.com/gazebosim/gz-physics/pull/351)

1. ABI tweaks to help bullet-featherstone
* [Pull request #395](https://github.com/gazebosim/gz-physics/pull/395)

1. Add code coverage ignore file
* [Pull request #388](https://github.com/gazebosim/gz-physics/pull/388)

1. Fix bullet classic entity management
* [Pull request #393](https://github.com/gazebosim/gz-physics/pull/393)

1. Ignition to Gazebo transition
* [Pull request #378](https://github.com/gazebosim/gz-physics/pull/378)
* [Pull request #368](https://github.com/gazebosim/gz-physics/pull/368)
* [Pull request #356](https://github.com/gazebosim/gz-physics/pull/356)
* [Pull request #355](https://github.com/gazebosim/gz-physics/pull/355)
* [Pull request #358](https://github.com/gazebosim/gz-physics/pull/358)
* [Pull request #353](https://github.com/gazebosim/gz-physics/pull/353)
* [Pull request #348](https://github.com/gazebosim/gz-physics/pull/348)
* [Pull request #346](https://github.com/gazebosim/gz-physics/pull/346)
* [Pull request #390](https://github.com/gazebosim/gz-physics/pull/390)
* [Pull request #381](https://github.com/gazebosim/gz-physics/pull/381)

1. Fixed warning SDFfeatures_TEST - dartsim
* [Pull request #370](https://github.com/gazebosim/gz-physics/pull/370)

1. Update GoogleTest to latest version
* [Pull request #369](https://github.com/gazebosim/gz-physics/pull/369)
* [Pull request #377](https://github.com/gazebosim/gz-physics/pull/377)

1. Use new Joint APIs for Parent/Child name
* [Pull request #361](https://github.com/gazebosim/gz-physics/pull/361)

1. Bullet: Added collision shape to Capsule and Ellipsoid
* [Pull request #350](https://github.com/gazebosim/gz-physics/pull/350)

1. examples: fix cmake find version variables
* [Pull request #340](https://github.com/gazebosim/gz-physics/pull/340)

1. Fix ExpectData compiler warnings
* [Pull request #335](https://github.com/gazebosim/gz-physics/pull/335)

1. Added DEM support to heightmaps
* [Pull request #315](https://github.com/gazebosim/gz-physics/pull/315)

1. Remove Bionic from future releases (Garden+)
* [Pull request #331](https://github.com/gazebosim/gz-physics/pull/331)


## Gazebo Physics 5.x

### Gazebo Physics 5.3.0 (2023-01-09)

1. Fix windows warnings related to bullet
* [Pull request #473](https://github.com/gazebosim/gz-physics/pull/473)

1. Apply ign-gz after forward merge from ign-physics2
* [Pull request #472](https://github.com/gazebosim/gz-physics/pull/472)

1. Port: 2 to 5
* [Pull request #471](https://github.com/gazebosim/gz-physics/pull/471)

1. Fix build errors and warnings for DART 6.13.0
* [Pull request #465](https://github.com/gazebosim/gz-physics/pull/465)

1. Backport windows fix
* [Pull request #437](https://github.com/gazebosim/gz-physics/pull/437)

1. dartsim: fix handling inertia matrix pose rotation
* [Pull request #351](https://github.com/gazebosim/gz-physics/pull/351)

1. Add code coverage ignore file
* [Pull request #388](https://github.com/gazebosim/gz-physics/pull/388)

1. Change IGN\_DESIGNATION to GZ\_DESIGNATION
* [Pull request #390](https://github.com/gazebosim/gz-physics/pull/390)

1. README: Ignition -> Gazebo
* [Pull request #386](https://github.com/gazebosim/gz-physics/pull/386)

### Gazebo Physics 5.2.0 (2022-06-29)

1. dartsim: support non-tree kinematics in AttachFixedJoint
Expand Down Expand Up @@ -349,7 +513,45 @@

## Gazebo Physics 2.x

### Gazebo Physics 2.x.x (20XX-XX-XX)
### Gazebo Physics 2.6.0 (2022-11-30)

1. Migrate Ignition headers
* [Pull request #402](https://github.com/gazebosim/gz-physics/pull/402)

### Gazebo Physics 2.5.1 (2022-08-16)

1. Remove redundant namespace references
* [Pull request #400](https://github.com/gazebosim/gz-physics/pull/400)

1. Add code coverage ignore file
* [Pull request #388](https://github.com/gazebosim/gz-physics/pull/388)

1. Change `IGN_DESIGNATION` to `GZ_DESIGNATION`
* [Pull request #390](https://github.com/gazebosim/gz-physics/pull/390)

1. Ignition -> Gazebo
* [Pull request #386](https://github.com/gazebosim/gz-physics/pull/386)

1. Make `CONFIG` a CMake pass-through option for DART
* [Pull request #339](https://github.com/gazebosim/gz-physics/pull/339)

1. Remove explicitly-defined copy constructor/operator for `Shape`
* [Pull request #328](https://github.com/gazebosim/gz-physics/pull/328)

1. Fix `ExpectData` compiler warnings
* [Pull request #335](https://github.com/gazebosim/gz-physics/pull/335)

1. Fix copying of `ExpectData` objects
* [Pull request #337](https://github.com/gazebosim/gz-physics/pull/337)

1. Fix Apache license version
* [Pull request #326](https://github.com/gazebosim/gz-physics/pull/326)

1. Tutorial fixes
* [Pull request #318](https://github.com/gazebosim/gz-physics/pull/318)

1. Add `project()` to examples
* [Pull request #322](https://github.com/gazebosim/gz-physics/pull/322)

### Gazebo Physics 2.5.0 (2021-11-09)

Expand Down
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
46 changes: 46 additions & 0 deletions bullet-featherstone/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# This component expresses custom features of the bullet plugin, which can
# expose native bullet data types.
gz_add_component(bullet-featherstone INTERFACE
DEPENDS_ON_COMPONENTS sdf mesh
GET_TARGET_NAME features)

link_directories(${BULLET_LIBRARY_DIRS})
target_link_libraries(${features} INTERFACE GzBullet::GzBullet)

gz_get_libsources_and_unittests(sources test_sources)

# TODO(MXG): Think about an gz_add_plugin(~) macro for ign-cmake
set(engine_name bullet-featherstone-plugin)
gz_add_component(${engine_name}
SOURCES ${sources}
DEPENDS_ON_COMPONENTS bullet-featherstone
GET_TARGET_NAME bullet_plugin)

target_link_libraries(${bullet_plugin}
PUBLIC
${features}
${PROJECT_LIBRARY_TARGET_NAME}-sdf
${PROJECT_LIBRARY_TARGET_NAME}-mesh
gz-common${GZ_COMMON_VER}::gz-common${GZ_COMMON_VER}
gz-math${GZ_MATH_VER}::eigen3)

# Note that plugins are currently being installed in 2 places: /lib and the engine-plugins dir
install(TARGETS ${bullet_plugin} DESTINATION ${GZ_PHYSICS_ENGINE_INSTALL_DIR})

# The library created by `gz_add_component` includes the ign-physics version
# (i.e. libgz-physics1-name-plugin.so), but for portability,
# we also install an unversioned symlink into the same versioned folder.
set(versioned ${CMAKE_SHARED_LIBRARY_PREFIX}${bullet_plugin}${CMAKE_SHARED_LIBRARY_SUFFIX})
set(unversioned ${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME_NO_VERSION_LOWER}-${engine_name}${CMAKE_SHARED_LIBRARY_SUFFIX})
if (WIN32)
# disable MSVC inherit via dominance warning
target_compile_options(${bullet_plugin} PUBLIC "/wd4250")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy
${GZ_PHYSICS_ENGINE_INSTALL_DIR}\/${versioned}
${GZ_PHYSICS_ENGINE_INSTALL_DIR}\/${unversioned})")
else()
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${versioned} ${unversioned})
INSTALL(FILES ${PROJECT_BINARY_DIR}/${unversioned} DESTINATION ${GZ_PHYSICS_ENGINE_INSTALL_DIR})
endif()
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${versioned} ${unversioned})
INSTALL(FILES ${PROJECT_BINARY_DIR}/${unversioned} DESTINATION ${GZ_PHYSICS_ENGINE_INSTALL_DIR})
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
Loading

0 comments on commit 2d5808f

Please sign in to comment.