API changes in MoveIt! releases
ROS Noetic (upcoming changes in master)
- Extended the return value of
trajectoryto a tuple of
(success, trajectory, planning_time, error_code)to better match the C++ MoveGroupInterface (790)
- Migration to
- 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 improved
ExecuteTrajectoryActionCapabilitycapability. Since Indigo, both capabilities were supported. If you still load default capabilities in your
config/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.
getCollisionBodyTransformas it returns a single transform only.
- Removed deprecated class MoveGroup (was renamed to MoveGroupInterface).
- KinematicsBase: Deprecated members
- KinematicsBase: Deprecated
initialize(robot_description, ...)in favour of
initialize(robot_model, ...). Adapt your kinematics plugin to directly receive a
RobotModel. 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)
RobotModelLoader: removed TinyXML-based API (https://github.com/ros-planning/moveit/pull/1254)
EndEffectorInteractionStylegot removed from
RobotInteraction(https://github.com/ros-planning/moveit/pull/1287) Use the corresponding
- In the C++ MoveGroupInterface class the
plan()method returns a
MoveItErrorCodeobject 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 to
waitForCompleteStateto better reflect the actual semantics. Additionally a new method
waitForCurrentState(const ros::Time t = ros::Time::now())was added that actually waits until all joint updates are newer than
- 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.