MoveItPy vs MoveItCommander/MoveGroupPython
I am confused on the new MoveItPy python bindings for MoveIt2. I used moveit_commander or move_group_python_interface python interface in MoveIt in the past, and thought the new bindings would be equivalent, but I don't think they are.
The tutorial for MoveItPy did not reveal the difference, which is quite fundamental IMHO and can influence how to setup the pipeline or how to migrate an old pipeline. I also did not find an updated Concept diagram replacing moveit_commander with MoveItPy to help clarify where MoveItPy inserts itself.
I use this question to ask for a confirmation that I understood the difference, and maybe guide others.
moveit_commander: In my understanding, moveit_commander worked like this :
UserApp (py) -> moveit_commander (binding) -> MoveGroupInterface (cpp) -> actions -> MoveGroup capability (cpp) -> MoveitCPP core functions (cpp)
MoveGroup capability was started in a node for a specific robot + planner + controller settings. There could be several UserApps running in nodes, connecting to "MoveIt" core functions in a separate unit via the move_group_interface and actions. Usually one would startup a robot_bringup + moveit move_group node for that robot, and later user apps would connect to the running MoveIt core through the actions.
MoveItPy What I understood from MoveItPy:
UserApp (py) -> MoveItPy (binding)-> MoveitCPP
The UserApp in python instantiates MoveItPy, which itself starts up the whole Moveit2 core, for a specific robot (all robot and moveit params must be given). There is no "core" MoveIt running independently of the user app.
Is that correct ?
So in that diagram for a python only usage, MoveGroup block should be replaced directly by MoveItPy and moveit commander does not exist, and there is no arrow between the user app (black terminal above moveit commander) and MoveItPy as it needs to be instantiated by the user app.
In case I am correct, for existing pipelines based on the availability of MoveGroup actions, and then connecting to them and/or using MoveItCommander to do so, MoveItPy is not a straight forward switch, especially if the startup of the UserApp + access to MoveIt was done separately from the MoveIt core functions.