Yes that’s right! I’ve started working on this thing again.
I’ve forked the old Gilligan ROS nodes at http://code.google.com/p/usu-robosub/ into https://github.com/chris-blay/guillemot-core and I’ve been cleaning it up a bit and trying to get most everything working on the Raspberry Pi. Unfortunately, getting ROS to work properly on Raspberry Pi is basically a nightmare.
I’ve been a pretty strong defender of ROS in the past, and I think that it’s definitely worth using on a pure x86 Ubuntu setup (i.e., Gilligan), but I’m getting to the point where I’m tired of fighting ROS just to build a motherboard temperature publisher on a Raspberry Pi… With all the trouble ROS has already given me, I’ve basically done nothing productive as far as software goes, and that’s incredibly troubling.
So what is it that ROS actually does that I like so much?
- Pub/sub and request/response communication paradigms. Transparently using IPC or sockets as needed.
- Marshalling - not great - but Good Enough™.
- Registry of publishers, subscribers, and severs for discovery.
- Tools to save messages published to specific channels and inspect/replay them later.
- Node startup/monitoring stuff. I’m looking forward to getting rid of the hacky Bash scripts.
I’m thinking ØMQ for communication, MessagePack for marshalling, a custom discovery registry, a custom persistence/replay tool, and Supervisor for startup/monitoring. This isn’t something I’m going to do lightly though. I’ll prototype out a few things before going all in. And this means Catastrophic Change in Guillemot Core, rather than a smooth transition, but I think there’s potential for a much better future so it’s definitely worth the effort.
This is still on the way! I’m having trouble with using library dependencies in Android Studio but once I have that figured out I’ll publish to GitHub and this will be another big thing to work on. I’ve been planning on using MessagePack over Android Open Accessory Bridge so using it in Guillemot Core means no translation between marshalling formats!
If you’ve ever thought to yourself “Wow this looks cool I wish I could help out” then you’re in luck! I’m making sure to do as much of my development in the open on GitHub as possible going forward. Useful contributions are more than welcome - open bugs or feature requests, edit wikis, send pull requests, whatever!