21
Jun

Today is an exciting step in our project; now that all of our condiment towers have been created, all that remains is to make a bowl-bot to carry the ice cream.  The interaction between the bowl-bot and each of the towers is a little bit complicated: not only does the bowl have to “know” when it reaches a station, but the stations each have to “know” when to perform their task.  After a few design iterations, we settled on using an ultrasonic sensor on the bowl-bot to sense the towers.

The first Bowl-Bot

We also decided it would be best to use ultrasonic sensors on the towers.  This eliminates user input (the possibility of the user telling the system exactly how much of each topping should be on the sundae), but makes the whole system a lot more repeatable and reliable.  Everyone is simply going to have to eat the same sundae toppings!  Our “runway,” so to speak, is all of the stations in a straight line.

Possible Station Locations.

We are using a light sensor and a line made from tape to ensure the bowl-bot stays on the correct path and does not veer off away from or into any stations.  As of right now the course is straight, so the line following serves only to ensure a straight path (NXT motors are wont to not run at uniform speeds).  It looks something like this:

Line following Bowl-Bot

The whole setup

The paper is to prevent the translucent table from messing with the light sensor.  Right now we are writing our own program for the line following that will make it run smoothly.

20 min later….

Got it!  The Bowl-Bot follows lines brilliantly.

3:50 pm

After many trials, we’ve discarded the ultrasonic sensor on the bowl-bot.  It had too many issues with sensing a precise enough distance, especially when interacting with another active ultrasonic sensor.  We have replaced it with a light sensor, and have put black tape lines along the track that tell the bot where to stop.  This is much more effective and worked exactly as we wanted on the very first try.  The following video shows a trial of the bowl-bot finding the guide line and then parking under the chocolate syrup tower.

Movie on 2011-06-21 at 16.02

4:45 pm

While things are going well for the bowl-bot, the tower response is not looking so great.  We are running into problems using the “Wait for Ultrasonic” icon—it doesn’t seem to work the way we thought it would, or the sensor is having a lot of trouble finding the bowl-bot.   Either, way, we have to find a new way of communication for all of our different components.

At this point, we are wondering if it would be easier to connect all of the NXTs via Bluetooth.  Neither of us have much (read: any) experience in manipulating multiple NXTs via Bluetooth, so much of tomorrow will probably be dedicated to playing around with it and trying to establish simple communication back and forth.  It’s funny—we originally thought that the ultrasonic sensors would be the easier route, so we were willing to use them at the expense of some nice customization features we really wanted.  We will see in the next few days, but it seems like the easy way and the way to get everything we originally wanted working may, in fact, be one and the same.

Day 6 Google Searches:

  • Bluetooth NXT Labview establish connection
  • NXT Bluetooth mac
  • Ice cream truck music (we also spent a few minutes using the NXT Piano Player application….our bowl-bot will eventually play the ice-cream man song.)
  • Do your ears hang low sheet music

Day 6 Conclusions:

  • Don’t always be so quick to give up cool parts of your project—try and find an easier way to get what you want
  • Don’t be afraid to jump into using a program or technology you’ve never used before; it may just fix all your problems (or not… we will see tomorrow….)
  • Light sensors are wayyyy better than ultrasonic sensors.

To Do for Day 7:

  • Figure out Bluetooth control
  • Figure out how to program those NXTs involved in the Bluetooth connection using Labview—we eventually want to be able to control one NXT with another, remotely.
  • Coding, coding, and more coding.