Robotic Clock

Using a robot to change the display of a clock.

The aim of this project was to program a robot to automatically perform a function using foam bricks. My group decided to set the task of changing a digital clock display once every minute.

The python code was based off the Baxter RSDK Inverse Kinematics Pick and Place and uses the IKFast solver for inverse kinematics. The work-space was modelled in simulation to test codes without the risk of damage to the robot.

Skills learnt: Basics of robotic control, Simulation of robot operation, python-based robotic control, automation, multi-threading.

My team mates setting up the robot for our first test.

The robot itself is a heavily modified Baxter robot. It has been equipped with a motorized moving unit, and a huge suit of sensors. We controlled it using a laptop mounted to the back running our python code.

Testing the program without the table to check for collisions.

Simulation of the robot running on a virtual machine.

A major challenge was generating a dynamic path for every digit change. We had to create a code that could find the optimal path to change the number as efficiently as possible. We also needed to be sure the robot knew how many bricks were stored in the storage area. The speed of the robot arms were kept low so these optimizations were necessary in order to make complex time changes such as 23:59 to 00:00.

Another challenge was implementing multithreading so that both arms could operate at once. It required careful implementation of shared variables and the consideration of processing time.

Careful setup is required to establish the initial position of the bricks. We created a setup procedure to make it easy to align the bricks and programmed them it to have a relative position to the robot.

We presented the problem, the code and demonstrated operation in front of a panel of judges. We had successfully achieved the objectives and the code was well structured but we were recommended to split the code into smaller files.