示例#1
0
bool ConstraintChecker::HasEnvCollision(Robot& robot,Terrain& env,const Stance& stance, const vector<int>& ignoreList)
{
	robot.UpdateGeometry();
	robot.InitMeshCollision(*env.geometry);
	vector<bool> fixed(robot.links.size(), false);
	for (Stance::const_iterator i = stance.begin(); i != stance.end(); i++)
		fixed[i->first] = true;

	for (int i = 0; i < ignoreList.size(); i++)
		fixed[ignoreList[i]] = true;

	for (size_t i = 0; i < robot.links.size(); i++) {
		if (!fixed[i]) {
			if (robot.MeshCollision(i)) {
				return true;
			}
		}
	}
	return false;
}
示例#2
0
bool ConstraintChecker::HasEnvCollision(Robot& robot,Terrain& env,const vector<IKGoal>& constraints, const vector<int>& ignoreList)
{
	robot.UpdateGeometry();
	robot.InitMeshCollision(*env.geometry);
	vector<bool> fixed(robot.links.size(), false);
	for (size_t i=0;i<constraints.size();i++) {
	  if(constraints[i].destLink == -1)
	    fixed[constraints[i].link] = true;
	}

	for (int i = 0; i < ignoreList.size(); i++)
		fixed[ignoreList[i]] = true;

	for (size_t i = 0; i < robot.links.size(); i++) {
		if (!fixed[i]) {
			if (robot.MeshCollision(i)) {
			  printf("Collision between robot link %s and env\n",robot.linkNames[i].c_str());
				return true;
			}
		}
	}
	return false;
}
示例#3
0
bool ConstraintChecker::HasEnvCollision(Robot& robot,Terrain& env,const vector<IKGoal>& constraints)
{
	robot.UpdateGeometry();
	robot.InitMeshCollision(*env.geometry);
	vector<bool> fixed(robot.links.size(), false);
	for ( int i = 0;i < constraints.size(); i++)
	{
		int linkIndex = constraints[i].link;
		fixed[ linkIndex] = true;
	}
	for (size_t i = 0; i < robot.links.size(); i++) {
		if (!fixed[i]) {
			cout << "Checking link " << i << ":" << endl;
			if (robot.MeshCollision(i)) {
				cout << "  Link " << i << " is in collision!" << endl;
				return true;
			}
			else{
				cout << "  Link " << i << " is not in collision!" << endl;
			}
		}
	}
	return false;
}
示例#4
0
bool ConstraintChecker::HasEnvCollision(Robot& robot,Terrain& env)
{
  robot.UpdateGeometry();
  return robot.MeshCollision(*env.geometry);
}