Friday, January 29, 2010

UAV Crash Videos

Sometimes after a long hard day of crashing, over and over again, it's better to sit back and watch other people crash, over and over again.

That helps put things in perspective.

Breakfast Robots Packing Pancakes

These pick and place robot position pancakes precariously in piles in preparation for packaging.

Thursday, January 28, 2010

Serial Loopback

If you need to create unit tests that deal with serial ports or are trying to build a GPS emulator for you robot simulator, you need a way of creating a null modem device.

Socat is pretty awesome and seems to do the job. Why Linux doesn't have a native virtual serial port device remains a mystery. Windows has com0com which seems to be popular.

Wednesday, January 27, 2010

Upgrade: Can the Hexbug Nano Swim?



Before environmental pressures forced Hexbugs to evolve to operate on land, they were originally amphibious creatures that were found in damp environments. Perhaps like humans losing their gills and the ability to breathe underwater, Hexbugs may have lost their waterproofness during the evolutionary process. They may however retain the innate ability to swim.


If they were waterproof, Hexbugs would be able to swim.

Experimental Equipment

  • Hexbug Nano
  • Water
  • Bucket
  • Wood Putty
  • Rubber Cement

Experimental Procedure

  • Remove battery & battery cover.
  • Turn power switch to the on position
  • Insert battery to check that the switch is in the correct position, remove battery
  • Use wood putty to fill in the area in which the switch moves
  • Apply rubber cement to the edge of the battery case
  • Let everything dry for 15 minutes
  • Fill the bucket with water
  • Find camera and tripod
  • Insert battery into Hexbug (It should now be running)
  • Attach battery cover and screw closed
  • Drop Hexbug into bucket
  • Record video
  • Upload video to Youtube or Vimeo
  • ???
  • Profit




Once waterproofed, Hexbugs operate underwater just as effectively as they do on desks and floors. This is also a quick and fun experiment that creates a minimal amount of mess and doesn't require soldering.

Future Work

Future experimenters may look at using bristlebots to search for pollution released into sewer systems, look for the lost city of Atlantis or perhaps they could be used as fishing bait.


I Heart Robotics will not be held responsible for damaged Hexbugs or international incidents that lead to war with the fish people of Atlantis.

Tuesday, January 26, 2010

DIY 3D Laser Scanners

Unlike the delta robot that I currently have no practical use for, I could use a 3D laser scanner.

DIY 3D Scanner from Kyle McDonald on Vimeo.

The structured light approach to 3D scanning looks like it might work for producing a high resolution scan. Failing that another approach might be to build a DIY version of this, or maybe I should just build the delta robot as a 3d contact scanner.

Delta Robots

Now I want a delta robot, I just need to figure out something to use one for in the lab.

That looks like spray paint on that laptop's screen, which can be removed with a double sided razor blade. I suppose I could use a delta robot for getting beat at checkers.

I was going to post the derivation of the equations of motion but it is time for breakfast.

Monday, January 25, 2010

Thing-a-Week #3: Arduino Case

This weeks thang is here! It's a case for your Arduino.

This is the first version of modular rackmountable stackable case system for Arduino and other electronics. If there is sufficient interest, after debugging the initial version I will look into getting injection molded parts made in bulk.

The cases are designed to fit 6 across in a 1U Rack, or 4 across turned the other way. So you can stack 2 longs-ways on top of 3 short-ways.

There should be room for an Arduino shield, and the space in the front of the case is for a circuit board with your alphanumeric LEDs. The end piece with a cutout is designed to hold a 3mm thick plate you can laser or hacksaw out of acrylic, wood or whatever.

Download and Enjoy.
Feedback is greatly appreciated.

As always, weekly things can be found here.

Saturday, January 23, 2010

Fastners for 3D Printing: Screw it, we'll use science. Part 1 of n

On a previous episode, I considered the idea of using wood screws to hold together 3D Printed parts. At the time I conjectured that wood screws might work fairly well for holding plastic parts together without having to drill and tap every hole. The scientific method has now been used to determine conclusively that wood screws may work very well for your application.


For each experiment two plastic parts were printed. One part had a series of square screw bosses and the other part was a plate with a series of counter sink holes. The assembled parts were placed in a vice and a Ryobi cordless drill model P205 with adjustable torque was used to tighten each screw until failure.

The torque settings on the drill produce an unknown torque and have an unknown error and unknown repeatability. However for the purpose of comparing the relative holding strength of each fastening method, these issues should not prevent a rough estimate from being made.

Some screw bosses were treated with Plastruct Plastic Weld to attempt to improve the performance by chemically melting the layers together.

