Product Design Engineer
IMG_20190312_162040.jpg

Domino Playing Robot

I led a team of seven in the coding of a robotic arm, the Franka Panda. The environment was first simulated in Gazebo and programmed using ROS, before being transferred to the robot arm itself and executed.

 
 

The Brief

“First you need to successfully perform you project task in simulation. The gateway is when your simulation will be inspected and if there are any issues with it, you will be asked to improve it. Once you’ve successfully passed the Gateway, you will be allowed to attempt running your task on the physical robot.”

 

The project

The selected project was to pick up and stack a set of “dominoes” (in reality light-weight foam bricks), and then to knock them over. This was selected as it required a significant degree of precision and dexterity in the coding of the robot arm, to ensure the dominoes weren’t knocked over too early - and because the idea was fun.

 

My Contribution

I led the coding of the arm, both in the simulation and for the physical robot. I also helped to direct the team with the other tasks that needed doing, such as researching the best domino arrangement, the mathematical calculations for the domino positions, documentation, and the creation of the video.

 

The Coding

The robot was first simulated using a Linux virtual machine and ROS, with the simulation itself through Gazebo. We decided to pre-calculate all the required joint angles using inverse kinematics, as we knew what positions we wanted the robot arm in and when. To help with redundancy, sometimes some the joints were locked at a specific angle. Another program was then written essentially with a list of joint angles for the robot to cycle through.

 

The Simulation

There was a long iteration and re-iteration process, firstly to get the simulation to work as desired with accurate physics and the bricks spawning where they were desired, etc., and then to find the best way to program the robot. Eventually, we were able to simulate the robot in a satisfactory way, as seen above.

 

The Physical Robot

Once successfully simulated, the next challenge was to convert the code to be compatible with the robot arm itself. As most of the calculations were pre-calculated though, this proved a much simpler task.