Pi Wars: Post Mortem

Pi Wars happened! It’s over! I can start doing something else with my life!

I had an awesome time at Pi Wars today and yesterday, with Mini Mouse performing pretty solid attempts at all of the challenges. I ran into a few hiccups on some challenges, but far outperformed my expectations on others.

Overall, I placed 3rd in my category, and am really happy to have been awarded first place for this blog, and Artistic Merit (for being “beautiful on both the inside and the outside” - thanks Rachel :-)

Trophy

Happy

So, how did the challenges go? (In chronological order)

Update: My Mum made a montage of her footage of the various challenges. Thanks Mum!

Pi Noon

My first challenge in the morning was Pi Noon, against Nenemeni. We started out exchanging blows, each popping a balloon or two, and Nenemeni suffering a short break-down. I was absolutely terrified about Mini Mouse getting damaged by the much bigger robot - but my opponent was kind, and eventually won with one balloon left (I started with 3, and them 4, due to the new “handicap” system).

Thus ended my Pi Noon career - nul points!

Blast Off

The second challenge of the day was the Blast Off speed test. Mini Mouse was actually too low down to break the timing laser beam - so I had to fashion a “flag” attached to the Pi Noon holder to make sure my runs were registered.

My first run was pretty good, clocking in around 13 seconds. I tempted fate and tried boosting the speed for the second run - which failed, and I wasted a lot of time not really realising I should intervene and take the “rescue” penalty. That run was ~40 seconds.

For the third run, I went back to the previous settings, and got another 12-13 second run. Overall, that netted me second place (in the Pros category) for the event.

What was particularly interesting about Blast Off, is that (from what I remember) the best time in both Beginners and Intermediates categories were faster than what the Pros managed; so congratulations to those folks!

Spirit of Curiosity

After the line following, I headed to the rocky moonscape of Spirit of Curiosity. This was the remote-controlled challenge I was dreading the most - Mini Mouse just isn’t built for off-roading.

Tim (@Geeky_Tim) had done an absolutely incredible job at crafting a “lunar landscape” out of (I think?) chicken wire and plaster.

Spirit of Curiosity course

I decided I was going to avoid the “valleys” entirely, and picked a route right around the border of the course. I managed to retrieve 3 “samples”, nearly getting a fourth, but dropping it around two-thirds of the way back to the collection point.

Honestly, this went a lot better than expected. When running in my “normal gear”, the motors were regularly stalling, but in “slow gear” it crawled along slowly but pretty well.

“Judging”

Next I went for judging (managed to get in ahead of the rush!). Jim (@MathsWithJim) was tasked with picking out the most “Spaced Out/Space Age” robot, Rachel (@konichiwakitty) with choosing the prize for Artistic Merit, and Dr. Lucy Rogers (@DrLucyRogers) was in charge of Technical Merit.

I had a brief chat with all three judges, discussing the details of Mini Mouse. Rachel liked it enough that she awarded me first place in the Artistic Merit category, and I got a mention from Dr. Rogers for building within self-constrained goals. Thank you!!

Hubble: A bittersweet “victory”

Of all my autonomous challenges, Hubble was the one that was most reliable, and overall “best”. On the day, it didn’t disappoint: I put in three flawless runs. The first, which includes scanning the corners, was ~12 seconds, and the subsequent two, driving the memorised route, were ~9 seconds each.

Sadly, an error on the mark sheet (the judge didn’t tick “green” on any of my four runs), means that I missed out on ~250 points and the 1st place spot in this challenge (the next fastest run from Wall-E Bishop’s Stortford was 15 seconds).

I’m as much to blame for this as the judge: All of the mark sheets this year had a box for the competitor to sign that they were happy - and I was so psyched after the runs that I only checked the time boxes, and didn’t even think to check that the colour boxes were correct.

So, let that be a lesson to all future competitors: Actually check your score sheets, carefully, before you sign them!

Canyons of Mars

The Canyons of Mars had me pretty worried on the autonomous front. It’s just a long course, with a lot of potential for disaster. The floor was made of lots of chipboard tongue-and-groove boards, which left a lot of gaps - which proved to be fatal for two reasons.

My first run, the robot got confused on the last straight, thinking that a particularly bumpy gap in the floor was a wall. The code does have some checks to try and ignore lines on the floor, but they were clearly ineffective here.

I used a “rescue” - but I never implemented the ability to “pick up” in the middle of a run, so I just set it going again as it it was the start of a new run. As a result, it dutifully ran to the wall, turned Left, Left, Right, Right, Left, Left and Right (the “full course”) - sending it off on a fun little detour, but eventually exiting the maze.

On the second run, a bump in the floor very near the start stalled one of the motors - sending the robot veering to the side. I can’t detect motor stalls, so this ended up causing the robot to hit the wall later in the course. As it happens, it was probably fortuitous, because it changed the path enough that the pitfall of the first run was avoided. So, not a “clean” run, but I think I didn’t use a rescue.

On the third run, the same thing happened, but I abandoned the run as unrecoverable.

At the time, the motor stall issue looked like the orientation sensor was getting confused - but on a bit more investigation I’m fairly sure it was motors stalling. If I had run at a lower speed setting, where I have more torque, I probably would have made it through.

Space Invaders

For Space Invaders, the LEGO darts did OK. On my first run, I got 5 targets with 5 shots (with a slight intermission as one target was broken).

The other two, I think I got 3 targets down. I hit several which didn’t fall (and so didn’t count) - so the LEGO darts were a little underpowered. I also had one dart which went wild and flew over the target entirely.

All-in-all, this one went about as I was expecting.

Obstacle Course

Mini Mouse really outperformed my expectations on the obstacle course (and a few other people’s too, I think). I was a bit worried about having the strength to push the buttons at the start, but driving into them at full speed with the scoop raised was (mostly) effective.

I could skirt around some obstacles - and avoided the laser tripwire on the Conveyor Belt of Doom (Black Hole) entirely.

As expected, moving the boxes was a challenge - but persevering with repeated ramming worked in the end.

I posted a full three runs, with pretty respectable times of between 1:25 to 1:40 (I believe the fastest of the day was around 40 seconds).

Conclusion

I really had a great time with the whole Pi Wars experience. This was the first time I’ve entered a robot of my own design, and I’m really pleased with how it turned out. It’s a shame about the hiccup with Hubble, but it can’t be helped now, and at least I have the videos showing that it worked :-)

The standard of the robots goes up every year, and the overall winners of the Pros category - Team PiDrogen - absolutely deserved it. Their machine was amazingly capable, and I was particularly impressed by the driving skills and overall controllability shown by their runs through the obstacle course. Great job!

I expect I’ll take a break from robots for a while; I want to take the stepper driver code from Mini Mouse, and see if I can port GRBL or Marlin to run on top if it. This would let you use a Pi as the main controller for a CNC machine or 3D printer - which I think would be pretty cool.

Thanks to everyone who gave their support at the weekend, and well done to everyone who had a robot which moved! It was great to meet people in person, and to geek out over the nuances of lithium battery management and motor torques. Hopefully the Discord server stays alive so we can keep getting our Pi-based freak on :-)