There are parallelograms, springs, tendon couplings, cables, and counterweight in da Vinci Research Kit (dVRK) so that we can not use existing tools to solve the dynamics model identification of it. This software framework was developed to solve these problems. However, this package is not limited to the dVRK. It can also be used to idendity the dynamic model of other robots.
-
Symbolic dynamic modelling based on DH parameters and geometric tree
- Geometrical modelling
- Dynamic modelling
- Base parameter generation using QR decomposition
-
Optimal excitation trajectory generation based on fourier-series
-
Data processing
- Derive velocity and acceleration from position measurements
- Zero-phase low-pass filter for original data
- Remove the data whose velocity is close to zero to decrease the noise for Coulomb friction
-
Identification
- Joint cable torque identification
- Ordinary Least Square (OLS)
- Weighted Least Square (WLS)
- Semi-definite Programming (SDP)
-
Excitation of robots, using dvrk ROS library
-
Output of the identified paramters
-
Output of C++ or Python code of identified dynamic model for control use
-
Regularize output print
- Python 2.7
- Python modules
- NumPy, SciPy, SymPy, CvxOpt, Matplotlib, PyOpt, cloudpickle
Anaconda is recommended.
Yan Wang, Radian Gondokaryono
When developing this work, we referred a lot from the following places:
When I was using PyOpt, I found some problems with it. In pySLSQP.py file, these changes should be done.
gg = numpy.zeros([la], numpy.float) ==> gg = numpy.zeros(la, numpy.float)
dg = numpy.zeros([la,n+1], numpy.float) ==> dg = numpy.zeros([la[0], n + 1], numpy.float)
w = numpy.zeros([lw], numpy.float) ==> w = numpy.zeros(lw, numpy.float)
jw = numpy.zeros([ljw], numpy.intc) ==> jw = numpy.zeros(ljw, numpy.intc)