Multiple functionalities are offered by the software provided by the company Kinova (Boisbriand, QC, Canada). Using the Development Center and the Torque Console [
27], researchers can monitor the manipulator’s state, activate admittance, switch between Cartesian and angular control and define trajectories. There is a C++ programming function integrated that can be used to access the API, for example, the API function can deactivate auto-avoidance behavior. Kinova Jaco 2 is an integrable device in ROS environment. The kinova-ros stack (set of ROS packages) provides a ROS interface for Kinova Jaco2. The stack is developed above the Kinova C++ API functions, which communicate with the DSP inside the robot base [
27]. Using our knowledge of the robot’s structure and measurements, we define its forward kinematic table, using classical Denavit–Hartenberg convention (
Table 5).
The Manipulator Jaco Gen 2 Inverse Kinematics
All approaches to obtain the inverse kinematics of a robot manipulator proposed in the scientific literature can be divided into two classes: (i) approaches using numerical solutions and (ii) approaches based on closed-form solutions. Due to their iterative nature, approaches based on the numerical solutions are much slower than those using closed-form solution. So, in the most applications, especially for online implementations, the numerical approach for solving inverse kinematics is not suitable.
“Closed form” denotes a solution method based on analytic expressions or the solution of polynomials of degree 4 or less. Although, in the general case, the six-degrees-of-freedom manipulator does not have a closed–form solution, for some particular manipulator structures characterized by either several intersecting joint axes or several angles equal to 0 or ±90 degrees, closed-form solutions exist.
Such an approach to obtain a closed-form solution is Pieper’s approach that studies manipulators with six degrees of freedom where three of their consecutive axes intersect at a point [
29]. The inverse kinematic problem calculates the desired angular position
of each rotational joint, according the predefined position and orientation in the final homogeneous transformation
. We have implemented Pieper’s method for all six revolute joints of Jaco Gen 2, with the last three axes intersecting. The idea in Pieper’s solution is to split the calculation into two separate problems—the first one, taking into account the first three joints, and the second one, considering the last three joints. A brief formulation of the algorithm can be presented as follows:
Locate the intersection point of the last three joint axes;
Calculate the position of this intersection point, given that we know the desired position and orientation of the end-effector;
Solve inverse kinematics for first three joints;
Compute and determine ;
Solve the inverse kinematics for the last three joints.
Using the modified Denavit–Hartenberg convention, given by (9) we can derive the homogeneous transformation (
Table 6):
Where
are the known angular displacements as follows:
The complete model of forward kinematics, using a modified Denavit–Hartenberg convention [
29], taking into account the actual angular displacement of each rotational joint, is
In order to solve the inverse kinematics, we have to calculate the angular position of each rotational joint, knowing the desired orientation and position
:
Values
in (17) are the desired angular positions, and
contents are the predefined desired orientations and positions. Using (17), we put
on the left-hand side of the equation:
Inverting the matrix
, we can write (18)
According to Pieper’s approach, we equate the element placed on row 2, column 4 inside the matric
with the element placed on row 2, column 4 from the matrix
. The unknown angular displacement θ1 can now be expressed by (20).
To solve an equation of this form, we make the following trigonometric substitutions:
where
is the distance from the origin of the base coordinate system to the point defined by the x and y coordinates of the end-effector:
Substituting (21) into (20) [
29],
From the difference-of-angles formula,
Hence,
and so
The solution for
can be written as
We have found two possible solutions for the desired value of
, corresponding to the plus-or-minus sign in (27). Now that
is known, the left-hand side of (19) is known. By equating the elements on row 1, column 4 and row 3, column 4 from both sides of (19), we can write Equation (28) as follows [
29]:
After taking the squares of Equations (28) and (20) and adding them, the resulting equations are obtained:
The plus or minus sign in (32) leads to two different solutions for the angle
. We can rewrite Equation (17) so that the entire left-hand side becomes a function of three parameters
. The only unknown parameter is
:
or
If we equate the elements on row 1, column 4 and row 2, column 4 from both sides of (34), we can write [
29]
These equations can be solved simultaneously for
and
, resulting in
The denominators are equal and positive, so we solve for the sum of
and
as follows [
29]:
where
and
.
Equation (37) computes four values of
, according to the four possible combinations of solutions for
and
; then, four possible solutions for the desired angular position
are computed as follows:
The entire left side of (34) is known. If we equate the elements on row 1, column 3 and row 3, column 3 from both sides of (34), we can write:
As long as
, the solution for
is
When , the manipulator is in a configuration in which axes 6 and 4 line up and cause the same motion of the last link of the robot. In this case, all that can be solved for is the sum or difference of and . This situation is detected by checking whether both arguments of the Equation (40) are near to zero. If so, is chosen arbitrarily, and when is computed later, it will be computed accordingly.
If we consider (17), we can rewrite it so that the entire left-hand side is a function of only knowns and
, rewriting it as follows [
29]:
If we equate the elements on row 1, column 3 and row 3, column 3 from the both sides of (42), we obtain
We solve for the desired value of
as follows:
Applying the same method one more time, we compute
and write (17) in the following form:
If we equate the elements on row 3, column 1 and row 1, column 1 from the both sides of (42), we can write
Because of the plus or minus signs appearing in (27) and (32), these equations compute four solutions. Additionally, there are four more solutions obtained by the wrist of the manipulator. For each of the four solutions computed above, we obtain the flipped solution by [
29]