NRC Maze 2017
Videos are on our YouTube channel!
We chose to use omni-wheels because this would eliminate our need to turn our chassis 90 degrees at every turn. We built the chassis out of ¼" plywood. This was a good choice, as it was light and easy to work with. We designed it in SolidWorks® and laser-cut the parts. There was maybe 0.05-0.10 mm of play in the joints, but after we glued it up with PVA wood glue, this didn’t seem to be a problem.
We chose to use 8 ultrasound sensors (HC-SR04). We decided to use 8 because this would give our robot enough information to be able to keep parallel to the walls. We built a custom circuit to gather sensor data (more on this below).
HC-SR04’s are cheap -- we got them for $1.12 each. The alternative would be some type of infrared sensors, which tend to give unpredictable values when their beam doesn’t bounce off of something within range. For the onboard microcontroller, we chose to use an Arduino Mega because it has 8 Analog to Digital Converters (ADC’s). The Arduino Uno has only 6.
The operation of our circuit relies on 8 op-amps used as voltage buffers, 8 capacitors, and two (2) 4-input NOR-gates. The sensors are operated in two groups, in the following sequence. Group A is triggered, which causes the sensors to send out their ultrasonic pulses and begin waiting for a response. The processor checks in each loop for a positive logic signal from the NOR gate, which would indicate that all sensors have received a signal. Upon seeing a positive logic signal, it samples the output of the op-amp buffers for that group, then discharges the capacitors. This process always seems to take around 60 ms to complete. The process is then repeated for group B. Hence, updated sensor values can be guaranteed once every 0.12 seconds. By extension, the oldest a value can be is ~0.12 seconds. This seemed to be adaquate for our purposes.
If we triggered and sampled all 8 at once, there would be interference between the sensors and we may never get accurate data.
The function of the NOR gate is to monitor the storage capacitors. When all 4 sensors in the group have given a response pulse, the circuit gives a positive logic signal.
The circuit required more power than we expected. On the first test, we burned out the arduino’s built-in voltage regulator (rated for 800 mA) and had to add a beefier one so we could power everything.
The software was a big part of this project. You can find code on the github repo for the project.
Most robots, including Sunny, did not complete the maze. In our case, it was due to difficulties going up the ramp. It seemed that a competitive time was around 25 to 30 seconds. Videos of Sunny can be found on our youtube channel.