Domino Hands is a fully autonomous robot system that detects, picks up, and precisely places dominoes into configurable patterns using a Franka Emika robot arm. The project was developed as a final project at Northwestern University's MSR program by Gregory Aiosa, Daniel Augustin, Michael Jenz, and Chenyu Zhu.
The vision pipeline identifies both the position and orientation of dominoes to generate actionable TF frames. Position is determined using color filtering and depth data to compute 3D coordinates. Orientation uses OpenCV bounding boxes to extract the yaw (z-axis rotation) and convert it to a quaternion.
To avoid collisions between the bulky Franka Emika gripper and dense domino patterns, a three-stage manipulation pipeline was used:
To compensate for uneven workspace surfaces, a force-feedback loop monitors Joint 2 effort on the Franka. The robot moves in 1mm increments — if the effort threshold is exceeded, contact is confirmed. Collision objects in the MoveIt planning scene are dynamically added/removed during this phase to prevent planning errors.
# 1. Launch the system
ros2 launch place_dominoes domino.launch.xml open_cv:=true demo:=false pattern:=straight_line.yaml
# 2. Trigger placement
ros2 service call /place_dominoes std_srvs/srv/Empty
# 3. Topple
ros2 service call /topple_dominoes std_srvs/srv/Empty