Okay, what does a JudgeTron need? My idea was to use neural networks embedded in biological units to do the whole judging thing. These biological units unfortunately don't have native electrical interfaces: I couldn't just put a RJ45 into them and have them judge everything for me. I would need to have some input and output, and some processing power to control everything.
Because this is Hackaday, I decided on the most used and/or most hated-on things I could think of, so I ordered an Arduino and a Raspberry Pi. From the junk drawer, I also grabbed a composite LCD and a touchscreen. The LCD works at 12V and the JudgeTron needs to be portable, so I was planning to feed the thing off two 6V SLA-batteries in series. The Arduino and Raspberry Pi needed 5V, so a small buck-converter PCB was used to generate that voltage.
I would also need the touchscreen to work. I could come up with a dedicated touchscreen controller to connect everything to the Raspberry Pi, but the touchscreen is resistive and the Arduino has some AD-channels so I could just as easily use that as a touchscreen controller thingamajig. The touchscreen I had had an un-solderable carbon FPC-cable I didn't have a suitable mating connector for, but hey, we're hacking here:
So now I had the output and input fixed. I also need positive feedback for the biological voting units' neural networks, though.
Because judging for the Hackaday Prize isn't something the biological units I intend to use do naturally, I had to build in some positive feedback. Like most evolved biological things, the neural networks here are pretty optimized to sustaining themselves and getting the energy to do that has a high priority. I decided to make something to use that, so I needed to make a device that could be triggered electronically and would output food.
I nowadays have a lasercutter, so I decided to build something using that. (If you want, you can nab the svg for your own use.)
I also would need propulsion. For that, I decided to modify a miniature servo to continuous rotation mode. That way, it's basically a nice little geared DC-motor of which you can control the speed and direction by the PWM pulses you send it.
Modifying a servo in this fashion basically means getting rid of the end stops, ripping out the potmeter connected to the main axis and replacing it by two fixed resistors. You can find pretty nice tutorials online if you want to do this yourself.
Meanwhile, the design is cut using the lasercutter. This is the first revision, I modified the spoked wheel thing that moves the feed later on.
And this is the assembled end result, after all layers are glued together. Feed goes into the reservoir (which I made a bit higher later on), gets scooped up by the wheel thing and falls out of the (nearly invisible in this picture) hole at the bottom of the front bit.
I also found a cheap plastic housing thing for the JudgeTron, and the food dispenser was the first thing to go in:
The whole thing is supported by a bit of wood, with a slot in it so the feed falls out on the outside of the box.
So I now had input, output and a feedback mechanism. All I needed now is some software and a case.
The case was pretty easy: I took a cheap box from my local shop and cut off the upper half. A bit of acrylic glass with a hole in it for the touchscreen would do as the top cover.
For the software, the first thing I did was write a quick-and-dirty ripper using wget. It basically crawled the list of submissions for the prize. The crawler would then rip the page for each submission and take out the images to show on the LCD. It would also parse the text in the page: the intended biological units unfortunately can't be taught all the details of the contest. Instead, the parser checks the text using a proprietary and very secret algorithm and converts it into a score. Normally, I would open-source the software, but in this case I'll keep it secret because... errm... you may be able to game the system if you know the algorithm. Yes, that's the reason. The fact that the code quality is abysmal has absolutely nothing to do with it.
On the Raspberry Pi, a random image for each project is shown in succession. Meanwhile, the previously calculated score is converted to a count of animated objects, making the image on the LCD more attractive to the biological units. The idea is that the combined image plus the attraction-raising animated objects will lower the threshold value for the neural feedback nets to actually judge positively on the project. That is measured using the touchscreen: as soon as the bio-unit touchs the screen, a tally for the project that is shown is increased.
I also needed to handle the feedback. The algorithm for that isn't very hard: as soon as a judgement is made, the Arduino turns on the feeder motor and the biological unit will be rewarded by some food.
As you can see in this short video, at least the electrical and mechanical parts work fine:
Now to add the biological part into the equation.
(If this is the last bit of text you see, it's because Hackaday.io only shows 3 instructions by default. Click on 'see all instructions' to continue.)
Ofcourse, I now needed to see if the interfacing with the biological units worked. Here's a nice picture of the biological units that embed the neural networks that will be doing the judging. Google seemed to have good success by using pigeons, so I decided a different type of bird would also work. Here are the test specimens:
Unfortunately, the interfacing between the JudgeTron 9001 and the neural networks didn't completely go as planned. The chickens mostly ignored the JudgeTron:
One of the chickens actually managed to peck at the touchscreen once (ofcourse at a moment I didn't have a camera pointed at it) and the feeder motor scared it away. Since then the birds, wary of the noise, didn't touch it anymore.
So, unfortunately, I have to conclude the JudgeTron 9001 is a failure and I'll have to do the judging myself after all. The idea of using neural nets to do it for me is a nice idea, but in this implementation the biological units they are embedded in were just too... chicken.