Merging modern software development with electrons and metal
Random header image... Refresh for more!

Category — Series

Good Stuff: Affordable 19″ Rack Mount Keyboard Drawer

In the past at work we haven’t used rack mount keyboard drawers because all the models we could find were over $200.  Instead, we designed our own that mounts on top of a rack mount PC.  This design works fine, but it requires modifying the computer case.

Since we’re making some changes, I took another look, and finally found an affordable 19″ 1U (1.75″) keyboard drawer: the Penn Elcom EX6301B, which is available from Newark/Element14 here for about $80.

Actually, it’s not keyboard drawer: Penn Elcom calls it a laptop drawer.  But it will work fine as a keyboard drawer as long as you are using a compact, slim keyboard such as the Adesso AKB-410UB.  A standard keyboard is way too wide; my beloved Cooler Master Quickfire tk is narrow enough, but it’s too tall.

I’d also highly recommend using a keyboard with integrated track pad or trackball (the AKB-410UB has a track pad).  With a narrow enough keyboard, you might be able to tuck a low profile mouse into the space, but you’d probably want a mouse pad, too, so you’re not running the mouse over the drawer’s mesh surface.

Penn Elcom doesn’t provide a lot of information (just some very basic dimensions), so we ordered a drawer to see if it would work — and decided it would.  The build quality appears good, too.


May 30, 2015   No Comments

Another Way To Make Your Own Metal Buttons

I have to say someday I’d like to make my own metal buttons.

In the past, I’ve covered Microchip’s mTouch metal-over-cap technology (here and here), which uses capacitive technology.  Microchip has a groovy app note which shows some of the ways you can use it, and has an eval kit available for ~$150 (base mTouch kit plus metal over cap accessory kit).

Now TI has a reference design for creating your own metal buttons using TI’s inductive sensor technology.  TI’s reference designs provide that: a reference design with layout, calculations, and notes.  You can’t buy them pre-made, but you can use them as a good starting point.

I’ve glanced through the manual for this reference design, and it is full of good info – and the design is pretty neat, too.  For example, it includes two different haptic types, ERM/LRM and piezo.  I have the HapTouch Booster Pack which features the same ERM/LRM haptics technology, and I’m not too impressed – it’s similar to the haptic feedback from a current smartphone.  (Note that I think the problem is with the basic ERM/LRM technology, not the controller).

Other approaches to non-moving metal buttons include piezo electric and ultrasonic.


March 19, 2015   No Comments

Robot Primer 13: Why Use Work Coordinates

Since Work coordinates are transformed into Base coordinates in the end, why bother?  Why not just use base coordinates?  Here are some possible reasons; I’m sure creative programmers have come up with others.

  • Using Work coordinates can be more natural.
  • Using Work coordinates can save re-teaching points.
  • Palletizing
  • Using dynamically updated Work coordinate makes complex situations such as picking and placing from a moving conveyor easy.

Next I’ll look at some examples in more detail

Using Work Coordinates To Save Re-Teaching

If we use base coordinates and the robot’s base coordinates change, then all the points have to be re-taught.  However, if we’ve used world coordinates, all we have to do is to add the offset between the old and new base coordinates, and we’re done.

Some reasons why the robot’s base coordinates could change:

  • Robot needs to be re-calibrated
  • Robot needs to be replaced by another robot of the same or possibly different type
  • Moving the whole base plate to a different robot cell
  • If base plate fabrication is precise enough, to allow easier production

Let’s look at a simple example using a simple assembly robot.

Simple Assembly Cell

Robot Primer World Coord 1

This imaginery work cell uses a robot to:

  1. Pick up the circular yellow bases from the top left pallet (defined by points P1 to P4)
  2. Place the base in the assembly fixture (P13) and add glue
  3. Pick up the blue part from the bottom left pallet (defined by P5 to P8) and place it onto the base.
  4. Move the completed part to the inspection fixture (P14)
  5. Finally move the inspected part to the output pallet (defined by P9 to P12).

The base plate is big blue rectangle, and the base coordinates are represented by the even larger gold rectangle, with the coordinates for P1 shown (54.5mm and 85.0 mm).

My example is simple and easy, there’s no need for additional complications such as work coordinates, right?

Work Coordinates to the Rescue

But now suppose the robot breaks down and is replaced by a new robot, with slightly different base coordinates (represented by the bold red rectangle).

Robot Primer World Coord 2

As you can see, the position of P1 has shifted quite considerably on the base plate.  So we will need to re-teach all 14 points.

