Team Cyberchondriac – Pi Wars 2015
If you’re here and reading this, it is exceptionally likely that you already know about Pi Wars.
If you don’t – go here now Pi Wars (Or not a lot of what follows will make much sense)
This is more of an introduction to the bot as it’s now a bit late for running updates. It was always the intention but life gets in the way. I am currently studying full time for an MSc in Computer Science, sadly I wasn’t able to make building the bot part of the course!
I found out in August that I’d been selected to take part in Pi Wars 2015. Yippee I thought, no problemo as I had recently completed the build of my first ever rover type bot which I christened ‘Coder-Bot’ as it used the Google Coder IDE. I then read the requirements for the Pi Wars challenges and realised what I had was a looooooong way short of what would be required to compete effectively.
Additionally the Coder-Bot code was not exclusively written by me and for a competition where the code will be judged, I saw this as cheating a little so wanted to write everything from scratch.
Let the planning commence…
One challenge I set myself with the bot was that *nothing* should be bought at all wherever possible. So, the main chassis is simply 2 recycled boxes and everything else is made from recycled bits of junk / wire / tubing and stripboard.
One end is a project box that is now on it’s nth incarnation. The other is an old electrical box. Just to further complicate matters I decided to add rudimentary suspension by linking the two boxes with a rotating joint so the two sides are articulated. You can see an early, botched attempt at getting this to work in the photo below.
(later version was significantly more successful)
I also did not want to buy any motors or controller boards – after all, how hard can it be?
Um… Very. Trying to find 4 matching scrap motors with enough juice to drive anything turned out to be hoping a little too much. I therefore relented and purchased 4 ‘proper’ geared motors from Pololu. They are fantastically torquey but this does mean they are not particularly fast (I don’t think I’ll be winning any speed competitions! But at least they are all the same speed and they do match.
Also it means there’s none of yer fancy pants controller libraries and such niceties, just a whole lotta GPIO mangling & wrangling!
This is my first real foray into physical computing and I wanted to learn and build as much as possible. I spent many evenings researching and learning about motor control, PWM, dual H-bridges etc etc etc…. And eventually I ended up building a 2 way H bridge from 4 relays. This is built on stripboard and gives bi-directional control of 4 motors from 4 GPIO pins which is perfect for this type of rover. Having never really soldered before, I don’t think I be winning any build quality trophies but at least I can say it’s all my own work (whether that is a good thing in the long run remains to be seen)
I wrote the basic control system in Python, using PyGame to add very simple manual keyboard controls for driving. This works very well with no lag and means I don’t need wifi to run on the day.
Then I started to look at the autonomous challenges and started counting the GPIO pins that would be required for all the sensors and widgets. I was using a Pi Model B and it was looking likely that I was going to be several pins short of a robot picnic. So – new toys time, I broke the ‘don’t spend anything rule’ for a second time and splashed out on a shiny new Pi 2. Much excitement. Many pins.
Except the number of pins I needed to use and specifically the change in location of the power socket on the Pi 2 meant the current housing was no longer going to be large enough so a change was required.
Having realised I was going to need to increase the size to hold everything I found an electrical box that fits everything nice and snugly without being too much of a squish.
(Loads of space – woohoo! – notice the shiny new centre joint too)
The centre joint is made from 2 tightly fitting tubes, one fixed to either box so that they can rotate freely. There is then also an internal overlapped piece to prevent the two from separating.
Once I had the new box and joint in place with all the wires routed nicely through I could then mount the new Pi in place.
Let’s get some new wheels, baby.
I wanted big. I wanted funky. And fortunately I joined the amazing Cheltenham Hackspace in June this year. Whilst they don’t (yet!) have a laser cutter – (I’m looking at *you* AverageMan) in July they were just finishing putting the final touches to the 3D printer they had built. So, I joined the queue to have a play. I learned a little OpenSCAD a long the way – a really cool open source tool for designing stuff for 3D printing. It’s almost language based and you use script commands to build cool and interesting stuff.
(the first wheel takes shape)
(and here’s the first two wheels with some nice tyres all ready to go)
It was then time to look specifically at some of the challenges and work out exactly what was required.
Line Following – Autonomous.
Mark C. at Astro Designs designed these lovely little sensor boards which he was using for his Dalek-Pi (see @Dalek_Pi on Twitter) He graciously not only donated 3 for my bot, he also gave me a brilliant lesson in line following logic.
(the sensors, all lined up and ready to.. um, sense)
And now for the bit that actually makes it all work…..
(Eek – nope, not a Scooby-do. At least not to start off with. Thanks Mark.)
George Boole has a lot to answer for in my book! – but hey, none of this would be possible without him.
I built a removable mount for the sensor array so it can be tucked safely inside the chassis for the other challenges. I think the obstacle course may well be a bit much for it, and it is *very* close to the ground for best effect.
Am really quite pleased with the results!….
So – we have a bot, that can be manually controlled and that can follow lines autonomously. Tick two. Then I started to look at the skittles challenge and got excited, started coming up with some fairly ambitious designs that would allow me to propel a ball the required distance to actually knock something over. And then disaster struck. But that’s a story for the next post.
Next Time!! – Big Weapons!! – Big Disaster!!