Have a personal or library account? Click to login
A Comprehensive Model of the Abb Irb 2400 For Simulation and Control Applications Cover

A Comprehensive Model of the Abb Irb 2400 For Simulation and Control Applications

By: Paweł OBAL and  Piotr GIERLAK  
Open Access
|Dec 2025

Full Article

1.
INTRODUCTION

The deployment of industrial robots in manufacturing processes has exhibited steady growth in recent years. This trend is largely attributable to the inherent advantages of automated production systems, including increased efficiency, repeatability, and adaptability. According to the International Federation of Robotics [1], the automotive sector remains the predominant consumer of industrial robotics. Nevertheless, its relative share has diminished as other industries increasingly invest in automation technologies to enhance their production capabilities.

Industrial robots are mainly used for operations such as material handling, welding, assembly, and dispensing. Conversely, their application in robotic machining remains comparatively limited. This limitation stems primarily from the insufficient structural rigidity and relatively low precision of robotic manipulators when compared to conventional CNC (Computer Numerical Control) machine tools. However, robots offer distinct advantages over CNC machines in terms of extended workspace, higher degrees of freedom, and operational flexibility [25]. Consequently, robotic systems are being adopted for machining processes where high structural stiffness is not critical – for instance, in milling soft materials such as wood. In scenarios that demand greater motion accuracy, various compensation strategies are implemented to correct the robot’s positional deviations relative to the workpiece.

A critical requirement for improving robotic accuracy and integrating industrial robots into more demanding manufacturing applications is the development of a high-fidelity dynamic model. Such a model facilitates development of simulation environments and the implementation of digital twins – virtual representations of physical systems – which enable predictive analysis and optimisation of production workflows [68]. Digital twins constitute a contemporary paradigm in manufacturing systems engineering, allowing for the virtual planning of machine trajectories, estimation of cycle times, and in-depth experimentation with process parameters without physical hardware. Furthermore, digital twins are instrumental in simulating control system behaviour and validating interdevice communication during virtual commissioning. Modern industrial networks support integration with virtual environments [9,10], enabling real-time interaction between physical controllers (e.g., PLCs, robot controllers) and virtualised machinery. This capability allows for pre-deployment software verification, early detection of control logic errors, and flexible reconfiguration of existing systems.

Most industrial robot manufacturers provide proprietary software environments for offline programming and simulation of robotic work cells based on their own products. Additionally, third-party platforms exist that support the integration of equipment from multiple vendors [11,12]. Regardless of origin, the majority of these tools rely predominantly on the robot’s kinematic model [11,13], which only describes geometric relations between joints and links. Such a simplified description cannot predict phenomena that dominate robotic machining, including regenerative chatter, tool-tip deflections caused by structural compliance, velocity-dependent friction with pronounced Stribeck hysteresis, or thermally induced drift. In practice these effects translate into trajectory errors of several millimetres and torque oscillations, ultimately degrading surface quality and tool life. Capturing them requires a comprehensive dynamic model that couples inertia, joint friction, link flexibility with high-frequency excitation from the cutting process [2,1416]. Recent research on wire-arc additive manufacturing (WAAM) confirms a similar trend: accurate thermo-mechanical models are indispensable for predicting distortion and residual stresses in large-scale deposits [1722].

Due to intellectual-property constraints, robot manufacturers rarely disclose detailed dynamic models or component-level parameters of their products. Although constructing a custom research platform is possible [23], it is often prohibitively expensive and may not yield insights applicable to existing commercial robots. A more pragmatic approach is to build transferable, data-driven models of widely deployed manipulators. The formulation proposed here based on Euler-Lagrange and Newton-Euler formalisms can be ported to other six-axis arms of comparable architecture. Only link inertias and drive-train friction coefficients need to be updated. Parameter identification was therefore carried out in two stages: CAD-derived mass and inertia data were refined using torque measurements obtained via the External Guided Motion interface and a six-axis force/torque sensor, and a constant-velocity procedure was employed to isolate friction hysteresis despite the absence of direct joint-torque sensors. The resulting parameter set was validated against time-series data of measured torques for various trajectories. The results for single-member movements were presented to demonstrate the modelled phenomena. This foundation enables high-fidelity digital twins, supports simulation-driven experimentation and paves the way for advanced control algorithms aimed at improving task accuracy in robotic machining applications.

This article presents the development of a comprehensive dynamic model of the ABB IRB 2400 industrial robot, which serves as a research platform for investigating robotic machining processes. The IRB 2400 is widely used in academic and industrial research centres worldwide [2427]. However, to the best of the authors' knowledge, a complete dynamic model of this manipulator has not yet been published. The presented work introduces a full rigid-body dynamic model, including the robot's kinematic equations, Jacobian matrix, and dynamic equations of motion. The methodology for estimating the model parameters and validating the model's accuracy is also described. The estimated parameter values are made publicly available, thus contributing to the existing body of knowledge and enabling further research. The proposed model facilitates the development of high-fidelity digital twins, supports simulation-driven experimentation, and provides a foundation for advanced control algorithm design aimed at improving task accuracy in robotic machining applications.

2.
OBJECT DESCRIPTION

In order to conduct research on the robotic automation of machining processes, a dedicated experimental setup was developed, as illustrated in Fig. 1 and Fig. 2. The core of the research station is the ABB IRB 2400 industrial robot, which is equipped with a six-axis force/torque sensor and a high-speed spindle unit. The station also includes a two-axis positioner for workpiece manipulation. The Tool Centre Point (TCP) of the robot is defined relative to the machining tool mounted in the spindle holder. Its spatial position is determined with respect to a coordinate frame attached to the robot's flange surface. The robot has been equipped with the Absolute Accuracy option, which means that it has been additionally calibrated to improve the TCP’s absolute positioning accuracy. The manufacturer provides a calibration (“Birth”) certificate specifying unit-specific positioning-accuracy metrics; the values for the robot used in this study are listed in Tab. 1. The ABB IRB 2400 used in this study is additionally equipped with the External Guided Motion (EGM) interface, which streams the full robot state vector (joint positions, velocities and controller-estimated actuator torques) at 250 Hz directly from the IRC5 controller. While positional accuracy is certified by the manufacturer, the actuator torques are not measured; they are computed online by the controller’s internal dynamic model and the associated uncertainty is not disclosed. Accordingly, torque values are treated as estimates.

Fig. 1.

Schematic diagram of the robotic machining test stand

Fig. 2.

Physical implementation of the robotic machining test stand

Tab. 1.

Accuracy parameters from the Robot’s “Birth certificate”

ParameterValue (mm)
Average Absolute Error0.18
Maximum Absolute Error0.38
Standard Deviation0.07

The mechanical structure of the manipulator comprises six revolute joints forming an open kinematic chain. Notably, the third link is actuated by a parallelogram linkage that maintains its spatial orientation constant during the motion of the second joint. This kinematic arrangement ensures stable tool orientation, which is advantageous for precision tasks such as machining.

The mathematical model of the robot will be utilised for the synthesis of control algorithms and for performing simulation studies. The development of the model was based on the following simplifying assumptions:

  • The manipulator links and the tool are modelled as rigid bodies, neglecting structural deformations;

  • The dynamic behaviour of actuators, joint compliance, and transmission backlash are disregarded;

  • The parallelogram linkage is not modelled explicitly, its effect is absorbed into the link inertias;

  • The centre of mass of each link is assumed to lie within its plane of symmetry.

These simplifications reduce model complexity without unduly compromising the fidelity required for control design and dynamic simulation. They are dictated primarily by limitations of the measurement chain: with access only to motor-side position signals, the effects of link flexibility, joint elasticity and gearbox backlash cannot be isolated and are therefore neglected. The resulting model underpins subsequent studies on robotic machining performance, trajectory optimisation and accuracy-enhancement strategies.

3.
KINEMATIC EQUATIONS OF THE ABB IRB 2400 ROBOT

The kinematic model of the ABB IRB 2400 manipulator was formulated using the Modified Denavit–Hartenberg (MDH) convention, which is widely adopted for the systematic modelling of serial robotic chains. The MDH convention was selected because its link frames coincide with the physical joint axes, eliminating the half-link offset of the classical formulation and thereby simplifying gravity compensation and inertia characterisation. Using MDH also guarantees direct compatibility with the kinematic data provided by ABB for the IRB 2400, keeping the analytical model numerically consistent with the controller during calibration, collision checking and offline programming. In addition, the MDH arrangement aligns with modern spatial-vector libraries (for example, Pinocchio and RBDL), enabling seamless reuse of CAD-derived inertia tensors and efficient evaluation of dynamic terms. Taken together, these aspects make MDH a transparent and computationally economical choice relative to the classical DH and Product-of-Exponentials descriptions, and it is therefore adopted throughout this study. According to the MDH convention, a Cartesian coordinate frame is assigned to each i link of the manipulator such that:

  • The z-axis zi is aligned with the axis of rotation of joint i;

  • The axis xi intersects zi–1;

  • The axis yi completes the right-handed coordinate system.

The transformation of coordinate frame i with respect to frame i – 1 is described by a homogeneous transformation matrix Tii1{\bf{T}}_i^{i - 1}. In the MDH convention homogeneous transformation is expressed as the product of four elementary transformations: 1Tii1=Rotx,αi1Transx,ai1Rotz,θiTransz,di,{\bf{T}}_i^{i - 1} = {\bf{Ro}}{{\bf{t}}_{x,{\alpha _i} - 1}}{\bf{Tran}}{{\bf{s}}_{x,{a_{i - 1}}}}{\bf{Ro}}{{\bf{t}}_{z,{\theta _i}}}{\bf{Tran}}{{\bf{s}}_{z,{d_i}}}, where: Roti–1 – rotation around the x-axis by the twist angle αi–1, Transx,ai–1 – translation along the x-axis by the link length ai–1, Rotz,θi. – rotation around the z-axis by the joint angle θi, Transz,di – translation along the z-axis by the offset di. The names of the trigonometric functions have been abbreviated using the following notation sqi. = sin(qi), cqi = cos(qi).

The resulting matrix has the following explicit form: 2Tii1=[ cθisθi0ai1 sθicαi1cθicαi1sαi1di sαi1 sθi sαi1cθi sαi1cαi1dicαi10001 ].{\bf{T}}_i^{i - 1} = \left[ {\matrix{ {{{\rm{c}}_{{\theta _i}}}} & { - {{\rm{s}}_{{\theta _i}}}} & 0 & {{a_{i - 1}}} \cr {{{\rm{s}}_{{\theta _i}}}{{\rm{c}}_{{\alpha _{i - 1}}}}} & {{{\rm{c}}_{{\theta _i}}}{{\rm{c}}_{{\alpha _{i - 1}}}}} & { - {{\rm{s}}_{{\alpha _{i - 1}}}}} & { - {d_i}{{\rm{s}}_{{\alpha _{i - 1}}}}} \cr {{{\rm{s}}_{{\theta _i}}}{{\rm{s}}_{{\alpha _{i - 1}}}}} & {{{\rm{c}}_{{\theta _i}}}{{\rm{s}}_{{\alpha _{i - 1}}}}} & {{{\rm{c}}_{{\alpha _{i - 1}}}}} & {{d_i}{{\rm{c}}_{{\alpha _{i - 1}}}}} \cr 0 & 0 & 0 & 1 \cr } } \right].

The parameters αi–1, ai–1, θi, and di represent the geometric characteristics of each link, as defined by the modified DH convention.

The coordinate frames used for the kinematic description of the ABB IRB 2400 manipulator, as well as the corresponding distances between them, are presented in Fig. 3. The dimensional and structural data were extracted from the manufacturer’s documentation [28].

Fig. 3.

Schematic diagram of the ABB IRB 2400 manipulator with coordinate frames assigned in accordance with the modified Denavit–Hartenberg convention

In this study, coordinate frames permanently attached to the robot's physical structure are labelled according to the link number in the kinematic chain. The links are numbered starting from the robot base (Link 1) up to Frame 7, which is attached to the flange and corresponds to the tool coordinate system, commonly referred to as TCP of tool 0 in industrial robot programming manual [29].

Additional coordinate frames, which can be defined arbitrarily (e.g., for external tools or mounting), are denoted using alphabetic symbols. In Fig. 3, the base frame is labelled B, while the frame associated with the tool mounted on the robot flange is denoted as T, representing the TCP of the spindle.

Because the origin of a coordinate frame is a point in threedimensional space, the homogeneous transformations described above enable the determination of the position and orientation of any frame with respect to another.

An important kinematic characteristic of the ABB IRB 2400 is that the third link is driven via a parallelogram linkage mechanically aligned with the second link. Joint 3 is actuated via a parallelogram. The motor axis is coaxial with Joint 2, while Joint 3’s rotation axis is distinct. The rotation of each joint is expressed by a generalised joint variable qi, representing the angular displacement measured along the respective actuation axis.

The Denavit–Hartenberg parameters of the ABB IRB 2400 manipulator, based on the modified convention, are summarized in Tab. 2.

Tab. 2.

Geometric parameters of ABB IRB 2400 manipulator according to modified Denavit-Hartenberg notation

ai (m)αi (rad)di (m)θi (rad)
Link 100d1 = 0.615q1
Link 2a1 = 0.1π2 - {\pi \over 2}0q2π2{q_2} - {\pi \over 2}
Link 3a2 = 0.70500q3 – q2
Link 4a3 = 0.135π2 - {\pi \over 2}d4 = 0.755q4
Link 50π2{\pi \over 2}0q5 + π
Link 60π2{\pi \over 2}0q6
Tool 000d7 = 0.0850

Based on the general transformation formulation introduced in Section 3, the individual homogeneous transformation matrices were derived using the Denavit–Hartenberg parameters listed in Tab. 2. The transformations from one link frame to the next are given by the following matrices: 3T1B=[ cq1sq100 sq1cq100001d10001 ],{\bf{T}}_1^B = \left[ {\matrix{ {{{\rm{c}}_{{{\rm{q}}_1}}}} & { - {{\rm{s}}_{{{\rm{q}}_1}}}} & 0 & 0 \cr {{{\rm{s}}_{{{\rm{q}}_1}}}} & {{{\rm{c}}_{{{\rm{q}}_1}}}} & 0 & 0 \cr 0 & 0 & 1 & {{d_1}} \cr 0 & 0 & 0 & 1 \cr } } \right], 4T21=[ sq2cq20a10010cq2sq2000001 ],{\bf{T}}_2^1 = \left[ {\matrix{ {{{\rm{s}}_{{{\rm{q}}_2}}}} & {{{\rm{c}}_{{{\rm{q}}_2}}}} & 0 & {{a_1}} \cr 0 & 0 & 1 & 0 \cr {{{\rm{c}}_{{{\rm{q}}_2}}}} & { - {{\rm{s}}_{{{\rm{q}}_2}}}} & 0 & 0 \cr 0 & 0 & 0 & 1 \cr } } \right], 5T32=[ cq2q3 sq2q30a2sq2q3cq2q30000100001 ],{\bf{T}}_3^2 = \left[ {\matrix{ {{{\rm{c}}_{{q_2} - {q_3}}}} & {{{\rm{s}}_{{q_2} - {q_3}}}} & 0 & {{a_2}} \cr { - {{\rm{s}}_{{q_2} - {q_3}}}} & {{{\rm{c}}_{{q_2} - {q_3}}}} & 0 & 0 \cr 0 & 0 & 1 & 0 \cr 0 & 0 & 0 & 1 \cr } } \right], 6T43=[ cq4 sq40a3001d4sq4cq4000001 ],{\bf{T}}_4^3 = \left[ {\matrix{ {{{\rm{c}}_{{{\rm{q}}_4}}}} & {{{\rm{s}}_{{{\rm{q}}_4}}}} & 0 & {{a_3}} \cr 0 & 0 & 1 & {{d_4}} \cr { - {{\rm{s}}_{{{\rm{q}}_4}}}} & { - {{\rm{c}}_{{{\rm{q}}_4}}}} & 0 & 0 \cr 0 & 0 & 0 & 1 \cr } } \right], 7T54=[ cq5 sq5000010sq5cq5000001 ],{\bf{T}}_5^4 = \left[ {\matrix{ { - {{\rm{c}}_{{q_5}}}} & {{{\rm{s}}_{{q_5}}}} & 0 & 0 \cr 0 & 0 & { - 1} & 0 \cr { - {{\rm{s}}_{{q_5}}}} & { - {{\rm{c}}_{{q_5}}}} & 0 & 0 \cr 0 & 0 & 0 & 1 \cr } } \right], 8T65=[ cq6sq6000010 sq6cq6000001 ],{\bf{T}}_6^5 = \left[ {\matrix{ {{{\rm{c}}_{{q_6}}}} & { - {{\rm{s}}_{{q_6}}}} & 0 & 0 \cr 0 & 0 & { - 1} & 0 \cr {{{\rm{s}}_{{q_6}}}} & {{{\rm{c}}_{{q_6}}}} & 0 & 0 \cr 0 & 0 & 0 & 1 \cr } } \right], 9T76=[ 10000100001d70001 ].{\bf{T}}_7^6 = \left[ {\matrix{ 1 & 0 & 0 & 0 \cr 0 & 1 & 0 & 0 \cr 0 & 0 & 1 & {{d_7}} \cr 0 & 0 & 0 & 1 \cr } } \right].

