API changes in MoveIt releases
- 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
velocity_scaling_factor
andacceleration_scaling_factor
can now be customized and default to 0.1 instead of 1.0. The values can be changed by setting the parametersdefault_acceleration_scaling_factor
anddefault_velocity_scaling_factor
in thejoint_limits.yaml
of your robot'smoveit_config
package. 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
MoveitCommander.MoveGroup.plan()
fromtrajectory
to a tuple of(success, trajectory, planning_time, error_code)
to better match the C++ MoveGroupInterface (790) moveit_rviz.launch
, generated by MSA, provides an argumentrviz_config
to configure the rviz config to be used. The old boolean config argument was dropped. (1397)- Moved the example package
moveit_controller_manager_example
into moveit_tutorials - Requests to
get_planning_scene
service without explicitly setting "components" now return full scene moveit_ros_planning
no longer depends onmoveit_ros_perception
CollisionRobot
andCollisionWorld
are combined into a singleCollisionEnv
class. This applies for all derived collision checkers asFCL
,ALL_VALID
,HYBRID
andDISTANCE_FIELD
. Consequently,getCollisionRobot[Unpadded] / getCollisionWorld
functions are replaced through agetCollisionEnv
in the planning scene and return the new combined environment. This unified collision environment provides the union of all member functions ofCollisionRobot
andCollisionWorld
. Note that callingcheckRobotCollision
of theCollisionEnv
does not take aCollisionRobot
as an argument anymore as it is implicitly contained in theCollisionEnv
.RobotTrajectory
provides a copy constructor that allows a shallow (default) and deep copy of waypoints- Replace the redundant namespaces
robot_state::
androbot_model::
with the actual namespacemoveit::core::
. The additional namespaces will disappear in the future (ROS2).
- 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/moveit#1254)- Deprecated
EndEffectorInteractionStyle
got removed fromRobotInteraction
(moveit/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.