Monday, February 25, 2013

Open Manufacturing: A Home for the Beagle Bone

People often take for granted the amount of engineering that goes into simple everyday products and items. Very few people know or care why that door handle has a gusset or the reasons washers even exist. Even the most mundane of things have considerable engineering thought go into them. It was decided that I Heart Engineering needed a custom case for mounting a Beagle Bone to the TurtleBot. This is an attempt to walk readers through some of the thoughts and considerations that go into building something so small and seemingly trivial. After all, a case is just another box right?

The first thing is to frame what you want to build by constructing a list of constraints and intentions for guidance. In our case, we decided it needed to consider following:

  1. Access to all of the ports with special consideration given to SD Card removal.
  2. Maintaining minimal dimensions 
  3. Able to be mounted to the TurtleBot using a universal set of mounting holes.
  4. 3D Printable Design 
Doing this creates the "world" that your design lives in and as such the tools you may consider using and the initial ideas for construction.

The next step is to obtain or create a 3D Cad replica of the Beagle Bone board. If one has to create their own model for testing, it's best to note that only the major dimensions of the board and components necessary to the case are needed, but they must be accurate.  These include the board itself, it's ports, mounting holes, and anything that one may feel needs to be built around to complete the case. 

Now that we have a physical and 3D model of the Beagle Bone, we can start to draw out the general outline and order of feature construction. I personally rough out a general model idea on paper and then begin creating in a CAD program of choice with the frame. Testing and experimentation are important parts of the design process. I constructed a rough case frame that wraps around the Beagle Bone and printed the piece to test the tolerances and fit. Doing this is beneficial to designers as it saves time over the long term versus running into an unaccounted error later in the process. The idea uses empirical analysis to verify quantitative and qualitative data.
Early test frame for tolerance checking.
After verifying the dimensions, I can now construct the bottom frame of the case. Here is where I asked: well just how high should the case be? To solve this problem, one has to consider the space between the bottom of the board and any components on its underside. In this case, it's ~6mm.  So, one can aim for the bottom half of the case to be 8-10mm or slightly more, but certainly not less. 

So you've built the bottom half of the case frame, now what? Well, you have to get the Beagle Bone mounted inside the frame somehow. Let's consider the 4 mounting holes on the board. I decided to construct bosses extruded from the bottom of the case coming up to the underside of the board. However, one cannot simply create a boss to your desire; this board has components on both sides that limit the amount of usable space. The design also has to be 3D printable which dictates a minimum thickness AND you have to consider the size of potential screw heads. This left only 2 mounting holes with sufficient space on either side for the design in mind.

Test Boss used to verify clearances
The same process is repeated as before, we create a test boss to test the tolerances and verify dimensions, but this time another problem arises. The bosses aren't very rigid and are susceptible to damage. How can one make them more stable and rigid? Well, it turns out the mounting holes are conveniently located close the inside frame of the wall. Therefore, we can build the bosses out from the inside wall, integrating them into the
case frame itself and solving the problem.

After another round of test and fit, we see that the Beagle Bone Board may still teeter and totter on the inside due to use of only 2 mounting holes. Depending on whether you view the amount of deflection as tolerable or not, you can opt to build two bosses located at the unused holes to provide more support. Remember, one has to take into account the actual diameter of usable space for each hole when constructing the bosses.

Internals of bottom half across revisions [left to right.] 

Now we can begin to cut out the access points for the ports on the Beagle Bone board that affect the bottom half of the case. The key thing here is to once again verify that your board dimensions are correct or the test prints will be useless.

Shot of  front side, bottom half port access points across revisions  [left to right.] 
Next, I constructed the mounting points and bottom support layout for the bottom of the case. Thankfully, a much simpler process.  However, we want to save on material to reduce cost and print time. So the bottom of the case does not have to be completely solid. Now we are creating a horizontal support structure that acts as the bottom of the case. One could either go with a simple geometrically rigid structure or use some physics to calculate some assumed forces and optimize accordingly.

Bottom of Case changes across revisions [left to right]

Building the top half of the case is a much simpler endeavor as it's a mirror of the bottom frame. For it, one only needs to consider the access points for ports and maximum vertical height. The access points are already defined and it was decided that the case should extend no more than 10mm from the highest board component.

What we have yet to discuss is exactly how this case fits together.  There are various joinery methods available to close the case. It was personal preference that motivate the decision to use a press fit method to restrict all lateral movement and some vertical movement. The ultimate endeavor is to implement a locking mechanism designed into the case itself that is 3D printable. However, a satisfactory resolution is not ready yet.  Therefore, two ports were added on the left and right sides of the case for use with a small velcro strap to prevent all vertical lift. At the cost of an integrated solution, the case can now be opened and closed with ease.