In this work, vector and matrix notations adopt a convention where the lower index indicates the frame in which the vector or transformation is expressed, while the upper index refers to the reference frame. For example, oT7{\bf{o}}_T^7 represents the position vector of point T with respect to frame 7, while oT7{\bf{o}}_T^7 denotes the position of frame 7's origin expressed in the TCP frame.

To account for the tool mounted on the robot's flange, an additional coordinate frame associated with the TCP of the spindle was defined. Its position and orientation with respect to frame 7 (flange) are defined by the translation vector oT7{\bf{o}}_T^7 and the rotation matrix RT7{\bf{R}}_T^7, resulting in the homogeneous transformation: 10TT7=[ RT7oT70001 ]{\bf{T}}_T^7 = \left[ {\matrix{ {} & {{\bf{R}}_T^7} & {} & {{\bf{o}}_T^7} \cr 0 & 0 & 0 & 1 \cr } } \right]

The rotation matrix RT7{\bf{R}}_T^7 corresponds to a rotation of π/2 around the y-axis: 11RT7=Roty,π2=[ cπ20sπ2010sπ20cπ2 ]=[ 001010100 ].{\bf{R}}_T^7 = {\bf{Ro}}{{\bf{t}}_{y,{\pi \over 2}}} = \left[ {\matrix{ {{{\rm{c}}_{{\pi \over 2}}}} & 0 & {{{\rm{s}}_{{\pi \over 2}}}} \cr 0 & 1 & 0 \cr { - {{\rm{s}}_{{\pi \over 2}}}} & 0 & { - {{\rm{c}}_{{\pi \over 2}}}} \cr } } \right] = \left[ {\matrix{ 0 & 0 & 1 \cr 0 & 1 & 0 \cr { - 1} & 0 & 0 \cr } } \right].

Hence, the complete homogeneous transformation matrix becomes: 12TT7=[ 001xT010yT100zT0001 ].{\bf{T}}_T^7 = \left[ {\matrix{ 0 & 0 & 1 & {{x_T}} \cr 0 & 1 & 0 & {{y_T}} \cr { - 1} & 0 & 0 & {{z_T}} \cr 0 & 0 & 0 & 1 \cr } } \right].

Using the defined transformation matrices, the complete transformation from any intermediate frame j to the base frame B determined via successive matrix multiplication: 13TjB=k=1jTkk1.{\bf{T}}_j^B = \prod\nolimits_{k = 1}^j {{\bf{T}}_k^{k - 1}} .

Accordingly, the position and orientation of the TCP with respect to the base frame is expressed by the overall homogeneous transformation matrix: 14TTB=[ R11R12R13oTxR21R22R23oTyR31R32R33oTz0001 ].{\bf{T}}_T^B = \left[ {\matrix{ {{R_{11}}} & {{R_{12}}} & {{R_{13}}} & {{o_{{T_x}}}} \cr {{R_{21}}} & {{R_{22}}} & {{R_{23}}} & {{o_{{T_y}}}} \cr {{R_{31}}} & {{R_{32}}} & {{R_{33}}} & {{o_{{T_z}}}} \cr 0 & 0 & 0 & 1 \cr } } \right].

Where the terms Rij and oTi represent the elements of rotation submatrix and translation vector, respectively. The analytical expressions for these components are detailed in equations (15) through (26): 15R11=sq1 sq4 sq5cq1cq3cq5+cq1cq4sq3sq5,{R_{11}} = {{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_5}}} - {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_5}}} + {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_4}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_5}}}, 16R12=cq1cq6sq3sq4cq4cq6sq1+cq1cq3sq5sq6+cq5sq1sq4sq6+cq1cq4cq5sq3sq6,{R_{12}} = {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_4}}} - {{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_1}}} + {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_3}}}{{\rm{s}}_{{q_5}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_6}}}, 17R13=cq1sq3sq4sq6cq1cq3cq6sq5cq5cq6sq1sq4cq4sq1sq6cq1cq4cq5cq6sq3,{R_{13}} = {{\rm{c}}_{{q_1}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_6}}} - {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_5}}} - {{\rm{c}}_{{q_5}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_4}}} - {{\rm{c}}_{{q_4}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_6}}} - {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_3}}}, 18R21=cq4sq1sq3sq5cq3cq5sq1cq1sq4sq5,{R_{21}} = {{\rm{c}}_{{q_4}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_5}}} - {{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_1}}} - {{\rm{c}}_{{q_1}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_5}}}, 19R22=cq1cq4cq6cq1cq5sq4sq6+cq6sq1sq3sq1+cq3sq1sq5sq6+cq4cq5sq1sq3sq6,{R_{22}} = {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_6}}} - {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_1}}} + {{\rm{c}}_{{q_3}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_5}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_6}}}, 20R23=cq1cq4sq6+cq1cq5cq6sq4cq3cq6sq1sq5+sq1sq3sq4sq6cq4cq5cq6sq1sq3,{R_{23}} = {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_4}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_5}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_4}}} - {{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_5}}} + {{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_6}}} - {{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_3}}}, 21R31=cq5sq3+cq3cq4sq5,{R_{31}} = {{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_3}}} + {{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_4}}}{s_{{q_5}}}, 22R32=cq3cq6sq6sq3sq5sq6+cq3cq4cq5sq6,{R_{32}} = {{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_6}}} - {s_{{q_3}}}{{\rm{s}}_{{q_5}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_6}}}, 23R33=cq3sq4sq6+cq6sq3sq5cq3cq4cq5cq6,{R_{33}} = {{\rm{c}}_{{q_3}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_5}}} - {{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{c}}_{{q_6}}}, 24oTx=a1cq1+d4cq1cq3+a2cq1sq2+a3cq1sq3+(d7+zT)( cq1cq3cq5sq1sq4sq5 cq1cq4sq3sq5 )+xT( cq1sq3sq4sq6cq1cq3cq6sq5cq5cq6sq1sq4cq4sq1sq6 cq1cq4cq5cq6sq3 )+yT( cq1cq6sq3sq4cq4cq6sq1+cq1cq3sq5sq6+cq5sq1sq4sq6+ cq1cq4cq5sq3sq6 ),{o_{{T_x}}} = {a_1}{{\rm{c}}_{{q_1}}} + {d_4}{{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_3}}} + {a_2}{{\rm{c}}_{{q_1}}}{{\rm{s}}_{{q_2}}} + {a_3}{{\rm{c}}_{{q_1}}}{{\rm{s}}_{{q_3}}} + \left({{d_7} + {z_T}} \right)\left({{{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_5}}} - {{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_5}}} - } \right.\left. {{{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_4}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_5}}}} \right) + {x_T}\left({{{\rm{c}}_{{q_1}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_6}}} - } \right.{{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_5}}} - {{\rm{c}}_{{q_5}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_4}}} - {{\rm{c}}_{{q_4}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_6}}} - \left. {{{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_3}}}} \right) + {y_T}\left({{{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_4}}} - } \right.{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_1}}} + {{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_3}}}{{\rm{s}}_{{q_5}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_1}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_6}}} + \left. {{{\rm{c}}_{{q_1}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{s_{{q_3}}}{{\rm{s}}_{{q_6}}}} \right), 25oTy=a1sq1+d4cq3sq1+a2sq1sq2+a3sq1sq3+(d7+zT)( cq3cq5sq1+cq1sq4sq5 cq4sq1sq3sq5 )+xT( cq1cq4sq6+cq1cq5cq6sq4 cq3cq6sq1sq5+sq1sq3sq4sq6cq4cq5cq6sq1sq3 )+yT( cq1cq4cq6cq1cq5sq4sq6+cq6sq1sq3sq4+ cq3sq1sq5sq6+cq4cq5cq1sq3sq6 ),{o_{{T_y}}} = {a_1}{s_{{q_1}}} + {d_4}{c_{{q_3}}}{s_{{q_1}}} + {a_2}{s_{{q_1}}}{s_{{q_2}}} + {a_3}{s_{{q_1}}}{s_{{q_3}}} + \left({{d_7} + {z_T}} \right)\left({{c_{{q_3}}}{c_{{q_5}}}{s_{{q_1}}} + {c_{{q_1}}}{s_{{q_4}}}{s_{{q_5}}} - } \right.\left. {{c_{{q_4}}}{s_{{q_1}}}{s_{{q_3}}}{s_{{q_5}}}} \right) + {x_T}\left({{c_{{q_1}}}{c_{{q_4}}}{s_{{q_6}}} + {c_{{q_1}}}{c_{{q_5}}}{c_{{q_6}}}{s_{{q_4}}} - } \right.\left. {{c_{{q_3}}}{c_{{q_6}}}{s_{{q_1}}}{s_{{q_5}}} + {s_{{q_1}}}{s_{{q_3}}}{s_{{q_4}}}{s_{{q_6}}} - {c_{{q_4}}}{c_{{q_5}}}{c_{{q_6}}}{s_{{q_1}}}{s_{{q_3}}}} \right) + {y_T}\left({{c_{{q_1}}}{c_{{q_4}}}{c_{{q_6}}} - {c_{{q_1}}}{c_{{q_5}}}{s_{{q_4}}}{s_{{q_6}}} + {c_{{q_6}}}{s_{{q_1}}}{s_{{q_3}}}{s_{{q_4}}} + } \right.\left. {{c_{{q_3}}}{s_{{q_1}}}{s_{{q_5}}}{s_{{q_6}}} + {c_{{q_4}}}{c_{{q_5}}}{c_{{q_1}}}{s_{{q_3}}}{s_{{q_6}}}} \right), 26oTz=d1+a2cq2+a3cq3(d7+zT)( cq5sq3+ cq3cq4sq5 )+xT( cq3 sq4sq6+cq6sq3sq5 cq3cq4cq5cq6 )+yT( cq3cq6sq4sq3sq5sq6+ cq3cq4cq5sq6 ).{o_{{T_z}}} = {d_1} + {a_2}{{\rm{c}}_{{q_2}}} + {a_3}{{\rm{c}}_{{q_3}}} - \left({{d_7} + {z_T}} \right)\left({{{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_3}}} + } \right.\left. {{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_4}}}{{\rm{s}}_{{q_5}}}} \right) + {x_T}\left({{{\rm{c}}_{{q_3}}}{{\rm{s}}_{{q_4}}}{{\rm{s}}_{{q_6}}} + {{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_5}}} - } \right.\left. {{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{c}}_{{q_6}}}} \right) + {y_T}\left({{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_6}}}{{\rm{s}}_{{q_4}}} - {{\rm{s}}_{{q_3}}}{{\rm{s}}_{{q_5}}}{{\rm{s}}_{{q_6}}} + } \right.\left. {{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_4}}}{{\rm{c}}_{{q_5}}}{{\rm{s}}_{{q_6}}}} \right).

