| [ Home | Events | Robots | Humans | Projects | About | Account ] | |
Recent blog entries for marcin
Well, it's been almost a year since I posted anything
here. My major achievements in the mean time have been
blowing a lot of things - zigbee modules,
microcontrollers, voltage regulators, etc. In fact it's
been a bit annoying. I'm back on deck now, though, and
working with the Cypress PSOC, and the graphical
development tool PSOCExpress - you wouldn't want to write
any AI in it, but it rocks for device drivers (motors,
sensors, etc) and has a very convenient I2C interface.
Cheers, Marcin
Are there any aussies out there building robots?
Sydneysiders, specifically?
marcin@roboteer.net
Finally, after what's been a 5-6 week break, I returned
fresh to ScaredyBot and sorted out the issues I was
having - it's amazing how quickly I was able to find the
problems in the code once I actually sat down to it.
So now I have a subsumption architecture going on, all on
one chip (Renesas M16C). It's not quite how Brooks does
it - it's not exactly asynchronous or parallel, but oh
well. So I've written up four behaviours, in decending
order of priority: retreat, collision avoidance, wall
avoidance,
and roaming. Each behaviour is written independently and
can be inserted (even possibly dynamically at runtime)
into the behaviour list at any level.
So next, I'll get a light sensor, write the 'driver', and
then try to use it in some behaviours (photovore,
photophobe, other - ideas?)
Cheers, Marcin
I truly haven't done anything on ScaredyBot for almost a
month - my subsumption architecture was a bit too
complicated - still is, but I'm working on it. The funny
(or sad) thing is, that I didn't take the step back and
try to trade off some of the
complexity/functionality/purity in a pragmatic manner.
Basically, I was trying to go for generality that would
(in theory) support any future requirements. Now
that's just silly, especially considering this is only my
second robot. So I'm now going to shed some of the Brooks
subsumption ideals and just focus on making it work
reliably, with extensiblility to support the likely future
growth.
Ah, embedded ISR debugging is so much fun, because it's just so darn easy and not at all time consuming.
Cheers, Marcin
Okay, so I was a bit premature in giving myself kudos for
getting a nice subsumption/arbitration thing going there.
I've been refactoring the code a little while writing the
rotating ranger code (ie servo+SRF as a single entity),
and as it turns out, one of the conditional compiles
wasn't #defined previously. Now that I have enabled
it ... well subsumption has a little way to go.
That being said, though, I have to say that the architecture works as designed, it is just that my behaviours are too simple - they should be state machines, not simple conditional outputs. It does raise the question though, once the behaviours are FSMs, what will happen once a higher-priority tasks interrupts a lower priority one, since not all behaviours are mutually exclusive.
Cheers, Marcin.
Finally, after procrastinating for over two weeks, I
finally finished writing up the servo interface docs for
the M16C (as done for ScaredyBot). You can find them here. I should write up the motor PWM driver as
well ...
I'm still reading the Brooks book - I like it, there's a lot of me me me in it, but hey, he's probably got a fair claim to that pronoun in this context. And he's an Aussie, too! Well, sort of.
Cheers, Marcin.
I've been a bit slow recently with the robotics work. I'm
at the stage where I am tidying up the architecture to
allow more of a plug-and-play feel for additional sensor
modules. By plug and play, I mean that the modules are
robot-independent and can simply be included in the code
with no modification. Going ok so far. I'm also trying
to encapsulate the SRF04 and servo turret as a single
entity, so that theoretically 1 rangefinder on a turret
behaves like 5 fixed rangefinders. Indeed, the next
iteration robot will use a OS/RTOS of some description -
hopefully not homebrew by me - and will allow me to use
some more powerful programming models. Unfortunately, my
limited skill in C is a bit of a weakness - I know
what I want to do, but I don't know how to achieve it. I
think function pointers are going to be involved.
Having said that, Scaredy has a four-component behaviour at present, which has seen it become pretty much unstoppable (except for getting snagged) - it has retreat, collision avoidance, wall-avoidance, and roam behaviours which are all indepenently coded. I'm thinking that an accelerometer would be a good way of detecting a stall or snagged condition. Also need to figure out how to avoid mindless loops (ie if A then B, if B then C, if C then A) which can happen over and over again in corners (although, remarkably, it does eventually break free).
I've also been reading Rodney Brooks book 'Robot: the future of flesh and machine' and now I realise that I am about 20 years behind the times! However, it was quite gratifying reading some of his approaches and seeing how I have been going down the same path anyway, fairly independently. I'm only 1/4 of the way through the book, though.
Having some issues now with the software subsumption
architecture. Chris Schur was right in that the
implementation in software can be a bit nasty - my
implementation certainly is. I still like the concept, but
I need to tidy it up a bit - the arbiter needs to work more
like a scheduler as well as a sort of bus-master? Maybe.
Well, Scaredy is all systems go. Not that there are that
many systems (servo, motor, SRF04 and MCU) but go it is.
I've put up new pics and a tiny video (745k) on my ScaredyBot page (http://roboteer.net/robots/scaredy.html).
So that's good. More soon.
Cheers, Marcin.
I've been putting together my enhanced controller
according to my
Robot-MCU Peripheral Interface. It's a living document
at this stage, but once all the interfaces are designed,
implemented and tested, it will become the stardard for
all my mobile robots (that use the Renesas M16C, at any
rate).
I've also been trying to stir up interest in a Sydney robotics club - I may have 1 interested party (well 2, if you count my wife who wants me to talk to someone else about robots) so that's a start (albeit very modest).
Ciao, Marcin (marcin__at__roboteer.net) |