The parts were printed in ABS on a Stratasys FDM Machine with the pilot holes oriented upwards.

Failure Modes

Stripped threads are by far the most common failure mode, as expected.

Stripped screw are generally caused by poor alignment between the tool and the fastener.

Cracked screw bosses seem to be a factor when the holes are too small for the fastener. They are also commonly caused by poor bonding between the printed layers.

Split counter sinks are caused by the screw acting as a wedge and driving apart the material being fastened. Due to this issue some experiments were repeated with an aluminum plate to compensate for this problem.

Split screw bosses occur after the counter sink has split and the screw is driven until total failure. Here the wedge action caused by the screw is a little clearer.

Experimental Results

Each experiment was repeated 3 times and the results have been uploaded to Google Docs. During the experiment two screws were stripped due to an error on the part of the experimentor, who failed to properly insert the tool into the screw.


Wood screws work are able to be tightened to a higher torque than machine screws without stripping the threads. However, since most commonly available wood screws are countersunk they can not be tightened as much as machine screws when used as plastic to plastic fasteners.

Holes for wood screws should be under sized and drilled out. For example when making a hole for a #6 wood screw, print a 1mm diameter hole and drill it out to 2.5mm. The pilot holes will need to be slightly bigger then if you were using wood screws in wood. The primary benefit of wood screws is that tapping is not required.

The application of the plastic solvent did help improve performance marginally however it is probably more useful as a method of repairing stripped threads by filling the stripped hole with plastic bits and applying solvent.

When the plastic thread forming screws finally arrive they will be covered in Part 2.

Material Properties

Many of you may already know about MatWeb, but Warren Ginn at the IDSA’s Materials and Processes Blog has compiled a large list of material property databases.

Friday, January 22, 2010

DIY Arduino Tank Robot

Another great Arduino based robot, this one from George Frick, that has some photos and source code available.

Thursday, January 21, 2010

OpenSCAD Tip: Linear and Rotational Extrusions

Todays OpenSCAD tips and tricks starts with a circle that looks like a hexgon, but we will fix that later.
circle(r = 1);

Next, translate the circle along the X-axis.
translate([2, 0, 0])
circle(r = 1);

Now we can perform a linear extrude to produce a cylinder.
linear_extrude(height = 10, center = true, convexity = 10, twist = 0)
translate([2, 0, 0])
circle(r = 1);

The twist parameter appears to be left handed and is in units of degrees. A parameter of twist=360 will extrude one full rotation around the Z-Axis.
linear_extrude(height = 10, center = true, convexity = 10, twist = -100)
translate([2, 0, 0])
circle(r = 1);

Here is a twist of 100 degrees.
linear_extrude(height = 10, center = true, convexity = 10, twist = 100)
translate([2, 0, 0])
circle(r = 1);

A -500 degree twist shows how the 2d projection on the X-Y Plane is swept around the Z-Axis. The extrusion of the 2D shape is not perpendicular to the path of extrusion.
linear_extrude(height = 10, center = true, convexity = 10, twist = -500)
translate([2, 0, 0])
circle(r = 1);

If center = false the extrusion will start at the position of the original circle. If center = true then after extrusion the solid will be centered after extrusion.
linear_extrude(height = 10, center = false, convexity = 10, twist = -500)
translate([2, 0, 0])
circle(r = 1);

The shape of the circle can be improved by setting one of the special parameters $fn, $fs, and $fa. $fn is the number of fragments, $fs is the size of the fragments and $fa is the angle of the fragments.
linear_extrude(height = 10, center = false, convexity = 10, twist = 360)
translate([2, 0, 0])
circle(r = 1, $fn=100);

The shape of the extrusion can be improved by setting the $fn parameter of the extrude and this value is passed to the shape of the circle.
linear_extrude(height = 10, center = false, convexity = 10, twist = 360, $fn=100)
translate([2, 0, 0])
circle(r = 1);

The slices parameter is similar to the $fn special variable, expect it does not apply to the 2D shape.
linear_extrude(height = 10, center = false, convexity = 10, twist = 360, slices=100)
translate([2, 0, 0])
circle(r = 1);

A rotational extrusion of the circle will produce a torus.
rotate_extrude(convexity = 10)
translate([2, 0, 0])
circle(r = 1);

Similarly to a linear extrude, the rotational mesh results can be refined.
rotate_extrude(convexity = 10)
translate([2, 0, 0])
circle(r = 1, $fn=100);

Further refinement is possible and increases the amount of time required to compile and render the model.
rotate_extrude(convexity = 10, $fn=100)
translate([2, 0, 0])
circle(r = 1, $fn=100);

