I am totally ignoring the ultrasonic rangefinder at the moment in order to limit the exponential increase in complexity. I figure if I make the code modular and therefore pluggable, I'll either be able to add a module (ie driver) for the SRF or if I'm out of I/O then I won't. A smart design will, however, hopefully mean that there will be a bit of I/O to be had.
I've had a read of Chris Schur's PAAMI (http://www.schursastrophotography.com/robotics/paami_main. html) and predecessor and I do like the concept, although being pretty useless with a soldering iron I'm going to try the software path to subsumption. I figure that with my M16C running at 24MHz, (PLLx2) I'll be able to do some serious almost-parralelism. In the future, though, I would like to try doing some hardware subsumption - I have a motorola HC08 C compiler so it may be a goer (they are pretty cheap too, for the little ones). Then again, I have that Philips ARM able to do 32-bits at 60MHz and heaps of code space and RAM that may tempt me instead.
I am beginning to think, having considered it some more since my last post, that the best way to achieve the asynchronous FSM that Chris talks about, but in software, is to totally run via interrupts. So rather than a while (1) loop and a big nested case statement in the main(), I think that maybe all state transitions are handled by dedicated ISRs. It goes against the short and lean ISR theory, but when you think about it, it is a type of co- operative multi-tasking that subsumes all ISRs/responses below it. Then, once the response is complete, control by the ISR is released and the next lower ISR (which was interrupted) will be given a go. A lot will depend on how many levels of interrupt I can get.
Once I rewrite the basic bits (ie basic control actions), I'll post on the success or otherwise of this theory.
Does anyone else have a view on this? Can responses be given here in a post/reply type forum?
Oh yes, and did I mention that I get really jealous of all these people who have well kitted-out workshops and can make their own wheels, and chassis, etc? Well, I am. Making stuff yourself is fun, if you have the tools and know how to use them.