A MATLAB & Simulink implementation of the forward and inverse dynamics solutions for mechanisms driven by screw-based transmission systems.
[1] A. Mablekos-Alexiou, L. da Cruz, and C. Bergeles, "Friction-Inclusive Modeling of Sliding Contact Transmission Systems in Robotics," IEEE Transactions on Robotics, vol. 37, no. 4, pp. 1252-1267, 2021
The package requires the MATLAB Signal Processing, Optimization, and Robotics System Toolbox.
System Object Transmission.m
The main script of this package is Transmission.m, which defines the Transmission
class. This class encapsulates all the dynamics related data of a screw-based drive and the operations performed on that data for use in Simulink. The five basic public properties of this class, each predefined as a structure array with values set to zero, are the following:
-
geometry
- Property that contains the geometric parameters of a screw-based drive, including the drive type, the input element lead and lead angle, the diameter of the input element, the diameter of the output element in the case of the worm drive, the reduction ratio, and the thread and pressure angles. The value for the drive type, where1
corresponds to the simple lead screw drive,2
to the antibacklash lead screw drive, and3
to the worm drive, is assigned to the field with nametype
. The rest geometric values are assigned to the corresponding fields with nameslead
,leadAngle
,inElemDia
,outElemDia
,reductionRatio
,threadAngle
, andpressureAngle
. For the simple and antibacklash lead screw drives, the value tooutElemDia
is left zero. Note that the lead, lead angle, input and output element diameters, and the reduction ratio are parameters that are correlated for a screw-based drive. The user must provide values only for the necessary number of parameters so as not to under- or over-define the geometry of the system. -
preload
- Property that contains the preload spring force of an antibacklash lead screw drive. The force value is assigned to the field with namespringForce
. For the simple lead screw and the worm drive, this value is left zero. -
friction
- Property that contains the friction parameters of a screw-based drive, including the breakaway and viscosity terms of the support elements, and the friction coefficient, the Stribeck coefficient, the Stribeck velocity, the rising static friction constant, and the memory constant of the main elements. The frictional values are assigned to the corresponding fields with namesinSupBreak
,inSupVisc
,outSupBreak
,outSupVisc
,kinFriction
,strbInf
,strbVelocity
,risingCst
, andmemoryCst
. In case the friction model used for the simulation does not include all the above parameters, then values are assigned to the relevant fields while the rest are left zero. -
inertia
- Property that contains the inertial parameters of a screw-based drive, including the input and the main output element inertia, as well as the secondary output element mass in the case of an antibacklash drive. The inertial values are assigned to the corresponding fields with namesinElemInertia
,mnOutElemInertia
, andsecOutElemInertia
For the simple lead screw and the worm drive, the value tosecOutElemInertia
is left zero. -
actuation
- Property that contains some actuation parameters of a screw-based drive, including the motor nominal torque and torque constant as well as the encoder counts. The parameter values are assigned to the corresponding fields with namesnominalTorque
,torqueCst
, andencoderCounts
. Assigning values to the fields of that structure is optional and not needed for the simulation. However, it can prove useful in case experimental data, e.g., motor currents and encoder signals, are used for model verification.
Transmission
can be used in a model to simulate in Simulink by defining the setupImpl
and stepImpl
methods. Both methods perform calculations by calling a series of static methods, which implement the corresponding system dynamics, as described in [1].
The script sd_1dof.m, which needs to be run first, creates three Transmission
instances, each enclosing the parameters of the respective single-DoF mechanism that has been tested in [1]. Each object can be added to simINVD_1dof.slx or simFWD_1dof.slx for simulating the inverse or the forward dynamics of the corresponding drive, respectively. The scripts id_1dof_static.m and id_1dof_dyn.m are examples of the static and dynamic identification framework, respectively. Data used for the identification are listed in the experiments folder and read using the getEposData.m function.
The script ssmBuild.m creates a model of the 4-DoF SSM. The script sd_ssm.m creates three Transmission
instances that correspond to the robot's transmission systems. These objects can be added to simINVD_ssm.slx for simulating the robot's inverse dynamics. The script ssmMotorization.m creates a desired motion response for a selected joint of the 4-DoF SSM and, after running simINVD_ssm.slx, provides estimations for the torque requirements.