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 / 18669
18668  |  18670
Subject: 
Re: Brainstorms GUID
Newsgroups: 
lugnet.robotics
Date: 
Tue, 13 Aug 2002 01:17:26 GMT
Viewed: 
2342 times
  
In lugnet.robotics, Bruce Boyes <bboyes@systronix.com> writes:
> At 05:47 AM 8/12/2002 +0000, Wayne Gramlich wrote:
> > All:
> > 
> > I'm not sure I really understand what point is trying to be
> > made.  I thought that a globably unique id was a good idea
> > and put them into RoboBricks.  My choice was to use a 128-bit
> > random number.  There are other solutions.  All of the other
> > solutions mentioned would also work.  My solution uses 16
> > words of program memory out of 1K words in a part that costs
> > $1.01 (US) in quantities of 25 from DigiKey.  It was the
> > solution I adopted.
> 
> Maybe I completely missed the point myself?
> 
> I like your idea of intelligence so small it can fit into a brick, and then
> tie into upper levels of higher intelligence. That sounds like true
> distributed processing (a good thing) to me.

That's what we thought as well.

> Here's the issue I was addressing:
> 
> How do you guarantee that two vendors won't produce the same 128-bit
> pseudo-random number? If they use the same algorithm they will produce the
> same series of "random" but not unique numbers, unless you can guarantee
> that they use different seeds. Thirty two bits would give you four billion
> numbers, I'm wondering why you chose 128.

If you use a pseudo random number generator with the same seed you
will get the same `random' number.  The obvious answer is don't do
that.

I personally use the /dev/random device on Linux which collects
entropy (i.e. randomness) from disk seek times, times between keystrokes,
network packet arrival times, etc.  It may not be a true random number
generator, but it is done well enough that there is no real chance that
a 128-bit string will ever repeat.  The /dev/urandom generator is faster
because it is a pseudo random number generator that uses /dev/random
for the seed.  I actually use /dev/random to get the best random bits
I can find.  I think both would work quite well.

The next issue is why did I choose 128 bits.  Frankly, I choose 128
because the number was so huge, I didn't think very many people would
argue that there was any realistic chance of a collision.  64 bits
would have been good enough, but the cost of allocating 8 additional
bytes made it 2^128 which is probabaly more than the estimated number
of particles in the known universe.  (I actually don't know it is,
but it should be pretty close.)

> Also the 128-bit number doesn't tell you anything about the function of
> that node. If you are stringing 16 nodes in an arm for example, how do you
> write the code to control it? Now what if you have 10 such arms? Now you
> have 160 random numbers but what do they mean? You could have an index
> somewhere and try to maintain it but why not keep the information in the
> node itself?

I thought about having a "write to EEPROM" mode, but it seemed like
more effort than it was really worth.  Also, some of the chips I use
don't have EEPROM (i.e. the PIC16C505).  The id string does identify
the RoboBrick flavor, but does not distinguish between several chips
of the same flavor plugged into it.  I figure that people will be
swapping boards around enough that storing the information in the
board won't work all that well in practice either.  I could be wrong
on this one.

> On our JCX system we have 24 to 32 SPI chip selects per backplane, each
> with an EEPROM tagging memory which holds the function, serial number, etc
> of the device at that chip select. You can have one code base applied to a
> number of robots. At startup the code scans the backplane, finds what
> resources are available and then knows what to do. There's space to add
> your own info too. For example in our 8-input passive/active sensor board
> you can label that group of sensors or any individual sensor. As you say,
> the little memories are inexpensive, and easy to talk to, without added
> logic - just I/O pins and a bit of code.

I'd never heard of the JCX system until you mentioned it above.
I found it via Google with no extra effort though.  I read the site
until the tiny font made my eyes bleary; my eyes aren't what
they used to be. ;-)

Using the SPI bus seems like a much better choice than the I2C
bus for this application.

> We came up with this scheme because some users have - for example - a swarm
> lab with say 20-30 robots, almost identical, but with possible differences.
> They don't want to maintain 30 sets of firmware with hard-coded parameters.
> 
> At least that's the theory. We will be building and testing this hardware
> starting in Sep.

Sounds like fun.  For us, software development was always the gating
item.  It is always fun when we can start working on real hardware.

Later,

-Wayne



Message is in Reply To:
  Re: Brainstorms GUID
 
(...) Maybe I completely missed the point myself? I like your idea of intelligence so small it can fit into a brick, and then tie into upper levels of higher intelligence. That sounds like true distributed processing (a good thing) to me. Here's the (...) (24 years ago, 12-Aug-02, to lugnet.robotics)

53 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