API changes in MoveIt releases
- Static member variable interface of the CollisionDetectorAllocatorTemplate for the string NAME was replaced with a virtual method
- RobotModel no longer overrides empty URDF collision geometry by matching the visual geometry of the link.
- Planned trajectories are slow by default.
The default values of the
acceleration_scaling_factorcan now be customized and default to 0.1 instead of 1.0. The values can be changed by setting the parameters
joint_limits.yamlof your robot's
moveit_configpackage. Consider setting them to values between 0.2 and 0.6, to allow for significant speedup/slowdown of your application. Additionally, you can always change the factors per request with the corresponding methods in the move_group_interface, the MoveGroupCommander or in the Rviz interface. (1890)
- Extended the return value of
trajectoryto a tuple of
(success, trajectory, planning_time, error_code)to better match the C++ MoveGroupInterface (790)
moveit_rviz.launch, generated by MSA, provides an argument
rviz_configto configure the rviz config to be used. The old boolean config argument was dropped. (1397)
- Moved the example package
- Requests to
get_planning_sceneservice without explicitly setting "components" now return full scene
moveit_ros_planningno longer depends on
CollisionWorldare combined into a single
CollisionEnvclass. This applies for all derived collision checkers as
getCollisionRobot[Unpadded] / getCollisionWorldfunctions are replaced through a
getCollisionEnvin the planning scene and return the new combined environment. This unified collision environment provides the union of all member functions of
CollisionWorld. Note that calling
CollisionEnvdoes not take a
CollisionRobotas an argument anymore as it is implicitly contained in the
RobotTrajectoryprovides a copy constructor that allows a shallow (default) and deep copy of waypoints
- Replace the redundant namespaces
robot_model::with the actual namespace
moveit::core::. The additional namespaces will disappear in the future (ROS2).
- Moved the library
moveit_ros_planning. The classes are now in namespace
moveit_cpp, access via
- The joint states of
passivejoints must be published in ROS and the CurrentStateMonitor will now wait for them as well. Their semantics dictate that they cannot be actively controlled, but they must be known to use the full robot state in collision checks. (https://github.com/ros-planning/moveit/pull/2663)
- Removed deprecated header
- All uses of
MOVEIT_CLASS_FORWARDet. al. must now be followed by a semicolon for consistency (and to get -pedantic builds to pass for the codebase).
- 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.