Migrate User Workspace From 9.x to 10.0
MoveIt Pro 10.0 completes the move to direct controller execution for MoveIt Task Constructor (MTC) solutions that began in 9.0. The legacy MTC execution path is now fully removed: the ExecuteMTCTask Behavior, the /execute_task_solution move_group capability, and the controller_names and trajectory_monitoring ports on InitializeMTCTask that only fed that path.
If you already completed the 9.0 migration and adopted the Execute MTC Solution Subtree, most of your workspace already uses the new path and the changes below are small.
Migration Summary
These are breaking changes. A Behavior Tree that still references the removed Behavior, ports, or capability will fail to load or run, so complete the Required Migration Changes below. Run the shell commands from the top level of your user workspace (for example ~/moveit_pro/moveit_pro_example_ws/).
Required Migration Changes
Remove ExecuteMTCTask
The ExecuteMTCTask Behavior, deprecated in 9.0, has been removed. Execute MTC solutions with the Execute MTC Solution Subtree (or the ExecuteMTCSolution Behavior), which run the solution directly through the JTAC or JTC controllers instead of the MoveIt 2 execution pipeline.
Replace:
<Action ID="ExecuteMTCTask" solution="{solution}" />
With:
<SubTree
ID="Execute MTC Solution"
solution="{solution}"
execution_pipeline="jtac"
controller_names="joint_trajectory_admittance_controller"
controller_action_name="/joint_trajectory_admittance_controller/follow_joint_trajectory"
/>
For a JTC-like controller, set execution_pipeline="jtc" (or use the Execute MTC Solution (JTC) convenience Subtree) and point controller_names and controller_action_name at your controller.
Remove controller_names and trajectory_monitoring From InitializeMTCTask
InitializeMTCTask no longer accepts the controller_names or trajectory_monitoring input ports. Because Behavior Trees reject unknown port attributes at load time, an Objective that still sets either attribute on InitializeMTCTask will fail to load.
Remove both attributes from every InitializeMTCTask Action. For example, change:
<Action
ID="InitializeMTCTask"
task_id="pick_object"
controller_names="joint_trajectory_admittance_controller"
task="{mtc_task}"
trajectory_monitoring="false"
/>
To:
<Action ID="InitializeMTCTask" task_id="pick_object" task="{mtc_task}" />
InitializeMTCTaskcontroller_names is still a valid input on the Execute MTC Solution Subtree and on core motion Objectives, and many Objectives declare it as a top-level port. Only remove controller_names where it appears as an attribute of an InitializeMTCTask Action — leave every other use in place.
trajectory_monitoring is used only by InitializeMTCTask, so on a Linux workspace you can safely remove it everywhere at once:
find . -name '*.xml' -exec sed -i '/^[[:space:]]*trajectory_monitoring=/d' {} +
Why these ports were removed
Both ports only fed the removed /execute_task_solution execution path:
- Controller selection is now handled by the
Execute MTC SolutionSubtree —ExecuteMTCSolutionchooses its controller through its owncontroller_action_nameport, and controllers are activated with an explicitSwitchControllerstep. - Per-subtrajectory collision monitoring (
trajectory_monitoring) is no longer performed automatically during execution. To collision-check a planned trajectory against an updated planning scene, use theValidateTrajectoryBehavior at the Behavior Tree level before executing.
Remove the /execute_task_solution move_group Capability
The ExecuteTaskSolutionCapability move_group capability (the /execute_task_solution action server) has been removed, since ExecuteMTCSolution executes MTC solutions directly through the controllers.
- Most users: no action needed — this capability was loaded by the default MoveIt Pro configuration, which no longer references it.
- If your robot configuration overrides the move_group capability list, remove
move_group/ExecuteTaskSolutionCapabilityfrom it. - Custom action clients that sent goals to the
/execute_task_solutionaction must switch to running theExecute MTC SolutionSubtree.