No project meeting Monday 5/31

No project meeting this Monday 5/31 as it’s a holiday.  But don’t let that stop you from dedicating your three day weekend to concocting the best IR communication protocol the Portland area has ever seen!  Or just kick back and enjoy some nice BBQ weather.  Whichever.

It would be cool to hear about any progress with the latest (ver0.3) IR Tx/Rx code that was released a couple weeks ago though.  Anybody try it yet?

Next project meeting: June 14.


PARTS Indoor Challenge and mouse sensors

After this morning’s PARTS meeting and Indoor Challenge, a few of us were talking about using optical mouse sensors for tracking robot position rather than wheel-based encoders.  Optical mouse sensors use optical-flow techniques to determine X & Y motion based on differences between successive snapshots of the underlying surface texture.  These sensors contain very-low resolution (18×18) cameras and all the necessary DSP to distill the information down to a delta-X and a delta-Y value.  It’s possible to read the raw image data out as well.

I’ve been wanting to play around with optical mouse sensors for a while, and the PARTS Indoor Challenge seemed like a good target application, so I threw some Avago ADNS-2620 sensors into the last DorkBot group order.  Unfortunately I didn’t have time this last week to do anything with them.  I figured I would need two sensors to track X, Y, and rotation since the mouse sensor doesn’t do rotation.  This certainly isn’t a new idea — mouse sensors have been used for robotics for quite a while, but I hadn’t done much research on it until now.  Here are some good links:

Precise Dead-Reckoning for Mobile Robots Using Multiple Optical Mouse Sensors (PDF)
Evaluates accuracy of two vs four mouse sensors compared to encoder-based dead reckoning.
Two sensors are significantly better than encoder-based DR if the robot speed is less than the max rate of the mouse sensors; four sensors are even bettter.
Four sensors are still significantly better than encoder-based DR even when the robot speed is greater than the max rate of the mouse sensors.
Testing was done on a felt surface, however, so the variability of the floor we’ve been running the PARTS Indoor Challenge on may require more than two sensors for robust positioning, even at slower speeds.

Cody’s Robot Optical Motion Sensor #1 (CROMS-1)
Nice writeup on hacking an optical mouse sensor, including creating a custom lens assembly for increased range.

Implementation Of An On-Chip Insect-Inspired Optic Flow Based  Navigation Sensor
NASA Tech Brief referenced by Cody’s above writeup.  Using optical mouse sensors with custom lens assemblies for flying robots (at low altitudes).  Overviews the optical design methodology and presents data from actual flight testing.  Concludes that optical mouse sensors are usable for terrain-following behavior on a robotic-flier.  Free registration is required to access the report.

Required components for optical mouse sensor (if you want to start from scratch rather than hack a mouse):
(These aren’t necessarily the best mouse sensor for robot navigation, but they are readily available.)

Avago ADNS-2620 optical mouse sensor
Data Sheet
Purchase:  Mouser 630-ADNS-2620 ($1.58, qty 1)

Avago HDNS-2100-001 lens
Data Sheet
Purchase: Mouser 630-HDNS-2100-001 ($0.18, qty 1)

Avago HDNS-2200 LED alignment clip
Data Sheet
Purchase: Mouser 630-HDNS-2200 (Non-stocked/Not available in small quantities! Grrr.  I think I can do without it.)

Avago HLMP-ED80-K0T0 LED
Data Sheet
Purchase: Mouser 630-HLMP-ED80-K0T00 ($0.39, qty 10)

More to come!


BrushBotComm board build follow-up Monday

Yes, there is another PARTS Project meeting tonight!

Time: Monday 4/5, 7:00pm
Location: bRainSilo:

We will be continuing with the BrushBotComm boards — soldering on the final components, including the missing IR LED resistors and the IR
LED’s themselves; making programming cables; and learning how to load code onto them.

As I mentioned in this blog entry the ArdunioISP should work well for a programmer, and hopefully as a serial link for debugging.  So, if you have a spare Arduino that you can use for a programmer, bring it.  Or, I have a handful of cosmetically defective (but fully functional) Teensy2.0’s available for really cheap.

*BrushBotComm boards and extra parts you’ve received.
*Soldering iron — if you have a decent one with a fine tip.  This is especially important this meeting as we have a fair amount of hand soldering to do.
*Desk lamp if you can — we didn’t really have enough light last time
*Vision enhancement devices — I’ll bring my stereo-microscope and what magnifiers I have, but I think we could have used more last time
*Money for Arduinos if you need one for programming.
*Laptop if you have one to use for programming.


BrushBot Comm board ISP programming

As I mentioned in my last post, I think ISP programming of the BrushBot Comm boards is the way to go.  What’s more, it should be possible to get double-duty out of an ArudinoISP based programmer and use it as a serial link for debugging.  This requires hacking the ArduinoISP sketch and setting up some sort of serial comm between the BrushBot Comm board and the ArduinoISP.

