Because it is the 'hello world!' of modern robotics.
|Arduino Nano||EBay||Lightweight, 5V tolerant, easy to program, cheap as silicon chips, and no tears when clumsy roboticists fry them|
|Bluetooth receiver||EBay||If you want to control it remotely from the PC or a phone|
|BNO055 or LSM9DS0||EBay||IMU which does the orientation calculation on-chip. I actually prefer the LSM9DS0.|
|Stepper Motors||EBay||An odd choice for this kind of robot|
|Stepper Motor Controllers||Aliexpress||The ZD-M42s work well with an Arduino, but will not work well with a 3V3 source like a Raspberry Pi.|
|Robot Wheels||EBay||These wheels are designed for a RC model car. There are many types of fittings. They have to fit onto the shaft of the steppers - an adaptor might be needed.|
|Aluminium Bar||Bunnings||Easy to bend, drill and fashion - for the frame.|
|Mini Caster.||Bunnings||These are just for the training wheels. Actually you don't even need the wheels on the ends of the ruler - just a ruler to stop the robot falling over. Maybe some soft buffers or something.|
|7.4 Li-ion battery||EBay or local hobby shop||Should try out an 11.1V one of these.|
There really isn't much software to make this go. This is a pretty simple program.
Unfortunately, it's kind of tricky to do the timing on an Arduino to do this well - reliably pulsing a stepper motor controller faster than 1ms is a bit messy on the Arduino when you want to do other things along the way (like interrogate the IMU via I2C). DC motors would seem to be a better match for this, but the torque seems to be unpredictable.