The convexity parameter is best explained by the following image.

The 2D shape in black has a convexity of 4 because a ray indicated in red may intersect the shape at most 4 times. Correction from Clifford Wolf, "To determine the convexity number one must only need to count the number of front or backsides a ray intersects - but not both." Therefore this example has a convexity of  2 and a circle has a convexity of 1. A 3D shape could be thought of in a similar way. Setting the convexity=10 unless you have a problem seems to be the easiest solution.

The OpenSCAD manual has been updated to include these examples.

Hopefully in the future there will be a way to produce helical sweeps so threaded parts such as worm gears can be produced.

Wednesday, January 20, 2010

Fire Fighting Robots

No longer content with fighting fires the size of small candles, European roboticists have been developing practical fire fighting robots useful for search and rescue and detecting toxins in industrial fires.

According to their website, the View Finder robots are "Vision and Chemiresistor Equipped Web-connected Finding Robots". The main use of these robots is to send back visual and chemical information to firefighters dealing with industrial fires, which may be especially hazardous due to toxic chemicals and more importantly burning toxic chemicals.

The Guardian robots are focused on search, rescue and mapping in the same kind of environment.

South Yorkshire Fire & Rescue’s Neil Baugh and Dr Jacques Penders pose with a pair of Guardian Robots.

More information about the robots will be presented at the RISE 2010 conference.

Tuesday, January 19, 2010

Trident Snake Robot

The passive roller design looks interesting and perhaps useful for energy efficient roller blading robots. More information about the experiments can be found here.

Monday, January 18, 2010

Thing-a-Week #2: Chuck Key Holder

This weekends thing is a drill press chuck key holder. I don't know about you but there is not much that is more frustrating then losing the chuck key, so this widget is designed to give you a convenient place to store the key while you are drilling holes.

The holder was originally designed for use with a mini drill press, however the part was designed parametrically with OpenSCAD so you can modify the part yourself.

There is room for an optional magnet and a thumb screw which may help to improve the performance of your widget. Available now for both download and purchase.

You can find older and newer weekly things here.

OpenSCAD Tip: Manifold Space and Time

While not quite as bad as some non-euclidean projective geometry, the geometry of 3D printed parts must be manifold and the spice must flow.

A 3D model is considered manifold if it is water tight and there are no holes in the geometry.While there are no obvious holes in the mesh below, at the point indicated it looks like the surface is not differentiable and is causing a problem.

Avoiding intersections like this will help ensure that your parts can be produced. Usually just moving the feature slightly will fix the problem.

Selecting Thrown Together from the View menu in OpenSCAD can also help trouble shoot problems. The patterned areas in the image above are indeterminate and will cause problems.

So, when performing composite solid geometry operations, it is important to remember that the piece you are subtracting must extend past the original part.

Saturday, January 16, 2010

PR2 Beta: Call for Proposals

Free robots are looking for good labs.

Willow Garage is looking for research groups interested in contributing to open source robotics development. Interested research organizations can find more information on the call for proposals here.

Hopefully in the future they can open up the program to unaffiliated researchers and amateurs, perhaps by providing access to a PR2 robot through scheduled tele-operation sessions.

Friday, January 15, 2010

Autonomous Surface Vehicles

This looks like a good start for an ASV simulator, perhaps the team will consider releasing the code as open source so that other teams can help to improve the software.

This looks like an interesting prototype with a combination of thrusters, and removable keels and rudders. It looks like a good way of experimenting with different configurations.

Having had some nautical experiences, there is something slightly disturbing about seeing a boat sailing without anyone on board.

Thursday, January 14, 2010

Random Photos


Wednesday, January 13, 2010

Fastners for 3D Printing: Part 0 of n

There are a few 3d printers on the market that are capable of producing solid parts with the stiffness and durability needed for making robots.