The resulting expressions account for the full kinematic chain, including the tool offset, and can be used in further analysis for simulation, path planning, or control algorithm development.

4.
JACOBIAN OF THE MANIPULATOR

The Jacobian matrix is a key analytical tool in modelling robotic manipulators. It enables the analysis of how different phenomena translate between the configuration space and the task space. It is commonly used for:

  • mapping joint velocities to task space velocities in forward and inverse kinematics,

  • analysing the impact of external forces acting on the end-effector on the joint torques,

  • detecting and avoiding singularities,

  • planning robotic motion,

  • and designing control systems.

The transformation of angular joint velocities q˙n\mathop {{\bf{\dot q}}}\limits^. \in {^n} into the spatial velocity viB{\bf{v}}_i^B of ith link using the Jacobian can be expressed as: 27viB=[ viBωiB ]=Jq˙,{\bf{v}}_i^B = \left[ {\matrix{ {{\bf{v}}_i^B} \cr {{\bf{\omega }}_i^B} \cr } } \right] = {\bf{J\dot q}}, where: viB3{\bf{v}}_i^B \in {^3} – linear velocity of the origin of the coordinate frame attached to the ith link with respect to the base frame, ωiB3{\bf{\omega }}_i^B \in \;{^3} – angular velocity of the ith frame with respect to the base frame, J ∈ ℝn – the manipulator Jacobian, q˙n\mathop {{\bf{\dot q}}}\limits^. \in {^n} – joint velocity vector, viB6{\bf{v}}_i^B \in {^6} – spatial velocity of the ith link with respect to the base frame.

Separating the Jacobian into translational and rotational components gives the following relations: 28J=[ JvJω ],{\bf{J}} = \left[ {\matrix{ {{{\bf{J}}_v}} \hfill \cr {{{\bf{J}}_\omega }} \hfill \cr } } \right], 29viB=Jvq˙,{\bf{v}}_i^B = {{\bf{J}}_v}\mathop {{\bf{\dot q}}}\limits^. , 30ωiB=Jωq˙.{\bf{\omega }}_i^B = {{\bf{J}}_\omega }\mathop {{\bf{\dot q}}}\limits^. .

The dimension of the Jacobian matrix depends on the number of generalised coordinates describing the configuration and the number of task-space variables. In this study, a Cartesian task space is assumed, characterized by six variables (three translations and three rotations). For a manipulator with n degrees of freedom, the Jacobian has the form: 31J=[ J1J2Jn ]6×n,{\bf{J}} = \left[ {\matrix{ {{{\bf{J}}_1}} \hfill & {{{\bf{J}}_2}} \hfill & \ldots \hfill & {{{\bf{J}}_n}} \hfill \cr } } \right] \in {^{6 \times n}},

According to [30], the Jacobian for a manipulator composed of revolute joints can be constructed based on the geometry of the kinematic chain using: 32Ji=[ JviJωi ]=[ ziB×(onBoiB)ziB ],{{\bf{J}}_i} = \left[ {\matrix{ {{{\bf{J}}_{vi}}} \cr {{{\bf{J}}_{\omega i}}} \cr } } \right] = \left[ {\matrix{ {{\bf{z}}_i^B \times \left({{\bf{o}}_n^B - {\bf{o}}_i^B} \right)} \cr {{\bf{z}}_i^B} \cr } } \right], where ziB{\bf{z}}_i^B denotes the third column of the rotation matrix of the ith link with respect to the base frame.

