A great source of ideas and knowledge are the blogs written by previous entrants (check out the Pi Wars 2018 blogs or others on the 'past years' pages of the PiWars.org website). There were a few rather different entries, many of which really struggled in the challenges. But it was these that I enjoyed watching the most. Some tracked tank like designs worked well and one omni-wheeled robot had some awesome moves.
I am not so much motivated to try to win the competition, as to entertain and inspire. Sure I want to design something that performs well, but not at the expense of individuality. So I came away from the 2018 competition thinking it would be cool to enter something completely different. I had always liked the idea of building a 2 wheeled balancing robot, so my plan was to try and build one capable enough to tackle the challenges at Pi Wars. It turned out I was not alone!
So the learning phase begins. Here are some of the questions I have at the start:
- What sort of motors are needed for a balancing robot?
- How do you use an accelerometer sensor?
- How do you control a pair of motors using the tilt sensor data to keep it balanced?
- How do you get a balancing robot to move forwards and backwards while the motors are being driven to keep it balanced upright?
- How big can a 2 wheeled balancing robot be and still qualify for the Pi Wars rules of maximum size?
- Is this idea completely mad?
I decided to start experimenting with the parts I already had in my boxes of bits I've bought already for robot projects in general. A pair of motors from PiBorg, a SparkFun 9dof sensor breakout board, and some AdaFruit 3.6A motor driver breakout boards. It seems like a good idea to use a dedicated processor to handle the sensor reading, balancing and motor driving aspect of things. I don't want the robot falling over every time the Raspberry Pi is busy doing something else when I start looking at image sensing and autonomous driving challenges. So I started with an Arduino board to attempt to build my first prototype.
This added a couple more questions to my list of things I needed to learn:
- How do you program an Arduino?
- How do you communicate between an Arduino and a Raspberry Pi?
This is going to be a very educational journey!