When a visitor to our site requests to control Sid our Node.js server adds them to the queue. When it's their turn they send movement commands and receive feedback in realtime using socket.io. These commands are relayed from Node.js to the Rapsberry Pi in our office. The Pi uses Python to send movement commands to the robots motors. A webcam also connected to the Pi transmits the action to a dedicated webcam Nginx server which plays it back to everyone's browser with under a second delay. When the robot drops a ball into a hole, it presses on one of 8 push switches under the stage area that lets Node.js and everyone know about the new score.