No big deal, right?  But now suppose the pallets and fixtures and interchangeable so we can assembly 10 different types of parts.  Now we have to re-teach 140 positions: ouch!

Unless, of course, we used work coordinates – then all we have to do is change the offset so that the work coordinates for the robot matches the work coordinates for the old robot.  Now a little bit of extra work pays off: we only have to teach 1 work coordinate instead of 140 positions.

Personal Note

I actually saw this situation; a robotic system I serviced had its robot re-calibrated, and the program used base coordinates, so all the points had to be re-taught.


January 24, 2015   1 Comment

Cool Components: Ultra High Speed Motors And Drives

Most motors I’ve seen spin at the leisurely rate of 6000 RPM or less (heck, many are limited to 3000 RPM).

My Emoteq BH02300’s can do 20,000 RPM.

I’ve drooled over the specs for motors from Emoteq, Pittman, and Maxon that can do 60,000->100,000 RPM.  (Yes, I’d love to own one).

But a Swiss company, Celeroton, takes the cake: they have motors and controllers that can do 500,000 RPM!  Those must be totally groovy.

Celeroton sells brushless motors, drives, and compressors that use  their motors and electronics.  The drives have a minimum speed of 5000 RPM; some models can handle up to 1,000,000 RPM maximum speed.  The drives (or inverters, as Celeroton calls them) are available in 400W to 3Kw models, and are sensorless (no hall effect, encoder, or other sensors required).

A friend is looking into using the Celeroton drives with a merely fast motor (~100,000 RPM).  If I get any real world feedback from him, I’ll update this post.

November 4, 2014   No Comments

Robot Primer 12: Moving In Work Coordinates

While researching for this post, I reviewed the relevant Denso manual (the Setup Guide).  Although its dry text is no match for my scintillating style, I have to say it gives a good, illustrated explanation of the various coordinate systems.  I am not going to try to compete with it; instead, I will give my own summary with some videos and, in an effort to get your programming juices flowing, concentrate on why and where you might want to use these features.

I will be using a simulated robot recorded in WinCaps III simulation mode (kudos to Denso for providing a 90-day WinCaps III trial version, available to everyone).  I chose a 6-axis articulated robot because it can do motions that are impossible using a SCARA or Delta robot. I am using Denso in my examples, primarily because I can use the simulator and am familiar with their robots.

As I’ve noted before, the basics should apply to other robots, but the details will vary for different robot controllers,   Of course the robot type determines what poses the robot can do (for example, a 4-axis SCARA can only roll about the Z axis (Rz), not the X axis or Y axis).

Note that you can click on the pictures to see a bigger version.

Work Coordinates

Work coordinates are rectangular coordinates fixed relative to the base of the robot.  Work coordinate systems are defined relative to the Base coordinates by specifying:

  • the coordinate origin (X, Y, Z) defined in base coordinates
  • the angles of rotation (Rx, Ry, Rz) around the corresponding base coordinate axes (Rx, Ry, Rz).

Base Coordinates

Base coordinates are work coordinates with the origin at the base of the robot.  In Denso terminology, the base coordinates are “3-dimensional Cartesian coordinates whose origin is at the center of the robot basement”.

Example Base And Work Coordinates

Base, Work Top View

Base, Work Top View

I setup my robot work space with a few objects:

  • Denso robot with my simple end effector
  • A table with two of my simple fixtures.  The second fixture is rotated 180 degrees from the first fixture.
  • Two work coordinate systems, Work1 for Fixture 1 and Work2 for Fixture 2.  When the robot is in the appropriate Work coordinates, the fixtures’ positions are exactly the same.

The picture, above, shows Base coordinates (Work0), Work1, and Work 2.  The lines show the direction of the positive axes (+X, +Y, and +Z).  The  bottom window shows the definition of Work1 and Work2 relative to Base coordinates.  Note  that Work2 has a Rz value of 180 degrees, and you can see that the direction of Work2’s X and Y axes are exactly opposite Work1’s.

Coordinate Axes and Angles of Rotation

Work1 Front View

Work1 Front View

Work2 - Front View

Work2 – Front View

The first picture above shows the Work1 coordinate axes (X, Y, Z) and angles of rotation (Rx, Ry, Rz), and the second picture shows the Work2 coordinate axes and angles of rotation.  The lines and arrows point in the direction of positive movement.

The Base coordinate axis directions (X, Y, Z) are the same as Work1’s axis directions, but the origin is different.  The angles of rotation are the same for both.

The coordinate axis directions are different between Work1 and Work2: because Work2 is rotated 180 degrees about the Z axis, its X and Y axes point in the opposite direction from Work1’s X and Y axes.

