Smart Baxter

Not long ago, a computer program developed by Google DeepMind in London named AlphaGo beat human player Lee Sedol in Go. Inspired by intelligent programs like AlphaGo and Deep Blue, our group started to think about another challenging puzzle game – Rubik’s cube. The current world record solving 3*3*3 cube puzzle is held by Collin Burns with a time of 5.25 seconds. Can robot beat human in this game? That is what we are trying to find out in this project!

Along with Gongbo Yang, Lingyao Zhang, Shijie Gao and Bob Xu, I accomplished a project for the Baxter Robot to solve a Rubik's Cube. We hope this project serves as an initial step for future developers to develop more advanced systems to really challenge top human players. With this grand ambition in mind, we start by making Baxter mimic human motions. The project is divided into four modules for efficient development: Rubik's Cube algorithm, image processing, robot manipulation, overall testing and website demonstration.

 
 

We used image processing to acquire information of 6 faces and formulated them in to six 3 by 3 matrices. Through the algorithm PyCuber, we were able to quickly come up with a solution. The solution will be a specific step as to what faces to rotate and how many degrees to turn.

Image processing approach 1: Color Detection

Image processing approach 1: Color Detection

Image processing approach 2: Contour Extraction

Image processing approach 2: Contour Extraction

The robot manipulation process can break down to two steps.

Step One: Initial Check

Initial Check

We first place the cube in the Baxter's left gripper, through three consecutive motions, it can bring the cube up to the head camera for scanning the three faces that are not covered by the gripper. Then, it will send the processed images o the topic "/cube_image". Afterwards, we perform the hand changing process, the right gripper will use the AR tags on the cube to identify its position in order to grab it. Then, the right gripper will hold the cube and bring it in front of the camera for scanning the other three faces. By then, all faces of the Rubik's cube have been processed. 

 

 

Step two: Solve the Cube

Then we determine the order of these motions. First, Baxter needs to move its grippers to the cube's position, it can quickly determine all 6 faces' colors with only colors of two. At the same time, it can also decide which motions can be done using the left or right gripper. Finally, Baxter will be able to decide which face to rotate, whether it needs to change hand, as well as which primitive motion to use.

 

Final Demo