How to use MoveIT to develop a robotic manipulation application
European Commission funded HR-Recycler project aims at developing a hybrid human-robot collaborative environment for the disassembly of electronic waste. Humans and robots will be working collaboratively sharing different manipulation tasks. One of these tasks takes place in the disassembly area where electronic components are sorted by type into their corresponding boxes.
An easy-to-use robotic manipulation platform
To speed up the component sorting task Robotnik is developing a mobile robotic manipulator that needs to pick boxes filled with disassembled components from the workbenches and transport them either to their final destination or to further processing areas. MoveIt is an open-source robotic manipulation platform that allows you to develop complex manipulation applications using ROS.
Here, a brief summary showing how we used MoveIt functionalities to develop a pick and place application will be presented.
Features and benefits of MoveIT
We found MoveIt to be very useful in the early stages of developing a robotic manipulation application. It allowed us to decide on the environment setup, whether our robot is capable of performing the manipulation actions we need it to perform in that setup, how to arrange the setup for the best performance, how to design the components of the workspace the robot has to interact with so that they allow for the correct completion of the manipulation actions needed in the application.
MoveIt allows you to build the planning scene environment using mesh objects previously designed in any cad program and allows your robot to interact with them.
With MoveIt you can plan towards any goal position not only taking into account the environment scene by avoiding objects but also interacting with it by grabbing objects and including them in the planning process. Any MoveIt scene Collision Object can be attached to the desired robot link, MoveIt will then allow collisions between that link and the object, once attached the object will move together with the robot’s link.
This functionality helped us determine from the very beginning whether our robot arm was able to reach objects in a table with a certain height, how far away from the table should the robot position to reach the objects properly, is there enough space to perform the arm movements it needs to perform to manipulate objects around the workspace area. It also helped us design the boxes needed for the task, allowing us to decide on the correct box size that will allow the robot arm to perform the necessary manipulation movements given the restricted working area.
MoveIt includes various tools that allow you to perform motion planning to the desired pose with high flexibility, you can adjust the motion planning algorithm to your application to obtain the best performance. This is very useful because it allows you to restrict your robot’s allowed motion to fit very specific criteria, which is an application like ours, with a restricted working space where the robot needs to manipulate objects precisely in an environment shared with humans is very important.
One of the biggest motion requirements we have is the need for the robot arm to maintain the boxes parallel to the ground when manipulating them as they will be filled with objects that need to be carried between work stations. To plan using constraints can be easily done with MoveIt.
There are various constraints that can be applied, the ones we found more useful for our application are joint constraints and orientation constraints.
- With Orientation constraints you can restrict the desired orientation of a robot link, they are very useful to maintain the robot’s end-effector parallel to the ground, needed to manipulate the boxes properly.
- Joint constraints limit the position of a joint to be within a certain bound, they are very useful to shape the way you want your robot to move, in our application it allowed us to move the arm maintaining a relative position between the elbow and shoulder, performing more natural movements and avoiding potentially dangerous motions.
Another useful MoveIt motion planning tool is to plan movements to a goal position both in Cartesian and in Joint Space, allowing you to switch between these two options for different desired trajectory outcomes.
- Cartesian Space planning is used whenever you want to follow a very precise motion with the end effector link. In our application, we made use of these functions when moving down from the box approach position to the grab position and back again. Our robot has to carry the boxes with it, and due to limited space on its base area, all of the boxes are quite close together, using Cartesian planning we could assure we are maintaining verticality while raising the box from its holder avoiding latching between boxes and unnecessary stops.
- Joint Space planning is however useful to obtain more natural trajectories when the arm is moving between different grabbing positions making movement smoother.
This is just a brief summary of how we used MoveIt to develop a preliminary robotic pick and place manipulation application, there are still lots of different tools that MoveIt has to offer. Some of MoveIt’s most advanced applications include integrating 3D sensors to build a perception layer used for object recognition in pick and place tasks or using deep learning algorithms for grasp pose generation, areas that will be explored in the next steps.
Stay tuned for future updates in the development of a robotic manipulation application using MoveIt’s latest implementations.