To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.faqOpen lugnet.faq in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 FAQ / 514
513  |  515
Subject: 
[FAQ: MindStorms, version mrob19990712]
Newsgroups: 
lugnet.faq
Date: 
Tue, 13 Jul 1999 00:56:47 GMT
Viewed: 
1847 times
  
So far I have answered all the questions except the programming
section, section 3.

Feedback is welcome.

    LEGO MindStorms FAQ

    version 19990712, by Robert Munafo

    Based on outline originally submitted to LUGNET by Kerry Garrison
    (kerryg@deltanet.com)

Outline:

  Section 1 - About MindStorms
    1.1      What is LEGO MindStorms?
    1.2      What is the difference between MindStorms and CyberMaster?
    1.3      What comes with the MindStorms Kit?
    1.4      Where did the MindStorms idea come from?
    1.5      What expansion kits or add-ons are available?
    1.6      Can I use other LEGO parts with MindStorms?

  Section 2 - Building with MindStorms
    2.1      What can you make with the MindStorms kit?
    2.2      What have other people built with the MindStorms kit?
    2.3      How do I use the touch sensor?
    2.4      How do I use the light sensor?
    2.5      Are there other sensors available?
    2.6      Can I make my own sensors?
    2.7      How do I build a steering system?
    2.8      What other kits are recommened to use with MindStorms?

  Section 3 - Programming the Brick
    3.1      How do I program the brick?
    3.2      Where do I learn about the RIS software?
    3.3      Can I use other programming tools?
    3.4      What other tools are available?
    3.5      What is Spirit.ocx?
    3.6      Can I use Visual Basic?
    3.7      Can I use C++?
    3.8      Can I use other languages?
    3.9      How big of a program can I write?
    3.10     How sophisticated of a program can I write?
    3.11     Can I make two or more bricks talk to each other?
    3.12     Can I make the brick send data back to the PC in real time?
    3.13     Can I use the IR port on my laptop?
    3.14     Can I use the IR port on my Palm Pilot?
    3.15     Can I use learnable remote controllers?

  Section 4 - Advanced
    4.1      What is inside the brick?
    4.2      How do I use more than three sensors?
    4.3      How do I make a temperature sensor?
    4.4      How do I make a rotation counter?
    4.5      How do I make a sound sensor?
    4.6      How do I get more than three outputs?
    4.7      How do I make a bend sensor?
    4.8      What other types of sensors can be built?

  Section 5 - Other Resources
    5.1      Where do I look for other information sources on MindStorms?


%%% Legal notice needs review

LEGO(r) is a trademark of the LEGO Group of companies which does not
sponsor, authorize or endorse this FAQ file or the site it is posted
on.

PRIMO, DUPLO, LEGO System, LEGO System Freestyle, LEGO Technic, DACTA,
LEGO World Shop, RCX, RCX Code, and MindStorms are registered
trademarks of the LEGO group of companies.

Nintendo and Power Glove are registered trademarks of the Nintendo
group of companies.

Other names are registered trademarks of their respective holders.


1.1      What is LEGO MindStorms?

LEGO MindStorms is a division of the LEGO Group of companies, which
develops and markets the LEGO MindStorms family of products.

The LEGO MindStorms family of products consists of a kit (9719
Mindstorms Robotics Invention System) currently available in the
United States for $200, and a series of add-on kits and accessories,
which together can be used to build a wide variety of simple
autonomous robots.

The LEGO group has an official web page:

    http://www.lego.com/

The LEGO MindStorms division and product has its own official web page:

    http://www.legomindstorms.com/


1.2      What is the difference between MindStorms and CyberMaster?

The most important difference is that with MindStorms, you can turn
your computer off and the robot still works on its own. The robot is
said to be "autonomous". With CyberMaster, the intelligence of the
robot is a program you designed that runs inside your computer.

Other differences: The CyberMaster is based on a programmable module
that contains two integrated motors and a connection for a third,
whereas the MindStorms module (called the RCX) has three outputs for
external motors. Both have three sensors. The CyberMaster communicates
with the computer via radio, the MindStorms RCX uses infrared. The
user interface for the software you run on your computer is different.

1.3      What comes with the MindStorms Kit?

The heart of the kit is the RCX module, a programmable module
containing 6 AA batteries, a microcomputer, simple LCD display, and
connections for three sensor inputs and three motor outputs. The RCX
comes with 5 simple programs built-in, and after installing the
software on your computer you can download your own programs into the
5 program slots.

