To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.roboticsOpen lugnet.robotics in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / 7373
7372  |  7374
Subject: 
RE: Mindstorms/reinforcement learning
Newsgroups: 
lugnet.robotics, lugnet.robotics.rcx.pbforth
Date: 
Wed, 13 Oct 1999 13:23:31 GMT
Viewed: 
5029 times
  
> Please let the rest of us know as well, Ralph- I'm very interested in any
> type of AI stuff on the Mindstorms. As a "quick" note, our
> projects (using
> something called Q learning if anyone out there knows the terminology)
> involve doing roughly 6*6*7*8*50 calculations in each learning loop. This
> can take a substantial amount of time (3-5 seconds) on the bot, and I
> really don't think that too much can be optimized, unfortunately.
> Furthermore, because the calculation involves a matrix of 6*6*7 doubles,
> transferring it to a PC repeatedly would probably take as long, if not
> longer. If you take *that* off of the RCX, you might as well just run the
> whole thing in simulation. oh well... it is still really, really cool
> when you have realized that your bot has learned something, even if it
> has happened in painfully slow 3-5 second intervals. More details later...
> -Luis

Declaring variables (almost any number of them) in pbFORTH is like this:

VARIABLE FOO

Fetching and storing is like this:

23 FOO ! ( this stores the value )

FOO @    ( this fetches the value )

Values are 16 bit integers - 32 bit doubles use a slightly different
syntax, but you can usually scale to 16 bits, and it's faster...

To make an array named BAR with 48 16-bit entries...,

CREATE BAR
48 CELLS ALLOT

Now to fetch the FOOth value out of the array...

BAR FOO @ CELLS + @

BAR puts the address of the array on the stack, FOO @ gets the value
of FOO, CELLS figures out the offset in the array, + adds the offset
to the address of BAR, and the last @ gets the FOOth entry...

If you want to send your value out the IR port, just do this...

DECIMAL
FOO @ U. ( prints as an unsigned decimal integer )
FOO @ .  ( Print as a signed decimal integer )

HEX
FOO @ U. ( prints as an unsigned hex integer )
FOO @ .  ( Print as a signed hex integer )

There's formatted output too....

Yes, the syntax is UGLY, but this is what a typical C compiler
generates, and this is one of the reasons why so many CS grads
are useless at embedded systems - they don't REALLY understand
what the micro is doing!

I will post the AI guy's stuff as soon as I get permission, and I'll get
some kind of better tutorial out soon too.

I hope this has sparked a bit of interest in pbFORTH, but it will
take someone doing a cool app to cement things. Watch this space
for my upcoming maze walker...

Cheers,

Ralph Hempel - P.Eng

--------------------------------------------------------
Check out pbFORTH for LEGO Mindstorms at:
<http://www.hempeldesigngroup.com/lego/pbFORTH>
--------------------------------------------------------
Reply to:      rhempel at bmts dot com
--------------------------------------------------------



Message is in Reply To:
  RE: Mindstorms/reinforcement learning
 
Please let the rest of us know as well, Ralph- I'm very interested in any type of AI stuff on the Mindstorms. As a "quick" note, our projects (using something called Q learning if anyone out there knows the terminology) involve doing roughly (...) (27 years ago, 13-Oct-99, to lugnet.robotics)

9 Messages in This Thread:


Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR