A robotics project that stacks dominoes in a staircase shape and knocks them down using a Doosan M0609 industrial robot arm.
Built with ROS 2 (Humble) and controlled via Python using precise motion planning, force control, and path compensation.
A robot arm picks and places dominoes in a staircase formation, then knocks them over.
- Stack dominoes automatically in a precise stair-step formation.
- Demonstrate realistic pick-and-place control using Doosan’s Python API.
- Integrate path planning with pose correction and motion execution.
- ROS 2 (Humble)
- Doosan Robot API (M0609)
- Python 3, NumPy
- tf_transformations
- Path Extract
- Force-based movement control
Input Image
↓
Draw Path
↓
Path Sampling
↓
Pose Transformation (XYZ + Yaw) & Interpolation(Beizer)
↓
Doosan Robot Motion Execution
source /opt/ros/humble/setup.bash
source ~/your_ws/install/setup.bashros2 launch draw_path draw_path.launch.py
ros2 run domino_move real_moveThis will command the robot to execute the full domino stacking and knocking sequence.
| Function | Description |
|---|---|
update_all_converted_poses_with_yaw_based_offset() |
Adjusts all poses using yaw-based offset logic |
apply_stair_pose_from_stack_logic() |
Adds Z-offset for stair-step stacking |
pick() / place() |
Executes pick-up and placement motions |
movel() |
Executes straight-line Cartesian motion |
- Stair-shaped stacking: center domino raised by 40mm, sides by 20mm
- Auto Z compensation based on index and total height
- Final domino is knocked over using speed or force control
- Real-time console logging for action feedback
- Add YOLO-based domino detection and pose estimation
- Integrate optimal path planning and reordering
- Provide Gazebo simulation support
For a detailed explanation of this project, please refer to the following document:
👉 F-1_협동1_한준모_배재성_김동호_김예신(중도 포기).pdf
This project demonstrates a simple Pick & Place system using the Doosan M0609 collaborative robot.
The robot picks up 4 gears from predefined positions and places them at corresponding target positions using optional force control for accurate placement.
ros2 run assignment move_gearThis project demonstrates a Pick & Place system using the Doosan M0609 collaborative robot.
The robot detects the Z-contact point of each block using force sensing, and then sorts the blocks into columns based on height.
- Input: 3x3 block grid
- Output: Sorted into 3 columns based on contact height (
z)
IMG_7076.mov
ros2 run assignment move_blockThis project demonstrates a Pick & Place system using the Doosan M0609 collaborative robot. The robot picks up LEGO blocks using force sensing to detect contact, then places them precisely onto a target board to rebuild a structure.
Input: Randomly placed LEGO blocks on a base plate
Output: Rearranged and attached to a new location based on predefined layout
IMG_7683.mov
ros2 run assignment move_legoScreencast.from.06-18-2025.12_43_21.PM.webm
ros2 run assignment move_objectThanks to these wonderful people who have contributed to this project:
![]() weedmo |
![]() jsbae-RL |
![]() DONGHO1206 |