A CD-ROM containing software for Windows 95, a serial cable and IR
transmitter/receiver allow your computer to control the RCX and
download your instructions (program) to it. The software is oriented
towards kids but works well for adults too. The CD-ROM contains video
tutorials for setting up the hardware, writing and downloading
programs, and learning all the different program blocks (like
conditionals, loops, sensor read, motor control, etc.)

You also get two 9 volt motors type II (which have builtin gear
reduction), one light sensor (which also emits its own light and thus
can sometimes be used to detect proximity or distinguish colors), and
two touch-switch sensors.

A set of about 710 standard LEGO bricks and Technic parts allow you to
build many fairly basic robot designs. The printed instructions show
how to build 7 designs, and the CD-ROM contains several more.

A complete inventory of the 9719 MindStorms kit is here:

   http://www.lugnet.com/db/inv/?n=123

1.4      Where did the MindStorms idea come from?

Although the actual design and development of MindStorms was conducted
by the LEGO group, the ideas and inspiration come from the
Programmable Brick project within the Media Lab at MIT (Massachusetts
Institute of Technology) in Cambridge Massachusetts, USA. For more
information see:

  http://fredm.www.media.mit.edu/people/fredm/mindstorms/index.html

1.5      What expansion kits or add-ons are available?

The following are currently available:

9730 RoboSports Expansion Set: Includes an additional 9V motor and 89
other parts, including some foam balls and disks.

9732 Mindstorms Extreme Creatures Expansion Set: Includes a "fiber
optic" module and 148 more parts fairly evenly distributed (bricks,
beams, plates, axles, gears, connectors, etc.). The fiber optic module
lights up one of eight fiber strands; which one is lit depends on the
rotation of an axle inserted in the module.

1.6      Can I use other LEGO parts with MindStorms?

Yes. All LEGO kits are designed to go together and are manufactured to
extremely precise specifications. This applies across the entire LEGO
group product line from the pre-school PRIMO bricks through DUPLO,
LEGO System Freestyle, LEGO System, LEGO Technic, LEGO DACTA classroom
products and MindStorms. LEGO bricks manufactured in the 1950's fit
LEGO bricks sold today.

2.1      What can you make with the MindStorms kit?

The kit comes with enough parts to build a variety of vehicles roughly
resembling tanks, cars, and other simple wheeled designs.  You can
also make things that walk on legs in a simple way, like the old
four-legged wind-up toys. Articulated or non-circular leg motion
probably requires additional parts that aren't in the basic kit.

2.2      What have other people built with the MindStorms kit?

Many examples are exhibited on the official LEGO MindStorms site,
http://www.legomindstorms.com/ and each tells you whether the model
was built with the basic kit only and whether any non-LEGO parts were
used.

  http://www.legomindstorms.com/members/search_form.asp

2.3      How do I use the touch sensor?

The touch sensor is a 2 x 3 brick with a button on the smallest face
(the "end" of the brick) and contacts on the top of the brick. You use
a 9V connecting cable to connect the tough sensor to the RCX, and then
(using your chosen programming method, see section 3 answers below)
tell the RCX to do something when the switch is pressed or released.
Usually you will want to construct some sort of mechanism to press the
switch when the desired type of event happens -- like a bumper that
pushes the switch when any part of the front of the robot hits an
obstruction.

The printed instructions ("constructopedia"), CD-ROM idea area
("programmopedia") and various users online web sites give many
examples of specific applications of the touch sensor.

2.4      How do I use the light sensor?

The touch sensor is a 2 x 4 x 1 1/3 brick with an LED (light emitter)
and photodiode (light detector) on the smallest face (the "end" of the
brick) and a non-detachable 9V connecting cable. You connect the other
end of the cable to the RCX, and then (using your chosen programming
method, see section 3 answers below) tell the RCX to do something
based on a light level or range of light levels. You might want to
mount the sensor on an arm that rotates under motor control, so you
can "scan" the area ahead of you, or you may want to obstruct the
light emitter by placing a beam (a narrow brick with holes) in front
of it, so that the detector detects ambient light and doesn't see the
reflected light from the LED. You can use a fixed light sensor to
detect the presence of an object, such as a ping-pong ball on a
conveyor belt.

The printed instructions ("constructopedia"), CD-ROM idea area
("programmopedia") and various users online web sites give many
examples of specific applications of the light sensor.

2.5      Are there other sensors available?

There is a temperature sensor that detects temperatures from %%% to 40
degrees Centigrade (%%% to %%% Farenheit). It is a 2 x 3 brick with a
rod extending about 3 units out from the brick's end; the end of the
rod is metal.

