Solution with MoveIt’s motion planning

Index

Modeling of multiple robots in the URDF file

image

In the schematic design, the main component that performs the planner functions is the MoveIt! package. It is based on adding robots in the URDF file and the MoveIt! planner recognizes them as a single robot that receives the shared values with the motion planner of its end-effectors (API of the move_group node) and sends these received values as a single trajectory to the controller to execute the desired motion.

The advantages of this proposal are:

  • The power of the functions offered by MoveIt! for each robot as a whole.
  • The simplicity of setup, which is largely automatic with the MoveIt Setup Assistant.
  • The flexibility to adapt or integrate future elements that require the functionalities of MoveIt!, such as devices for the development of computer vision, deep learning, navigation, etc.

The disadvantages are:

  • Time required to plan trajectories, since the trajectories of each end-effector must be determined in advance, to be combined later, as if it were the movement of a single robot.
  • There is only one group that manages the movements of the cobots, which means that it has to be reconfigured each time a robot is added to the system, which affects the scalability of the system.
  • It is not possible to control different models and brands of cobots at the same time, as they may require different controls.

This solution has a very important advantage: it knows the movements of all robots and can avoid them when planning paths to reach the desired position. But the package architecture of MoveIt! does not allow to control multiple robots with different controllers.

If you want to control multiple robots with this design, you could achieve this by executing the movements of each robot one after the other, instead of achieving the desired simultaneity.

If you force this (by running two scripts that send instructions to schedule the desired trajectories for each controller), the MoveIt! node move_group sends a message saying that the instruction is PREEMTED, which means that the system scheduler has deferred it as future work.

To work around this problem, the move_group node would need to be set to assume that it is processing a single controller. To achieve this, you need to create at least three manipulator groups during setup with the MoveIt Setup Assistant, one for each arm along with its end-effector and another group containing the two previously created groups.

Once you have this configuration, you need to create the trajectory of each arm without executing it and properly enter the values of the joints of each robot for this trajectory into the group with both robots to be executed later.

This proposal has already been implemented by TEAM O2AC for the World Robot Summit 2020 Assembly Challenge.

Replicating the MoveIt! node

image

In the schematic design, the main component that performs the motion planning functions is the MoveIt! package. This design is based on replication of the components that motion planner needs for its operation (the main node is move_group). Each replication is a motion planner assigned to each of the cobots, which are delimited in their own space or namespace.

In the robot description, only one cobot description is needed and the number of robots it can control simultaneously is directly related to the number of motion planner replications with different namespaces. The numbers in the figure indicate the order of the phases during development.

The advantages of this proposal are:

  • The scalability of the system and the number of cobots.
  • The power of the features offered by MoveIt! for each robot.
  • A simple configuration, most of which is created automatically with the MoveIt Setup Assistant.
  • Flexibility to adapt or integrate future elements that require the functionalities of MoveIt!, such as devices for computer vision work development, deep learning, navigation, etc.
  • Enables simultaneous control of different models and brands of cobots.
  • Behind the MoveIt! package is a very active community that supports its users.

The disadvantages are:

  • Little documentation on proper configuration for simultaneous control of multiple robots.
  • Restriction of the functionalities of the MoveIt! package to each robot but not as a whole, e.g.: the function to plan paths to avoid collisions between robots would not work properly because it has no knowledge of it.
  • Loss of efficiency when scaling: if you scale the system and increase the number of cobots it controls, the functions that currently occupy a resource will also be replicated, but will not perform any work.
  • It is difficult to make changes to the source code of the MoveIt! package functions.

Updated: