Some of the Java solutions are actually quite nice, but some are solving problems that shouldn't be there. Apparently that does not make the solution bad, but not seeing the problem initially is the root of evil. In this post I do not want to go into software details, mainly because I am no Java (community) expert. Instead I want to discuss a hardware project created by some people at TNG.
The project itself is actually a nice demonstration of their capabilities. These guys had a vision and realized it with "simple" tools. In just a few days they had a full panorama cam. There are actually others who (more or less professionally) tried to achieve the same. The closest one to their prototype is the panocam. It features 12 full HD cameras.
So what's wrong with their project? Well, more than half of their presentation has been spent on solving problems that shouldn't have existed. These problems have been:
- Power consumption
Their panorama cam had a total price tag of 1500 €. That's far too much. Why? They are using 1 Raspberry Pi for every camera (Raspberry Pi camera)!. Wow. So one needs 12 SD cards, 12 Wifi USB dongles, 12 power supply cable and of course 12 Raspberry Pi cameras + the Raspberry Pis. That's quite some load. Also those are additional ~30 W.
My solution? Well, just consider buying 12 USB cameras. They can be connected to their "main computing center" inside their cube, which is the Odroid U3. Even though the Odroid only has 3 USB slots, there is technology (maybe this sounds too ancient) called USB hub. No problem for 12 USB cameras. If this might become a problem with the power consumption for the Odroid, then an active hub could be bought. This would also fit to their power strategy.
I proposed this simplified architecture after the talk. The first reaction was: "We don't know any technology to connect 12 USB cameras to an Odroid U3!". I could just say: "USB hub?". Then they tried to justify their solution by latency. My only response their was to remind them that Wifi does not have perfect latency and one has a device (the router) in the middle, operating at a lower speed. The latency will be in the order of milliseconds for sure. As the Odroid is quite powerful in IO, I strongly believe that the latency for sending the command to all twelve USB ports will be in the order of microseconds. It will be at least as fast as the Wifi way. Additionally one does not require a Wifi router.
So this solution has a much lower power consumption, much less weight, does not require Wifi or any special provisioning as their is just one system (instead of one + 12, which must be equal).
What's the point of the whole story? Of course we got all those cool gadgets (like the RasPi), but do we have to use them? Sometimes it is more expensive, harder to use and will actually induce new problems instead of solving the old one. The art of engineering is not mastering the most complex solution, but finding the simplest. No one wins a medal by having the most complex solution, which ends up being worse than the simplest.