From 9bb472c0fa251d128b75ff6d5884d2c226d5727c Mon Sep 17 00:00:00 2001 From: KingMaZito <matteo.aneddama@icloud.com> Date: Wed, 26 Jul 2023 04:25:18 +0200 Subject: [PATCH] debug --- src/mediator/mg_mediator.cpp | 71 ++++++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 19 deletions(-) diff --git a/src/mediator/mg_mediator.cpp b/src/mediator/mg_mediator.cpp index e4614f4..45f2db2 100644 --- a/src/mediator/mg_mediator.cpp +++ b/src/mediator/mg_mediator.cpp @@ -28,22 +28,19 @@ void MGMediator::mergeACM(){ } void MGMediator::parallelExec(moveit_task_constructor_msgs::SubTrajectory st, const std::string& robotId){ + AbstractRobotDecorator* mr = nullptr; { + mr= robots_.at(robotId).get(); ROS_INFO("parallelExec step 1"); std::unique_lock<std::mutex> lock(shared_mutex); - manipulateACM(st.scene_diff, robotId); - mergePS(st.scene_diff, robotId); + //manipulateACM(st.scene_diff, robotId); + //mergePS(st.scene_diff, robotId); ROS_INFO("parallelExec step 2"); } - AbstractRobotDecorator* mr = nullptr; - { - std::unique_lock<std::mutex> lock(shared_mutex); - mr= robots_.at(robotId).get(); - ROS_INFO("parallelExec step 3"); - } mr->mgi()->execute(st.trajectory); + planning_scene_diff_publisher_->publish(st.scene_diff); ROS_INFO("parallelExec step 4"); } @@ -51,18 +48,55 @@ void MGMediator::mergePS(const moveit_msgs::PlanningScene& in, const std::string // get full mr link list ROS_INFO("mergePS step 1"); + AbstractRobotDecorator* mr= robots_.at(robotId).get(); if (!ps_){ - ps_ = std::make_shared<moveit_msgs::PlanningScene>(in); - ROS_INFO("mergePS step 2"); + ps_ = std::make_shared<moveit_msgs::PlanningScene>(); + + for (auto ao : in.robot_state.attached_collision_objects) ps_->robot_state.attached_collision_objects.push_back(ao); + ps_->robot_state.is_diff |= in.robot_state.is_diff; + ps_->is_diff |= in.is_diff; + ps_->robot_state.joint_state.header = in.robot_state.joint_state.header; + ps_->robot_model_name = "panda"; + + ROS_INFO("mergePS step 4"); + std::vector<std::string> links; + for (auto link : mr->mgi()->getLinkNames()) links.push_back(link); + links.push_back(mr->map()["left_finger"]); + links.push_back(mr->map()["right_finger"]); + links.push_back(mr->map()["hand_link"]); + links.push_back(mr->map()["base"]); + + ROS_INFO("mergePS step 5"); + for (auto link : links) { + for(int i = 0; i < in.robot_state.joint_state.name.size(); i++){ + if(link == in.robot_state.joint_state.name[i]){ + ps_->robot_state.joint_state.effort.push_back(in.robot_state.joint_state.effort[i]); + ps_->robot_state.joint_state.position.push_back(in.robot_state.joint_state.position[i]); + ps_->robot_state.joint_state.velocity.push_back(in.robot_state.joint_state.velocity[i]); + } + } + ROS_INFO("mergePS step 6"); + + for(int i = 0; i < in.link_padding.size(); i++){ + if(link == in.link_padding[i].link_name){ + ps_->link_padding.push_back(in.link_padding[i]); + } + } + + ROS_INFO("mergePS step 7"); + + for(int i = 0; i < in.link_scale.size(); i++){ + if(link == in.link_scale[i].link_name){ + ps_->link_scale.push_back(in.link_scale[i]); + } + } + } + + ROS_INFO("mergePS step 8"); return; } - AbstractRobotDecorator* mr = nullptr; - { - std::unique_lock<std::mutex> lock(shared_mutex); - mr= robots_.at(robotId).get(); - } ROS_INFO("mergePS step 3"); for (auto ao : in.robot_state.attached_collision_objects) ps_->robot_state.attached_collision_objects.push_back(ao); @@ -179,16 +213,15 @@ void MGMediator::processSharedStructure() { ROS_INFO("processSharedStructure step 6"); for(auto& t : th){ t.join(); - } ROS_INFO("processSharedStructure step 7"); - mergeACM(); + //mergeACM(); ROS_INFO("processSharedStructure step 8"); - planning_scene_diff_publisher_->publish(ps_.get()); - + //planning_scene_diff_publisher_->publish(*ps_); + ps_ = nullptr; // The lock is automatically released here when `lock` goes out of scope -- GitLab