When building a robot, these parts will often require some sort of fasteners to hold them together. It is possible to build them in such a way to achieve a snap-fit or be glued together and I suppose you could rivet them together, but often for the sake of easy disassembly and repair screws are the preferred solution. There are a few different techniques and options for using screws to hold together 3D printed parts made with fused deposition modeling of plastics like ABS.

  • Tapping Threads for Machine Screws
  • If you print small pilot holes of about 1mm and drill them out to the correct size you can tap them fairly successfully. If you don't drill them out then the hole will usually fall out, try it you will see what I mean. A drop of CA glue after drilling and before tapping will also help increase the strength of the hole and the thread forms. Make sure to let it dry before tapping. The tapped threads will be relatively weak when compared to similar threads in metal but they are often good enough for basic prototypes. Tapping threads is however a time consuming process when done manually, and you will soon tire of this method.
  • Brass Inserts
  • Brass inserts are usually used with injection molded parts but they probably could be glued into a 3D printed part. Unfortunately, in most cases, the additional strength provided by the insert will simply move the failure from the screw threads to the boss. The brass inserts also add an additional cost to the project.
  • Nuts
  • Using nuts may also work depending on your application, however they can be cumbersome to install often requiring two tools at once to tighten. Regular nuts also have a tendency to loosen if a threadlocker is not used.
  • Wood Screws and Sheet Metal Screws
  • After a little bit of trial and error both wood screws and sheet metal screws may make effective fasteners for plastic. Wood screws will probably work better for softer thermoplastics like ABS and sheet metal screws may work in more brittle plastics like acrylic. Sizing the screw holes correctly may be difficult and I have not really had a chance to extensively test either approach yet.
  • Plastic Thread Forming Screws
  • If there are screws for metal and wood then logically there should be screws made specifically for plastic. I have ordered some and will post the results once testing is completed.

Also, have you ever wondered, what is the point of flat washers?

Tuesday, January 12, 2010

Arduino Light Following Robot

Monday, January 11, 2010

Urban RoverBot Field Testing

The drive system looks pretty good for getting over rough terrain, but it must really make odometery difficult.

Saturday, January 9, 2010

Thing-a-Week #1: Solder Caddy

I am going to steal JoCo's Idea and challenge myself to make at least one thing a week for the next year.

This week it's a Solder Caddy for holding your solder. Equipped with super powers it is capable of holding a spool of solder next to your soldering iron or on the wall. The power of friction helps to prevent it from dispensing excess solder. The holder works with both leaded and unleaded solder, and hold the standard 1lb spools.

It is yours for the downloading and printing.

Friday, January 8, 2010

New Product: Sonar Servo Mount

The first product from I Heart Engineering is now available for purchase.

The Sonar Servo Mount allows you to mount a Parallax Ping))) Ultrasonic Sensor on a Hitec HB-325 Servo so that your robot can easily scan for obstacles. Unfortunately, screws not included and the holes are not drilled or tapped, though there is a starter hole.

The assembly video also shows a technique for rapidly tapping screw holes in plastic.

If you have a RepRap, a MakerBot CupCake CNC, or any other 3D Printer, you can download a STL file for the heavy duty version.

Prototyping Services


  • No Laser Cutter
  • Grouping parts for assemblys is problematic
  • Can not currently ship fasteners with orders


  • Laser Cutting
  • Easy to use templates
  • Leather!?
  • Online Shops
  • Can sell your design or finished product
  • Seller can ship finished and assembled product to customers
  • The interface is occasionally somewhat dis-intuitive
  • Only flat things


  • Injection molded parts
  • Sample
  • Prices start at $1495
  • Quotes are not instantaneous

First Cut

  • Solid Plastic
  • Aluminum
  • More expensive than 3D Printing, prices start at $95

RedEye on Demand

  • $150 Minimum


  • Cost
  • Some quotes are not instant

While this quick roundup of prototyping services is obviously biased. I think most of these companies serve slightly different prototyping needs and may be more or less useful at different stages of making.

Any other suggestions?

Thursday, January 7, 2010

Review: HP Mini 110

The HP Mini 110 may not be the best netbook, in fact it's probably not even an average one.

Starting with the software HP includes gigs of demo and trial bloatware programs for you to deinstall. I also like how HP links to LifeLock as a favorite to "protect your identity". I guess that it HP's way of saying that the Mini 110 is for suckers.

Once you have finished deinstalling all of the useless software it is time to clean the outside of the computer. HP thoughtfully included a cleaning cloth, which is good because the machine is a fingerprint magnet.

The audio connector is in a 3.5mm 4 conductor TRRS configuration, which makes it iPhone compatible but incompatible with the headset you probably already own. They did not include an adapter.

In terms of buttons, the power switch and the wifi switch both look like they will break sooner or later. The mouse buttons are also awkwardly positioned to the sides of the touchpad. In Linux the WiFi switch has problems.

Overall the build quality feels really cheap, especially when compared to a decent netbook like the Dell Latitude 2100.

On the upside the charger is pretty small, the keyboard seems ok for a netbook and the card reader slot allows card to be inserted so they are flush with the case. That is about all the good things I can say. Oh, and it has USB ports.

<troll>I didn't know HP still made computers</troll>, but now that I have seen one of their recent models, I wonder if maybe they should just stop making computers. This computer would work well for an autonomous underwater vehicle, as you won't mind losing it when it sinks to the bottom of the sea.