Friday, February 1, 2013

Open Manufacturing: Tracking And Laser Cut QR Codes

People like to label things. Labeling, by human convention, provides a means of identification. Perhaps even greater, it gives us a way to create an identity, a story unique to the individual. We find this worth exploring. I Heart Engineering would like to contribute by showing the beginnings of answering the question: how does a small Open Manufacturing/Hardware company effectively organize, manage, and service its products with limited resources? How can we give our customers a way of identifying a part or component on a robot and how can they go about servicing or acquiring another one? Further, how do we give our parts and components an identity as if it were a spime? The TurtleBot 2 shipped from I Heart Engineering tests one of our initial ideas.

Over the past year, an internal part numbering scheme was created for our use.  In fact, the methodology for said system is located on our Wiki Page as well as other useful information. Creating a part number for every component and product comes with a set of advantages and disadvantages.

A major responsibility is proper maintenance and sequencing of internal components (a task that may require dedicated staff as the business scales upward.)  Often, it is necessary to augment your system to include a type of part, component, or product previously excluded. For example, we now have a Kinect Sensor Standoff and Xtion Sensor Standoff for the TurtleBot 2.  In some ways, the Xtion Sensor Standoff is a revision of the Kinect version (removed taper and M4 threaded holes vs 6-32 stud on one end.) A different perspective identifies the Xtion Standoff as an individual part because of its intended use with the Asus Xtion vs the Kinect.  We decided to treat it as an individual part and have assigned the Xtion Sensor Standoff a new part number over making its number a revision of the Kinect Sensor Standoff.

Some things are produced in-house, others outsourced. In the case of outsourced manufacturing, an internal part numbering system proves to be extremely beneficial. Placing orders between you and your manufacturer becomes effortless after providing them with properly documented information. It also keeps the flow of information between departments from being corrupted.  Instead of holding your accounting department's hand when ordering more inventory, you can simply provide an order with references to the internal part numbers.

In some scenarios, we are simply ordering materials and items from a vendor or distributor.  These items have 2 sets of part numbers. One from I Heart Engineering and the other from the vendor/distributor themselves. This gives the ability to purchase similar commodities from various sources and treat them as the same item.  The task, then, is to create a system in which we can identify an item by its internal and external part number. This information is consolidated by our use of an Open Source Inventory management system called PartKeepr. In it, we are building an entire catalog of internal inventory. Items may be categorized by "what" they are, but their pages tell us "who." Meaning the internal and external part number as well as that vendor/distributor's information for placing the order. Built up over time, it makes being able to stay focused on working easier as the business begins to scale.

The first consumer facing application of our system appears on TurtleBot 2's distributed by I Heart Engineering. Users should notice a QR Code and Part Number located on the underside of their TurtleBot 2 Plates.

Scanning the QR Code directs the user to the product's wiki page. [TurtleBot 2 Disk 1 Wiki Page] All of the information useful for manufacturing the Disk can be found here, as well as linking to the store for purchase.  When your business begins to scale, a second or augmented part number can be created to possibly denote time and location of manufacture. 

Some Things About Lasers and Codes
During test manufacturing of the QR Codes, some interesting things were noticed. One is the conflict presented by contrast. The other is that the "Buffer Zone" surrounding the QR Code itself is critical for success, but can be flexible in certain conditions. (1)

Notice the difference in the 3 rows pictured, each has a different sized border.  
  1. No Border
  2. Border is approximately equal to size of single QR Code data square
  3. Border is approximately 4x the size of a single QR Code data square
QR Code best practices recommends that 4x the data square be the standard for Buffer Zones.  However, the Row 2 Codes were able to be scanned by some QR Code readers sporadically and others not at all. The performance was not suitable for a shipping product, it was just interesting to note that the contrast of light brown on Black was enough to offset the recommended Buffer Size in some [admittedly few] situations. It stands to reason that possibly increasing the Row 2 Buffer Zone to 2x the size of a data square would boost reliability to that suitable for a shipping product.

Remaining on proper contrast for one's QR Codes. Black MDF provided an interesting quirk. The QR Code generators I've used seem to all generate Black on White QR Codes. If you raster the MDF with the codes as is, they will be unusable for reasons illustrated below.
For the sake of argument, let us assume that the Black squares on the QR Codes represent the actual data (instead of really being a matrix of data.)  Laser Cutters do not raster the white areas, they raster the black weighted lines and objects.  This means that, on Black MDF, the data is "inverted" and thus unusable.  To remedy this, invert the color of the QR Code and then place the properly sized "Buffer Zone." 

Another interesting characteristic of the QR Codes found on our TurtleBot2 Disks are that they can only be scanned within 120.8mm or ≈5inches.  This was calculated using the formula: 
Minimum QR Code Size = (Scanning Distance / Distance Factor) * Data Density Factor (1)
The Distance Factor is a constant from 10 to 1 based on the lighting conditions.  Data Density Factor is the number of data columns in one's QR Code divided by 25. 

Approximating Scanning Distance ≈ (14mm * 10) / (29 data columns / 25)
                                                    ≈ 140mm / 1.16
                                                    ≈ 120mm or ~5"

Also, for those of you with access to laser cutters looking for a better finish on MDF raster jobs without much effort, use Transfer Tape when engraving the object.  The CO2 laser burns some of the tape material onto the MDF creating a sort of white fill over the raster area adding some polish. I have not tested this effect on other materials in our Helix. 

No comments: