Gazebo物理引擎介绍
文章目录
0. Gazebo
官网: http://gazebosim.org/
注意到左上角这么一句话
Dynamics Simulation
Access multiple high-performance physics engines including ODE, Bullet, Simbody, and DART.
1. ODE
官网http://opende.sourceforge.net/
OpenDE SourceForge project
OpenDE WIKI
OpenDE auto generated API documentation
OpenDE User forum
Original ode.org website
2. Bullet
官网http://opende.sourceforge.net/
3. Simbody
Simbody is useful for internal coordinate and coarse grained molecule modeling, large scale mechanical models like skeletons, and anything else that can be modeled as bodies interconnected by joints, acted upon by forces, and restricted by constraints.
This project is a SimTK toolset providing general multibody dynamics capability, that is, the ability to solve Newton’s 2nd law F=ma in any set of generalized coordinates subject to arbitrary constraints. (That’s Isaac himself in the oval.) Simbody is provided as an open source, object-oriented C++ API and delivers high-performance, accuracy-controlled science/engineering-quality results.
Simbody uses an advanced Featherstone-style formulation of rigid body mechanics to provide results in Order(n) time for any set of n generalized coordinates. This can be used for internal coordinate modeling of molecules, or for coarse-grained models based on larger chunks. It is also useful for large-scale mechanical models, such as neuromuscular models of human gait, robotics, avatars, and animation. Simbody can also be used in real time interactive applications for biosimulation as well as for virtual worlds and games.
This toolset was developed originally by Michael Sherman at the Simbios Center at Stanford, with major contributions from Peter Eastman and others. Simbody descends directly from the public domain NIH Internal Variable Dynamics Module (IVM) facility for molecular dynamics developed and kindly provided by Charles Schwieters. IVM is in turn based on the spatial operator algebra of Rodriguez and Jain from NASA’s Jet Propulsion Laboratory (JPL), and Simbody has adopted that formulation.
SOURCE CODE: Simbody is distributed in source form. The source code is maintained at GitHub. You can get a zip of the latest stable release here, then build it on your Windows, Mac OSX, or Linux machine (you will need CMake and a compiler).
You can also clone the git repository and build the latest development version here; the repository URL is https://github.com/simbody/simbody.git. If you would like to contribute bug fixes, new code, documentation, examples, etc. to Simbody (and we hope you will!), please fork the repository on GitHub and send pull requests.
If you are new to git, you may want to start with GitHub’s Bootcamp tutorial.
4. DART
4.1. Introduction
DART (Dynamic Animation and Robotics Toolkit) is a collaborative, cross-platform, open source library created by the Graphics Lab and Humanoid Robotics Lab at Georgia Institute of Technology with ongoing contributions from the Personal Robotics Lab at University of Washington and Open Source Robotics Foundation. The library provides data structures and algorithms for kinematic and dynamic applications in robotics and computer animation. DART is distinguished by its accuracy and stability due to its use of generalized coordinates to represent articulated rigid body systems and Featherstone’s Articulated Body Algorithm to compute the dynamics of motion. For developers, in contrast to many popular physics engines which view the simulator as a black box, DART gives full access to internal kinematic and dynamic quantities, such as the mass matrix, Coriolis and centrifugal forces, transformation matrices and their derivatives. DART also provides an efficient computation of Jacobian matrices for arbitrary body points and coordinate frames. The frame semantics of DART allows users to define arbitrary reference frames (both inertial and non-inertial) and use those frames to specify or request data. For air-tight code safety, forward kinematics and dynamics values are updated automatically through lazy evaluation, making DART suitable for real-time controllers. In addition, DART provides flexibility to extend the API for embedding user-provided classes into DART data structures. Contacts and collisions are handled using an implicit time-stepping, velocity-based LCP (linear complementarity problem) to guarantee non-penetration, directional friction, and approximated Coulomb friction cone conditions. DART has applications in robotics and computer animation because it features a multibody dynamic simulator and various kinematic tools for control and motion planning.
4.2. Features
4.2.1. General
- Open source under BSD license written in C++.
- Support multiple platforms: Ubuntu, Archlinux, FreeBSD, macOS, and Windows.
- Fully integrated with Gazebo.
- Support models described in URDF and SDF formats.
- Provide default integration methods, semi-implicit Euler and RK4, as well as extensible
- API for other numerical integration methods.
- Support lazy evaluation and automatic update of kinematic and dynamic quantities.
- Provide extensible API for embedding user-provided classes into DART data structures.
- Support comprehensive recording of events in simulation history.
- Provide 3D visualization API using OpenGL and OpenSceneGraph with ImGui support.
- Provide extensible API to interface with various optimization problems such as nonlinear programming and multi-objective optimization.
4.2.2. Collision Detection
- Support multiple collision detectors: FCL, Bullet, and ODE.
- Support various collision shapes including primitive shapes, concave mesh, and probablistic voxel grid.
- Support minimum distance computation.
4.2.3. Kinematics
- Support numerous types of Joint.
- Support numerous primitive and arbitrary body shapes with customizable inertial and material properties.
- Support flexible skeleton modeling: cloning and reconfiguring skeletons or subsections of a skeleton.
- Provide comprehensive access to kinematic states (e.g. transformation, position, velocity, or acceleration) of arbitrary entity and coordinate frames
- Provide comprehensive access to various Jacobian matrices and their derivatives.
- Support flexible conversion of coordinate frames.
- A fully modular inverses kinematics framework.
- A plug-and-play hierarchical whole-body inverse kinematics solver.
- Provide analytic inverse kinematics interface with ikfast support.
4.2.4. Dynamics
- Achieve high performance for articulated dynamic systems using Lie Group representation and Featherstone hybrid algorithms.
- Enforce joints between body nodes exactly using generalized coordinates.
- Provide comprehensive API for dynamic quantities and their derivatives, such as mass matrix, Coriolis force, gravitational force, other external and internal forces.
- Support both rigid and soft body nodes.
- Model viscoelastic joint dynamics with joint friction and hard joint limits.
- Support various types of actuators.
- Handle contacts and collisions using an implicit LCP to guarantee non-penetration, directional friction, and approximated Coulomb friction cone conditions.
- Support ”Island” technique to subdivide constraint handling for efficient performance.
- Support various Cartesian constraints and provide extensible API for user-defined constraints.
- Provide multiple constraint solvers: Lemke method, Dantzig method, and PSG method.
- Support dynamic systems with closed-loop structures.