diff --git a/src/multibody/fwd.hpp b/src/multibody/fwd.hpp index 66604d80c7813e3f6c4b341b022a2bb5515084f7..c504e0cf80e23bc5bb036f6d2a01b9cac2203ecc 100644 --- a/src/multibody/fwd.hpp +++ b/src/multibody/fwd.hpp @@ -26,6 +26,7 @@ namespace se3 typedef Index JointIndex; typedef Index GeomIndex; typedef Index FrameIndex; + typedef Index PairIndex; struct Frame; struct Model; diff --git a/src/multibody/geometry.hpp b/src/multibody/geometry.hpp index 1726423b10acde1de67788a2eb047c5f2605be81..734223f4cbc23727df09e1fe65b7ca2cb9d53893 100644 --- a/src/multibody/geometry.hpp +++ b/src/multibody/geometry.hpp @@ -159,10 +159,8 @@ namespace se3 /// /// \return The index of the CollisionPair in collisionPairs. /// - Index findCollisionPair (const CollisionPair & pair) const; + PairIndex findCollisionPair (const CollisionPair & pair) const; - /// \brief Display on std::cout the list of pairs (is it really useful?). - void displayCollisionPairs() const; #endif // WITH_HPP_FCL friend std::ostream& operator<<(std::ostream & os, const GeometryModel & model_geom); @@ -231,7 +229,7 @@ namespace se3 /// It is used by some method to return additional information. For instance, /// isColliding() sets it to the first colliding pair. /// - Index collisionPairIndex; + PairIndex collisionPairIndex; typedef std::vector<GeomIndex> GeomIndexList; @@ -286,13 +284,13 @@ namespace se3 /// manner. /// \param[in] pairId the index of the pair in GeomModel::collisionPairs vector. /// \param[in] new value of the activation boolean (true by default). - void activateCollisionPair(const Index pairId,const bool flag=true); + void activateCollisionPair(const PairIndex pairId,const bool flag=true); /// Deactivate a collision pair. /// /// Calls indeed GeomData::activateCollisionPair(pairId,false) /// \sa activateCollisionPair - void deactivateCollisionPair(const Index pairId); + void deactivateCollisionPair(const PairIndex pairId); /// /// \brief Compute the collision status between two collision objects of a given collision pair. @@ -302,7 +300,7 @@ namespace se3 /// /// \return Return true is the collision objects are colliding. /// - bool computeCollision(const Index & pairId); + bool computeCollision(const PairIndex & pairId); /// /// \brief Check if at least one of the collision pairs has its two collision objects in collision. @@ -320,7 +318,7 @@ namespace se3 /// \return A reference on fcl struct containing the distance result, referring an element /// of vector geomData::distance_results. /// - fcl::DistanceResult & computeDistance(const Index & pairId); + fcl::DistanceResult & computeDistance(const PairIndex & pairId); /// Reset the vector distance_results. /// TODO: should this be called automatically before calling computeDistance? diff --git a/src/multibody/geometry.hxx b/src/multibody/geometry.hxx index f0e96ea122fb8681f425ea030ab4e61377e2775f..3caeab6f93e9abec330c65e542b6aa8d331e747e 100644 --- a/src/multibody/geometry.hxx +++ b/src/multibody/geometry.hxx @@ -34,7 +34,7 @@ namespace se3 inline GeomIndex GeometryModel::addGeometryObject(const GeometryObject& object) { - Index idx = (Index) (ngeoms ++); + GeomIndex idx = (GeomIndex) (ngeoms ++); geometryObjects.push_back(object); return idx; } @@ -131,7 +131,7 @@ namespace se3 { os << "Nb geometry objects = " << model_geom.ngeoms << std::endl; - for(Index i=0;i<(Index)(model_geom.ngeoms);++i) + for(GeomIndex i=0;i<(GeomIndex)(model_geom.ngeoms);++i) { os << model_geom.geometryObjects[i] <<std::endl; } @@ -144,7 +144,7 @@ namespace se3 #ifdef WITH_HPP_FCL os << "Nb collision pairs = " << data_geom.activeCollisionPairs.size() << std::endl; - for(Index i=0;i<(Index)(data_geom.activeCollisionPairs.size());++i) + for(PairIndex i=0;i<(PairIndex)(data_geom.activeCollisionPairs.size());++i) { os << "collision object in position " << data_geom.model_geom.collisionPairs[i] << std::endl; } @@ -167,10 +167,10 @@ namespace se3 inline void GeometryModel::addAllCollisionPairs() { removeAllCollisionPairs(); - for (Index i = 0; i < ngeoms; ++i) + for (GeomIndex i = 0; i < ngeoms; ++i) { const JointIndex& joint_i = geometryObjects[i].parentJoint; - for (Index j = i+1; j < ngeoms; ++j) + for (GeomIndex j = i+1; j < ngeoms; ++j) { const JointIndex& joint_j = geometryObjects[j].parentJoint; if (joint_i != joint_j) @@ -198,45 +198,36 @@ namespace se3 pair) != collisionPairs.end()); } - inline Index GeometryModel::findCollisionPair (const CollisionPair & pair) const + inline PairIndex GeometryModel::findCollisionPair (const CollisionPair & pair) const { CollisionPairsVector_t::const_iterator it = std::find(collisionPairs.begin(), collisionPairs.end(), pair); - return (Index) std::distance(collisionPairs.begin(), it); + return (PairIndex) std::distance(collisionPairs.begin(), it); } - inline void GeometryModel::displayCollisionPairs() const - { - for (CollisionPairsVector_t::const_iterator it = collisionPairs.begin(); - it != collisionPairs.end(); ++it) - { - std::cout << it-> first << "\t" << it->second << std::endl; - } - } - - inline void GeometryData::activateCollisionPair(const Index pairId,const bool flag) + inline void GeometryData::activateCollisionPair(const PairIndex pairId,const bool flag) { assert( activeCollisionPairs.size() == model_geom.collisionPairs.size() ); assert( pairId < activeCollisionPairs.size() ); activeCollisionPairs[pairId] = flag; } - inline void GeometryData::deactivateCollisionPair(const Index pairId) + inline void GeometryData::deactivateCollisionPair(const PairIndex pairId) { assert( activeCollisionPairs.size() == model_geom.collisionPairs.size() ); assert( pairId < activeCollisionPairs.size() ); activeCollisionPairs[pairId] = false; } - inline bool GeometryData::computeCollision(const Index& pairId) + inline bool GeometryData::computeCollision(const PairIndex& pairId) { const CollisionPair & pair = model_geom.collisionPairs[pairId]; fcl::CollisionResult& collisionResult = collision_results[pairId]; - const Index & co1 = pair.first; assert(co1<collisionObjects.size()); - const Index & co2 = pair.second; assert(co2<collisionObjects.size()); + const PairIndex & co1 = pair.first; assert(co1<collisionObjects.size()); + const PairIndex & co2 = pair.second; assert(co2<collisionObjects.size()); collisionResult.clear(); fcl::collide (&collisionObjects[co1],&collisionObjects[co2], @@ -247,7 +238,7 @@ namespace se3 inline bool GeometryData::isColliding() { - Index& i = collisionPairIndex; + PairIndex& i = collisionPairIndex; for(i = 0; i<model_geom.collisionPairs.size(); ++i) { if (activeCollisionPairs[i] && computeCollision(i)) @@ -256,7 +247,7 @@ namespace se3 return false; } - inline fcl::DistanceResult & GeometryData::computeDistance(const Index & pairId ) + inline fcl::DistanceResult & GeometryData::computeDistance(const PairIndex & pairId ) { assert( pairId < model_geom.collisionPairs.size() ); const CollisionPair & pair = model_geom.collisionPairs[pairId];