Yesterday was another wildly successful day with the robot. First and foremost, I was able to redefine the J6 calibration position to match the data in the manual. J6 should have been calibrated against a bolt on the tool flange using the Denso calibration jig (shown below). I do not have this piece of tooling and while I could recreate the concept from their illustrations, it would not be accurate to sub thousandth of an inch dimensions to achieve a matching accurate calibration.
Instead, I brought the robot down flat to the table top and balanced a straight edge on the machined flat on the tooling adapter puck. Using a dial height gauge, I rotated J6 until the height at each end of the straight edge read the same. I then modified the calibration position of J6 to be 0.0000 degreees, and ran a single axis calset for the joint. Now, the joint position display reads 0.0000 degrees when the dowel pin hole is at the 9-o'clock position. Since my model in CAD uses this orientation, I was able to measure the offsets and angles to define the tool coordinate system.
Coordinate Systems and Tool Frames:
We need to have a quick discussion on the different types of coordinate systems and tool frames in the robot. The core of these are:
- Global (base) coordinate system - located at 0,0,0 in the middle of the bottom of the robot mounting flange. Z axis points up, and X axis points away from the cables and ports on the rear of the robot. Most positions are displayed relative to this coordinate system.
- Work coordinate system - multiple work coordinate systems may be defined. These move and rotate the origin point relative to the global origin. Useful for using the same program in multiple positions in the workspace.
- Tool 0 - this is the default tool coordinate system with no offsets or rotations. The origin of this system is the center of the J6 tooling platter (picture above) with the dowel pin hole at the 9-o'clock position.
- Tools 1-9 - these are the available tool offset frames. They allow robot motion to be described at the tip of the tool, accounting for any length offsets and rotations that might be applied.
While most are familiar with Euler angles (roll-pitch-yaw) to describe rotations an issue arises that there are actually 12 valid Euler angle representations which are often ambiguously defined when people discuss rotations. Roll-pitch-yaw usually indicated the XYZ Euler angle description, but different cultures may default to different conventions. There are other less ambiguous definitions of 3D rotations such as quaternions or rotation matrices, the latter of which is the method used by this robot. This is a bit of a complex topic but I'll link to some reading if you are interested:
en.wikipedia.org
In the previous lesson, we learned about Euler Angles Representation which is one of the ways to explicitly represent an orientation. This lesson will continue with explicit ways to represent the orientation, and we will learn about Roll-Pitch-Yaw Angles. This lesson is part of the series of...
www.mecharithm.com
And finally a calculator which converts between all the rotation descriptions:
https://www.andre-gaschler.com/rotationconverter/
What matters to us is understanding that this robot expects the 3D rotation of the tool (and all programmed points) to be described as a rotation matrix which is
unitary and
orthogonal. To be unitary means that each coordinate system axis vector described by the matrix must be of length 1 (a unit vector). The robot control is kind enough to automatically reduce all vectors to length 1 if they were input with anything else. The vectors must also be orthogonal, which means to have all coordinate system axis vectors be at right angles to each other in 3D space. The control will complain to you if this is not achieved. Finally, a rotation matrix description is redundant as the 3rd vector in the coordinate system can be calculated from the first two following the right hand rule of coordinate system definitions and orthogonality. Thanks to this, the robot only requires 9 numbers to define a point, coordinate system, or tool offset.
The Denso robot used the following terminology: Approach Vector (aligned with the Z+ axis), Orientation Vector (aligned with the Y+ axis), and the Normal Vector (calculated from the other two and aligned with the X+ axis).
All position data is entered in the following format. The length of the vector defined by OX, OY, OZ must be of length 1 which can be calculated by sqrt(OX^2 + OY^2 + OZ^2). The same applies to the vector defined by AX, AY, AZ (the approach vector).
Following this logic, I needed to define TOOL 5, my pneumatic gripper. Tools are defined by TOOL programs which only contain the appropriate tool offsets. There are 9 user editable tool programs. These offsets are all applied from the J6 mechanical interface (platter) coordinate system.
From my Solidworks CAD model, I know the following critical dimensions are: Offsets in X and Y = 0mm, Offset in Z = 50.2520mm, Rotations about X and Y axes = 0 degrees, rotation about the Z axis = -135.000 degrees. This can be converted to the proper rotation matrix using formulas or the calculator above:
- X = 0
- Y = 0
- Z = 50.2520
- OX = .7071
- OY = .7071
- OZ = 0
- AX = 0
- AY = 0
- AZ = 1
After applying these offsets and enabling tool 5, the robot correctly moves the joints to now control the rotations about the tip of the gripper jaws.
In this poorly filmed video, you can see the robot first establishing rotations about TOOL 0, the J6 tooling platter (behind the gripper interface), then it is stopped and TOOL 5 is enabled, followed by rotations about the tip of the gripper.