@@ -72,6 +72,15 @@ void ModifyPlanningScene::removeObject(const std::string& object_name) {
7272 collision_objects_.push_back (obj);
7373}
7474
75+ void ModifyPlanningScene::moveObject (const moveit_msgs::CollisionObject& collision_object) {
76+ if (collision_object.operation != moveit_msgs::CollisionObject::MOVE) {
77+ ROS_ERROR_STREAM_NAMED (" ModifyPlanningScene" , name () << " : moveObject is called with object's operation not set "
78+ " to MOVE -- ignoring the object" );
79+ return ;
80+ }
81+ collision_objects_.push_back (collision_object);
82+ }
83+
7584void ModifyPlanningScene::allowCollisions (const Names& first, const Names& second, bool allow) {
7685 collision_matrix_edits_.push_back (CollisionMatrixPairs ({ first, second, allow }));
7786}
@@ -128,7 +137,7 @@ std::pair<InterfaceState, SubTrajectory> ModifyPlanningScene::apply(const Interf
128137 InterfaceState state (scene);
129138 SubTrajectory traj;
130139 try {
131- // add/remove objects
140+ // add/remove/move objects
132141 for (auto & collision_object : collision_objects_)
133142 processCollisionObject (*scene, collision_object, invert);
134143
@@ -157,6 +166,8 @@ void ModifyPlanningScene::processCollisionObject(planning_scene::PlanningScene&
157166 const_cast <moveit_msgs::CollisionObject&>(object).operation = moveit_msgs::CollisionObject::REMOVE;
158167 else if (op == moveit_msgs::CollisionObject::REMOVE)
159168 throw std::runtime_error (" cannot apply removeObject() backwards" );
169+ else if (op == moveit_msgs::CollisionObject::MOVE)
170+ throw std::runtime_error (" cannot apply moveObject() backwards" );
160171 }
161172
162173 scene.processCollisionObjectMsg (object);
0 commit comments