Shaky uses python and ROS to handle the logic of the program. The values from the Arduino are read using the pyserial python library. The control algorithm consists of two modes: picking behavior and following a wall. In the picking behavior mode the robot decides which action to take given all the different combinations of walls. For example: turn around if in a dead end, turn out of a corner, drive straight if no walls are detected, and choosing a wall to follow. Wall following mode consists of keeping the correct distance with a wall and switching back if obstacles are detected.