Go to file
shamil 11280b9783 modifying readme 2 2021-04-10 11:11:18 +03:00
URe the last version of the project 2019-12-18 14:25:45 +03:00
autogen optimal code was generated for system matrices, then they were compiled into C code to be used in observer design. Some conclusions about drive gains and identification trajectories were made 2020-03-26 14:03:47 +03:00
basic_param the last version of the project 2019-12-18 14:25:45 +03:00
dataset_ur10e modifying readme 2021-04-10 10:32:51 +03:00
functions indeitification of UR is changed and writeen in terms of functions in order to ease comparison of different data and drive gains. Pendubot indentification is changed to include validation with parameters from CAD 2020-02-07 15:07:15 +03:00
planar2DOF new trajectories for indentification. Ellipsoid constraint on the center of mass for pendubot 2020-02-21 10:57:10 +03:00
screw_algthms the last version of the project 2019-12-18 14:25:45 +03:00
trajectory_optmzn modifying readme 2 2021-04-10 11:11:18 +03:00
utils the last version of the project 2019-12-18 14:25:45 +03:00
README.md modifying readme 2 2021-04-10 11:11:18 +03:00
baseQR.mat Objectve function as well as constraint fucntion for trajectory optimization slightly changed. Now the structure of the robot is not an input argument. Moreover, objective function can work with QR decomposition based base parameters. 2019-12-19 13:31:18 +03:00
driveGains.mat optimal code was generated for system matrices, then they were compiled into C code to be used in observer design. Some conclusions about drive gains and identification trajectories were made 2020-03-26 14:03:47 +03:00
main_ur.m optimal code was generated for system matrices, then they were compiled into C code to be used in observer design. Some conclusions about drive gains and identification trajectories were made 2020-03-26 14:03:47 +03:00
temp_ellipsoid_constraints.m new trajectories for indentification. Ellipsoid constraint on the center of mass for pendubot 2020-02-21 10:57:10 +03:00
ur10_idntfcn_smltn.m identifiation of nonlinear friction model to better fit model. In indentification of inertial parameters physical consistency is added. Identification of drive paramteres is moved to seperate file 2020-01-16 10:48:37 +03:00
ur_base_params_QRlgr.m modifying readme 2 2021-04-10 11:11:18 +03:00
ur_base_params_QRscrw.m the last version of the project 2019-12-18 14:25:45 +03:00
ur_base_params_sym.m experiment design is changed as to have two options for optimization algorithms - pattern search and genetic algorithm. Generation of full regressor and well as load regressor are put into seperate file 2019-12-19 09:48:18 +03:00
ur_exprmt_dsgn.m system matrices is generated in symbolic form as a function of standard rigid body parameters. Folder are slightly restructured 2020-03-06 15:55:03 +03:00
ur_idntfcn_drvgns.m optimal code was generated for system matrices, then they were compiled into C code to be used in observer design. Some conclusions about drive gains and identification trajectories were made 2020-03-26 14:03:47 +03:00
ur_idntfcn_frcn.m added file that check if optimized trajectory collides with table on which the robot is fixed. Moreover kinematics of UR is derived is analytical form, so it can be used in trajectory optimization in order to stay away from table, however is considerably slows down the optimization. Even on sever with 40 cpus patter search computes it for hours. Moreover, added files for identification of the pendubot. 2020-02-05 07:55:09 +03:00
ur_idntfcn_real.m optimal code was generated for system matrices, then they were compiled into C code to be used in observer design. Some conclusions about drive gains and identification trajectories were made 2020-03-26 14:03:47 +03:00
ur_regressors_lgr.m optimal code was generated for system matrices, then they were compiled into C code to be used in observer design. Some conclusions about drive gains and identification trajectories were made 2020-03-26 14:03:47 +03:00
ur_vldtn.m optimal code was generated for system matrices, then they were compiled into C code to be used in observer design. Some conclusions about drive gains and identification trajectories were made 2020-03-26 14:03:47 +03:00

README.md

Dynamic calibration (dynamic parameter indentification) for rigid body manipulator

The code was developed in the framework of the human-robot interaction project at Innopolis University. One of the outputs of the project was a paper -- Practical Aspects of Model-Based Collision Detection, where we provide some review of the recent developments in the field of dynamic calibration, outline the steps required for dynamic parameter identification and provide many useful references. If you have questions from theoretical perspective, please check the paper first. If find paper and code useful, consider citing it in your own papers.

The parameter identification prcedure can be divided into several steps:

Finding regressor

Right now, there are two ways to find regressor matrix:

  1. using screw algorithm: functions screw_regressor.m or screw_regressor2.m)
  2. using generated matrix function. The expression for the regressor is obtained symbolically using Euler-Lagrage equations, and then the function is generated from symbolic expression: script ur_regressors_lgr.m.

Keep in mind that two methods output different regressors, the reason for that is the way you structure the vector of standard parameters!

Finding base parameters

Some standard parameters do not affect the dynamics of the robot (for example, majority of the dynamic parameters of the first link), and some enter the dynamics in linear combination with other parameters. Because of that the regressor matrix is not full rank, and is not invertible - the property we need for least squares estimation. We can find so-called base parameters of the robot, such that corresponding regressor matrix is full rank. You can find two methods for finding base parameters:

  1. numerical method that uses QR decomposition: scripts ur_base_params_QRlgr.m and ur_base_params_QRscrw.m. Because I was mostly using ur_base_params_QRlgr.m it is better documented.
  2. symbolic method: function khalil_gautier.m)

I encourage you to use numerical method, as it is easy to use and understand. Moreover, when symbolic method works only with inertial parameters of the link.

Trajectory optimization

To get accurate estimates of the dynamic parameters, we need to make sure that the data we use has the property called persistent excitation. To achieve that it is necessary to perform trajectory optimization, in other words experiment design. As a trajectory I use the combination of truncated Fourier series (fourier_series_traj.m) and fifth order polynomial, yielding a function mixed_traj.m. As an objective function of the optimization problem, the condition number of the observation matrix (aggregated base regressor functions) is used (see traj_cost_lgr.m or traj_cost_scrw.m).