We built Suzie last year as rather a rushed project, she was made almost entirely out of Lego Mindstorms and was thus very limited. We programed it in a language called Not Quite C (NQC) which, as the name suggests is based on C syntax and was thus very familiar to us. Oh and as for the name, the story goes like this: Kier said: "We should, like, call it Suzie" and that was pretty much it. She even went to for-fun science fair with our local homeschool group (we are/were all homeschooled), for that fair I prepared this document:
Andrew Cobb, Jonathon Cobb, Keir Egger, John McDonald
Built to compete at the annual Western Canadian Robot Games (WCRG), the extinguisher robot Suzie is made entirely out of Lego! (Except for little bit of cereal box cardboard).
The extinguisher contest is designed to simulate a real-world scenario where robots could be used to fight fires in warehouses etc. and possibly even homes. In the contest a robot has to find it's way around a "Warehouse" (a simple, predefined, maze) and extinguish a "Fire" (candle), the speediest robot is the winner. Consisting of four different rooms the WCRG maze is a little more complex than our modest maze, but it still demonstrates our 'bots wall hugging abilities nicely.
A special programmable Lego block called an RCX provides the brain for Suzie. The RCX has three outputs - we use two for drive motors and one for a fan - and three inputs, which we use for: a sensor on the front, to detect walls; a sensor on the side for wall hugging and a light sensor to detect the candle. While the RCX does come with its own programming language; it's intended for beginners and we chose to use Not Quite C (NQC), which is a lot more powerful and flexible. When the program is run it branches off into three different tasks which all run simultaneously . The first task is for navigating the maze, there are two main techniques used: wall hugging and dead reckoning. Wall hugging (technically "Contour Tracing") is simply following the wall around the maze. Most mazes can be solved by wall hugging. The problem with wall hugging is that it's a particularly slow way of solving a maze. Dead reckoning is achieved by keeping track of how much you've moved and computing your position from that data. The problem with dead reckoning is that since the Lego motors don't provide any feedback, it's impossible to tell exactly how much you've moved, however you can still make reasonably accurate guesses. For this demonstration were just wall hugging but for the games we're thinking of using a combination. The next task is for detecting a candle. We first take a light reading; if the value is near to the average light value then we just compute a new average based on our new data. If, however, we get an unusually high light value (20% over the average) then it looks like we've found the candle! Just to be sure it is the candle and not some brief flash like a camera etc. we take 10 more light readings before were convinced. If we have, in fact, found the candle then we start blowing that fan! The final task is for playing the tune while it's driving. The only complication is that the tune must be entered in "Play 370hz for 250ms" rather than the simpler "Play F# for one quarter beat".
This robot is still virtual, Were planning on using:
Tamya Motor Gearboxes
Freebie motors we got as doorprizes @ WCRS mtg.
Winshield Washer Pump (water, not antifreeze :)
|SPLIT 4 WAYS
|SPLIT 4 WAYS