8.0.1
Bug Fixes
- Fixed an issue where the behavior tree status visualizer would throw an error when loaded.
We're proud to announce our latest major release - 8.0!
A reminder that our major releases typically include more complex migration steps for your robot_config, so that we can evolve the capabilities of MoveIt Pro and reduce technical debt. We promise to release major versions no more than 4 times per year, or about once per quarter.
A totally reimagined Pose Jog teleoperation mode that replaces the old MoveIt Servo TeleoperateTwist
Behavior.
PoseJog
offers several improvements over the previous implementation, such as better behavior at singularities, improved collision avoidance and recovery, and support for multiple groups. The new PoseJog
can be used beyond teleoperation, for instance in any application that requires streaming Cartesian velocities to the robot. More details here, and also check out the Migration Guide, below, for how to migrate from the old TeleoperateTwist
Behavior to the new PoseJog
Behavior.
GetGraspPoseFromPointCloud
uses the Learning to Grasp AI model to produce grasp poses for objects from point clouds.
PlanCartesianPath
can now solve the path Inverse Kinematics for multiple end-effectors moving synchronously along a path.
Check out the Multi-tip Path IK Example
Objective in the multi_arm_sim
config for an example of this feature.
MoveIt Pro now includes the Fuse state estimation framework out of the box, and has a new guide on how to utilize it in your custom MoveIt Pro configuration.
OrtCudnnConvAlgoSearchHeuristic
configuration for the CUDA ONNX runtime provider, which improves first time inference speed up to 2x faster.SwitchController
Behavior which allows you to use the ros2_control
API to switch controllers.IsAnyObjectAttached
, IsCollisionObjectInPlanningScene
, and WhichObjectIsAttached
Behaviors to better introspect a PlanningScene
.ComputeLinkPoseForwardKinematics
Behavior to compute the cartesian pose of a link given joint states.AsyncBehavior
base class is now an option when generating custom behaviors from the UI. Take a look here for some examples of behaviors that inherit from AsyncBehaviorBase
.ActivateControllers
and InitializeMTCTask
Behaviors now require a list of controller names separated by semicolons instead of spaces.
This makes it more consistent with how arrays of objects are handled in other Behaviors.SetupMTCPickFromPose
, SetupMTCPickObject
and SetupMTCPlaceFromPose
have been removed, since similar functionality can now be achieved with more granular MTC Behaviors.PlanCartesianPath
Behavior can now solve for multiple end-effectors.
Therefore the tip_link
input port has been renamed to tip_links
, which can now accept a list of tip links.SetupMTCCurrentState
port skip_collision_check
is removed (the port was deprecated in 7.5.0).PublishMask2D
can now publish bounding boxes around masks when given a class label or annotations."clear_visual_markers_at_start": False
.CalculatePoseOffset
now returns the offset as a geometry_msgs/PoseStamped
message instead of a geometry_msgs/Pose
message, to make it compatible with the rest of Behaviors that use PoseStamped
messages. The frame_id
of the returned pose will match the frame_id
of the 'source' pose.
TransformPoseFromYaml
has been deprecated and will be removed in a future release. It is recommended to use LoadPoseStampedFromYaml
and TransformPoseWithPose
instead.ik_group
port to SetupMTCBatchPoseIK
, enabling users to specify the group for which inverse kinematics should be solved.CreateStampedPose
Behavior will now fail if the input quaternion is of zero length and cannot be normalized.AddPoseStampedToVector
will now send a descriptive error message to the UI if the user attempts to run the behavior without setting the required input port.ignition_resources
volume, only relevant to Gazebo, has been removed from the default docker-compose file.moveit_pro dev
service now has the nvidia
runtime set by default on NVIDIA machines, matching the environment in the full application.docker-compose.yaml
can now be used to override the runtime: nvidia
parameter for more advanced users on NVIDIA machines.-c
option to moveit_pro configure
command to specify the configuration package.-w
option to moveit_pro configure
, moveit_pro build
, moveit_pro build user_image
and moveit_pro build user_workspace
commands to specify the location of the user workspace.moveit_pro_test_utils
package to test objectives in a robot config./switch_primary_view
service call if the view was already visible - even though it wasn't primary.moveit_pro configure
is run.version
into /opt/moveit_pro
instead of /etc/moveit_pro
.The TeleoperateTwist
Behavior has been replaced with the new PoseJog
Behavior.
This required changes in the way the UI communicates with the backend, and therefore the UI after 8.0.0 is not compatible with the old TeleoperateTwist
Behavior.
You will need to update your Request Teleoperation
Objective to use the new PoseJog
Behavior, and include a PoseJog
config file. Please check out this configuration guide for details.
moveit_studio::behaviors::BehaviorContext
shared_resources is now accessed via the
pointer transform_buffer_ptr
. The pointer field replaces the old value type named transform_buffer
. Additionally,
transform_listener_ptr
and transform_broadcaster_ptr
replaced transform_listener
and transform_broadcaster
.ActivateControllers
or InitializeMTCTask
in Objectives need to be updated to include the list of controllers as controller names separated by semicolons, instead of spaces, in case multiple controllers are listed. For example:<Action
ID="ActivateControllers"
controller_names="controller_one;controller_two"
/>
<Action
ID="InitializeMTCTask"
controller_names="controller_one;controller_two"
/>
PlanCartesianPath
now accepts a list of tip links instead of a single tip link.
The input port tip_link
has been renamed to tip_links
, and the input type has changed from string
to string[]
.
For example:<Action
ID="PlanCartesianPath"
...
tip_links="grasp_link" # Separate multiple tips with semicolons, e.g. "link_one;link_two"
...
/>
All references to the skip_collision_check
port in SetupMTCCurrentState
should be removed
DetectApriltags
now takes in all AprilTag detection parameters on ports rather than by parsing YAML input. Users
can now delete the deprecated LoadObjectiveParameters
behavior in their objectives that use DetectApriltags
and
transfer the parameters from the .yaml
file to the ports of DetectApriltags
. Also note: the z_up
parameter is no
longer accepted for AprilTag detections and tags will always be detected with the detection pose z axis facing up, out
of the tag and towards the camera. If you were previously setting the z_up
parameter to false, you can use the
TransformPose
behavior with the detected pose on the input_pose
port and the quaternion_xyzw
port set to
1;0;0;0
.
FindSingularCuboids
now takes in all cuboid detection parameters on ports rather than by parsing YAML input. Users
can now delete the deprecated LoadObjectiveParameters
behavior in their objectives that use FindSingularCuboids
and
transfer the parameters from the .yaml
file to the ports of FindSingularCuboids
.
Several breaking changes were made to the IsConstraintSatisfied
Behavior:
IsVisibilityConstraintSatisfied
for disambiguation.IsVisibilityConstraintSatisfied
now takes in all visibility constraint parameters on ports rather than by parsing
YAML input as was done with IsConstraintSatisfied
. Users can now delete the deprecated LoadObjectiveParameters
behavior in their objectives that used IsConstraintSatisfied
and transfer the parameters from the .yaml
file to
the ports of IsVisibilityConstraintSatisfied
.IsVisibilityConstraintSatisfied
now takes in a planning_scene_msg
port to reduce the overhead of managing a
planning scene monitor within the behavior. Users can use the GetCurrentPlanningScene
Behavior to get the
planning_scene_msg
object needed as an input port to IsVisibilityConstraintSatisfied
.CalculatePoseOffset
now returns the offset as a geometry_msgs/PoseStamped
message.
Any Objectives using this Behavior should be updated to use its output as geometry_msgs/PoseStamped
instead of geometry_msgs/Pose
.
SetupMTCBatchPoseIK
now requires the ik_group
input port to be specified which informs the solver of the planning group for which inverse kinematics should be solved.
For example:
<Action
ID="SetupMTCBatchPoseIK"
...
ik_group="manipulator"
...
/>
GetPointsFromUser
, GetImage
, GetPointCloud
, GetSyncedImageAndPointCloud
, and GetSyncedImages
have had their default parameters for certain ports updated:
GetPointsFromUser
view_name
: /wrist_mounted_camera/color/image_raw
-> /wrist_camera/color
GetImage
topic_name
: /wrist_mounted_camera/color/image_raw
-> /wrist_camera/color
GetPointCloud
topic_name
: /wrist_mounted_camera/depth/color/points
-> /wrist_camera/points
GetSyncedImages
image_1_topic_name
: /wrist_mounted_camera/color/image_raw
-> /wrist_camera/color
camera_info_1_topic_name
: /wrist_mounted_camera/color/camera_info
-> /wrist_camera/camera_info
image_2_topic_name
: /wrist_mounted_camera/depth/image_raw
-> /scene_camera/color
camera_info_2_topic_name
: /wrist_mounted_camera/depth_registered/camera_info
-> /scene_camera/camera_info
GetSyncedImageAndPointCloud
point_cloud_topic_name
: /wrist_mounted_camera/depth/color/points
-> /wrist_camera/points
rgb_image_topic_name
: /wrist_mounted_camera/color/image_raw
-> /wrist_camera/color
rgb_camera_info_topic_name
: /wrist_mounted_camera/color/camera_info
-> /wrist_camera/camera_info
We have switched to a trimmed down version of the MoveIt library. The following plugins and APIs will no longer be available in the default installation for their use in configs and Behaviors. Please contact us if you were using any of these APIs in your custom Behaviors.
KDL
, FastIK
, Srv
have been removed from the default installation.
Please switch to PoseIK.sudo apt-get install ros-humble-moveit-setup-assistant
.MoveGroupCartesianPathService
, MoveGroupExecuteService
, MoveGroupExecuteTrajectoryAction
, MoveGroupMoveAction
, MoveGroupPlanService
, MoveGroupQueryPlannersService
, MoveGroupStateValidationService
, TfPublisher
.chomp
and pilz
.
stomp
is still available for anyone needing an optimization-based planner.
Use of pilz
should be replaced with MoveIt Pro Cartesian planning capabilities.Please contact support if you were using any of the above features and need help migrating.
SetupMTCPickFromPose
, SetupMTCPickObject
and SetupMTCPlaceFromPose
have been removed.
If you were using any of these Behaviors, please take a look at the Pick from Pose
and Place at Pose
Subtrees in lab_sim
for an example of how to achieve similar functionality by combining other more granular Behaviors, or contact support for help.GetDoorHandle
has been removed.
It is now recommended to use the new Machine Learning Behaviors for more granularity.
We recommend creating a subtree that has the Behaviors GetMasks2DFromTextQueryInterface
with door handle
as the object, GetMasks3DFromMasks2D
to convert the 2D masks to 3D masks, GetPointCloudFromMask3D
to create the point cloud for the segmented door handle, and GetGraspPoseFromPointCloud
to get the grasp pose for the door handle.A small release before the upcoming 8.0 release...
multi_arm_sim
example robot_configPlanToJointGoal
and its MTC-equivalent SetupMTCPlanToJointState
now have a new port called seed
that allows you to specify the seed for the random number generator used during path planning.
The same seed number will generate the same results for the same input parameters.
This can be used to explore other solutions if the one found by the planner with the default seed is not satisfactory.SetupMTCGraspAndTwistThenMoveAlongArcPush
and SetupMTCGraspThenMoveAlongArcPull
Behaviors.
These can be replicated as Objectives using existing Behaviors.SetupMTCApproachGrasp
, SetupMTCConnectWithTrajectory
, SetupMTCMoveToJointState
, SetupMTCMoveToNamedState
, SetupMTCMoveToPose
, SetupMTCPickFromPose
, SetupMTCPickObject
, and SetupMTCPlaceFromPose
to use ProRRT by default.SetupMTCApproachGrasp
now exposes link_padding as a parameter for use with ProRRT.