Older blog entries for marcin (starting at number 24)

10 Nov 2005 (updated 9 Nov 2010 at 02:52 UTC) »
1 Nov 2005 (updated 9 Nov 2010 at 02:52 UTC) »

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)

ScaredyBot has been working out at the gym. It's now got a bit of extra physical construction that holds the SRF04 on a servo turret. Under the turret, I've put a small furniture caster under it, so it should have better mobility around the house now. The jiffy-box construction is so far working out.

However, the robot now will be driving backwards - ie what used to be the front is now the rear - yet another code change.

I've taken the bold step of redesigning the motor driver interface as well to accomodate the extra timers required of the other peripherals - I've almost finished my robot- mcu peripheral interface document which outlines which mcu timers, INTs, GPIOs, UARTs etc will be allocated to which functions.

Cheers, Marcin

Slowly, slowly, Scaredy bot is progressing. Most recently I ripped (gently) the SRF04 off the front and mounted it onto a servo turret. Now the servo control is programmed in and working (albeit not working as per theory).

So, I've done some initial tests of getting the sonar head to scan once it gets too close, and it seems to work. I just now have to formalise the state machine and turn the whole thing into a single interface that takes an angle bearing parameter as part of ranging. Hopefully, this will mean that it will be a bit smarter in it's way of dealing with corners.

Oh yeah, but first I have to redo the DC motor drivers to use only 2xPWM timers instead of the four PWMs it currently uses - just need an XOR gate, a couple of inverters and a couple of AND gates. And, of course recode the drivers.

I've also been slowly formulating a philosophical thesis on what the essence of a robot is - ie surely robot != control system, rather robot > control system. But more on that spiritual topic later. I need to update my site (roboteer.net) - still struggling with getting some of the more interesting add ons working.

Cheers, Marcin.

15 older entries...

Share this page