The angles of rotation define the attitude of the robot flange, and are also called yaw, pitch, and roll.  Their origin always is at the center of the robot flange surface (you can see that the origin is the same for both Work1 and Work2), but the directions are the same as the Work coordinate’s X, Y, and Z axes (so Work2’s Rx and Ry directions are reversed compared to Work1’s Rx and Ry directions).  When you rotate along Rx, Ry, or Rz, the origin (which is the center of the flange surface) will stay in the same X, Y, Z position, but the rest of robot will rotate around that axis.

Putting It All Together: Robot Movements in Base World Coordinates

My youtube video shows some basic movements in Base World Coordinates, moving in CP (straight line) mode.  Try to match my descriptions above with what the robot is doing: making this video took a lot of time, so I hope it helps make my prose a lot clearer.

What’s Next

More on World Coordinates, of course, including potential applications.

September 12, 2014   6 Comments

Robot Primer 11: End Effector For Simulation

I’ve put together a simple and unrealistic end effector that I will be using in the rest of this series to help illustrate my topics.  It’s unrealistic because it can’t be manufactured as shown (for example, no pneumatic tubing).

Now for a quick look at what I’ve created:

End Effector

FSW End Effector

The major parts are:

  1. Mounting to robot arm
  2. Smart Camera (a Microscan Vision MINI)
  3. Gripper with pneumatic suction cup (mounted on a Misumi MPPU10 Air Linear Guide)
  4. Second gripper mechanism
  5. My sample part

I choose to use vacuum grippers for simplicity.  Using two gripper adds flexibility, since the robot can exchange parts at the fixture.


FSW Part

It’s a simple part; I made it non-symmetric so it’s easier to see the effects of certain robot sequences.



This fixture is a very simple place to put the part.  Most likely, a real fixture would have a clamp and more connections, but this one is good enough for my planned demonstrations.



January 31, 2014   No Comments

Cool Components: Compact C-Mount Autofocus Lens

In the past, I’ve always used fixed focus lenses for machine vision because although autofocus lenses are cool, they added a lot of cost and size and I could manage without them.

Last year at Photonics West, Varioptic had an impressive demo: two tiny 2D barcode readers (from Cognex and Microscan) that both sported autofocus lenses using Varioptic’s liquid lens technology.  Back then, Varioptic only made autofocus modules in M12 size or smaller.  Most machine vision cameras, however, use C or CS mount.  (In the future, maybe Micro 4/3 (M43) will become common for machine vision, which would add a lot of affordable autofocus lenses, although they might not be optimized for machine vision).

Recently, however, Varioptic introduced a compact C-mount autofocus lens.  It’s not a cure-all; I don’t know the price and currently only one model is available (16mm).  Control options are analog, I2C, SPI, or RS-232.  Next time I have to use machine vision, I might not use this lens, but I’ll definitely check out the details.

Why use autofocusHere’s one example of why an autofocus lens can be handy: suppose I need to inspect different parts of various sizes.  The camera is in a fixed location.  The parts are picked up by  a robot, so I can move the parts to any desired distance from the camera.  Ideally, I’d like to be able to position the part so that it fills most of the camera’s field of view, thus providing the best image.

However, if my depth of field is less than the distance between the optimal positions for the biggest and smallest parts, I will get less than optimal images, since I will have to position the smaller parts farther away (in my diagram above, at position 2 instead of 1).  With an autofocus camera, I can either use an autofocus routine, or have a set focus position for each part size.  Also, at times maximum depth of field is not desirable: sometimes a shallow depth of field gives an better inspection image, or you need to use less light (larger depth of field requires smaller aperture, which means more light is required for the same image brightness).

Blog note: I’m still working on the robot series, but the next few posts are taking more research and time than I expected.

December 5, 2013   No Comments

Robot Primer 10: The Core Is Coordinates And Kinematics

In my last post, I talked about the development time advantage the robot’s integrated system brings.  However, I think the core robot advantage is coordinate points, transforms, and kinematics, which all go together.

After all, I can buy integrated non-robot systems ranging from pre-wired motors and drives to integrated motors (such as SmartMotors and MDrives) to integrated stages (like IAI’s stages).

However, a robot still has much faster development time because it deals with real world coordinates.

Terminology And Capabilities

I am using Denso Robotic’s terminology and capabilities as a rough basis for my posts, instead of continually saying “most robot controllers do X, some do Y, and a few do Z”.  Most robot controllers should have similar capabilities and equivalent terms.

Coordinates Again

