Posts from — September 2014
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 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 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
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
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.
More on World Coordinates, of course, including potential applications.
September 12, 2014 6 Comments
Even with all the companies out there making industrial components, sometimes it’s still hard to find ready made solutions.Â Â I’m working on a project where it wouldÂ be very useful to have synchronized data acquisition and encoder position, at a reasonably affordableÂ low volume priceÂ (say <$500), and I haven’t found much.
My system includes:
- A custom sensor board that also has quadrature encoder inputs that it can read synchronized with the sensorÂ (but, alas, no analog inputs).
- A servo motor with high resolution (80,000 counts/rev) differential quadratureÂ encoder and a maximum speed of 3000 RPM.
- A force sensor with analog voltage output.
My requirements include:
- Acquisition of motor position, custom sensor data, and force sensor data, synchronized to a millisecond or better.
- Acquire analog force data at least 250Hz (1000 Hz preferred).
- Encoder inputs need to handle at least 400KHz (5 RPS / 300 RPM), with 4MHz preferred, with a 32-bit position counter.
If price isn’t an issue, I’m sure there are a variety of solutions, including Aerotech’s Sensor Fusion (specifically designed for synchronizing motion and data acquisition); other likely candidates include PXI andÂ NI’s CompactRIO.
USB Data Acquisition Boxes With Encoder Inputs
Measurement Computing andÂ Data Translation do make USBÂ DAQ systems that have both analog inputs and quadrature inputs, if you’re willing to pay well over $1000.
The only semi-affordable USB solution I found is the JF-ENCA-11 from a small British company, Protura.Â Â ItsÂ maximum sample rate is more than 1KHz, and it can handle multi-MHz encoders.Â Although its price isÂ substantially under $1000, it’s still signficantly more than my target price.
LabJack’s systems do have analog and encoder inputs, but the maximum quadrature encoder rate is very limited; for streaming data, 7KHz for the cheaper models, and 30KHz or so for the more expensive models.Â However, they do have some interesting products, including very affordable USB ($108 and up), USB and Ethernet ($399 and up) and USB, Ethernet, and WiFi ($499 and up) models.Â The T7 also has Lua scripting (in Beta).
Using USB Data Acquisition Systems With Counter Inputs
Another possible approach is to convert the quadrature signal into an up/down counter signal, using a simple custom circuit or a dedicated chip like the Avago HTCL-20xx or the LSI/CSI LS7x83. Unfortunately, all the affordable models from Measurement Computing, Data Translation, andÂ LabJack that combine analog inputs with counters only support up counters (not up/down counters).
Dataq’s units, such as the DI-155, do support up/down counters, but the maximum rate is a wimpy 5KHz.Â On the good side, the DI-155 has a wide input range (+/- 50V for analog, 30V for digital I/O).Â Other interesting Dataq products include the DI-710-EHÂ ($599 for an affordable Ethernet DAQ), and theÂ DI-718B (with built-in slots for Dataforth DI-8B signal conditioners).
I’ve had a frustrating time searching, partly because I really have to dig to find out whether a unit will work or not, and in the end I’ve come up empty-handed.
However, there may be a solution: use a DAQ unit with a SYNC output signal, meant to synchronize multiple analog data acquisition systems (I’ll probably use the MCC USB-1408FS-Plus, which has a SYNC output).Â The SYNC line toggles once for every acquisition taken; if I can convert it to a quadrature signal, and input that to our custom board’s encoder input, then I can match up the DAQ sample number with the motor position and custom sensor reading.Â US Digital used to make a up/down counter to quadrature unit, but it is now obsolete, so I’m currently investigating making my own.
September 3, 2014 No Comments