The raspberry pi is running a simple python webserver using flask that sends commands over the i2c bus to the arduino and its motor controller which are programmed as i2c slaves. This is accomplished using a bi-directional logic level converter to account for the raspberry pi's 3.3v logic and the arduino's 5v logic.
The arduino and its motor controller handle the 4 DC motors that power the wheels and also the 2 servos which control the position of the webcam.
There are 2 power sources. The first is a 10,000 mAh external cellphone battery charger that has 2 USB ports, perfect for simultaneously powering the raspi and the arduino. The second is a battery box that holds 4 x AA batteries that is used to power the electric motors.
The robot is also equipped with a range sensor and has some basic obstacle detection and avoidance subroutines. I plan on working in this area much further.
All of the programming was done through trial and error, piece by piece starting at the basics (i2c communication, motor control, etc) and then eventually putting everything together.
There is also an RGB LED wired to the raspi which strobes between colors using PWM, because its awesome.
My ultimate goal is to hook up a metal detector and a GPS chip so I can map out treasure! It's looking like I'm going to need some serious motor and wheel upgrades if I ever want to drive this guy outside.
Nice mate! Good job!
I'd like to check the code so that I can improve my actual project. Is the source code available?