There is a rotation sensor shaped like a 2 x 4 x 1 2/3 brick that
detects the rotation of an axle inserted through a hole. If you are
using the standard RCX firmware or NQC (see programming answers in
section 3 below), the RCX will automatically keep track of rotations
for you, giving you an integer from 0 to 32767 with each 16
representing one full rotation.

Both types of sensors have non detachable 9V connecting leads.

Both of these sensors are available from the LEGO World Shop and the
DACTA online store. The DACTA store is geared for educators but they
will sell to anyone.

To get either of these sensors from the LEGO World Shop, go to

    http://www.legoworldshop.com/

then select your region and country, then choose LEGO MindStorms.

For the DACTA online store, go to

    http://www.pitsco-legodacta-store.com/

then select "Spare Parts", then select "Sensors".

The fiber optic unit (included in the Extreme Creatures expansion set
mentioned above, and included in other LEGO Technic sets) can also be
used as a rotation sensor. If connected to an input instead an output,
it acts like a touch sensor which is periodically touched and
released, a total of 8 touches and releases per rotation.  If you
happen to know what direction you are rotating in and if you are
programming in RCX or a more hardcore programming method (see section
3 below) you can use this to keep track of rotation and accomplish
most of the results you would get from a real rotation sensor.

2.6      Can I make my own sensors?

