I’ve been interested in robotics for years but never really stuck with it because the programming environments were so foreign to what I was used to. I’ve been programming for PCs since 1990, so maybe my over-familiarity with PC programming worked against me
when programming for robots. However, things changed when I stumbled across the Arduino a few years ago; I found a very inexpensive platform that was pretty easy to program for.
The honeymoon lasted a few months at most. While it was easy to program for the Arduino, the Arduino IDE was a bit clunky. The CPU on the Arduino is extremely powerful considering how little it costs, but it’s not an Intel Core2 Quad either, so it doesn’t really
compare to the horsepower of the desktop CPU. Most of what I like to do involves a lot of bidirectional PC to Arduino communication, so all the Arduino really needs to do is interpret the serial messages I send it and perform the operation that the message
described; it's basically just a message parsing machine.
At some point I came across the Firmata protocol. It claimed to be useful for doing exactly what I was doing, so I was interested. I had been looking to create a standardized sketch that I would load on every Arduino I had, regardless of the project it was
being used in because I really wanted to get away from that clunky Arduino IDE. Firmata looked like it had what I needed so I tested it out. The Arduino IDE ships with a standard Firmata sketch so there was no Arduino code to be written. But fuck was
the protocol hard to use! It just didn’t make any sense to me. The documentation was practically non-existent and everyone who had blogged about using it seemed to be doing it in EVERY WAY BUT the way I wanted to use it – Give me managed code interfaces because
I love C# and I swear by Visual Studio 2010 (the add-in support kicks ass in this version so I have it totally pimped out).
I appreciate everyone out there who tried to create a .NET library and share it with us. There were some really good starts, but I found the implementations to be incomplete and/or done in a style that didn’t conform to Microsoft Style Guidelines. Ok, I’m not
really that anal (although, I suppose some might disagree), it’s just that for my job, when I have to write code, the code has to conform to those guidelines; it’s just the way I do it. What you find in Rhyduino might not conform to those guidelines, but it’ll
be pretty close. To get back to the point, I created Rhyduino to be the PC counterpart to the “SimpleFirmata” sketch running on the Arduino (Arduino
Duemilanove, by the way).
While it’s not there yet, I intend to make Rhyduino support all of the functionality described in the Firmata 2.1 protocol.