Q-Bert

Technologies used in WebIOPi Remote

Technologies used in Minecraft Remote

Project worked on Summer 2014

At age 16

About 1 day to build the vehicle, about 1 month to program.

Description

Q-Bert the Robot is a vehicle that can be controlled with a Minecraft game and from a web page.


Why I Built It

I built this vehicle from a kit, but then I wanted to get creative with ways of controlling it.


Technical Details

On the Raspberry Pi on Q-Bert

Mounted on Q-Bert is a Raspberry Pi computer that communicates with the controlling devices over Wi-Fi. On the Pi, two programs are running. They both translate incoming messages into on and off motor control requests, that result in the user being able to drive Q-Bert. The Motor Controller accepts motor control requests from the two programs on the Pi.

There is a Python script that interprets messages from a different Raspberry Pi that is running Minecraft. It then controls the motors based on the messages it receives.

There is also the WebIOPi program that is a web server that allows the motors to be controlled via javascript. A client that has the web page open can press html buttons on the page that cause the robot to move.

The Minecraft Control Method

On a separate Raspberry Pi computer (right side of third picture, connected to monitor), a small version of the Minecraft game is installed. Another Python Script is also installed on this Pi that uses an available Minecraft API to detect the movement of the player in the game. This Python Script communicates with the Python Script on Q-Bert through a Sockets connection to tell Q-Bert how to move.

The Web Page Control Method

Any device with a web browser on the same network as Q-Bert can control it by loading the web page Q-Bert is hosting. When the controls on the web page are pressed, messages are sent back to the WebIOPi program on Q-Bert that instructs it how to move.


What I Learned

  • Socket communication

  • Controlling motors on a Raspberry Pi

  • Using WebIOPi

  • Minecraft API

  • Web apps don't make good real time remotes


The Project's Story