A point in space is represented using a coordinate systems, such as cartesian (XYZ or rectangular), spherical, or cylindrical.  Using the coordinate system that best fits the problem can really help when you’re doing physics or geometry, but in the robot world rectangular coordinates are the usual choice.

However, most controllers provide a choice of coordinate origins, including work (fixed relative to the robot base) and tool (fixed relative to the end of the robot’s arm).

The orientation of the end effector can be represented using systems such as Rx (roll about the X axis), Ry (roll about the Y axis), and Rz (roll about the Z axis) or roll, pitch, and yaw.

Kinematics Yet Again

The robot moves its joints, not coordinates.  Kinematics (the science of motion) and inverse kinematics is how the robot figures out how to move its joints to get to the desired coordinate position and orientation.

The robot controller knows the position of each of its joints (using encoder feedback) and knows their relationships (length of each joint segment, which joint is connected to which, etc), so by doing a little fancy math it can always know where the end effector is in a particular coordinate system (the kinematics part) or figure out how to move the joints to get to the desired position  (the inverse kinematics portion).

Let’s look at a very simple example: suppose we want to lay down glue on the path shown below at a constant velocity from P1 to P4.

Example Robot Path

Example Robot Path

It’s pretty simple if you are using a cartesian robot.  For example, if you are using a Galil controller, the core code could be something like:

PA 0,0
VS 10000
VA 50000
VD 50000
LI 0,5000
LI 10000,0
LI 0,-5000
LI -10000,0

But suppose we’re using a SCARA robot.  Now it’s tough to use a normal motion controller, because joints are rotary so every time we try to move a joint in X or the Y axis, we also move in the other axis (Y or X).  To get straight lines, we have to move multiple joints at just the right relative speeds.

But it’s easy with a robot controller:

MOVE L, @E P[1 TO 4], S50

which moves the robot through positions P1, P2, P3, and P4 at 50% speed with square corners.

The bottom line: the robot controller makes using complex robots (such as articulated, SCARA, or delta) as easy as using a cartesian robot.

Coordinate Transforms

Coordinate transforms are very useful; here are a few examples:

  • Moving using the teach pendent in Tool mode (the robot has to do coordinate transforms between the Tool coordinates and its base coordinates)
  • Easy use of multiple end effectors, such as dual grippers and a camera.  For example, you can teach one location and then move any of the end effector tools over that location simply by changing the Tool mode.
  • Getting machine vision information into a form usable by the robot (calibrate camera, get its positions, and then transform them into robot coordinates)

What’s Next?

I will be dig deeper into coordinate systems, transforms, and their uses.


November 1, 2013   No Comments

Robot Primer 9: The Integration Advantage

Most robots are integrated systems.  Combined with robot controller features such as kinematics and teaching points, this makes it much faster to to get a robot up and running.

When we were evaluating a Denso robot, I setup it up in one day, from unpacking to running a simple demo. My task was like this:

  1. Unpack the robot and controller
  2. Place it on a solid bench and mount it (with help from our techs)
  3. Connect the robot power cable to the controller
  4. Connect air to the robot (for the Z axis)
  5. Connect the teach pendent to the controller
  6. Have our techs connect a simple end effector (it’s nice having a machine shop)
  7. Connect AC power to the the controller
  8. Start the system
  9. Teach a few points using the teach pendent
  10. Create a simple move routine going through several points using the teach pendent and searching through the manual for the appropriate commands
  11. Test it

Now when I’m setting up a motion controller, it starts with:

  1. Unpack the motion controller, motors, and stages
  2. Find the motion controller documentation
  3. Connect electrical power to the motion controller via the appropriate terminal blocks
  4. Find the motor documentation
  5. Use a break-out board to connect the motors to the motion controller
  6. Configure the motion controller for the motor, and try to spin the motor, verifying encoder, hall sensors, etc.
  7. Do some initial tuning.
  8. Connect the motor to the stage.
  9. Verify the limit sensors.
  10. Then I have to repeat steps 4-9 for all the other axes, and we still just have a bunch of unconnected stages.

Of course, if you’re using a robot controller with custom cartesian stages, setup time will be longer.  And to be fair, many (most?) robot applications will take considerable programming time.

October 6, 2013   1 Comment

Robot Primer 8: Robot Types

In this post, I will take a quick look at industrial robot types.  I know there are more robot types (such as cylindrical and polar) and variations in each type, but these are the most common.  The manufacturers’ web sites and other resources such as books and system integrators have more opinions about when to use what robot type.

Robot terminology can vary between manufacturers.  I will use this post to define my terminology.

A Few Words About Coordinates and Planes

Planes And Axes

