$24
Prerequisites
In order to investigate the forward and velocity kinematics of robot manipulators, the V-REP simulation environment is used. A predefined V-REP scene together with a Python code framework to interact with the simulation environment are provided on MarkUs. Copy the V-REP scene to ’/{V-REP-Installation-Destination}/scenes/’ and the folder containing the code to ’/{V-REP-Installation-Destination}/programming/’. Throughout this assignment, you will derive the forward and velocity kinematics of a specific robot. Afterwards, using these derivations the functionality of predeclared functions in the provided file assignmentII.py need to be implemented:
forwardKinematicsPEF forwardKinematicsDH velocityKinematics calcRCond
calcSingularValues drawManEllipsoid
This code framework then acts as an interface to the provided scene, that should be loaded in V-REP. It does the following:
Specifies a set of joint angles as desired configuration
Calculates the robot end-effector pose for a defined configuration based on the Product of Exponentials Formula (needs to be implemented in forwardKinematicsPEF)
Calculates the robot end-effector pose for a defined configuration based on Denavit-Hartenberg parameters (needs to be implemented forwardKinematicsDH)
Moves the simulated robot in V-REP to the desired configuration
Draws a blue sphere at the calculated end-effector posed to compare it to the simulated robot’s end-effector Calculates the Jacobian matrix of the robot in a defined configuration (needs to be implemented in
velocityKinematics)
Calculates the reciprocal condition number of the obtained Jacobian matrix (needs to be implemented in calcRCond)
Calculates the singular vectors and values of the end-effector position Jacobian matrix (needs to be implemented in calcSingularValues)
Uses the singular values and vectors to draw a manipulability ellipsoid (needs to be implemented in drawManEllipsoid)
Resets the scene and moves the robot to its initial configuration
Note: While the provided code framework is using Python, you can also choose to transfer the functionalities to a C++ framework and do the assignment in C++.
Part I: Forward Kinematics
Figure 1 shows a Kinova Robotics Mico manipulator together with its geometric parameters. This robot is a 6R serial chain. The revolute joints realize rotations in the direction depicted by the green arrows. You can find additional information on the geometric parameters in Appendix I at the end of this document. Draw the kinematic skeleton of the manipulator and assign frames for each joint accordingly. The home position of the robot is depicted in Figure 4 of Appendix I.
(5 points)
Using the stated parameters, derive the forward kinematics using the Product of Exponentials Formula in the space frame. The derivation should be submitted in writing. Implement your derived forward kinematic calculations in the function forwardKinematicsPEF of the provided code framework. This function takes a set of angles as an input and outputs the end-effector pose as a 4 4 matrix 2 SE(3).
(10 points)
Afterwards, derive the forward kinematics using the Denavit-Hartenberg method. The derivation should be submitted in writing. Implement your derived forward kinematic calculations in the function forwardKinematicsDH of the provided code framework. This function takes a set of angles as an input and outputs the end-effector pose as a 4 4 matrix 2 SE(3).
(10 points)
Discuss the implementation differences you encountered for the PoE formula and D-H parameter function. (5 points)
Figure 1: Right: Kinova Robotics Mico manipulator [1] with six revolute joints. Left: Dimensions and geometry of the manipulator together with its base and end-effector frames as well as the positive rotation direction of its joints (green).
3 of 10
Part II: Velocity Kinematics
Derive the velocity kinematics of the robot manipulator described in Part I on paper. The outcome should be a formulation of the 6 6 space Jacobian matrix Js( ) that relates joint velocities to the end-effector twist.
(15 points)
Implement your derived velocity kinematic calculation in the function velocityKinematics of the provided code framework. This function takes a set of angles as an input and outputs the space Jacobian as a 6 6 matrix.
(15 points)
Implement the calculation of the reciprocal condition number in the function calcRCond of the provided code framework. This function takes a 6 6 space Jacobian matrix as an input and outputs the reciprocal condition number as a scalar value.
(10 points)
Implement the calculation of the Jacobian’s singular vectors and values with respect to the translational velocities (Note: We do not need to consider the whole matrix here!) in the function calcSingularValues of the provided code framework. In order to do so, perform a singular value decomposition of the 3 6 space Jacobian matrix relating joint velocities to the end-effector’s translational velocities.
(6 points)
Using the singular vectors and values write a function that draws the manipulability ellipsoid (drawManEllipsoid in the provided code framework). Drawing the three main axes of this ellipsoid with their corresponding lengths is sufficient for this task. This function should return the handles of the drawn objects. Those will be used by V-Rep later to remove the drawn objects and to reset the scene.
You can get up to 5 extra points on this task if you visualize a proper ellipsoid in the scene rather than just its main axes.
(4 points)
4 of 10
Part III: Evaluation
In order to verify your calculations and implementations, load the provided V-REP scene and run the provided code framework with the five configurations stated in Table 1 and five additional but distinct configurations of your choice (so 10 in total). These additional configurations should cover different areas of the robot’s work space and at least one of them should be singular.
For each configuration state the following:
The joint angles
The calculated end-effector pose based on your implementations (both for the Product of Exponential Formula and Denavit-Hartenberg)
The end-effector pose obtained from the simulated robot The calculated reciprocal condition number
The calculated singular vectors and values
Furthermore, take screenshots of the resulting V-REP scene for each configuration and discuss you results based on what you see.
(20 points)
Joint
1
2
3
4
5
6
in
0
0
0
0
0
0
in
0
90
90
0
90
0
in
45
-75
-90
90
45
90
in
-90
-30
90
90
0
45
in
-60
30
-45
35
-100
-120
Table 1: Parameters of five different robot configurations
Appendix I: Mico Robotic Arm - Geometric Parameters [1]
5 of 10
+
. # $ " %
% ' - . ! #
Table 16: MICO 6 DOF basic geometric parameters
' # " $
/,
9
(
/(
I ! # 3 $
(-
/
A ! # 3 $
,(
/
A ! # ! "
,
! " $
/
4 ! ! # ! "
,
! " $
/
2 ! " !
,
(
& ! ""
6 of 10
*
Figure 4: Detailed MICO 6 DOF curved wrist robot length values (units in mm)
7 of 10
/
# $ " %
& % ' & ' " ' 1 ' - . ! ' #
1 A #% 1 ; A8S
!
@
B
A
8 of 10
0
Table 17: Alternate parameters
:
C " " ! " +
# K *5$ ) ,
" ! # 8$%
! !
4 ! " " ! "
!# $
+ "
!
(
4 ! " ! " + "
!#(K $
!
3
H ! " !
/ L # ) ( $ K /
! " 3 ! "
" 3 ! " "
!
3
H ! " !
# ) ( $ K /
! ! ! "
!
L #
) ( $ K /
3 ! " "
! ! "
3
! " !
!
3
H ! " !
# )
( $ K / L /
! ! ! " !
3 ! " !
! ! ! "
! " !
#* 7
9 of 10
References
[1] Kinova Robotics: Mico Manipulator User Guide,
https://www.kinovarobotics.com/sites/default/files/ULWS-RA-MIC-UG-INT-EN%20201804-1.0%20%28KINOVA% 20MICO%E2%84%A2%20Robotic%20arm%20user%20guide%29_0.pdf
10 of 10