API changes in MoveIt! releases
- Extended the return value of
MoveitCommander.MoveGroup.plan()
fromtrajectory
to a tuple of(success, trajectory, planning_time, error_code)
to better match the C++ MoveGroupInterface (790)
- Migration to
tf2
API. - 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
ExecuteTrajectoryServiceCapability
has been removed in favor of the improvedExecuteTrajectoryActionCapability
capability. 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::getCollisionBodyTransforms
togetCollisionBodyTransform
as 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_attempts
from yourkinematics.yaml
config files. RDFLoader
/RobotModelLoader
: removed TinyXML-based API (moveit#1254)- Deprecated
EndEffectorInteractionStyle
got removed fromRobotInteraction
(moveit#1287) Use the correspondingInteractionStyle
definitions instead
- In the C++ MoveGroupInterface class the
plan()
method returns aMoveItErrorCode
object 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 towaitForCompleteState
to 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.