Since I will be using reference axes, the picture above shows my reference system.  The X axis is toward the viewer, the Y axis is left to right, and the Z axis is down to up.  The XY plane, highlight, is formed by X and Y axes.

Note that while three positions (such as X, Y, Z position in rectangular coordinates) uniquely define a point in space, it takes more to define the position and orientation of a real object in space.  Robot controllers often borrow from aviation and use yaw (nose left/right), pitch (nose up/down), and roll (rotation about the principal axis) to define the robot end effector’s orientation.

The end effector is the tooling attached to the end of the robot’s arm.  End effectors consist of whatever is needed to get the job done, such as vacuum cups, grippers, cameras, glue dispensers, and welding equipment.

Articulated Robot

6-Axis Articulated Robot

6-Axis Articulated Robot

The articulated robot is constructed from a series of interconnected rotary joints or axes, typically 4 to 6 in total.  It’s biggest advantage is flexibility; a 6 axis model should have full 6 DOF (degrees of freedom), and thus can approach a given XYZ point with any desired yaw, pitch, and roll (within the robot’s mechanical limitations).  All those joints make it easy for the robot to reach around obstacles.  A five axis articulated robot will still be more flexible in its moves than a 4-axis SCARA.

If you want to visualize this flexibility, consider performing automatic screwing at several locations on the surface of a sphere.  The robot’s screwdriver needs to be perpendicular to the sphere’s surface at each location: a 6-axis articulated robot can do this, but a 4-axis SCARA can’t.

Like SCARA robots, articulated robots have a large work area and a small base.  Very large articulated robots are available.  They are often slower than SCARA or delta robots and less rigid in the Z axis than SCARA robots.

I number the robot axes by starting with the joint closest to the base as Axis 1 and work out from there.  The picture above shows my numbering.


4-Axis SCARA Robot

4-Axis SCARA Robot

The SCARA robot has all three rotary axes in the XY plane, with only 1 axis that can move up and down.  This configuration gives the robot more rigidity, or less compliance, along the Z axis, and thus the name: Selective Compliance Assembly(or Articulated) Robot Arm.

Like articulated robots, SCARA robots have a large work area and a small base.

Since the SCARA robot is fast and rigid, they are often used for assembly (especially when downwards force is required), pick and place, dispensing, and palletizing.

The picture shows my axis numbering.  The quill combines Axis 3 (Z, up/down) and Axis 4 (rotation around axis 2).  The quill is typically hollow to allow passing through cabling (pneumatic and electrical) to the end effector.

Cartesian Robot

3-Axis Cartesian Robot

3-Axis Cartesian Robot

Cartesian robots are made from a combination of linear stages, typically stacked.  Using linear stages offers a potentially wide range of possible characteristics, including:

  • Very heavy load capability, especially with gantry (parallel) stages.
  • Very high acceleration and velocity, for example  with linear motor based stages
  • Very high precision, for example with stages using air bearings and flexures
  • And more with options such as piezo motor stages and belt-driven stages.

If a cartesian robot makes sense, then there are several possible approaches.  I’ll use Adept’s lineup as an example, since I’m familiar with it and they offer cartesian robots:

  • Use an Adept robot controller with an Adept cartesian robot.  This is by far the easiest approach, with very little integration work: basically plug the robot into the controller, and go.
  • Use an Adept robot controller with Adept servo drives and motors and third party stages.  This will take considerably more integration, including defining the kinematics.
  • Use an Adept robot controller with standard servo amps and motors and third part stages.  Again, this will approach requires much more integration, including defining the kinematics, but provides the most flexibility.
  • Or if the application doesn’t require the extra capabilities of a robot controller, use an appropriate motion controller.  For example, the ACS SpiiPlus is oriented towards precision motion (think semiconductor) while the Schneider LMC-20 is targeted towards packaging.  This will  require substantially more integration work than using an integrated robot and controller package.

Given the variety of possible cartesian robots, it’s hard to give definite comparisons.  In general, they are going to take up more area (larger base) than a SCARA or articulated robot, and will not have the flexibility of the 6-axis articulated robot.

Delta Robot

Delta Robot

Delta Robot

The delta robot is a parallel robot with various arms joined together at the end effector.  Typically it has 3 degrees of freedom (XYZ), although some models have an additional rotary axis.

The delta’s strong points are speed and stiffness: since the arms are very light, it can accelerate and move very quickly.  The multiple connected arms add stiffness, but they also reduce the work envelope.

The delta robot is typically mounted above the work area.

Delta robots are popular for packaging and other high speed pick and place type operations.

September 28, 2013   2 Comments