@@ -16,7 +16,7 @@ TRAJOPT_IGNORE_WARNINGS_POP
1616
1717#include < moveit/collision_detection/collision_common.h>
1818#include < moveit/collision_detection_bullet/collision_detector_allocator_bullet.h>
19-
19+ # include < moveit/collision_detection/world.h >
2020
2121namespace trajopt
2222{
@@ -245,7 +245,6 @@ SingleTimestepCollisionEvaluator::SingleTimestepCollisionEvaluator(
245245}
246246
247247// So, each pair has a vector of contacts, and this functions puts all of these vectors of all pairs to one big vector called dist_results
248- // void SingleTimestepCollisionEvaluator::CalcCollisions(const DblVec& x, tesseract::ContactResultVector& dist_results)
249248void SingleTimestepCollisionEvaluator::CalcCollisions (const DblVec& x, trajopt::ContactResultVector& dist_results)
250249{
251250 // tesseract::ContactResultMap contacts;
@@ -288,7 +287,10 @@ void SingleTimestepCollisionEvaluator::CalcCollisions(const DblVec& x, trajopt::
288287 // for(std::size_t z = 0; z < collision_objs.size(); ++z)
289288 // std::cout << "===>>> name of the collision object: " << collision_objs[z].id << " ";
290289 // std::cout << std::endl;
291-
290+
291+ // std::vector<std::string> obj_ids = planning_scene_->getWorld()->getObjectIds();
292+ // trajopt::printVector("world object ids: ", obj_ids);
293+
292294 // std::cout << "===>>> robot model: " << std::endl;
293295 // std::cout << "name: " << planning_scene_->getRobotModel()->getName() << std::endl;
294296 // std::cout << "root joint: " << planning_scene_->getRobotModel()->getRootJointName() << std::endl;
@@ -320,21 +322,16 @@ void SingleTimestepCollisionEvaluator::CalcCollisions(const DblVec& x, trajopt::
320322 collision_request.group_name = planning_group_;
321323 // collision_request.distance = true; // If true, compute proximity distance
322324 collision_request.contacts = true ; // If true, compute contacts. Otherwise only a binary collision yes/no is reported
323- // collision_request.max_contacts = 100;
324- // collision_request.max_contacts_per_pair = 5;
325- // collision_request.verbose = false;
325+ collision_request.max_contacts = 100 ;
326+ collision_request.max_contacts_per_pair = 5 ;
327+ collision_request.verbose = false ;
326328
327329 // planning_scene_->printKnownObjects();
328- // collision_objs[0].operation == moveit_msgs::CollisionObject::REMOVE;
329- // planning_scene_->processCollisionObjectMsg(collision_objs[0]);
330- // collision_objs[0].operation == moveit_msgs::CollisionObject::ADD;
331- // planning_scene_->processCollisionObjectMsg(collision_objs[0]);
332330
333- planning_scene_->checkCollision (collision_request, collision_result);
334- // planning_scene->checkCollision(collision_request, collision_result, rob_state);
331+ planning_scene_->checkCollision (collision_request, collision_result, rob_state);
335332 // ====> checkCollision will check for both self-collisions and for collisions with the environment
336- // std::cout << "+++++++++++++++ single time step in collision -------- " << collision_result.collision << std::endl ;
337- // std::cout << "+++++++++++++++ number of contacts ------------------- " << collision_result.contact_count << std::endl ;
333+ LOG_DEBUG ( " single time step in collision? %s " , collision_result.collision ? " true " : " false " ) ;
334+ LOG_DEBUG ( " contact count: %i " , collision_result.contact_count ) ;
338335
339336 // tesseract:
340337 // ContactResultMap => AlignedMap<std::pair<std::string, std::string>, ContactResultVector>
@@ -382,7 +379,6 @@ void SingleTimestepCollisionEvaluator::CalcCollisions(const DblVec& x, trajopt::
382379 dist_results.push_back (contact_result);
383380 }
384381 }
385-
386382}
387383
388384// so, given a set of joint values called x, this function converts the vector of contacts to the vector of distances
@@ -421,7 +417,6 @@ CastCollisionEvaluator::CastCollisionEvaluator(planning_scene::PlanningSceneCons
421417// swept volume?
422418void CastCollisionEvaluator::CalcCollisions (const DblVec& x, trajopt::ContactResultVector& dist_results)
423419{
424- std::cout << " CastCollisionEvaluator::CalcCollisions() is calleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed" << std::endl;
425420 // tesseract::ContactResultMap contacts;
426421 // tesseract::EnvStatePtr state0 = env_->getState(manip_->getJointNames(), sco::getVec(x, m_vars0));
427422 // tesseract::EnvStatePtr state1 = env_->getState(manip_->getJointNames(), sco::getVec(x, m_vars1));
@@ -444,48 +439,43 @@ void CastCollisionEvaluator::CalcCollisions(const DblVec& x, trajopt::ContactRes
444439 Eigen::VectorXd joint_values_state_0 = sco::getVec (x, m_vars0);
445440 std::vector<double > joint_values_DblVec_0 = std::vector<double >(joint_values_state_0.data (), joint_values_state_0.data () + joint_values_state_0.size ());
446441
447- // planning_scene::PlanningScenePtr planning_scene = planning_scene_->diff();
448-
449- robot_state::RobotStatePtr rob_state (new robot_state::RobotState (planning_scene_->getCurrentStateNonConst ()));
450- const moveit::core::JointModelGroup* joint_model_group = rob_state->getJointModelGroup (planning_group_);
442+ moveit::core::RobotState& rob_state = planning_scene_->getCurrentStateNonConst ();
443+ const moveit::core::JointModelGroup* joint_model_group = rob_state.getJointModelGroup (planning_group_);
451444
452445 collision_detection::CollisionRequest collision_request;
453446 collision_detection::CollisionResult collision_result;
454447 collision_request.group_name = planning_group_;
455- collision_request.distance = true ;
448+ // collision_request.distance = true;
456449 collision_request.contacts = true ;
457450 collision_request.max_contacts = 100 ;
458451 collision_request.max_contacts_per_pair = 5 ;
459452 collision_request.verbose = false ;
460453
461- rob_state-> setToDefaultValues ();
462- rob_state-> setJointGroupPositions (joint_model_group, joint_values_DblVec_0);
463- rob_state-> update ();
464- robot_state::RobotState rob_state_previous (* rob_state);
454+ rob_state. setToDefaultValues ();
455+ rob_state. setJointGroupPositions (joint_model_group, joint_values_DblVec_0);
456+ rob_state. update ();
457+ robot_state::RobotState rob_state_previous (rob_state);
465458
466- Eigen::VectorXd first_values;
467- rob_state-> copyJointGroupPositions (joint_model_group, first_values);
468- std::cout << " ===>>> first state joint values: " << first_values.transpose () << std::endl;
459+ // Eigen::VectorXd first_values;
460+ // rob_state. copyJointGroupPositions(joint_model_group, first_values);
461+ // std::cout << "===>>> first state joint values: " << first_values.transpose() << std::endl;
469462
470463 Eigen::VectorXd joint_values_state_1 = sco::getVec (x, m_vars1);
471464 std::vector<double > joint_values_DblVec_1 = std::vector<double >(joint_values_state_1.data (), joint_values_state_1.data () + joint_values_state_1.size ());
472- rob_state-> setJointGroupPositions (joint_model_group, joint_values_DblVec_1);
473- rob_state-> update ();
465+ rob_state. setJointGroupPositions (joint_model_group, joint_values_DblVec_1);
466+ rob_state. update ();
474467
475- Eigen::VectorXd second_values;
476- rob_state-> copyJointGroupPositions (joint_model_group, second_values);
477- std::cout << " ===>>> second state joint values: " << second_values.transpose () << std::endl;
468+ // Eigen::VectorXd second_values;
469+ // rob_state. copyJointGroupPositions(joint_model_group, second_values);
470+ // std::cout << "===>>> second state joint values: " << second_values.transpose() << std::endl;
478471
479472 // check collision between two states
480473 planning_scene_->getCollisionEnv ()->checkRobotCollision (collision_request, collision_result,
481- *rob_state, rob_state_previous);
482-
483- std::cout << " ---------- in continous collision -------- " << collision_result.collision << std::endl;
474+ rob_state, rob_state_previous);
484475
485- // std::cout << "+++++++++++++++ start state is in collision? " << collision_res.collision << std::endl;
486- // std::cout << "+++++++++++++++ number of contacts " << collision_res.contact_count << std::endl;
487-
488-
476+ LOG_DEBUG (" single time step in collision? %s" , collision_result.collision ? " true" : " false" );
477+ LOG_DEBUG (" contact count: %i" , collision_result.contact_count );
478+
489479 // ????? I have to calculate: cc_time, cc_type and cc_nearest_points here. test
490480
491481 // when we use bullet in MoveIt, CollisionResult returns all the contacts in the scene by ContactMap data type.
@@ -514,12 +504,7 @@ void CastCollisionEvaluator::CalcCollisions(const DblVec& x, trajopt::ContactRes
514504 moveit_cc_time,
515505 moviet_cc_type);
516506 dist_results.push_back (contact_result);
517-
518- std::cout << " ******* " << contact_vector[k].nearest_points [0 ] << std::endl;
519- std::cout << " ******* " << contact_vector[k].nearest_points [1 ] << std::endl;
520507 }
521- // dist_results.insert(dist_results.end(), it->second.begin(), it->second.end())
522- std::cout << " ----------------- *************** ---------------" << std::endl;
523508 }
524509}
525510
0 commit comments