@@ -176,7 +176,9 @@ class Demo
176
176
planning_component_->setGoal (planning_query_request_.goal_constraints );
177
177
}
178
178
else
179
+ {
179
180
RCLCPP_ERROR (LOGGER, " Planning query request does not contain any goal constraints" );
181
+ }
180
182
}
181
183
182
184
// / \brief Request a motion plan based on the assumption that a goal is set and print debug information.
@@ -185,17 +187,28 @@ class Demo
185
187
// Set start state as current state
186
188
planning_component_->setStartStateToCurrentState ();
187
189
190
+ // Get start state
191
+ auto robot_start_state = planning_component_->getStartState ();
192
+
193
+ // Get planning scene
194
+ auto planning_scene_monitor = moveit_cpp_->getPlanningSceneMonitorNonConst ();
195
+ planning_scene_monitor->updateFrameTransforms ();
196
+ auto planning_scene = [planning_scene_monitor] {
197
+ planning_scene_monitor::LockedPlanningSceneRO ls (planning_scene_monitor);
198
+ return planning_scene::PlanningScene::clone (ls);
199
+ }();
200
+
201
+ auto group_name = planning_query_request_.group_name ;
188
202
// Set cost function
189
203
planning_component_->setStateCostFunction (
190
- [this , LOGGER](const moveit::core::RobotState& robot_state, const planning_interface::MotionPlanRequest& request,
191
- const planning_scene::PlanningSceneConstPtr& planning_scene) mutable {
204
+ [robot_start_state, group_name, planning_scene](const std::vector<double >& state_vector) mutable {
192
205
// Publish robot state
193
206
// auto const ee_tip = robot_state.getJointModelGroup(PLANNING_GROUP)->getOnlyOneEndEffectorTip();
194
207
// this->getVisualTools().publishSphere(robot_state.getGlobalLinkTransform(ee_tip), rviz_visual_tools::GREEN,
195
208
// rviz_visual_tools::MEDIUM); this->getVisualTools().trigger();
196
-
197
- auto clearance_cost_fn = moveit::cost_functions::getClearanceCostFn ();
198
- return clearance_cost_fn (robot_state, request, planning_scene );
209
+ auto clearance_cost_fn =
210
+ moveit::cost_functions::getClearanceCostFn (*robot_start_state, group_name, planning_scene );
211
+ return clearance_cost_fn (state_vector );
199
212
});
200
213
201
214
auto plan_solution = planning_component_->plan ();
@@ -205,7 +218,6 @@ class Demo
205
218
{
206
219
// Visualize the trajectory in Rviz
207
220
auto robot_model_ptr = moveit_cpp_->getRobotModel ();
208
- auto robot_start_state = planning_component_->getStartState ();
209
221
auto joint_model_group_ptr = robot_model_ptr->getJointModelGroup (PLANNING_GROUP);
210
222
211
223
visual_tools_.publishTrajectoryLine (plan_solution.trajectory , joint_model_group_ptr);
0 commit comments