You may recall me mentioning the new serial camera interface library I wrote for the Swarthmore Vision Module (SVM). I’ve been having a lot of trouble getting it to work. The unusual part was that I had had it functional at one point, and on top of that, my test program that runs on the robot and interfaces with the camera directly has been working as expected.
The problem only got worse when SVM started giving zero pan/tilt/zoom values to my interface. I had no idea what was going on, until on a whim I renamed the configuration file. At some point, the config file was switched from camera1.conf to camera0.conf. I probably did it due to anal retentiveness, or in an attempt to debug something else. As soon as I switched it back, everything worked.
I spent close to 12 hours of the last 3 days trying to debug this. And it was all because the name of the SVM configuration files has some bearing on how the module starts up.
SVM is a great program, and is very powerful. It can do a lot of things, and it does them well. Unfortunately, it is also suffering from massive program bloat. It has been developed over several years, largely by Bruce, but with lots of other contributors. It has a lot of code that is no longer in use, but which is still in the module. A lot of the code for it was written in crunch situations, like at conferences, so while it works, it consists of lots of last-minute hacks. The end result is a program that is very difficult to expand, and very difficult to debug.
I don’t plan on working on it for a while, if I can help it.