Yes. Sensors must be resistive elements, capable of taking 9 volts in
either polarity (in case they're connected "backwards") and may
present a resistance of anywhere from 0 ohms to infinity.  The
effective useful range is from 0 to about a million ohms.  It's linear
from 0 to 10,000 ohms, then starts to go exponential.  A resistance of
10,000 ohms gives a reading halfway between 0 and 1000 (which is the
reading for infinite resistance). A detailed table is at:

    http://www.plazaearth.com/usr/gasperi/lego.htm#basics

More details and examples with photots, etc. can be found on
the following pages, many of which also have links to other
related information:

http://home.concepts.nl/~bvandam/index.html

http://www.plazaearth.com/usr/gasperi/lego.htm

2.7      How do I build a steering system?

The most simple approach is to drive at least one wheel, tread, or leg
with one motor and at least one wheel, tread or leg with another
motor. Then you steer by controlling the speed of the two motors
relative to each other.

Since motors are never perfectly matched in speed or torque, this
results in a design which doesn't quite go in a straight line.  To
solve this you can use an alternate steering design, like one motor to
drive both wheels and a second motor to turn an axle connected to a
rack-and-pinion type steering mechanism. Or, you can use a
sum-difference transmission to connect two motors to two axles in such
a way that the first motor produces the sum of the wheels' rotary
motion and the other motor produces their difference.

2.8      What other kits are recommended to use with MindStorms?

Your choice of kit will depend on what you want to build -- it depends
highly on what type of design you're interested in doing and what
types of parts that design requires. Some designs would require lots
of gears, for example, and others might require lots of wheels. Many
designs use no wheels at all.

As you look at all the designs other have built, resist the temptation
to buy all the parts you might ever need to build all these different
designs. Focus on one idea you'd like to build and get the parts you
need for that.

You can use set inventories to determine what sets have the parts you
need. Many currently-available LEGO sets have been inventoried. Start
at

    http://www.lugnet.com/inv/

or search the newsgroup

    http://www.lugnet.com/db/inv/

Many specific parts are also available from the DACTA store. Check out their
catalog at:

    http://www.pitsco-legodacta-store.com/

specifically under "Spare Parts".

3.1      How do I program the brick?

3.2      Where do I learn about the RIS software?

3.3      Can I use other programming tools?

3.4      What other tools are available?

3.5      What is Spirit.ocx?

3.6      Can I use Visual Basic?

3.7      Can I use C++?

3.8      Can I use other languages?

3.9      How big of a program can I write?

3.10     How sophisticated of a program can I write?

3.11     Can I make two or more bricks talk to each other?

3.12     Can I make the brick send data back to the PC in real time?

3.13     Can I use the IR port on my laptop?

3.14     Can I use the IR port on my Palm Pilot?

3.15     Can I use learnable remote controllers?

4.1      What is inside the brick?

4.2      How do I use more than three sensors?

There are several approaches.

The simplest is to connect the sensors to the same input.
This is most useful for two sensors one of which is a touch
sensor. When the touch sensor is off (untouched) it has
infinite resistance and allows you to read the other sensor value.
When the touch sensor is on you cannot read the other sensor's
value. Sometimes this is acceptable, it depends on your design.

Two touch sensors on the same input can be connected in two different
ways. The obvious way makes tham act like an OR function: if either of
the touch sensors is touched the RCX will see it.  However, you can
also connect the sensors so they work like an AND function. To do
this, you have to connect the two sensors and the RCX in a "ring" with
three 9V connecting cables. Each device (RCX and sensors) has a 2 x 2
pad where you connect the leads.  Connect one lead to contact half of
the pad and the other lead to contact the other half. Note that on
each 9V lead, only one of the two conductors is being used, and note
also that when you connect the 2 x 2 connectors to the 2 x 2 contacts,
if it's rotated 90 degrees it will actually short the pad out. Look
carefully at the pads and connectors to determine the proper
orientation. This approach is called "wiring in series".

A similar wiring scheme can be used to connect a touch sensor in
series with another type of sensor, so that that sensor is only
connected to the RCX when the touch sensor is pressed. Conbining two
or more sets of sensors would allow you to share multiple sensors on
the same input, using the touch sensors to control which sensor is
connected. Depending on your robot design, this could be useful. For
example, you could have one light sensor that's connected only when
the front bumper hits something, and other that's connected only when
the back bumper hits something.

Multiple touch sensors can be connected to one input with resistors,
either in series or parallel, and the input can be read in raw mode
(or as a temperature or light input if you're using RCX Code). If the
resistors have different values, different combinations of touch
sensors will create different input values. Here's an example of that
method implemented by modifying a 2 x 8 conducting plate:

    http://www.plazaearth.com/usr/gasperi/3rmux.htm

and here is another:

    http://www.akasa.bc.ca/tfm/lego_resistor.html


4.3      How do I make a temperature sensor?

Any type of light-sensitive resistor or resistive element will work,
as long as it will take 9 volts or -9V without frying. The thermistor
available from Radio Shack as catalog number 271-110A works well.
This has to be connected in some way to a LEGO conducting plate to make
it useful in robot designs. Examples are shown at:

    http://www.akasa.bc.ca/tfm/lego_temp.html

    http://www.plazaearth.com/usr/gasperi/temp.htm

4.4      How do I make a rotation counter?

As already mentioned, the fiber optic module and the polarity switch
are both adaptable for use as rotation sensors. Another solution is to
construct a rotating wheel with a light or touch sensor to detect
holes or protrusions on the wheel (the light sensor approach is more
universal because the wheel spins more freely). This can be done
entirely out of LEGO parts, as shown (for example) at:

    http://www.plazaearth.com/usr/gasperi/HBANGLE.HTM

4.5      How do I make a sound sensor?

Passive microphones (the kind that don't use an internal battery) are
essentially sound-dependent resistors and most have a resistance range
that lends well to being used as an RCX input. The microphone would be
attached and wired to a LEGO conducting plate in a way similar to the
light and temperature sensors discussed elsewhere here.

4.6      How do I get more than three outputs?

Many simple mechanical methods involve transmissions that engage one
gear or another based on which way you turn the motor.

A similar approach implemented electrically is to use diodes to direct
electricity to one of two devices based on the voltage polarity. For
an example of this, see:

    http://www.akasa.bc.ca/tfm/lego_l_m.html

You can also use a motor driving several polarity switches (available
as kit number 5120 from LEGO Shop At Home), using cam linkages so that
only one switch is on at any one time, then driving several motors (up
to four has been suggested) in parallel through the switches from a
second motor output. This approach lets you use 3 or more motors from
two motor outputs, albeit only one at a time.

4.7      How do I make a bend sensor?

A bend sensor detects bending or flexing of something, and the
essential component can be found in a Nintendo Power Glove (which is
discontinued but can be found on the used videogame accessories
market). For an example construction, see:

    http://ex.stormyprods.com/lego/#bend


4.8      What other types of sensors can be built?

Many different types of sensors are described at:

    http://www.plazaearth.com/usr/gasperi/lego.htm

5.1      Where do I look for other information sources on MindStorms?

A good place to start is to search the RCX discussion areas on
LUGNET. It is likely that your topic has already been discussed
there. Start at:

    http://www.lugnet.com/robotics/rcx/

There is also a MindStorms Web Ring, linking many MindStorms-related
web sites. The web ring index is at:

    http://members.tripod.com/~ssncommunity/webrings/legoms_index.html

Here are some other popular RCX-based pages, listed in no particular
order:

    http://www.cs.uu.nl/~markov/lego/links/index.html

    http://www.enteract.com/~dbaum/lego/nqc/

---- end of MindStorms FAQ ----



1 Message in This Thread:

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

Custom Search

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