2.1. Experimental Setup
The robot used for these experiments was a floor mounted ABB6650S, shown in
Figure 2. Next to the robot is a rotational table, carrying the central pipe of the translator. The secondary smaller table is used as storage for the pole-shoes. Mounted on the end of the robotic arm is a robot tool, designed to lift and manipulate the pole-shoes. Three main sensors were mounted in the cell, one touch probe and two inductive proximity sensors, shown in
Figure 3. The touch probe (Sensor A) and one inductive proximity sensor (Sensor B) was mounted in proximity to the pole-shoe storage and were used to measure the orientation and translation of the pole-shoes, once lifted by the robot tool. The second inductive proximity sensor (Sensor C) was mounted on the robot tool itself and was used to measure the orientation and position of the central pipe. This setup creates a system with 7-DOF (Degrees of Freedom), 6-DOF for the robot and 1-DOF for the pipe, which need to be simultaneously controlled or otherwise accounted for. The accuracy of the robot for repeated motions was specified to ±0.1
and ±0.1
. This puts an upper limit on the accuracy needed in the measurement system, as any measurement more accurate than this would be wasted in regards to robot positioning.
The robot’s movements and actions were controlled using programs written in the RAPID programming language. Detailed definitions of all RAPID-related terms and commands can be found in the RAPID manual [
11]. RAPID-related terms will be marked with the
TELETYPE font for easy recognition. In order to realise the pole-shoe mounting and calibration, a set of additional functions were developed, in addition to the standard RAPID language. Their implementation can be found in the
supplementary file EXTRA_ RAPID_ FUNCTIONS_ V1.TXT.
2.1.1. The Touch Probe
The purpose of a touch probe is to be able to detect contact with any solid object from any direction, relative to the sensor’s tip, except the direction occupied by the probe itself. Numerous commercial touch-probes are available, with accuracies down to less than a few
μm, and prices starting at around 500 USD. This level of accuracy was, however, not necessary in this application, as the robot itself had a specified accuracy of ±0.1
. Therefore, a custom probe, shown in
Figure 4, was constructed using cheap, easily available electrical components and a 3D-printed plastic chassis. The design of the developed touch-probe is based on the designs presented in the patents US 4547971-A, US 4769919-A and US 4153998-A. The total material cost for the touch probe was approximately 10 USD. This cost is in the same range as the used inductive proximity sensors (OMRON-E2A), costing around 40 USD each.
2.1.2. The Electromagnet Tool
The tool used to lift the pole-shoes was based on current-controlled electromagnets, described more closely in [
12]. The tool was also equipped with a planar sliding mechanism that allowed an external force to displace the tool up to ±2
in the Cartesian
-plane while remaining locked in the
z-direction. This was achieved by mounting the locking bolts of the tool in square holes with a side length longer than the diameter of the fastening bolt, as shown in
Figure 5. To make sure that the tool always returned to the same position, a set of pre-tensioned springs was used.
2.2. Calculating a Quaternion from Three Points
In order to use sensory data to correct for tool and work-object errors, understanding the robots positioning system is crucial. There are numerous ways to represent an orientation, or rotation, and position in 3D space. The way chosen in this paper was to use Cartesian-coordinates for positions and quaternions for rotations, as this is the representation used within RAPID. However, since the used sensors were only able to measure single points in space, a method of converting between points and quaternions was needed.
To do this, let the 3D-vectors
,
,
and the point
be defined by a set of three unique input points (
,
,
or
,
,
) and one of the following set of equations
or
where
,
,
or
,
,
define a plane in 3D-space. Note that the exact indices and the input order of the plane-defining points are different between Equations (1) and (2). Having two separate definitions was a way to handle the problem that the relative orientation between the measured points was different between the pole-shoe and pipe, as will be shown later.
Solving Equations (1) or (2) for the unknown scalar value,
s, and substituting the answer back into the equations will generate a solution in which
,
and
are three orthogonal unit vectors and can therefore be used as the principal axes of a coordinate system. A normalised rotational matrix,
, containing the vectors
,
and
can then be defined as
where
denotes element
b of vector
a.
Also useful is the magnitude of the angular error, measured against each of the the principal axes, calculated by
where
,
and
denotes the angular error measured against the Cartesian X, Y and Z principal axis, respectively.
While the above angular offsets present an intuitive way to represent the error, it is unfortunately not the representation used by the ABB6650s; instead, the robot control system uses quaternions. The conversion between a rotational matrix and a quaternion can be done using the following equations:
where
is used as a logical operator, having a value of either 1 or 0.
represents the complex four-dimensional quaternion and
its complex conjugate. Note that during the implementation of these equations into the robot, the
(real part) operator was replaced with an
IF statement that checked if the sum under the square root was negative or not; if negative, the sum was set to zero. This was required since the
sqrt(x) function in the RAPID language is unable to handle negative numbers. The result of the calculation remains the same, just less elegant. For the full RAPID implementation, please refer to
Rotm2Quat in the
supplementary file.
2.3. Pole-Shoe Calibration
The tool position and orientation of the pole-shoe lifting tool is a 6-DOF problem that needs to be solved in order to calibrate the pole-shoe. This was done by having the robot find the coordinates of three points on the pole-shoe, here called
,
and
(defined relative to the
BASE coordinate system of the robot, see
Figure 6). Determining the coordinates of these points was done by using the digital output signal from either sensor A or B and the
SearchL (Linear Search) RAPID command.
Once obtained, a pole-shoe orientation quaternion,
, can be constructed using Equations (1) and (5). The full RAPID implementation of the equations, needed to calculate the pole-shoe’s orientation from the three points, can be found in the
supplementary RAPID file under
ShoePoints2Quat.
The calculated quaternion can be used to calculate an orientation error,
. This was done by configuring the tool, relative to the BASE coordinate system, in such a way that the measured points (for a perfectly aligned pole-shoe) would result in an unit rotational matrix,
, and unit quaternion,
, defined as
This approach reduces the calculation of the orientation error into simply becoming the conjugate of the tool quaternion
A better estimation for the correct tool-orientation,
, can then be obtained by applying the Hamilton product,
, between the original tool orientation,
(the orientation of the tool at the time
,
and
was measured), and the error quaternion, written as
In the RAPID program, all of the above calculations were put into a loop where the robot would repeatedly measure and adjust for the resulting
. In addition, when the corresponding angular error reached below a set threshold, the calibration routine would abort and report a success; if not, it would repeat with the previous orientation estimate as the new initial tool orientation. For the RAPID implementation of the Hamilton product, please refer to
HamProd in the
supplementary file.
Once a good orientation of the pole-shoe tool had been obtained, it was copied into a tooldata-definition, a data-type used to define custom tools. This was done by using the fact that robot mounted tools, in RAPID, are defined relative to tool0, defined as the centre of the end plate on the final joint of the robot. Obtaining the relative orientation between tool0 and the current active tool, here called , can be done by using the CRobT-command, with tool0 and wobj0 as references. In addition to describing the rotation of a tool, the tooldata data type contains information about the translation of the tool centre point (TCP) and also stores the tool’s kinematic properties. During these experiments, only the translation and orientation were updated after each measurement. The kinematic properties were assumed to be constant.
The tool’s TCP was defined as
in
Figure 6, and its position relative to
tool0 was calculated by taking the difference between the known position of the used sensor (A or B), and the recorded position of
tool0 when the sensor was triggered at the position for
. To get the actual TCP offset, this difference then had to be rotated, using the Hamilton product, to account for the difference in orientation between the
BASE and
tool coordinate systems.
Using an orientation directly copied from tool0 as the base for correcting the active tool simplified further positioning-programming, since the robot would report a unit quaternion rotation if the active tool was perfectly aligned towards the currently active coordinate system and if the Hamilton correction was done correctly.
The pole-shoe calibration routine was evaluated using two different sensors: the inductive proximity sensor and the touch probe. In order to evaluate if there was any difference in performance between the two, where the main evaluation criteria were repeatability and absolute error.
2.4. Central-Pipe Calibration
The calibration procedure of the central pipe was implemented similarly to that of the pole-shoe. However, since the pipe could only move around the z-axis (relative to the BASE coordinate system), as it was mounted on a rotational table, the procedure was split into two separate steps. The first step oriented the main wedge surface of the central pipe to be roughly aligned with the BASE coordinate system. The second step then measured the remaining orientation and translation error of the pipe and calculated a corresponding work object coordinate system, so that the principal axes of the work-object were aligned to the pipe’s surfaces.
To align the main surface, two initial points (
and
) were measured using the tool mounted inductive sensor (Sensor C) (see
Figure 7). The angular orientation error,
, around the pipe’s
z-axis was then estimated by
The pipe was automatically rotated (using the rotational table) to correct for this error, and the process was repeated until an error of less than 0.25 was measured.
Calculating the remaining orientation error was done by measuring the position of
,
and
(see
Figure 7) and then using Equations (2) and (5) to obtain the corresponding error quaternion. The points were found using Sensor C and the
SearchL command. The full RAPID implementation of the equations needed to calculate the pipes’s orientation from the three points can be found in the
supplementary RAPID file under
PipePoints2Quat.
The calculated error quaternion was used to define a “work object coordinate system” (
wobj). Using this work-object, a new origo and a new set of principal coordinate axes were specified for the robots movements, enabling the robot to adjust its movements to compensate for the misalignment of the pipe. The point
, from
Figure 7, was chosen as the new origo.
2.5. Mounting
The current method used when manually assembling the translator is to mount the pole-shoe on the pipe by carefully positioning the “negative” wedge of the pole-shoe (seen between
and
in
Figure 6) above the “positive” wedge of the pipe (seen between
and
in
Figure 7) and then pushing the pole-shoe down along the
z-direction of the pipe. Once the pole-shoe has been pushed down to the correct position on the pipe, usually determined by the position of the previous layer of pole-shoe and ferrite magnets, it is released. The pole-shoe is then held in place by the wedge and the attractive magnetic forces from the ferrite magnets.
In the presented experiments, this method was changed so that the pole-shoes did not become permanently mounted on the pipe. Instead, they were pushed along the pipe, looking for any signs of self-locking, and then removed again so that the procedure could be repeated over and over again. In order to simplify this process, a small gap was made on one side of the wedge every 500 . This gap enabled the pole-shoe to be removed from the wedge without having to pull it all the way up to the beginning of the wedge.
Two different modes of mounting were tested, one where the lifting tool was fixed relative to the robot’s actuator and one where the -sliding mechanism of the tool was allowed to move—evaluating whether the performed measurements of the pole-shoe and pipe and the path-following of the robot were accurate enough on their own, or if tool-readjustments were necessary during the moving action. During this evaluation, the time needed to mount the pole-shoe was also measured.