Close up of  Assembly Secured to TurtleBot 2
The final touches and adjustments necessary for a salable product remain. 3D Printing settings must be created to ensure consistent quality prints. The case top will be taller for accommodating a second potential board stack.  Dimensions may be altered to be better fit the installation of threaded inserts in certain locations. And closing methods may be altered for a better fit.

NOTE: .stl files for printing your own case should be up on Thingiverse on Tuesday afternoon EST.

Update 2/26/2013: Files uploaded to Thingiverse

TurtleBot2 demo in NYC

We will be presenting a live demo of the TurtleBot 2 tomorrow in Manhattan at the 6th NY Hardware Startup Meet up.

See you there!

Friday, February 22, 2013

Open Manufacturing: Laser Engraving and Logos

When you have a hammer, everything is a nail; when you have a laser cutter, everything needs to be engraved.

We have been engraving the backside of our plates with a QR Code and part number, so to improve readability and aesthetics we have been exploring ways to paint the plates.There are two points to cover 
  1. Method of Application
  2. Paint used in Application.
The painting methodology was tested in two manners. The first, application of paint over the transfer tape. The tape was removed immediately, in one test, and after the paint had dried in another. Neither made a noticeable impact so long as the paint was able to dry undisturbed.

This picture, however, illustrates a flaw in the application using this method:
Paint applied and transfer tape removed after drying
The smudging and distortion of is caused by excessive application of paint. This should be kept in mind for manual use as well as future process automation. When done correctly, the end result so resemble this plate:

Successful Application
It also turns out that as long as the applier takes great care, similar results can be achieved without the use of transfer tape. One simply fills the engraved sections with paint and removes excess from the surface with a cloth moistened with acetone or paint thinner. The results of which are seen below.

Successful Application without Transfer Tape

However, looking at this image, one could say that the green isn't sufficient as some MDF can be seen through it. Perhaps we should look into using something as a base paint and then adding a coat of the intended color, much like priming a wall. Well we did test that and the results were not satisfactory.

Painted with White base layer and Green top coat
Resulted in a mess. This method was not successful in multiple attempts and shelved for later. It is a suspicion that this idea may work better depending on the type of paint used in the application. The necessity for something providing a similar hardness as enamel is understood, but perhaps their are paints available tailored to these types of jobs or more MDF friendly and so forth. We have yet to test this factor.  What we do know is that moderate application of paint and time to dry undisturbed are key to producing a quality fill. Perhaps a better way to mitigate the MDF coverage problem is to increase the depth of the engraving. It so happens that we tested this idea and with levels of success as well.

Why not do the same thing for the topside of the TurtleBot's top plate? Engraved text and images can replace stickers as means of identification and aesthetics.

This is a sticker that we currently have in use:

Companies have logos. Most agree, putting your logo on a product amounts to free advertising. Advertising is so pervasive in our culture products look strange without them. So far, the TurtleBot has only been branded with a simple stickers.  We have been looking at sticker manufacturers that could produce die cut stickers with fine line and details.

While the sticker is of good build quality, it does not entirely meet desired specifications. We wanted a sticker that felt like part of the product; cosmetically, we wanted to achieve finer line width on the lettering and "power heart."

Overall, this idea means we now have a cost effective means of producing high quality labels and logos for prototypes and low volume production runs. In the future, we would like to explore efficient methods of multiple color applications in addition to expanding application methods themselves such as spray painting. Part of that process includes finding solutions for achieving a satisfactory fill.

Tuesday, February 12, 2013

Fast Visual Odometry and Mapping with RGB-D data

More work from the team at the CCNY Robotics Lab

Monday, February 11, 2013

TurtleBot 2 ROS Groovy ISO BETA 4

If you have a TurtleBot 2 and don't mind re-installing please help us test this!
64-bit ROS Groovy installer for TurtleBot 2
Md5sum: c59ad5f22a81a02b9e6b878f9571b656

Please submit bugs to the appropiate issue tracker on GitHub, or here.
* Unity TurtleBot Dashboard launcher now works
* rosdep now preinstalled for ROS system user and for normal users
* Desktop GUI tools restored
* New Groovy TurtleBot wallpapers
* turtlebot-indicator
 * Provides "help" on initial startup
 * Displays User ROS is running as
 * Automatic startup of ROS can be enabled/disabled

* SSIDs with spaces break ros-network-id
* Rviz default config needed
* Rename rumblepad2 -> logitech
* Notifications for start/stop
* Android Chirp does not currently work
* Nodelet development is complicated due to ROS System User
* sudo service turtlebot start is deprecated

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.