Skip to content

Commit 15a1dd1

Browse files
committed
better hash
1 parent 35ac5f0 commit 15a1dd1

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/trajopt/collision_terms.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "sco/modeling_utils.hpp"
1111
#include "utils/stl_to_string.hpp"
1212
#include "utils/logging.hpp"
13+
#include <boost/functional/hash.hpp>
1314
using namespace OpenRAVE;
1415
using namespace sco;
1516
using namespace util;
@@ -68,7 +69,6 @@ void CollisionsToDistanceExpressions(const vector<Collision>& collisions, Config
6869
CollisionsToDistanceExpressions(collisions, rad, link2ind, vars1, vals1, exprs1,true);
6970

7071
exprs.resize(exprs0.size());
71-
7272
for (int i=0; i < exprs0.size(); ++i) {
7373
exprScale(exprs0[i], (1-collisions[i].time));
7474
exprScale(exprs1[i], collisions[i].time);
@@ -79,8 +79,12 @@ void CollisionsToDistanceExpressions(const vector<Collision>& collisions, Config
7979
}
8080
}
8181

82+
inline size_t hash(const DblVec& x) {
83+
return boost::hash_range(x.begin(), x.end());
84+
}
85+
8286
void CollisionEvaluator::GetCollisionsCached(const DblVec& x, vector<Collision>& collisions) {
83-
double key = getVec(x, GetVars()).sum();
87+
double key = hash(getDblVec(x, GetVars()));
8488
vector<Collision>* it = m_cache.get(key);
8589
if (it != NULL) {
8690
LOG_DEBUG("using cached collision check\n");
@@ -181,7 +185,11 @@ void PlotCollisions(const std::vector<Collision>& collisions, OR::EnvironmentBas
181185
if (col.distance < 0) color = RaveVectorf(1,0,0,1);
182186
else if (col.distance < safe_dist) color = RaveVectorf(1,1,0,1);
183187
else color = RaveVectorf(0,1,0,1);
184-
handles.push_back(env.drawarrow(col.ptA, col.ptB, .0025, color));
188+
if (col.cctype == CCType_Between) {
189+
handles.push_back(env.drawarrow(col.ptB, col.ptB1, .002, RaveVectorf(0,0,0,1)));
190+
}
191+
OR::Vector ptB = (col.cctype == CCType_Between) ? ((1-col.time)* col.ptB +col.time*col.ptB1) : col.ptB;
192+
handles.push_back(env.drawarrow(col.ptA, ptB, .0025, color));
185193
}
186194
}
187195

src/trajopt/collision_terms.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ struct CollisionEvaluator {
1919
virtual ~CollisionEvaluator() {}
2020
virtual VarVector GetVars()=0;
2121

22-
Cache<double, vector<Collision>, 3> m_cache;
22+
Cache<size_t, vector<Collision>, 3> m_cache;
2323
};
2424
typedef boost::shared_ptr<CollisionEvaluator> CollisionEvaluatorPtr;
2525

0 commit comments

Comments
 (0)