The ABB IRB 2400 robot consists of six revolute joints, with the second joint forming a parallelogram mechanism that preserves the orientation of subsequent links. Taking this into account, the Jacobian is determined as follows: 33J= [ z1B×(oTBo1B)z2B×(o3Bo2B)z1B[ 000 ]T z3B×(oTBo3B)z4B×(oTBo4B)z3Bz4B z5B×(oTBo5B)z6B×(oTBo6B)z5Bz6B ].\matrix{ {{\bf{J}} = \left[ {\matrix{ {{\bf{z}}_1^B \times \left({{\bf{o}}_{\rm{T}}^B - {\bf{o}}_1^B} \right)} & {{\bf{z}}_2^B \times \left({{\bf{o}}_3^B - {\bf{o}}_2^B} \right)} \cr {{\bf{z}}_1^B} & {{{\left[ {\matrix{ 0 \hfill & 0 \hfill & 0 \hfill \cr } } \right]}^{\rm{T}}}} \cr } } \right. \ldots } \hfill \cr {\;\;\; \ldots \matrix{ {{\bf{z}}_3^B \times \left({{\bf{o}}_T^B - {\bf{o}}_3^B} \right)} & {{\bf{z}}_4^B \times \left({{\bf{o}}_T^B - {\bf{o}}_4^B} \right)} \cr {{\bf{z}}_3^B} & {{\bf{z}}_4^B} \cr } \ldots } \hfill \cr {\;\;\; \ldots \left[ {\matrix{ {{\bf{z}}_5^B \times \left({{\bf{o}}_T^B - {\bf{o}}_5^B} \right)} & {{\bf{z}}_6^B \times \left({{\bf{o}}_T^B - {\bf{o}}_6^B} \right)} \cr {{\bf{z}}_5^B} & {{\bf{z}}_6^B} \cr } } \right].} \hfill \cr }

This Jacobian enables transformation of velocities and forces from the joint space to the task space. Additionally, the Jacobian allows to determine singular positions, which is useful information when generating trajectories. The full manipulator Jacobian (33) enables a purely algebraic search for poses in which controllability is lost. A configuration is singular when 34det(J(q))=0.{\bf{det}}{\rm{(}}{\bf{J}}{\rm{(}}{\bf{q}}{\rm{))}} = 0.

For the ABB IRB 2400 condition (34) yields exactly two independent singular configurations. The first results from the equation: 35sin(q5)=0q5=0\sin \left({{{\rm{q}}_5}} \right) = 0 \Rightarrow {q_5} = 0 because the axes z4, z5, z6 become collinear and the orientation sub-Jacobian loses rank. Since the range of movement of joint 5 is from -120 to 120, q5 = 0 is the only solution. The second singularity occurs when the centre point of the robot's wrist intersects the zB axis, which results from the equation: 36(cq2 sq3)a1a3+(cq2cq3+sq2 sq3)a1d4+( cq3cq22+ sq2 sq3cq2 )a2a3+(sq3+cq2cq3 sq2)a2d4+cq2a32+(sq2+2cq2cq3 sq3)a3d4+(cq2cq32+sq2 sq3cq3)( d42 a32 )(cq3 sq2)a1a3cq3a2a3(cq22 sq3)a2d4(2cq32 sq2)a3d4=0,\left({{{\rm{c}}_{{q_2}}}{{\rm{s}}_{{q_3}}}} \right){a_1}\;{a_3} + \left({{{\rm{c}}_{{q_2}}}{{\rm{c}}_{{q_3}}} + {{\rm{s}}_{{q_2}}}{{\rm{s}}_{{q_3}}}} \right){a_1}\;{d_4} + \left({{{\rm{c}}_{{q_3}}}{{\rm{c}}_{{q_2}}}^2 + } \right.\left. {{{\rm{s}}_{{q_2}}}{{\rm{s}}_{{q_3}}}{{\rm{c}}_{{q_2}}}} \right){a_2}\;{a_3} + \left({{{\rm{s}}_{{q_3}}} + {{\rm{c}}_{{q_2}}}{{\rm{c}}_{{q_3}}}{{\rm{s}}_{{q_2}}}} \right){a_2}\;{d_4} + {{\rm{c}}_{{q_2}}}\;{a_3}^2 + \left({{{\rm{s}}_{{q_2}}} + 2{{\rm{c}}_{{q_2}}}{{\rm{c}}_{{q_3}}}{{\rm{s}}_{{q_3}}}} \right){a_3}\;{d_4} + \left({{{\rm{c}}_{{q_2}}}{{\rm{c}}_{{q_3}}}^2 + {{\rm{s}}_{{q_2}}}{{\rm{s}}_{{q_3}}}{{\rm{c}}_{{q_3}}}} \right)\left({{d_4}^2 - } \right.\left. {{a_3}^2} \right) - \left({{{\rm{c}}_{{q_3}}}{{\rm{s}}_{{q_2}}}} \right){a_1}\;{a_3} - {{\rm{c}}_{{q_3}}}\;{a_2}\;{a_3} - \left({{{\rm{c}}_{{q_2}}}^2{{\rm{s}}_{{q_3}}}} \right){a_2}\;{d_4} - \left({2{{\rm{c}}_{{q_3}}}^2{{\rm{s}}_{{q_2}}}} \right){a_3}\;{d_4} = 0, satisfying condition (34). In singular positions, kinematic and dynamic equations using Jacobians degenerate, giving infinite or un-predictably large results. The simplest method of dealing with this problem is to avoid singularities. There are also more advanced methods such as Damped-Least-Squares, singular posture-passing algorithm or the inverse Jacobian cofactor matrix optimisation method [31]. Singularities do not affect the robot dynamics modelling process, but they should be kept in mind when designing a control system.

5.
ROBOT DYNAMIC EQUATIONS – EULER-LAGRANGE FORMALISM

Two widely used methods for modelling manipulator dynamics are the Euler–Lagrange and Newton–Euler formalisms, as described in [30,32,33]. The former is based on variational calculus, while the latter uses recursive formulation of Newton’s laws for each link in the chain.

In both methods, a simplified mass distribution model was adopted for the IRB 2400 manipulator, as illustrated in Fig. 4. The mass of the parallelogram linkage driving the third link is significantly smaller than the combined mass of links 3 through 6, making its effect on overall dynamics negligible.

Fig. 4.

Centre of mass distribution of the robot’s links

The position of the centre of mass of each link relative to its local frame is defined as: 37rS11=[ 00zS1 ] ,{\bf{r}}_{{S_1}}^1 = \left[ {\matrix{ 0 \cr 0 \cr {{z_{{S_1}}}} \cr } } \right]{\rm{ ,}} 38rS22=[ xS2yS20 ],{\bf{r}}_{{S_2}}^2 = \left[ {\matrix{ {{x_{{S_2}}}} \cr {{y_{{S_2}}}} \cr 0 \cr } } \right], 39rS33=[ xS3yS30 ],{\bf{r}}_{{S_3}}^3 = \left[ {\matrix{ {{x_{{S_3}}}} \cr {{y_{{S_3}}}} \cr 0 \cr } } \right], 40rS44=[ 00zS4 ],{\bf{r}}_{{S_4}}^4 = \left[ {\matrix{ 0 \cr 0 \cr {{z_{{S_4}}}} \cr } } \right], 41rS55=[ 000 ],{\bf{r}}_{{S_5}}^5 = \left[ {\matrix{ 0 \hfill \cr 0 \hfill \cr 0 \hfill \cr } } \right], 42rS66=[ 00zS6 ],{\bf{r}}_{{S_6}}^6 = \left[ {\matrix{ 0 \cr 0 \cr {{z_{{S_6}}}} \cr } } \right], 43rST7=[ xSTySTzST ],{\bf{r}}_{{S_T}}^7 = \left[ {\matrix{ {{x_{{S_T}}}} \hfill \cr {{y_{{S_T}}}} \hfill \cr {{z_{{S_T}}}} \hfill \cr } } \right],

This section describes the dynamics using the Euler–Lagrange formulation, given by: 44ddt(Lq˙i)Lqi=Ωi,{d \over {dt}}\left({{{\partial L} \over {\partial {{\dot q}_i}}}} \right) - {{\partial L} \over {\partial {q_i}}} = {\Omega _i}, where Ωi is the generalised force corresponding to the ith generalised coordinate, and L is the Lagrangian: 45L=KP,{\rm{L}} = {\rm{K}} - {\rm{P}}, with K representing kinetic energy and P potential energy. The kinetic energy of a multi-body manipulator is defined as: 46K=12mio.SiTo.Si+ωiTRiIiRiTωi=12q.TMq.,K = {1 \over 2}{m_i}\mathop {\bf{o}}\limits^. _{Si}^T{\mathop {\bf{o}}\limits^. _{Si}} + {\bf{\omega }}_i^T{{\bf{R}}_i}{{\bf{I}}_i}{\bf{R}}_i^T{{\bf{\omega }}_i} = {1 \over 2}{\mathop {\bf{q}}\limits^. ^{\rm{T}}}{\bf{M}}\mathop {\bf{q}}\limits^. , where M(q) ∈ ℝn×n is the inertia matrix, mi is the mass of the ith link, Ii is the inertia tensor of the ith link in its local frame and Ri is the rotation matrix from the ith link frame to the base frame. The linear and angular velocities are obtained from the centre-of-mass Jacobians: 47o.Si=Jvsi(q)q.,ωi=Jωi(q)q.,{\mathop {\bf{o}}\limits^. _{_{_{Si}}}} = {{\bf{J}}_{{v_{si}}}}({\bf{q}})\mathop {\bf{q}}\limits^. ,{{\bf{\omega }}_i} = {{\bf{J}}_{{\omega _i}}}({\bf{q}})\mathop {\bf{q}}\limits^. , where Jvsi (q) and Jωi (q) are the Jacobians for the centre of mass velocity and angular velocity respectively.

The potential energy arises solely from gravity, assuming rigid body links without elastic deformation: 48P=i=1nmigToSiB,P = \sum\nolimits_{i = 1}^n {{m_i}{{\bf{g}}^{\rm{T}}}{\bf{o}}_{{S_i}}^B} ,

Substituting (46) and (48) into (44) yields: 49M(q)q..+C(q,q.)q.+G(q)=Ω,{\bf{M}}({\bf{q}})\mathop {\bf{q}}\limits^{..} + {\bf{C}}({\bf{q}},\mathop {\bf{q}}\limits^.)\mathop {\bf{q}}\limits^. + {\bf{G}}({\bf{q}}) = {\bf{\Omega }}, with C(q,q.)q.n{\bf{C}}({\bf{q}},\mathop {\bf{q}}\limits^.)\mathop {\bf{q}}\limits^. \in {^n} the Coriolis and centrifugal terms, G(q) ∈ ∝n the gravity vector, and Ω ∈ ℝn the generalised forces.

The inertia matrix is calculated as: 50M(q)=i=1n(miJvsiT(q)Jvsi(q)+JωiT(q)RiIiRiTJωi(q)){\bf{M}}({\bf{q}}) = \sum\nolimits_{i = 1}^n {\left({{m_i}{\bf{J}}_{{v_{si}}}^{\rm{T}}({\bf{q}}){{\bf{J}}_{{v_{si}}}}({\bf{q}}) + \;\;\;{\bf{J}}_{{\omega _i}}^{\rm{T}}({\bf{q}}){{\bf{R}}_i}{{\bf{I}}_i}{\bf{R}}_i^{\rm{T}}{{\bf{J}}_{{\omega _i}}}({\bf{q}})} \right)}

The matrix C(q,q.){\bf{C}}({\bf{q}},\mathop {\bf{q}}\limits^.) is computed using: 51C(q,q.)=i=1ncijk(q)q˙i=i=1n12(Mkj(q)qi+Mki(q)qjMij(q)qk)q˙i.{\bf{C}}({\bf{q}},\mathop {\bf{q}}\limits^.) = \sum\nolimits_{i = 1}^n {{c_{ijk}}} ({\bf{q}}){{\dot q}_i} = \sum\nolimits_{i = 1}^n {{1 \over 2}} \left({{{\partial {{\bf{M}}_{kj}}({\bf{q}})} \over {\partial {q_i}}} + {{\partial {{\bf{M}}_{ki}}({\bf{q}})} \over {\partial {q_j}}} - {{\partial {{\bf{M}}_{ij}}({\bf{q}})} \over {\partial {q_k}}}} \right){{\dot q}_i}.

The gravity vector is derived from the gradient of the potential energy: 52G(q)=P(q)q.{\bf{G}}({\bf{q}}) = {{\partial P({\bf{q}})} \over {\partial {\bf{q}}}}.

The generalised force vector includes actuation torques u and friction forces F(q.){\bf{F}}(\mathop {\bf{q}}\limits^.) 53Ω=uF(q.).\Omega = {\bf{u}} - {\bf{F}}(\mathop {\bf{q}}\limits^.).

Friction forces are modelled using the expression from [34]: 54τf=(FC+(FSFC)e| q˙ωSt |2)sgn(q˙)+Fvq˙.{\tau _f} = \left({{F_C} + \left({{F_S} - {F_C}} \right){e^{ - {{\left| {{{\dot q} \over {{\omega _{St}}}}} \right|}^2}}}} \right){\mathop{\rm sgn}} (\dot q) + {F_v}\dot q.

This equation combines static (Fs), Coulomb (Fc), and viscous (Fv) components with a Gaussian-type Stribeck term (ωst). The friction function versus speed is shown in Fig. 5.

Fig. 5.

Graph illustrating the friction model

The friction vector F(q.)=[ τf1τfn ]T{\bf{F}}(\mathop {\bf{q}}\limits^.) = {\left[ {\matrix{ {{\tau _{f1}}} \hfill & \ldots \hfill & {{\tau _{fn}}} \hfill \cr } } \right]^{\rm{T}}} takes the form: 55F(q.)=[ (FC1+(FS1FC1)e| q1ωSt1 |2)sgn(q˙1)+Fv1q˙1(FCn+(FSnFCn)e| qnωStn |2)sgn(q˙n)+Fvnq˙n ].{\bf{F}}(\mathop {\bf{q}}\limits^.) = \left[ {\matrix{ {\left({{F_{{C_1}}} + \left({{F_{{S_1}}} - {F_{{C_1}}}} \right){e^{ - {{\left| {{{{q_1}} \over {{\omega _{S{t_1}}}}}} \right|}^2}}}} \right){\mathop{\rm sgn}} \left({{{\dot q}_1}} \right) + {F_{{v_1}}}{{\dot q}_1}} \cr \vdots \cr {\left({{F_{{C_n}}} + \left({{F_{{S_n}}} - {F_{{C_n}}}} \right){e^{ - {{\left| {{{{q_n}} \over {{\omega _{S{t_n}}}}}} \right|}^2}}}} \right){\mathop{\rm sgn}} \left({{{\dot q}_n}} \right) + {F_{{v_n}}}{{\dot q}_n}} \cr } } \right].

This leads to the complete dynamic equation of the ABB IRB 2400 manipulator: 56M(q)q..+C(q,q.)q.+G(q)+F(q.)=u,{\bf{M}}({\bf{q}})\mathop {\bf{q}}\limits^{..} + {\bf{C}}({\bf{q}},\mathop {\bf{q}}\limits^.)\mathop {\bf{q}}\limits^. + {\bf{G}}({\bf{q}}) + {\bf{F}}(\mathop {\bf{q}}\limits^.) = {\bf{u}},

Due to their complexity, the explicit elements of matrices M, C and G are provided in the appendix [35]. The torque vector is denoted: u = [u1u6]T. In summary, the Euler–Lagrange method provides a matrix form suitable for dynamic simulation and controller design.

6.
DYNAMIC EQUATIONS OF ROBOT MOTION – NEWTON–EULER FORMALISM

The second widely used approach for modelling the dynamics of robotic manipulators is the Newton–Euler formalism. In contrast to the Lagrangian approach, this method analyses the motion of each individual link separately. The computations are performed using a recursive algorithm known as the forward-backward procedure.

In the forward recursion, spatial velocities and accelerations of the centre of mass of each link are computed starting from the base, with the motion of each link depending on the preceding one. In the backward recursion, forces and torques acting on the joints are determined by iterating from the end-effector back to the base. Fig. 6 illustrates the force and torque interactions acting on a single manipulator link, represented in the coordinate frame fixed to the corresponding link.

Fig. 6.

Diagram of forces and torques acting on the ith link of the robot

In the diagram, vector fi represents the force exerted by link i – 1 on link i, while fi1 denotes the force exerted by link i + 1 on link i. In accordance with Newton’s third law, this force is equal in magnitude and opposite in direction to the reaction force acting on link i + 1, and must be rotated into the local coordinate frame of link i using the rotation matrix Ri+1i{\bf{R}}_{i + 1}^i. A similar notation applies to the torques τi and Ri+1iτi+1 - {\bf{R}}_{i + 1}^i{{\bf{\tau }}_{i + 1}}. The torque vector can be expressed as: 57τi=[ τxiτyiui ]T.{{\bf{\tau }}_i} = {\left[ {\matrix{ {{\tau _{xi}}} \hfill & {{\tau _{yi}}} \hfill & {{u_i}} \hfill \cr } } \right]^T}.

The actuator torque ui is the projection of the torque vector onto the z-axis of the ith link. The gravitational force migi is defined in the local coordinate frame using the gravity vector function gi.

The dynamics analysis is based on the force and torque equilibrium equations for the ith link, written as: 58miaSi=fiRi+1ifi+1+migi{m_i}{{\bf{a}}_{{S_i}}} = {{\bf{f}}_i} - {\bf{R}}_{i + 1}^i{{\bf{f}}_{i + 1}} + {m_i}{{\bf{g}}_i} 59Iiεi+ωi×(Iiωi)=τiRi+1iτi+1+fi×rcii(Ri+1ifi+1)×rSii+1τfi{{\bf{I}}_i}{{\bf{\varepsilon }}_i} + {{\bf{\omega }}_i} \times \left({{{\bf{I}}_i}{{\bf{\omega }}_i}} \right) = {{\bf{\tau }}_i} - {\bf{R}}_{i + 1}^i{{\bf{\tau }}_{i + 1}} + {{\bf{f}}_i} \times {\bf{r}}_{{c_i}}^i - \left({{\bf{R}}_{i + 1}^i{{\bf{f}}_{i + 1}}} \right) \times {\bf{r}}_{{S_i}}^{i + 1} - {{\bf{\tau }}_{{f_i}}} where: asi – acceleration of the centre of mass of the ith link in its local frame, εi – angular acceleration in the local frame, Ii – inertia tensor of the ith link with respect to its centre of mass, rSii{\bf{r}}_{{S_i}}^i – position vector from the joint to the centre of mass of link i, rSii+1{\bf{r}}_{{S_i}}^{i + 1} – position vector from joint i + 1 to the centre of mass of link i, τfi – torque due to joint friction.

After rearranging equations (58) and (59), the following recursive relations are obtained: 60fi=miaSi+Ri+1ifi+1migi,{{\bf{f}}_i} = {m_i}{{\bf{a}}_{{S_i}}} + {\bf{R}}_{i + 1}^i{{\bf{f}}_{i + 1}} - {m_i}{{\bf{g}}_i}, 61τi=Iiεi+ωi×(Iiωi)+Ri+1iτi+1fi×rSii+(Ri+1ifi+1)×rSii+1+τfi,{{\bf{\tau }}_i} = {{\bf{I}}_i}{{\bf{\varepsilon }}_i} + {{\bf{\omega }}_i} \times \left({{{\bf{I}}_i}{{\bf{\omega }}_i}} \right) + {\bf{R}}_{i + 1}^i{{\bf{\tau }}_{i + 1}} - {{\bf{f}}_i} \times {\bf{r}}_{{S_i}}^i + \left({{\bf{R}}_{i + 1}^i{{\bf{f}}_{i + 1}}} \right) \times {\bf{r}}_{{S_i}}^{i + 1} + {\tau _{{f_i}}},

By applying these equations iteratively from i = n to i = 1, it is possible to compute the forces and torques acting on each joint of the robot. The recursion begins by considering the force and torque exerted by the tool mounted on the robot flange: 62fn+1=fT=mTacTmTg6{{\bf{f}}_{n + 1}} = {{\bf{f}}_T} = {m_T}{{\bf{a}}_{{c_T}}} - {m_T}{{\bf{g}}_6} 63τn+1=τT=ITε6+ω6×(ITω6)fT×rST7{{\bf{\tau }}_{n + 1}} = {{\bf{\tau }}_T} = {{\bf{I}}_T}{{\bf{\varepsilon }}_6} + {{\bf{\omega }}_6} \times \left({{{\bf{I}}_T}{{\bf{\omega }}_6}} \right) - {{\bf{f}}_T} \times {\bf{r}}_{ST}^7

The gravitational acceleration vector for each link, with the base of the manipulator attached to a horizontal surface, is defined as: 64gi=RiBg[ 001 ]T{{\bf{g}}_i} = - {\bf{R}}_i^Bg{\left[ {\matrix{ 0 \hfill & 0 \hfill & 1 \hfill \cr } } \right]^T}

To obtain a complete dynamic solution, it is necessary to express the Cartesian-space variables asi, ωi and εi in terms of the configuration variables q,q.,q..{\bf{q}},\mathop {\bf{q}}\limits^. ,\mathop {\bf{q}}\limits^{..} . The angular velocity of each link is computed from the angular velocity in the base frame: 65ωi=(RiB)TωiB.{{\bf{\omega }}_i} = {\left({{\bf{R}}_i^B} \right)^{\rm{T}}}{\bf{\omega }}_i^B.

Angular acceleration is computed as: 66εi=(RiB)Tω.iB.{{\bf{\varepsilon }}_i} = {\left({{\bf{R}}_i^B} \right)^{\rm{T}}}\mathop {\bf{\omega }}\limits^. _i^B.

Due to the complexity of the results, detailed expressions are provided in the part A of the appendix [35].

The centre of mass positions of the links relative to their local frames were defined previously using equations (37)(43). The vector from the end of link iii to its centre of mass is given by: 66rSii+1=rSiioi+1i.{\bf{r}}_{{S_i}}^{i + 1} = {\bf{r}}_{{S_i}}^i - {\bf{o}}_{i + 1}^i.

The acceleration of the centre of mass of the ith link is calculated using forward recursion as: 68aSi=ai+εi×rSii+ωi×(ωi×rSii).{{\bf{a}}_{{S_i}}} = {{\bf{a}}_i} + {{\bf{\varepsilon }}_i} \times {\bf{r}}_{{S_i}}^i + {{\bf{\omega }}_i} \times \left({{{\bf{\omega }}_i} \times {\bf{r}}_{{S_i}}^i} \right).

To verify the correctness of the dynamic equations derived using the Euler–Lagrange formalism, the resulting equations were reformulated to match the structure of equation (56). The derived matrices from both methods were found to be equivalent, confirming that the dynamic model has been correctly formulated.

7.
PHYSICAL PARAMETERS OF THE MODEL

One of the most challenging aspects of modelling a robotic system is determining its physical parameters, such as masses, mass moments of inertia, and friction coefficients (Fig. 7). The masses of individual links of the IRB 2400 manipulator were estimated based on technical documentation of the experimental setup components.

Fig. 7.

Diagram of the procedure for determining the physical parameters of the model

The positions of centres of mass and the values of mass moments of inertia were determined through analysis of the robot's CAD model [14,36,37]. The estimated values are presented in Tab. 3. Any tool can be mounted on the robot, as long as it does not exceed the payload limits defined by the manufacturer. In this work, an electric spindle was used as the end-effector, and its physical parameters are shown in Tab. 4. The values were obtained using the robot’s internal measurement procedure, which analyses force sensor data for various tool positions to estimate the tool’s mass, centre of mass, and inertia.

Tab. 3.

Physical parameters of the robot

ParameterSym.Link 1Link 2Link 3
Mass (kg)mi19226.525.7
Centre of mass (mm)Six21253.4139.5
Siy2247.7-99.5
Siz-188.57-9.7
Moments of inertia (kgm2)Iixx9.821830.235170.0143
Iiyy6.161271.223380.01412
Iizz8.302241.165390.00892
Iixy0.505710.58498-0.0259
Iixz-1.05960.227330.01089
Iiyz0.109460.56479-0.0003
Link 4Link 5Link 6
Mass (kg)mi29.72.80.8
Centre of mass (mm)Six0.131-0.5870.208
Six-1.81-0.2450.035
Siz-296.70.54072.270
Moments of inertia (kgm2)Iixx0.741280.00340.00002
Iiyy0.719360.003320
Iizz0.096260.004190
Iixy0.2080.000230
Iixz0.0350.000230
Iiyz0.0007110.00030
Tab. 4.

Physical parameters of the spindle

ParameterSym.Spindle
Mass (kg)mT12.7
Centre of mass (mm)STx-38.3
STy0
STz129.3
Moments of inertia (kgm2)ITxx0.269
ITyy0.274
ITzz0.193
ITxy0
ITxz0
ITyz0

The TCP was defined as the furthest point on the tool mounted in the spindle chuck. The coordinates of this point, as recorded in transformation matrix (12), are: 69{ xT=240 mmyT=0zT=162 mm. \left\{ {\matrix{ {{x_T} = 240mm} \hfill \cr {{y_T} = 0} \hfill \cr {{z_T} = 162mm} \hfill \cr } .} \right.

Friction coefficients for the joint friction model described in equation (54) were determined experimentally, following the methodology described in [38]. The IRC5 controller used to operate the IRB 2400 manipulator enables real-time access to motion and torque data through the External Guided Motion interface [39] or via test signals managed through the Tune Master application [40] on a PC. To estimate friction parameters, a series of experiments was conducted where each joint was moved individually at a specified angular velocity near a reference position. During these tests, the remaining joints were positioned to minimize gravitational effects. While this was not feasible for joints 2 and 3 due to the robot’s mounting constraints, suitable configurations were found for the remaining joints. The gravitational torque was compensated by comparing actuator torques measured during motion in both positive and negative directions in the same joint position [41].

When a manipulator joint moves at constant velocity, inertial effects its effect is absorbed into the link inertias, and the motion equation simplifies to: 70τfi(q˙i,qi)+τgi(qi)=ui.{\tau _{fi}}\left({{{\dot q}_i},{q_i}} \right) + {\tau _{gi}}\left({{q_i}} \right) = {u_i}. where: ui – actuator torque for joint i, τfi. – friction torque, τgi – gravitational torque. Assuming friction torque is symmetric around zero velocity, the torques recorded for constant positive and negative velocities q˙i{{\dot q}_i}^\dag give the result: 71{ τfi(q˙i)+τgi(qi)=ui+,τfi(q˙i)+τgi(qi)=ui. \left\{ {\matrix{ {{\tau _{{f_i}}}\left({{{\dot q}_i}^\dag } \right) + {\tau _{{g_i}}}\left({{q_i}^\dag } \right) = u_i^ + ,} \hfill \cr {{\tau _{{f_i}}}\left({ - {{\dot q}_i}^\dag } \right) + {\tau _{{g_i}}}\left({{q_i}^\dag } \right) = u_i^ - .} \hfill \cr } } \right.

Subtracting both equations gives: 72τfi(q˙i)τfi(q˙i)=ui+ui,{\tau _{{f_i}}}\left({{{\dot q}_i}^\dag } \right) - {\tau _{{f_i}}}\left({ - {{\dot q}_i}^\dag } \right) = u_i^ + - u_i^ - ,

Assuming τfi(q˙i)τfi(q˙i){\tau _{{f_i}}}\left({ - {{\dot q}_i}^\dag } \right) \cong - {\tau _{{f_i}}}\left({{{\dot q}_i}^\dag } \right),, the friction torque can be estimated as: 73τfi(q˙i)=ui+ui2.{\tau _{{f_i}}}\left({{{\dot q}_i}^\dag } \right) = {{u_i^ + - u_i^ - } \over 2}.

Fig. 8 presents the measured angular position, velocity, and actuator torque for joint 2, moving in both positive and negative directions at a velocity of q˙2=9,3{{\dot q}_2}^\dag = 9,3 rad/s near the position q2 = 0.

Fig. 8.

a) Angular position and velocity of joint 2 at a constant velocity, b) recorded actuator torque

Since most of the friction phenomena described by equation (54) occur at low velocities, step sizes for increasing velocity during the tests were defined as: 74Δq˙i={ 0,00001rads, for q˙i=0,00001;0,015)rads0,0002rads, for q˙i=0,015;0,2)rads0,001rads, for q˙i=0,2;0,5rads \Delta {{\dot q}_i}^\dag = \left\{ {\matrix{ {0,00001{{rad} \over s},{\rm{ for }}{{\dot q}_i}^\dag = \langle 0,00001;0,015){{rad} \over s}} \hfill \cr {0,0002{{rad} \over s},{\rm{ for }}{{\dot q}_i}^\dag = \langle 0,015;0,2){{rad} \over s}} \hfill \cr {0,001{{rad} \over s},{\rm{ for }}{{\dot q}_i}^\dag = \langle 0,2;0,5\rangle {{rad} \over s}} \hfill \cr } } \right.

Using the recorded data, values of q˙i{{\dot q}_i}^\dag and ui at reference positions were extracted. For joint 2, the point q2 = 0 was chosen. These values were substituted into equation (73) to estimate the friction torque as a function of speed. To determine the coefficients, MATLAB’s Curve Fitter toolbox was used to fit the analytical model to the experimental data. Fig. 9 shows the comparison between measured and estimated friction torques for joint 2 at q2 = 0, limited to the 0 – 0.15 rad/s range to emphasize the Stribeck effect.

Fig. 9.

Experimental and estimated friction torque values for joint 2

The experiment was repeated for all six joints of the IRB 2400 robot. The resulting friction parameters are summarized in Tab. 5.

Tab. 5.

Friction model parameters for each joint

JointFs [Nm]Fc [Nm]Fv [Nms/rad]ωst [rad/s]
136.324.211.850.0085
239.231.28.3230.0031
325.316.99.36130.0094
419.27.97.12280.0175
539.713.77.26540.0176
617.58.82.3230.0162

To validate the agreement between the robot model and the real system, the inverse dynamics problem was solved using motion data recorded from the physical robot. The computed actuator torques were then compared with measured values. Fig. 10 and Fig. 11 present the angular positions and velocities for all six joints used as simulation inputs. Fig. 12 shows the comparison of modelled and measured torques.

Fig. 10.

Inputs for simulation – joint angles and velocities (joints 1-3)

Fig. 11.

Inputs for simulation – joint angles and velocities (joints 4-6)

Fig. 12.

Modelled vs. real actuator torques for joints 1–6

To evaluate model accuracy, three metrics were used:

  • Mean Absolute Error (MAE): 75 MAE =1Ni=1N| umodel ,iureal ,i |{\rm{ MAE }} = {1 \over N}\sum\nolimits_{i = 1}^N {\left| {{u_{model ,i}} - {u_{real ,i}}} \right|}

  • Root Mean Square Error (RMSE): 76 RMSE =1Ni=1N(umodel ,iureal ,i)2{\rm{ RMSE }} = \sqrt {{1 \over N}{{\sum\nolimits_{i = 1}^N {\left({{u_{model ,i}} - {u_{real ,i}}} \right)} }^2}}

  • Percentage RMSE relative to average torque: 77 RMSE/AVG [%]=RMSE1Ni=1N| ureal ,i |·100%{\rm{ RMSE/AVG }}[\% ] = {{RMSE} \over {{1 \over N}\sum\nolimits_{i = 1}^N {\left| {{u_{real ,i}}} \right|} }}\;\cdot\;100\%

where ureal,i is the real actuator torque, and umodel,i is the simulated torque.

The analysis of the obtained results confirms a good agreement between the model predictions and the measurements recorded on the real system. Notably, the Mean Absolute Error (MAE) and Root Mean Square Error (RMSE) indicators for joints 2 and 3 represent approximately 3.5% of the average driving torque (Tab. 6). This suggests that the model provides a very accurate representation of the driving torque dynamics for these joints. In the case of joints 4, 5, and 6, although the absolute values of MAE and RMSE are relatively low, the RMSE/AVG index ranges between 7.8% and 9.06%, indicating a slightly less accurate, yet still satisfactory, model performance. This is confirmed by the comparative plots presented in Fig. 12b and Fig. 12c. The highest modelling error is observed for joint 1, where the RMSE/AVG index reaches 11.61%. As shown in Fig. 12a, the driving torque response for this joint exhibits oscillations and a slower stabilization compared to the model prediction. For the remaining joints, the RMSE/AVG index does not exceed 10%, and the plotted responses indicate that the model captures the torque dynamics with satisfactory accuracy.

Tab. 6.

Accuracy indicators for each joint

JointMAE (Nm)RMSE (Nm)AVG(ureal) (Nm)RMSE/AVG [%]
13.164.0835.1311.61
28.5210.89319.603.41
32.93.79102.913.69
40.731.1713.698.56
50.580.7810.037.80
60.640.818.969.06
8.
CONCLUSIONS

This paper presents a comprehensive approach to modelling an industrial robot, using the ABB IRB 2400 as an example. The developed kinematic model, based on the Denavit-Hartenberg method, enabled precise determination of transformations between consecutive links of the robot and facilitated the computation of the Jacobian matrix, which is essential for analysing the end-effector’s velocity and task-space forces. While the classical and modified Denavit-Hartenberg formulations are kinematically equivalent, the MDH parametrisation adopted here aligns with the controller’s native frame conventions, avoids artificial zero link lengths and ad hoc offsets, and yields better-conditioned Jacobians around the spherical wrist, which in our toolchain translates into faster evaluation of forward kinematics and Jacobians. More importantly, the presented framework goes beyond motion-only simulation by explicitly modelling gravity, Coriolis/centrifugal effects and an identified Stribeck-enhanced friction law. As a result, it predicts joint torques and end-effector wrenches with accuracy sufficient for real-time use, exposes the impact of singular configurations through the Jacobian and its conditioning, and enables assessments that kinematics-only tools cannot provide.

In the dynamic modelling process, two methodologies were employed: the Euler-Lagrange method and the Newton-Euler method. This dual approach allowed for the derivation of two equivalent equations of motion, effectively reducing the risk of modelling errors. Subsequently, the physical parameters of the model (masses, moments of inertia, and friction coefficients) were identified, and the model was validated in a simulation environment. The verification relied on controller-reported actuator torques streamed via EGM at 250 Hz; these values are computed by the internal model of the IRC5 controller and their absolute accuracy is not disclosed by the manufacturer. This limitation was mitigated by cross-checking trends against CAD-consistent gravity loads and by using two independent dynamic derivations (Euler–Lagrange and Newton–Euler), which reduced the risk of algebraic inconsistencies and improved numerical robustness. The resulting model already enables feed-forward torque compensation and singularity-aware path planning for robotic machining, feasibility checks and peak-load prediction in digital-twin workflows, including large-scale additive processes, and rapid what-if studies on process parameters without hardware modification.

The comparison of simulation results with reference data showed sufficient agreement, confirming the correctness of the developed dynamic model. The obtained model can be confidently used for further studies. It serves as a foundation for developing a digital twin of the robot, which can be employed in simulation-based testing of advanced control algorithms. In the future, the model can also be extended to incorporate phenomena related to joint compliance, enabling more accurate analysis of the robot’s interaction with its environment.

DOI: https://doi.org/10.2478/ama-2025-0064 | Journal eISSN: 2300-5319 | Journal ISSN: 1898-4088
Language: English
Page range: 556 - 567
Submitted on: Apr 1, 2025
Accepted on: Sep 28, 2025
Published on: Dec 19, 2025
Published by: Bialystok University of Technology
In partnership with: Paradigm Publishing Services
Publication frequency: 4 issues per year

© 2025 Paweł OBAL, Piotr GIERLAK, published by Bialystok University of Technology
This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 License.