API changes in MoveIt! releases
- Extended the return value of
MoveitCommander.MoveGroup.plan()fromtrajectoryto a tuple of(success, trajectory, planning_time, error_code)to better match the C++ MoveGroupInterface (790)
- Migration to
tf2API. - Replaced Eigen::Affine3d with Eigen::Isometry3d, which is computationally more efficient.
Simply find-replace occurences of Affine3d:
find . -iname "*.[hc]*" -print0 | xargs -0 sed -i 's#Affine3#Isometry3#g' - The move_group capability
ExecuteTrajectoryServiceCapabilityhas been removed in favor of the improvedExecuteTrajectoryActionCapabilitycapability. Since Indigo, both capabilities were supported. If you still load default capabilities in yourconfig/launch/move_group.launch, you can just remove them from the capabilities parameter. The correct default capabilities will be loaded automatically. - Deprecated method
CurrentStateMonitor::waitForCurrentState(double wait_time)was finally removed. - Renamed
RobotState::getCollisionBodyTransformstogetCollisionBodyTransformas it returns a single transform only. - Removed deprecated class MoveGroup (was renamed to MoveGroupInterface).
- KinematicsBase: Deprecated members
tip_frame_,search_discretization_. Usetip_frames_andredundant_joint_discretization_instead. - KinematicsBase: Deprecated
initialize(robot_description, ...)in favour ofinitialize(robot_model, ...). Adapt your kinematics plugin to directly receive aRobotModel. See the KDL plugin for an example. - IK: Removed notion of IK attempts and redundant random seeding in RobotState::setFromIK(). Number of attempts is limited by timeout only. (#1288)
Remove parameters
kinematics_solver_attemptsfrom yourkinematics.yamlconfig files. RDFLoader/RobotModelLoader: removed TinyXML-based API (moveit/moveit#1254)- Deprecated
EndEffectorInteractionStylegot removed fromRobotInteraction(moveit/moveit#1287) Use the correspondingInteractionStyledefinitions instead
- In the C++ MoveGroupInterface class the
plan()method returns aMoveItErrorCodeobject and not a boolean.static_cast<bool>(mgi.plan())can be used to achieve the old behavior. CurrentStateMonitor::waitForCurrentState(double wait_time)has been renamed towaitForCompleteStateto better reflect the actual semantics. Additionally a new methodwaitForCurrentState(const ros::Time t = ros::Time::now())was added that actually waits until all joint updates are newer thant.- To avoid deadlocks, the PlanningSceneMonitor listens to its own EventQueue, monitored by an additional spinner thread. Providing a custom NodeHandle, a user can control which EventQueue and processing thread is used instead. Providing a default NodeHandle, the old behavior (using the global EventQueue) can be restored, which is however not recommended.