Sign in:

Thousands of Tiny Robots

The Modular Robotics Blog

Mindstorms: Initial Impressions

Hello! My name is Kelsey Metzler, and I’m a new design intern here at Modular Robotics. Over the last few weeks, I have had a lot of fun helping to set up the new Modular Robotics Studio Headquarters, learning all about the blocks, and contemplating how to build a 3D Printer (blog to follow soon!). Since I don’t get paid very much, I decided to take a play day. Today, I toyed around with Lego Mindstorms for the first time ever, and ended up learning a lot of really cool things!

Lego Mindstorms is a fun kit that enables kids (or, adults…) to make their own robots. The kit, like any Lego kit, has many different types of building blocks, connector pieces, gears, axles, unique building blocks… anything you need to build a sweet robot. This kit also has Lego servo motors, a light sensor, an ultrasonic distance sensor, a touch sensor, and a sound sensor. All of this paired with the NXT, or the ‘brain’ of the robot, gives you one awesome kit. The software behind Lego Mindstorms is made by National Instruments, the producer of the major software LabVIEW. The Mindstorms software beautifully resembles LabVIEW, a graphic based programming language. The software is intuitive and easy to use, especially for someone with experience in LabVIEW.

Today, I decided to see just what I could do with Lego Mindstorms. This is not only extremely fun, but is a great way to understand new mechanisms that might be used in future work. I started out by following some of the ‘Getting Started’ tasks that come with the Mindstorms software. These exercises are a great way to start getting to know Mindstorms. But, I wanted to do more! I started playing around with different ways of mounting sensors on the wheeled robot, logic for the robot involving case structures, and using many sensors at the same time.


The most exciting, albeit fairly simple robot that I built today has been named Sam. He drives towards something, and as he approaches it, slows down until he hits it. After he hits it, he quickly races backwards, turns a little bit, and drives forward again. An interesting challenge in building this robot was to make a bumper that actually senses bumping! Just a simple small button will only detect straight-on hits. After messing around with different types of bumpers for a little while, I decided to just do a distance sensor: when the robot gets really close to something, it backs up. It was very fun to watch the robot drive around running into things on the floor!

Then, I decided that I wanted to add clapping control. The goal was to have the robot pause for 2 seconds whenever I clap my hands. This didn’t turn out to be as easy as I had hoped! There are a few different ways I tried to do this: using a ‘switch’ block, using the ‘compare’ function, and using a ‘logic’ function. The thing that I found the most difficult about working with Mindstorms software is how very simple it is. I am used to working with LabVIEW, in which there are thousands of functional blocks to choose from. In Mindstorms software, there are less than 25. I discovered a ‘custom’ block option today, however… so it might be possible to make many more complex blocks to work with. In any event, I have not yet found a way to actually get the clapping control functional! At this point I just have a robot running around, charging into things and then backing up and doing it again.

Wednesday entertainment: Sam.

Join the Conversation  1 Comment
  • rayad

    hello, i was browsing your site and i stumbled with this entry.
    with mindstorms to simply know that a clap has happened is to wait until the clap passes before doing anything else, but the problem is in defining the clap. the clap is simply a spike in the sound level therefore to know that a spike in the sound level happened you have to wait until the sound level reaches a certain level at first , lets say 80% then you have to wait for the sound to fade again wich means waiting until the sound level decreases under a certain value , lets say 40, or you can wait for a period of 0.3 seconds (using data logging to measure the length of a clap) after reaching the 80% value, then doing the action you need, hope this is helpful.