Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into release-6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jslee02 committed May 11, 2016
2 parents 7641f05 + 4452ad0 commit 628f155
Show file tree
Hide file tree
Showing 82 changed files with 2,219 additions and 1,055 deletions.
105 changes: 102 additions & 3 deletions Changelog.md → CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,108 @@
## DART 6

### Version 6.0.0 (2015-12-19)
### DART 6.0.0 (2016-05-10)

* Common data structures

* Added `Node`, `Aspect`, `State`, and `Properties`: [#713](https://github.com/dartsim/dart/pull/713), [#712](https://github.com/dartsim/dart/issues/712), [#708](https://github.com/dartsim/dart/pull/708), [#707](https://github.com/dartsim/dart/pull/707), [#659](https://github.com/dartsim/dart/pull/659), [#649](https://github.com/dartsim/dart/pull/649), [#645](https://github.com/dartsim/dart/issues/645), [#607](https://github.com/dartsim/dart/pull/607), [#598](https://github.com/dartsim/dart/pull/598), [#591](https://github.com/dartsim/dart/pull/591), [#531](https://github.com/dartsim/dart/pull/531)
* Added mathematical constants and user-defined literals for radian, degree, and pi: [#669](https://github.com/dartsim/dart/pull/669), [#314](https://github.com/dartsim/dart/issues/314)
* Added `ShapeFrame` and `ShapeNode`: [#608](https://github.com/dartsim/dart/pull/608)
* Added `BoundingBox`: [#547](https://github.com/dartsim/dart/pull/547), [#546](https://github.com/dartsim/dart/issues/546)

* Kinematics features:

* Added convenient functions for setting joint limits: [#703](https://github.com/dartsim/dart/pull/703)
* Added more description on `InverseKinematics::solve()`: [#624](https://github.com/dartsim/dart/pull/624)
* Added API for utilizing analytical inverse kinematics: [#530](https://github.com/dartsim/dart/pull/530), [#463](https://github.com/dartsim/dart/issues/463)
* Added color property to `Marker`: [#187](https://github.com/dartsim/dart/issues/187)
* Improved `Skeleton` to clone `State` as well: [#691](https://github.com/dartsim/dart/pull/691)
* Improved `ReferentialSkeleton` to be able to add and remove `BodyNode`s and `DegreeOfFreedom`s to/from `Group`s freely: [#557](https://github.com/dartsim/dart/pull/557), [#556](https://github.com/dartsim/dart/issues/556), [#548](https://github.com/dartsim/dart/issues/548)
* Changed `Marker` into `Node`: [#692](https://github.com/dartsim/dart/pull/692), [#609](https://github.com/dartsim/dart/issues/609)
* Renamed `Joint::get/setLocal[~]` to `Joint::get/setRelative[~]`: [#715](https://github.com/dartsim/dart/pull/715), [#714](https://github.com/dartsim/dart/issues/714)
* Renamed `PositionLimited` to `PositionLimitEnforced`: [#447](https://github.com/dartsim/dart/issues/447)
* Fixed initialization of joint position and velocity: [#691](https://github.com/dartsim/dart/pull/691), [#621](https://github.com/dartsim/dart/pull/621)
* Fixed `InverseKinematics` when it's used with `FreeJoint` and `BallJoint`: [#683](https://github.com/dartsim/dart/pull/683)
* Fixed ambiguous overload on `MetaSkeleton::getLinearJacobianDeriv`: [#628](https://github.com/dartsim/dart/pull/628), [#626](https://github.com/dartsim/dart/issues/626)

* Dynamics features:

* Added `get/setLCPSolver` functions to `ConstraintSolver`: [#633](https://github.com/dartsim/dart/pull/633)
* Added `ServoMotorConstraint` as a preliminary implementation for `SERVO` actuator type: [#566](https://github.com/dartsim/dart/pull/566)
* Improved `ConstraintSolver` to obey C++11 ownership conventions: [#616](https://github.com/dartsim/dart/pull/616)
* Fixed segfualting of `DantzigLCPSolver` when the constraint dimension is zero: [#634](https://github.com/dartsim/dart/pull/634)
* Fixed missing implementations in ConstrainedGroup: [#586](https://github.com/dartsim/dart/pull/586)
* Fixed incorrect applying of joint constraint impulses: [#317](https://github.com/dartsim/dart/issues/317)
* Deprecated `draw()` functions of dynamics classes: [#654](https://github.com/dartsim/dart/pull/654)

* Collision detection features

* Added `CollisionGroup` and refactored `CollisionDetector` to be more versatile: [#711](https://github.com/dartsim/dart/pull/711), [#704](https://github.com/dartsim/dart/pull/704), [#689](https://github.com/dartsim/dart/pull/689), [#631](https://github.com/dartsim/dart/pull/631), [#642](https://github.com/dartsim/dart/issues/642), [#20](https://github.com/dartsim/dart/issues/20)
* Improved API for self collision checking options: [#718](https://github.com/dartsim/dart/pull/718), [#702](https://github.com/dartsim/dart/issues/702)
* Deprecated `BodyNode::isColliding`; collision sets are moved to `CollisionResult`: [#694](https://github.com/dartsim/dart/pull/694), [#670](https://github.com/dartsim/dart/pull/670), [#668](https://github.com/dartsim/dart/pull/668), [#666](https://github.com/dartsim/dart/issues/666)

* Parsers

* Added back VSK parser: [#602](https://github.com/dartsim/dart/pull/602), [#561](https://github.com/dartsim/dart/pull/561), [#254](https://github.com/dartsim/dart/issues/254)
* Fixed segfault of `SdfParser` when `nullptr` `ResourceRetriever` is passed: [#663](https://github.com/dartsim/dart/pull/663)

* GUI features

* Merged `renderer` namespace into `gui` namespace: [#652](https://github.com/dartsim/dart/pull/652), [#589](https://github.com/dartsim/dart/issues/589)
* Moved `osgDart` under `dart::gui` namespace as `dart::gui::osg`: [#651](https://github.com/dartsim/dart/pull/651)
* Fixed GlutWindow::screenshot(): [#623](https://github.com/dartsim/dart/pull/623), [#395](https://github.com/dartsim/dart/issues/395)

* Simulation features

* Fixed `World::clone()` didn't clone the collision detector: [#658](https://github.com/dartsim/dart/pull/658)
* Fixed bug of `World` concurrency: [#577](https://github.com/dartsim/dart/pull/577), [#576](https://github.com/dartsim/dart/issues/576)

* Misc improvements and bug fixes

* Added `make_unique<T>` that was omitted from C++11: [#639](https://github.com/dartsim/dart/pull/639)
* Added missing `override` keywords: [#617](https://github.com/dartsim/dart/pull/617), [#535](https://github.com/dartsim/dart/pull/535)
* Added gcc warning flag `-Wextra`: [#600](https://github.com/dartsim/dart/pull/600)
* Improved memory management of `constraint` namespace: [#584](https://github.com/dartsim/dart/pull/584), [#583](https://github.com/dartsim/dart/issues/583)
* Changed the extension of headers from `.h` to `.hpp`: [#709](https://github.com/dartsim/dart/pull/709), [#693](https://github.com/dartsim/dart/pull/693), [#568](https://github.com/dartsim/dart/issues/568)
* Changed Doxyfile to gnerate tag file: [#690](https://github.com/dartsim/dart/pull/690)
* Changed the convention to use `std::size_t` over `size_t`: [#681](https://github.com/dartsim/dart/pull/681), [#656](https://github.com/dartsim/dart/issues/656)
* Changed CMake to configure preprocessors using `#cmakedefine`: [#648](https://github.com/dartsim/dart/pull/648), [#641](https://github.com/dartsim/dart/pull/641)
* Updated copyright years: [#679](https://github.com/dartsim/dart/pull/679), [#160](https://github.com/dartsim/dart/issues/160)
* Renamed directory name `apps` to `examples`: [#685](https://github.com/dartsim/dart/pull/685)
* Fixed warnings of unused variables in release mode: [#646](https://github.com/dartsim/dart/pull/646)
* Fixed typo of `getNumPluralAddoName` in utility macro: [#615](https://github.com/dartsim/dart/issues/615)
* Fixed linker error by adding namespace-scope definitions for `constexpr static` members: [#603](https://github.com/dartsim/dart/pull/603)
* Fixed segfault from nullptr meshes: [#585](https://github.com/dartsim/dart/pull/585)
* Fixed typo of tutorial with minor improvements: [#573](https://github.com/dartsim/dart/pull/573)
* Fixed `NameManager<T>::removeEntries(~)` called a function that does not exist: [#564](https://github.com/dartsim/dart/pull/564), [#554](https://github.com/dartsim/dart/issues/554)
* Fixed missing definitions for various functions: [#558](https://github.com/dartsim/dart/pull/558), [#555](https://github.com/dartsim/dart/issues/555)
* Fixed const correctness of `BodyNode::getMomentsOfInertia()`: [#541](https://github.com/dartsim/dart/pull/541), [#540](https://github.com/dartsim/dart/issues/540)
* Fixed `ftel` bug in Linux with an workaround: [#533](https://github.com/dartsim/dart/pull/533)
* Removed unnecessary `virtual` keyword for overriding functions: [#680](https://github.com/dartsim/dart/pull/680)
* Removed deprecated APIs in DART 5: [#678](https://github.com/dartsim/dart/pull/678)

* Build and test issues

* Added CMake target for code coverage testing, and automatic reporting: [#688](https://github.com/dartsim/dart/pull/688), [#687](https://github.com/dartsim/dart/issues/687), [#638](https://github.com/dartsim/dart/pull/638), [#632](https://github.com/dartsim/dart/pull/632)
* Added missing `liburdfdom-dev` dependency in Ubuntu package: [#574](https://github.com/dartsim/dart/pull/574)
* Modulized DART libraries: [#706](https://github.com/dartsim/dart/pull/706), [#675](https://github.com/dartsim/dart/pull/675), [#652](https://github.com/dartsim/dart/pull/652), [#477](https://github.com/dartsim/dart/issues/477)
* Improved Travis-CI script: [#655](https://github.com/dartsim/dart/pull/655)
* Improved CMake script by splitting tutorials, examples, and tests into separate targets: [#644](https://github.com/dartsim/dart/pull/644)
* Improved wording of the cmake warning messages for ASSIMP: [#553](https://github.com/dartsim/dart/pull/553)
* Changed Travis-CI to treat warning as errors using `-Werror` flags: [#682](https://github.com/dartsim/dart/pull/682), [#677](https://github.com/dartsim/dart/issues/677)
* Changed Travis-CI to test DART with bullet collision detector: [#650](https://github.com/dartsim/dart/pull/650), [#376](https://github.com/dartsim/dart/issues/376)
* Changed the minimum requirement of Visual Studio version to 2015: [#592](https://github.com/dartsim/dart/issues/592)
* Changed CMake to build gui::osg examples when `DART_BUILD_EXAMPLES` is on: [#536](https://github.com/dartsim/dart/pull/536)
* Simplfied Travis-CI tests for general pushes: [#700](https://github.com/dartsim/dart/pull/700)
* Fixed Eigen memory alignment issue in testCollision.cpp: [#719](https://github.com/dartsim/dart/pull/719)
* Fixed `BULLET_INCLUDE_DIRS` in `DARTConfig.cmake`: [#697](https://github.com/dartsim/dart/pull/697)
* Fixed linking with Bullet on OS X El Capitan by supporting for Bullet built with double precision: [#660](https://github.com/dartsim/dart/pull/660), [#657](https://github.com/dartsim/dart/issues/657)
* Fixed FCL version check logic in the main `CMakeLists.txt`: [#640](https://github.com/dartsim/dart/pull/640)
* Fixed `find_package(DART)` on optimizer components: [#637](https://github.com/dartsim/dart/pull/637)
* Fixed linking against `${DART_LIBRARIES}` not working in Ubuntu 14.04: [#630](https://github.com/dartsim/dart/pull/630), [#629](https://github.com/dartsim/dart/issues/629)
* Fixed Visual Studio 2015 build errors: [#580](https://github.com/dartsim/dart/pull/580)
* Removed OpenGL dependency from `dart` library: [#667](https://github.com/dartsim/dart/pull/667)
* Removed version check for Bullet: [#636](https://github.com/dartsim/dart/pull/636), [#625](https://github.com/dartsim/dart/issues/625)

1. Added missing `liburdfdom-dev` dependency in Ubuntu package
* [Pull request #574](https://github.com/dartsim/dart/pull/574)

## DART 5

Expand Down
17 changes: 12 additions & 5 deletions dart/collision/CollisionDetector.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,15 +98,22 @@ class CollisionDetector : public std::enable_shared_from_this<CollisionDetector>
std::shared_ptr<CollisionGroup> createCollisionGroupAsSharedPtr(
const Args&... args);

/// Perform collision detection for group.
/// Perform collision check for a single group. If nullptr is passed to
/// result, then the this returns only simple information whether there is a
/// collision of not.
virtual bool collide(
CollisionGroup* group,
const CollisionOption& option, CollisionResult& result) = 0;
const CollisionOption& option = CollisionOption(false, 1u, nullptr),
CollisionResult* result = nullptr) = 0;

/// Perform collision detection for group1-group2.
/// Perform collision check for two groups. If nullptr is passed to
/// result, then the this returns only simple information whether there is a
/// collision of not.
virtual bool collide(
CollisionGroup* group1, CollisionGroup* group2,
const CollisionOption& option, CollisionResult& result) = 0;
CollisionGroup* group1,
CollisionGroup* group2,
const CollisionOption& option = CollisionOption(false, 1u, nullptr),
CollisionResult* result = nullptr) = 0;

protected:

Expand Down
18 changes: 16 additions & 2 deletions dart/collision/CollisionGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,14 +155,28 @@ std::size_t CollisionGroup::getNumShapeFrames() const
}

//==============================================================================
bool CollisionGroup::collide(const CollisionOption& option, CollisionResult& result)
const dynamics::ShapeFrame* CollisionGroup::getShapeFrame(
std::size_t index) const
{
assert(index < mShapeFrameMap.size());
if(index < mShapeFrameMap.size())
return mShapeFrameMap[index].first;

return nullptr;
}

//==============================================================================
bool CollisionGroup::collide(
const CollisionOption& option, CollisionResult* result)
{
return mCollisionDetector->collide(this, option, result);
}

//==============================================================================
bool CollisionGroup::collide(
CollisionGroup* other, const CollisionOption& option, CollisionResult& result)
CollisionGroup* other,
const CollisionOption& option,
CollisionResult* result)
{
return mCollisionDetector->collide(this, other, option, result);
}
Expand Down
19 changes: 13 additions & 6 deletions dart/collision/CollisionGroup.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class CollisionGroup
/// Add ShapeFrames of Skeleton, and also add another ShapeFrames of other
/// various objects.
template <typename... Others>
void addShapeFramesOf(const dynamics::Skeleton* skeleton,
void addShapeFramesOf(const dynamics::MetaSkeleton* skeleton,
const Others*... others);

/// Do nothing. This function is for terminating the recursive variadic
Expand Down Expand Up @@ -168,15 +168,22 @@ class CollisionGroup
/// Return number of ShapeFrames added to this CollisionGroup
std::size_t getNumShapeFrames() const;

/// Perform collision detection within this CollisionGroup.
bool collide(const CollisionOption& option, CollisionResult& result);
/// Get the ShapeFrame corresponding to the given index
const dynamics::ShapeFrame* getShapeFrame(std::size_t index) const;

/// Perform collision detection with other CollisionGroup.
/// Perform collision check within this CollisionGroup.
bool collide(
const CollisionOption& option = CollisionOption(false, 1u, nullptr),
CollisionResult* result = nullptr);

/// Perform collision check with other CollisionGroup.
///
/// Return false if the engine type of the other CollisionGroup is different
/// from this CollisionObject engine.
bool collide(CollisionGroup* group,
const CollisionOption& option, CollisionResult& result);
bool collide(
CollisionGroup* group,
const CollisionOption& option = CollisionOption(false, 1u, nullptr),
CollisionResult* result = nullptr);

protected:

Expand Down
2 changes: 0 additions & 2 deletions dart/collision/Option.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,9 @@ namespace collision {
//==============================================================================
CollisionOption::CollisionOption(
bool enableContact,
bool binaryCheck,
std::size_t maxNumContacts,
const std::shared_ptr<CollisionFilter>& collisionFilter)
: enableContact(enableContact),
binaryCheck(binaryCheck),
maxNumContacts(maxNumContacts),
collisionFilter(collisionFilter)
{
Expand Down
25 changes: 13 additions & 12 deletions dart/collision/Option.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,26 +47,27 @@ class CollisionFilter;

struct CollisionOption
{
/// Flag whether compute contact information such as point, normal, and
/// penetration depth. If this flag is set to false, the Engine returns only
/// simple information whether there is a collision of not.
bool enableContact;

/// If true, the collision checking will terminate as soon as the first
/// contact is found.
bool binaryCheck;
/// Flag whether the collision detector computes contact information (contact
/// point, normal, and penetration depth). If it is set to false, only the
/// result of that which pairs are colliding will be stored in the
/// CollisionResult without the contact information.
bool enableContact;

/// Maximum number of contacts to detect
/// Maximum number of contacts to detect. Once the contacts are found up to
/// this number, the collision checking will terminate at that moment. Set
/// this to 1 for binary check.
std::size_t maxNumContacts;

/// CollisionFilter
std::shared_ptr<CollisionFilter> collisionFilter;

/// Constructor
CollisionOption(bool enableContact = true,
bool binaryCheck = false,
std::size_t maxNumContacts = 100,
const std::shared_ptr<CollisionFilter>& collisionFilter = nullptr);
CollisionOption(
bool enableContact = true,
std::size_t maxNumContacts = 1000u,
const std::shared_ptr<CollisionFilter>& collisionFilter = nullptr);

};

} // namespace collision
Expand Down
Loading

0 comments on commit 628f155

Please sign in to comment.