Since the tiny44 doesn’t have a UART, we could either use the SoftwareSerial library to big-bang serial on any pin, or we could make use of the SPI hardware support provided by the tiny44’s USI module.  The former is prone to timing problems, but is probably easier to setup.  The latter makes sense because the necessary SPI comm pins are the same as that used for ISP programming, and thus are already cabled, and the hardware comm support should reduce the flash and resource usage in the tiny44.  I’ve started down the SPI route and am adding USI SPI support to the BrushBot core that would more or less replicate the functionality of the HardwareSerial code found in the Arduino core.  This will allow “print” statements to work over SPI.

In order to do both the ISP programming and debug comm with a single device, we’ll need to use an Arduino rather than Atmel’s AVRISP.  I picked up a handful of cosmetically defective but fully functional Teensy 2.0‘s at Monday’s DorkBot at a very reduced price that will fit the bill.  If you need an Arduino to use for programming, then see me at Saturday or Monday’s meeting and get one for what I paid for it.


BrushBotComm Arduino support

Good news!  The latest version of Arudino (0018) makes it relatively easy to target the tiny44 we’re using on the BrushBotComm boards.   I’ll get the necessary files up tomorrow.  This update won’t include a bootloader though.  Given the limited program space of the tiny44, we’d be better off using ISP programming anyways, and obtaining a cheap ISP programmer just got a bit easier with the ArduinoISP example sketch include in Arduino 0018!

Also, if you have the smaller BrushBotComm board (w/o the transistors), hold off on installing the 5-pin programming header if it’s not too late already.  It turns out that a 6-pin header can be easily installed with the tail of the extra pin bent over such that it can be soldered to the V+ pin on either the switch or D5.  This will allow the small board to match the pinout of the big board, and allow either board to be powered by the programmer.  I’ll trade your 5-pin connectors for 6-pin connector the next time we meet.


Update 3/26/2010:
Arduino support code and instructions added here: brushbotcomm-board-software

BrushBotComm board build follow-up Monday

The bRainSilo remodel progress is looking good for a group project meeting on Monday, so we’ll follow-up on the BrushBotComm board build we started a couple Saturdays ago.  We’ll continue assembling boards for those that didn’t get theirs built last time, and hopefully we can start programming them.

Time: Monday 3/22, 7:00pm
Location: bRainSilo:

  • BrushBotComm boards if you already have them, built or not
  • Money if you haven’t paid for boards/parts yet
  • Soldering iron — if you have a decent one with a fine tip.  We still need to solder up some programming cables.
  • Desk lamp if you can — we didn’t really have enough light last time
  • Vision enhancement devices — I’ll bring my stereo-microscope and what magnifiers I have, but I think we could have used more last time

See you Monday!

BrushBotComm board update

The BrushBotComm boards and parts have arrived and the first couple boards are blinking their LEDs!

One is shown with the battery holder board; the other has a connector for external power.

Yesterday I got together with Scott and Jim, the guys behind the “Extreme Surface Mount Soldering” Instructable, and we soldered a couple boards up using their IR-thermometer enabled PID-controlled hot-plates.  This was a test run in preparation for the group build that will be happening soon, but not next Monday as originally planned (more on that in a bit).

We had most of the parts for yesterday’s hot plate soldering, but I didn’t get the Mouser parts until this evening’s DorkBot meeting.  So, I came prepared with soldering iron and tweezers to add the MOSFET’s, IR receiver and battery holders right there in Backspace.  Unfortunately there’s still one missing component — the catch diodes for the MOSFETS.  Looks like I left them out of the order… doh!

The boards powered up and programmed using ISP and Atmel’s AvrStudio with no problems.  The hot-plate reflow worked great and no rework was required.  I’m excited for everybody else to try the hot-plate method of soldering — it really opens up what you can do with surface mount on your own.

Originally the plan was to assemble all the boards at this coming Monday’s project meeting, but the logistics aren’t going to work out.  The bRainSilo is undergoing some work to fix it up, so I’m not sure what state it’s going to be in next Monday, and as it is now, I’m not sure there is enough usable table space to do the assembly.  There’s also a bunch of parts preparation that’s not going to happen by then.  So, I’m thinking either the following project meeting, or maybe even as part of March’s general meeting.  The latter would be nice because there’s more table space, but I’m not sure what Pete has planned for that meeting (Pete?), and the different time (Saturday morning versus Monday evening) might not work for all…  What do you all think?

Meanwhile, consider coding up some routines for the tiny44 to have ready to try out:
IR remote control receiver code (i.e. light up an LED when a remote control code is received)
IR transmitter code (i.e. modulate the IR LED at 38kHz and encode a command to turn off a TV)
IR message-passing code


Venue Update! 2/8/10 Group project meeting

Tomorrow’s group project meeting (Mon 2/8/10; 7pm) will be held at bRainSilo — a newly opened hacker-space by the Rose Garden arena.

The reason for this and the late notice is rather unfortunate.  TechShop is getting evicted and is not available as a meeting place.  Open Tech Space, who’s resources we were using, is still very much alive, but homeless at the moment.

As bRainSilo is brand new, the space is still a bit rough, and there is no sign out front yet.
The entrance is in the alley way off of N Kerby Ave between N Tillamook and N Thompson streets in front of parking spot 50 or 51.  Google Map
I’ll put a sign out on the door.
Come check it out and let me know what you think.  It may be an option for future meetings.