Bin Picking with MATLAB and Simulink
Bin picking involves using a manipulator to retrieve items from a bin. Intelligent bin picking adds autonomy to this process. Parts are perceived using a camera system, and a planner generates collision-free trajectories that adapt to the scene. In robotics, bin picking is often used as a benchmark process, in part because it has many real-life applications, but can also showcase the implementation of several key manipulator tasks, and may be used to demonstrate robustness or speed of a user-designed algorithm. Additionally, bin picking structurally provides a strong baseline for other robotic tasks, which can be decomposed into similar tasks. The process is prominent both in industrial applications and in academic communities [1], where it can be used to instruct readers on the applications of key concepts in manipulation. This page reviews the fundamental components of bin picking and shows where to look for resources to build and simulate your own system.
Components of a Bin Picking System
Bin picking relies on four key components:
Perception — Perceiving the parts in the bin using a sensor like a depth camera that returns RGB-D images. Then an algorithm is used to determine type and pose of the objects within. In some modern systems, you can use the raw RGB-D data to select a grasp instead of relying on the intermediate pose data. Alternatively, some camera systems simply return the pose of parts in the bin.
Grasp Selection & Trajectory Planning — Pick a perceived object in the bin based on instructions from the supervisory logic. The manipulator chooses a valid grasp, picks the part, and plans a collision-free path to bring the objects to a designated placement area.
High-Level Supervisory Logic — A task scheduler that coordinates the different components. It tells the camera when to collect new data, instructs the planning component on what objects to pick and where to place them, and determines when to move the robot, and when to wait for further instruction.
Robot Control and Execution — The trajectory and any end effector instructions are sent to the robot or a robot simulator. This often requires translation into a compatible interface layer such as ROS or a robot-specific language, like UR Script. The robot executes the trajectory and gripper commands, and sensors in the environment return the observed behavior.
Build, Simulate, and Deploy Manipulator Applications with MathWorks Tools
With MathWorks® tools, you can build a complete system that contains these four elements. You can add your own algorithms where necessary, or simply use the system as a testbed for your own applications.
These examples provide a baseline for creating an intelligent bin picking system. They include all four components and use a suction gripper to pick PVC parts from a semi-structured environment. There are many more refined variants of bin picking that could be constructed, but the framework may be used as a baseline.
Product Examples
The product contains several examples for building manipulator applications. The Intelligent Bin Picking System in Simulink® example workflow consists of several examples that show how to solve the different steps of this problem and assemble them into a complete solution using a referenced model approach. Use these as a baseline or modify it by adding your own variations and algorithms by following these examples:
The example structure above is all simulated in Unreal Engine® using Simulink 3D Animation™. To learn how to deploy ROS-based solutions, see Simulink Based Intelligent Bin Picking Using Universal Robots UR5e for PVC Fittings.
Supporting Content
You can also download more variations of the intelligent bin picking system on File Exchange and Github:
References
[1] Tedrake, Russ. Robotic Manipulation: Perception, Planning, and Control. Course Notes for MIT 6.421, 2023, https://manipulation.mit.edu.