02-09-2007, 05:55 AM
I am trying to locate the propeller spin code associated with "robot 1337"· (http://www.parallax.com/propeller/custapps/app_1337bot.asp) because as a reaserch project I want to try something similar. Can you please assist me with this as I already have looked at the Forum and have not been able to find it.
02-09-2007, 08:01 AM
It appears that Daniel Mataruna didn't make his code available when he submitted it to Parallax. I'll send this thread to Lauren and see if she can connect you to the 1337 Robot designer.
02-09-2007, 08:27 AM
I sent you a private message regarding your question.
02-11-2007, 07:54 AM
Hi! Sorry I didn't answer before, I'm on vacation at the beach at the moment with only sporadical access to the internet, but I'm happy to answer questions (and I did submit my code :)) Sent you a mail. Just in case anyone else looks for extra info, here's what I had to say:
Well, what can I say? As I mentioned in the writeup, my main source of
inspiration was the book by "Mobile robots: from inspiration to
implementation" by Flynn & Jones. That book has a lot of info on the
robots on the sort of scale mine was, along with code in C that is
easily portable to the Prop. Aside form software it also has info on
the electrical and mechanical aspects of small mobile robots which can
Another good book with more emphasis on the software side of things
and the same approach is Robot Programming : A Practical Guide to
Behavior-Based Robotics by Jones (the same Jones!). You'll see that
my code closely parallels some pseudo code there.
Note that in my code as well as those books the code "subsumption
style" rather than pure subsumption as described by Rodney Brooks.
This "style" is good enough for most purposes and I don't think
implementing "pure" subsumption is worth it.
I haven't update the code since, but as I mentioned there are lot of
things I would improve. One is that I would try to separate the code
in various "objects" (beware that Spin "objects" are vastly simpler
than Java/C++ objects -- forget polymorphism, inheritance, dynamic
memory allocation, etc. Some just call them modules instead of
objects). While functionally it would't do anything it would make
stuff more readable and more reuseable.
For example I might make an LCD object, a "motor" object, switch object, etc.
Another thing that might be good is closed loop motor control -- PID
or at least PI. Those Vex motors I used weren't really "symmetric",
which is why I had to give different control values for the servo in
each side -- and the robot still didn't go straight. With a closed
loop control the movements of the robot could be made smoother, for
example making it "arc" instead of "hard turn" to avoid an obstacle.
Yet another thing -- you'll see I didn't really try to control
concurrency problems. I just hoped there wouldn't be any. It seems to
be the case, but one could look better. I'm referring to the fact that
the value sent to the motors by the arbitrator is being modified at
the same time by the behaviors. One could try to use Prop's semaphores
or some buffering scheme.
Umm part lists -- for some reason the link was removed, but I used
Wulfden's Propeller robot controller: http://www.wulfden.org/PRC/ (http:// http://www.wulfden.org/PRC/ )
Save for a few "glue" circuits (which are in the writeup) that's all I
used for electronics. It saved me a bunch of time.
I don't know what you're project is, but note that an MCU (even the
Prop) w/ subsumption style architecture is well adapted for
relatively simple tasks -- for more complex tasks, involving planning.
localization and what not, usually full-blown PCs are used, along with
different, three layer architectures. Introduction to Autonomous
Mobile Robots by Siegwart and Illah R. Nourbakhsh is a good reference
for more "advanced" robotics.
Post Edited (acantostega) : 2/11/2007 12:01:00 AM GMT