METHOD OF CONTROLLING A ROBOT ARM BASED ON ADAPTIVE FRICTION
20220226993 · 2022-07-21
Assignee
Inventors
Cpc classification
B25J9/1641
PERFORMING OPERATIONS; TRANSPORTING
G05B19/4155
PHYSICS
International classification
Abstract
A method of controlling a robot arm with robot joints, where the joint motors of the joints are controlled based on a signal generated based on the friction torque (formula I) of at least one of the input/outside of the robot joint transmission and the robot joint transmission torque (formula II) between the input side and the output side of the transmission. The friction torque is determined based on: at least two of the angular position of the motor axle; the angular position of the output axle and/or the motor torque provided to the motor axle by the joint motor. The robot joint transmission torque is determined based on: at least one of the angular position of the output axle; the angular position of the output axle and/or the angular position of the motor axle; the angular position of the motor axle and the motor torque provided to the motor axle by the joint motor.
Claims
1. A method of controlling a robotic arm, where the robotic arm comprises a plurality of joints connecting a base and a tool flange, where at least one of the joints is a rotational joint comprising a joint motor having a motor axle, where the motor axle is configured to rotate an output axle of the rotational joint via a joint transmission, the method comprising: obtaining an angular position (Θ) of the motor axle; obtaining an angular position (q) of the output axle; obtaining a motor torque (τ.sub.motor) provided to the motor axle by the motor; determining a friction torque ({circumflex over (F)}) of at least one of: an input side of the joint transmission; and an output side of the joint transmission based on at least two of: the angular position (Θ) of the motor axle; the angular position (q) of the output axle; or the motor torque (τ.sub.motor) provided to the motor axle by the joint motor; determining a robot joint transmission torque ({circumflex over (τ)}.sub.J) between the input side and the output side of the joint transmission based on at least one of: the angular position (q) of the output axle; the angular position (q) of the output axle and the angular position (Θ) of the motor axle; or the angular position (Θ) of the motor axle and the motor torque (τ.sub.motor) provided to the motor axle by the joint motor; generating a motor control signal for joint motor of the rotational joint based on: the friction torque ({circumflex over (F)}) of at least one of the input side or the output side of the joint transmission; and the robot joint transmission torque ({circumflex over (τ)}.sub.J) between the input side and the output side of the joint transmission.
2. The method of claim 1, wherein the motor control signal is generated based also on at least one of: the angular position (Θ) of the motor axle; the angular position (q) of the output axle; the motor torque (τ.sub.motor) provided to the motor axle by the joint motor; a dynamic model of a robot comprising the robotic arm (D.sub.robot); or at least one motion parameter (M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d) corresponding to a desired motion of at least a part of the robotic arm.
3. The method of claim 1, wherein the friction torque ({circumflex over (F)}) of at least one of: the input side of the joint transmission; or the output side of the joint transmission is obtained based on a deflection (Φ.sub.joint) of the joint transmission, where the deflection of the joint transmission indicates a difference between the angular position (Θ) of the motor axle and the angular position (q) of the output axle.
4. The method of claim 1, wherein: obtaining the angular position (Θ) of the motor axle comprises measuring the angular position (Θ) of motor axle using a motor axle encoder; and obtaining (554) the angular position (q) of the output axle comprises measuring the angular position (q) of the output axle using an output axle encoder.
5. The method of claim 4, wherein the friction torque ({circumflex over (F)}) of at least one of: the input side of the joint transmission; or the output side of the joint transmission is obtained based on the measured angular position (Θ) of the motor axle and the measured angular position (q) of the output axle.
6. The method of claim 1, wherein determining the robot joint transmission torque is based on the friction torque ({circumflex over (F)}) of at least one of the input side of the joint transmission or the output side of the joint transmission.
7. The method of claim 1, wherein generating the motor control signal comprises determining a desired transmission torque (τ.sub.J,d) corresponding to a desired transmission torque of the joint transmission based on: a dynamic model of a robot comprising the robotic arm (D.sub.robot); at least one motion parameter (M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d) indicating a desired motion of at least a part of the robotic arm; and the friction torque ({circumflex over (F)}) of at least one of the input side or the output side of the joint transmission.
8. The method of claim 7, wherein generating DA the motor control signal comprises determining a transmission torque error correction motor torque (τ.sub.m,torque-err) corresponding to a motor torque that minimizes a difference between the desired transmission torque (τ.sub.J,d) and the robot joint transmission torque ({circumflex over (τ)}.sub.J), where the transmission torque error correction motor torque (τ.sub.m,torque-err) is determined based on: the desired transmission torque (τ.sub.J,d), and the robot joint transmission torque ({circumflex over (τ)}.sub.J).
9. The method of claim 1, wherein generating the motor control signal for the joint motor determining a desired feed-forward motor torque (τ.sub.m,FF) indicating a desired motor torque of the joint motor based on: a dynamic model of a robot comprising the robotic arm (D.sub.robot); at least one motion parameter (M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d) indicating a desired motion of at least a part of the robotic arm; and the friction torque ({circumflex over (F)}) of at least one of the input side or the output side of the joint transmission.
10. The method of claim 1, wherein generating the motor control signal comprises determining an error correction motor torque (τ.sub.m,err) corresponding to a motor torque that minimizes errors associated with least one of: a desired motion parameter of the robotic arm and an actual motion parameter of the robotic arm; a desired angular position (q.sub.d) of the output axle and the angular position (q) of the output axle; a desired angular velocity ({dot over (q)}.sub.d) of the output axle and an angular velocity ({dot over (q)}) of the output axle; a desired angular acceleration ({umlaut over (q)}.sub.d) of the output axle and an angular acceleration ({umlaut over (q)}) of the output axle; a desired angular position (Θ.sub.d) of the motor axle and the angular position (Θ) of the motor axle; a desired angular velocity ({dot over (Θ)}.sub.d) of the motor axle and an angular velocity ({dot over (Θ)}) of the motor axle; a desired angular acceleration ({umlaut over (Θ)}.sub.d) of the motor axle and an angular acceleration ({umlaut over (θ)}) of the motor axle; or a desired torque (τ.sub.motor,d) provided to the motor axle by the joint motor and the motor torque (τ.sub.motor) provided to the motor axle by the joint motor.
11. The method of claim 7, wherein generating the motor control signal comprises determining a resulting motor torque (τ.sub.r) corresponding to a resulting motor torque to be applied by the joint motor, the resulting motor torque being based on at least one of: the transmission torque error correction motor torque (τ.sub.m,torque-err); a desired feed-forward motor torque (τ.sub.m,FF); or an error correction motor torque (τ.sub.m,err); where the motor control signal is generated based on the resulting motor torque.
12. A robot system comprising a robotic arm controlled by a controller, the robotic robot arm comprising a plurality of joints connecting a base and a tool flange, where at least one of the joints is a rotational joint comprising a joint motor having a motor axle, where the motor axle is configured to rotate an output axle of the rotational joint via a joint transmission, the controller being configured to control the robotic arm by providing a motor control signal for the joint motor and the robot controller being configured to generate the motor control signal based on: an angular position (Θ) of the motor axle; an angular position (q) of the output axle; a motor torque (τ.sub.motor) provided to the motor axle by the joint motor; wherein robot controller comprises: an adaptive friction module configured to determine a friction torque ({circumflex over (F)}) of at least one of an input side of the joint transmission or an output side of the joint transmission based on at least two of: the angular position (Θ) of the motor axle; the angular position (q) of the output axle; or the motor torque (τ.sub.motor) provided to the motor axle by the joint motor; a transmission torque module configured to determine a robot joint transmission torque ({circumflex over (τ)}.sub.J) between the input side and the output side of the joint transmission based on at least one of: the angular position (q) of said output axle; the angular position (q) of the output axle and the angular position (Θ) of the motor axle; or the angular position (Θ) of the motor axle and the motor torque (τ.sub.motor) provided to the motor axle by the joint motor; and wherein the said controller is configured to generate the motor control signal based on the friction torque ({circumflex over (F)}) of at least one of the input side or the output side of the joint transmission and the robot joint transmission torque ({circumflex over (τ)}.sub.J) between the input side and the output side of the joint transmission.
13. The robot system of claim 12, wherein the adaptive friction module is configured to determine the friction torque ({circumflex over (F)}) of at least one of: the input side of the joint transmission; or the output side of the joint transmission based on a deflection (Φ.sub.joint) of the joint transmission, where the deflection of the joint transmission corresponds to a difference between the angular position (Θ) of the motor axle and the angular position (q) of the output axle.
14. The robot system of claim 12, further comprising: a motor axle encoder configured to measure the angular position (Θ) of the motor axle; and an output encoder configured to measure the angular position (q) of the output axle.
15. The robot system of claim 12, further comprising: a sensor configured to obtain the motor torque (τ.sub.motor) provided to the motor axle by the joint motor.
16. The robot system of claim 12, wherein the controller comprises a feed-forward controller module configured to determine a desired transmission torque (τ.sub.J,d) corresponding to a desired transmission torque of the joint transmission based on: a dynamic model of a robot comprising the robotic arm (D.sub.robot); at least one motion parameter (M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d) indicating a desired motion of at least a part of the robotic arm; and the friction torque ({circumflex over (F)}) of at least one of the input side or the output side of the joint transmission.
17. The robot system of claim 16, wherein the controller comprises a torque feed-back controller module configured to determine a transmission torque error correction motor torque (τ.sub.m,torque-err) corresponding to a motor torque that minimizes a difference between the desired transmission torque (τ.sub.J,d) and the robot joint transmission torque ({circumflex over (τ)}.sub.J), where the transmission torque error correction motor torque (τ.sub.m,torque-err) is determined based on: the desired transmission torque (τ.sub.J,d); and the robot joint transmission torque ({circumflex over (τ)}.sub.J).
18. The robot system of claim 12, wherein the controller comprises a feed-forward controller module configured to determine a desired feed-forward motor torque (τ.sub.m,FF) indicating a desired motor torque of the joint motor based on: a dynamic model of a robot comprising the robotic arm (D.sub.robot); at least one motion parameter (M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d) corresponding to a desired motion of at least a part of the robotic arm; and the friction torque ({circumflex over (F)}) of at least one of the input side or the output side of the joint transmission.
19. The robot system of claim 12, wherein the controller comprises a feed-back controller configured to determine an error correction motor torque (τ.sub.m,err) corresponding to a motor torque that minimizes errors associated with at least one of: a desired motion parameter of the robotic atm and an actual motion parameter of the robotic arm; a desired angular position (q.sub.d) of the output axle and the angular position (q) of the output axle; a desired angular velocity ({dot over (q)}.sub.d) of the output axle and an angular velocity ({dot over (q)}) of the output axle; a desired angular acceleration ({umlaut over (q)}.sub.d) of the output axle and an angular acceleration ({umlaut over (q)}) of the output axle; a desired angular position (Θ.sub.d) of the motor axle and the angular position (Θ) of the motor axle; a desired angular velocity ({dot over (Θ)}.sub.d) of the motor axle and an angular velocity ({dot over (Θ)}) of the motor axle; a desired angular acceleration ({umlaut over (Θ)}.sub.d) of the motor axle and an angular acceleration ({umlaut over (θ)}) of the motor axle; a desired torque (τ.sub.motor,d) provided to the motor axle by the joint motor and the motor torque (τ.sub.motor) provided to the motor axle by the joint motor.
20. The robot system of claim 16, wherein the controller comprises a motor controller module configured to generate the motor control signal corresponding to a motor current (i.sub.control) for the at least one robot, joint based on a resulting motor torque (τ.sub.r) corresponding to a motor torque to be applied by the joint motor, where the resulting motor torque (τ.sub.r) is determined based on at least one of: a transmission torque error correction motor torque (τ.sub.m,torque-err); a desired feed-forward motor torque (τ.sub.m,FF); or an error correction motor torque (τ.sub.m,err).
21. The robot system of claim 12, wherein the controller is configured to control the robotic arm based on the motor control signal; and wherein said controller is configured to generate the motor control signal by performing the method of claim 1.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
DETAILED DESCRIPTION OF THE INVENTION
[0038] The present invention is described in view of exemplary embodiments only intended to illustrate the principles of the present invention. The skilled person will be able to provide several embodiments within the scope of the claims. Throughout the description, the reference numbers of similar elements providing similar effects have the same last two digits. Further it is to be understood that in the case that an embodiment comprises a plurality of the same features then only some of the features may be labeled by a reference number.
[0039] The invention can be embodied into a robot arm and is described in view of the robot arm illustrated in
[0040] The robot arm comprises at least one robot controller 115 configured to control the robot joints by controlling the motor torque provided to the joint motors based on a dynamic model of the robot. The robot controller 115 can be provided as a computer comprising an interface device 117 enabling a user to control and program the robot arm. The controller can be provided as an external device as illustrated in
[0041]
[0042] The joint motor 209 is configured to rotate the motor axle by applying a motor torque to the motor axle as known in the art of motor control, for instance based on a motor control signal 233 indicating the torque, τ.sub.control applied by the motor axle, for instance by driving the joint motor with a motor current i.sub.motor proportional with a motor torque. The robot transmission 229 is configured to transmit the torque provided by the motor axle to the output axle for instance to provide a gear ratio between the motor axle and the output axle. The robot joint comprises at least one joint sensor providing a sensor signal indicative of at least the angular position, q, of the output axle and an angular position, Θ, of the motor axle. For instance, the angular position of the output axle can be indicated by an output encoder 235, which provide an output encoder signal 236 indicating the angular position of the output axle in relation to the robot joint. Similar, the angular position of the motor axle can be provided by an input encoder 237 providing an input encoder signal 238 indicating the angular position of the motor axle in relation to the robot joint. The output encoder 235 and the input encoder 237 can be any encoder capable of indicating the angular position, velocity and/or acceleration of respectively the output axle and the motor axle. The output/input encoders can for instance be configured to obtain the position of the respective axle based on the position of an encoder wheel 239 arrange on the respective axle. The encoder wheels can for instance be optical or magnetic encoder wheels as known in the art of rotary encoders. The output encoder indicating the angular position of the output axle and the input encoder indicating the angular position of the motor axle makes it possible to determine a relationship between the input side (motor axle) and the output side (output axle) of the robot joint gear.
[0043] The robot joints may optionally comprise one or more motor torque sensors 241 providing a motor torque signal 242 indicating the torque provided by the motor axle. For instance, the motor torque sensor can be provided as current sensors obtaining the current i.sub.motor through the coils of the joint motor whereby the motor torque can be determined as known in the art of motor control. For instance, in connection with a multiphase motor, a plurality of current sensors can be provided in order to obtain the current through each of the phases of the multiphase motor and the motor torque can then be obtained based on the obtained currents. For instance, in a three-phase motor the motor torque may be obtained based on quadrature current obtained from the phase currents through a Park Transformation. Alternatively, the motor torque can be obtained using other kind of sensors for instance force-torque sensors, strain gauges etc.
[0044]
[0045]
[0046] The robot controller is configured to control the robot arm based on a dynamic model of the robot arm D.sub.robot. The dynamic model of the robot arm can be defined and pre-stored in the memory 445 of the controller and the user can in some embodiment be allowed to modify the dynamic model op the robot arm, for instance by providing payload information of a payload attached to the robot arm or defining the orientation of the robot arm in relation to gravity.
[0047] The configuration of the robot arm can be characterized by the generalized coordinates (q Θ)∈.sup.2N where q is a vector comprising the angular positions of the output axles of the robot joint transmissions and Θ is a vector comprising the angular positions of the motor axles as seen in the output side of the robot joint transmission. Consequently:
where Θ′ is the actual angular position of the motor axle, which can for instance be measured by a rotary encoder, and r the gear ratio of the robot joint transmission. This is the notation used throughout this application.
[0048] Alternatively, it is noted that q can be indicated in the input side of the robot joint gear:
q=q′r eq. 2
where q′ is the actual angular position of the output axle, which can for instance be measured by a rotary encoder.
[0049] The transmission flexibility of the robot joint results in a deflection between the input side and the output side of the robot joint transmission when a torque is applied to the robot joint transmission. The deflection of the robot joint transmission can be indicated by a joint transmission deformation variable Φ.sub.joint indicating the differences between the angular position Θ of the motor axle and the angular position q of the output axle, thus the joint transmission deformation for robot joint i is defined as:
Φ.sub.joint,i=Θ.sub.i−q.sub.i eq. 3
[0050] The joint transmission torque τ.sub.joint,i defines the torque that is transferred from the motor axle to the output axle via the robot joint transmission and can be modeled as a function of the joint transmission deformation Φ.sub.joint and its time-derivative:
τ.sub.joint,i(Φ.sub.joint,i,{dot over (Φ)}.sub.joint,i)=τ.sub.E,i(Φ.sub.joint,i)+τ.sub.D,i({dot over (Φ)}.sub.joint,i) eq. 4
where τ.sub.E,i(Φ.sub.joint,i) is a flexibility torque depending on the robot joint transmission stiffness K.sub.i and the joint transmission deformation of the robot joint transmission and τ.sub.D,i({dot over (Φ)}.sub.joint,i) is a damping torque depending on the damping D.sub.i and the first time derivative of the joint transmission deformation of the robot joint transmission.
[0051] The transmission stiffness K.sub.i of the robot joint transmission can be characterized by how much the flexibility torque τ.sub.E,i(Φ.sub.joint,i) causing the joint transmission deformation changes as a function of the joint transmission deformation. The transmission stiffness can thus be expressed as:
The flexibility torque τ.sub.E,i(Φ.sub.joint,i) of the robot joint transmission can be obtained experimentally, for instance by following these steps: [0052] Impose a set of different known torques around the rotational axis (111a-111f, 211) of the robot joints and for each torque obtain the resulting joint transmission deformation Φ.sub.joint based on obtained/measured the angular positions of the input axle and output axle using eq. 3. The torques can be exerted to the robot joint for instance by; [0053] orienting the joint rotation axis parallel to the direction of the gravitational acceleration such that there will be no torque resulting from gravity, and then; [0054] using a device capable of measuring force to exert a force on the robot arm, the force being exerted at a position with a known distance between the applied force and the joint axis, the distance being perpendicular to the direction of the exerted force and perpendicular to the joint rotation axis, and then calculating the torque as force times distance; [0055] letting part of the robot, for instance the tool flange, exert a force/torque on its surroundings and using the kinematic properties of the robot arm and the actual configuration of the robot arm to calculate the torque around the joint rotation axis.
Based on the experimental results a mathematical model of the relationship between the joint transmission deformation and the flexibility torque for joint i can be constructed, for instance a polynomial of odd powers in Φ.sub.joint,i can be used to describe the relationship between the joint transmission deformation and the flexibility torque for joint i, thus
where k.sub.j,i is j.sup.th polynomial coefficient and P is the total number of polynomial coefficients.
[0056] The τ.sub.D,i({dot over (Φ)}.sub.joint,i) damping torque of the robot joint transmission can, if assumed linear in the time-derivative of joint transmission deformation, for instance be obtained by following the steps: [0057] Fix the output axle of the robot joint transmission; [0058] Apply a torque to the motor axle of the robot joint transmission to yield a transmission deflection of the joint transmission; [0059] Keep the motor axle of the robot joint transmission still and remove the applied torque from the motor axle of the robot joint transmission; [0060] Observe the position of the motor axle of the robot joint transmission over time as the motor axle of the robot joint transmission undergoes a damped harmonic motion with an amplitude that decreases over time. [0061] The damping torque is a measure of the energy dissipation during the motion. Assuming an underdamped harmonic motion, the damping coefficient D.sub.i can be obtained as:
If the motion is not underdamped, a larger mass moment of inertia is added to the input axle.
[0063] The output-side friction torque F.sub.q of the transmissions of robot joints can be obtained experimentally, for instance by following these steps for each of the robot joints independently: [0064] Orient the rotation axis (111a-111f, 211) of a robot joint parallel to the direction of the gravitational acceleration. [0065] Apply motor torque such as to rotate the output axle of the robot joint with different known constant angular velocities in a known period of time while measuring the joint transmission deformation. [0066] The output-side friction torque is obtained as the joint transmission deformation mapped to flexibility torque during the constant angular velocity motion of the output axle, thus
F.sub.q,i=τ.sub.E,i(Φ.sub.joint,i) eq. 8
[0067] The input-side friction torque F.sub.θ of the robot joint transmission can be obtained experimentally, for instance by following these steps for each of the robot joints independently: [0068] Orient the robot joint axis rotation axis (111a-111f, 211) parallel to the direction of the gravitational acceleration; [0069] Apply motor torque such as to rotate the motor axle of the robot joint with a known constant angular velocity in a known period of time while obtaining the joint motor torque, for instance based on motor currents. [0070] The input-side friction torque is obtained as the joint motor torque during the constant angular velocity motion of the motor axle as a function of the flexibility torque, thus
F.sub.θ,i=τ.sub.motor,i−τ.sub.E,i(Φ.sub.joint,i) eq. 9
[0071] Facing
[0072] As described in connection with
[0073] The controller can for instance be configured to carry out the method of controlling the robot arm as illustrated in
[0074]
[0075] Step of initializing 550 comprises a step of obtaining the dynamic model D.sub.robot of the robot arm and can be based on prior knowledge of the robot arm and robot joints, KoR [Knowledge of Robot], such as the dimensions and weight of robot joints and robot links; joint motor properties; information relating to an eventual payload attached to the robot arm, orientation of the robot arm in relation to gravity and frictional properties of the robot arm and robot joints. The dynamic model of the robot arm can be defined and pre-stored in the memory of the controller and the user can in some embodiment be allowed to modify the dynamic model of the robot arm, for instance by providing payload information of a payload attached to the robot arm or defining the orientation of the robot arm in relation to gravity. The dynamic model of the robot arm can be obtained by considering the robot arm as an open kinematic chain having a plurality of (n+1) rigid robot links and a plurality of n revolute robot joints, comprising a joint motor configured to rotate at least one robot link.
[0076] For instance, the dynamic model as seen from the output side of the robot joint transmissions of the robot arm can be characterized by {14}:
τ.sub.joint=M(q){umlaut over (q)}+C(q,{dot over (q)}){dot over (q)}+g(q)+F.sub.q+τ.sub.ext eq. 10
where τ.sub.joint is a vector comprising the transmission torques τ.sub.joint,i . . . τ.sub.joint,n of each of the robot joint transmissions; q is a vector comprising the angular position of the output axles of the robot joint transmissions; {dot over (q)} is a vector comprising the first time derivative of the angular position of the output axles of the robot joint transmissions and thus relates to the angular velocity of the output axles; {umlaut over (q)} is a vector comprising the second time derivative of the angular position of the output axles of the robot joint transmissions and thus relates to the angular acceleration of the output axles. M(q) is the inertia matrix of the robot arm and indicates the mass moments of inertia of the robot arm as a function of the angular position of the output axles of the robot joint transmissions. C(q, {dot over (q)}){dot over (q)} is the Coriolis and centripetal torques of the robot arm as a function of the angular position and angular velocity of the output axle of the robot joint transmissions. g(q) is the gravity torques acting on the robot arm as a function of the angular position of the output axles of the robot joint transmissions.
[0077] F.sub.q is a vector comprising the friction torques acting on the output axles of the robot joint transmissions. The F.sub.q can be obtained during calibration of the robot joints for instance as described in paragraph [0026]. τ.sub.ext is a vector indicating the external torques acting on the output axles of the robot joint transmissions. The external torques can for instance be provided by external forces and/or torques acting on parts of the robot arm. For instance, if the tool flange of the robot is subject to external forces and/or torques described by F.sub.ext, the resulting torques at the output axles of the robot joints becomes:
τ.sub.ext=J.sup.T(q)F.sub.ext eq. 11
where J.sup.T(q) is the transposed manipulator Jacobian of the robot arm and where F.sub.ext is a vector describing the direction and magnitude of the external forces and torques in relation to the tool flange of the robot arm.
[0078] Secondly, the dynamic model as seen from the input side of the robot joint transmissions becomes {14}:
τ.sub.motor=B{umlaut over (Θ)}+F.sub.Θ+τ.sub.joint eq. 12
where τ.sub.joint is a vector comprising transmission torque τ.sub.joint,i . . . τ.sub.joint,n of each of the robot joint transmissions; {umlaut over (Θ)} is a vector comprising the second time derivative of the angular position of the motor axle of the joint motor and thus relates to the angular acceleration of the motor axle. B is the positive-definite diagonal matrix indicating the mass moments of inertia of the joint motors' rotors. F.sub.Θ is a vector comprising the friction torques acting on the motor axles and τ.sub.motor is a vector indicating the torque generated by the joint motors. F.sub.Θ can be obtained for each robot joint as described in paragraph [0027].
[0079] Step 552 of obtaining the angular position of the motor axles of the joint motors can be obtained by measuring the angular position of the motor axle for instance by using an encoder such as optical/magnetic encoders as known in the art of robotics. The angular position of the motor axles Θ can be stored in a memory for later usage for instance in order to store a number of angular positions of the motor axles obtained at different times.
[0080] Step 554 of obtaining the angular position of the output axle of the robot joint transmission can be obtained by measuring the angular position of the output axle for instance by using encoders such as optical/magnetic encoders as known in the art of robotics. The angular position of the output axles q can be stored in a memory for later usage, for instance a number of angular positions of the output axles obtained at different times can be stored in a memory. Alternatively, the angular position of the output axles of the robot joint transmissions can be obtained as the desired angular position of the output axles upon which the controller is generating the motor torques. This makes it possible to estimate the angle of the output axles in robot joints that does not comprise encoders for measuring the angular position of the output axles or the One could also estimate the output axle angular position based on the motor axle angular position for instance by estimating the output axle based on the gear ratio of the robot joint transmission.
[0081] The step 556 of obtaining the actual motor torque τ.sub.motor provided by the joint motors can for instance be obtained by obtaining the current i.sub.motor through the joint motors whereby the actual motor torque can be obtained as known in the art of motor control. For instance, if the joint motors are provided as three-phase Permanent Magnet Synchronous Machines (PMSM) with dynamics much faster than that of the manipulator and if the joint motors are operated under their current saturation limit, the motor axle torque can be obtained by:
τ.sub.motor=K.sub.τi.sub.motor eq. 13
where τ.sub.motor is a vector comprising, the actual torque provided by the motor axles of the joint motors (seen in the output space of the robot joint gear), K.sub.τ is the positive-definite diagonal matrix of torque constants and i.sub.motor is a vector comprising the torque-generating (quadrature) current obtained from the phase currents of the joint motors using the Park Transformation.
[0082] The actual motor torque can also be obtained by using force/torque sensors such as strain gauges indicating the actual torque of the motor axle, as in many cases it can be assumed the motor torque is transferred to the motor axle.
[0083] Step 558 of obtaining the friction torque {circumflex over (F)} of the input side and/or the output side of the robot joint transmission can be obtained based on at least two of: [0084] the angular position Θ of the motor axle; [0085] the angular position q of the output axle; [0086] the motor torque τ.sub.motor/i.sub.motor provided to the motor axle by the joint motor;
by using any method or a combination of methods within the field of Digital Signal Processing (DSP) or an adaptive observer method known in the art of adaptive state estimation in the field of control theory. This makes it possible to provide an online estimation of the friction torque of the robot joint transmission whereby it becomes possible to take varying friction of the robot joint transmission due to wear and changes in ambient working conditions into account when providing a control system for the robot arm. Consequently, a more accurate control of a robot arm can be provided. Further in many robots arms the angular position of the motor axle, the angular position of the output axle and the motor torque are already obtainable by various sensors and thus no additional sensors need to be provided in such robots. The adaptive filtering methods include for instance; [0087] Least Mean Squares (LMS) filter; and [0088] Recursive Least Squares (RLS) filter;
And the observer methods include for instance; [0089] Luenberger Observer (LO); [0090] Kalman Filter (KF), including also Extended Kalman Filter (EKF) and Uncented Kalman Filter (UKF); [0091] Sliding Mode Observer (SMO), including also the Super-Twisting Sliding-Mode Observer (STSMO); [0092] High-Gain Observer (HGO); [0093] Fuzzy Observer (FO); [0094] Artificial Neural Network (ANN);
where at least two of the angular position Θ of the motor axle; the angular position q of the output axle; and the motor torque τ.sub.motor/i.sub.motor provided to the motor axle by the joint motor serves as inputs of the observers.
[0095] For instance, adaptive friction torque estimation can be conducted to obtain an estimate of the input-side and/or output-side friction torque(s) of the robot transmissions based on the position of the motor axles of the robot joints, and/or the position of the output axles of the robot joints, and the motor torques, for instance by describing the friction torque by the linearly parametrizable model
where ω is the angular velocity of the motor axle and/or output axle, {circumflex over (F)}.sub.C is the vector of estimated Coulomb friction coefficients, and {circumflex over (F)}.sub.V is the vector of estimated viscous friction coefficients. Due to the linear parametrization it is possible to estimate the unknown and assumed slowly changing coefficients by Recursive Least Squares (RLS) methods with some forgetting scheme discounting past data.
[0096] Assuming that data for each robot joint is sampled at times t.sub.k=k T.sub.S, where T.sub.S is the sampling time and k an incrementing integer denoting the specific sample, and that the dynamic friction residual F.sub.i(k)=τ.sub.motor,i(k)−B.sub.i {umlaut over (θ)}.sub.i(k)−τ.sub.J,i(ϕ.sub.i(k), {dot over (ϕ)}.sub.i(k)), the RLS method works by estimating the unknown filter coefficients {circumflex over (α)}=[{circumflex over (F)}.sub.C,i {circumflex over (F)}.sub.V,i].sup.T through the following procedure for each sample as
[0097] where λ is the forgetting factor. A forgetting factor of λ=1 is chosen to estimate time-invariant (constant) parameters, and a forgetting factor λ<1 is chosen to estimate time-varying parameters. A smaller forgetting factor will make the RLS method forget parameters faster.
[0098] Estimating for instance the input-side friction torque through the use of an observer can be obtained using for instance the observer structure shown in
[0099] In another embodiment the adaptive friction module 674 can also be configured to provide an estimate of the input-side and/or output-side friction torque(s) of the robot transmissions based on the position of the motor axles of the robot joints, and/or the position of the output axles of the robot joints, and the motor torques. The adaptive friction module can for instance be obtained by describing the friction torque by the linearly parametrizable model
where ω is the angular velocity of the motor axle and/or the output axle, {circumflex over (F)}.sub.C is the vector of estimated Coulomb friction coefficients, and F.sub.V is the vector of estimated viscous friction coefficients. Due to the linear parametrization it is possible to estimate the unknown and assumed slowly changing coefficients by Recursive Least Squares (RLS) procedures as known in the art of adaptive control.
[0100] Step 560 of obtaining the transmission torque t between the input side and the output side of the joint transmissions can be obtained based on at least one of: [0101] the angular position (q) of the output axle; [0102] the angular position (q) of the output axle and the angular position (Θ) of the motor axle; [0103] the angular position (Θ) of the motor axle and the motor torque
[0104] (τ.sub.motor) provided to the motor axle by the joint motor;
for instance, based on the angular position (q) of the output axle using eq. 10, where F.sub.q have been obtained for each robot joint as described in paragraph
[0105] using equation eq. 8; or by using eq. 4, where the joint transmission deformation Φ.sub.joint and its time-derivative have been obtained based on the angular position (Θ) of the motor axle and the angular position (q) of the output axle using equation eq. 3. Alternatively, the transmission torque can be obtained based on the angular position (Θ) of the motor axle and the motor torque (τ.sub.motor) provided to the motor axle by the joint motor using eq. 12, where F.sub.Θ have been obtained for each robot joint as described in paragraph [0027]. It is noted that in one embodiment the F.sub.q and/or F.sub.Θ can be obtained based on the friction torque {circumflex over (F)} of the input side and/or the output obtained in step 558. Further it is to be understood the transmission torque {circumflex over (τ)}.sub.J can be obtained based on two or more of the data sets described above and where the transmission torque is obtained as any combination of the transmission torques obtained using the different methods.
[0106] Step 562 of generating motor control signal indicative of a desired motor torque τ.sub.control for at least one of the joint motors is based on at least: [0107] the friction torque {circumflex over (F)} of the input side of the robot joint transmission and/or the output side of the robot joint transmission; [0108] the robot joint transmission torque τ.sub.J between the input side and the output side of the robot joint transmission;
where the friction torque {circumflex over (F)} have been obtained as described in step 558 and where the robot joint transmission torque has been obtained as described in step 560. In addition to the friction torque {circumflex over (F)} and the joint transmission torque τ.sub.J, the desired motor torque is also obtained based on a desired motion M.sub.d of at least a part of the robot arm, and a dynamic model of the robot arm D.sub.robot. For instance, the desired motor torque can be obtained using dynamic model of the robot arm as expressed by eq. 12 where the second time derivative of the angular position of the motor axle {umlaut over (Θ)} has been obtained based on the angular position Θ of the motor axle obtained in step 552, the friction torques F.sub.Θ acting on the motor axles have been obtained in step 558 and the transmission torque τ.sub.J have been obtained in step 560 based on eq. 10, and based on desired motion of the robot arm. In eq. 10 the desired motion parameter is provided as desired angular positions q.sub.d, desired angular velocities {dot over (q)}.sub.d, and desired angular accelerations {umlaut over (q)}.sub.d of the output axles of the robot joint transmissions. The friction torques F.sub.Θ are adaptively obtained in step 558 and consequently the motor control signals indicating the desired motor torques are generated based on adaptive friction of the robot joint transmissions whereby a more accurate control of the robot joints can be provided.
[0109]
[0110] The robot controller system 615 comprises a motion planner module 670, an adaptive friction module 674, a transmission torque module 676, a motor controller module 680 and optional a motor torque obtaining module 678.
[0111] The motion planner module 670 is configured to provide the desired motions of the robot arm, for instance by generating trajectories of parts of the robot arm. The trajectories can for instance be generated based on a robot program instructing the robot arm to perform various tasks. In the illustrated embodiment the motion planner module provides a desired motion M.sub.d of parts of the robot arm. The desired motion of parts of the robot arm can for instance be indicated as motions properties of the robot joints, such as angular position q.sub.d of output axles of the joint transmissions, a desired angular velocity {dot over (q)}.sub.d of output axles of the joint transmissions, a desired angular acceleration {umlaut over (q)}.sub.d of the robot transmission. It is noted that the desired motion of parts of the robot arm also can be indicated as a position of various parts of the robot arm in relation to a reference point, for instance the desired motion may be indicated as a position, velocity and/or acceleration of the robot tool flange in relation to the robot base.
[0112] The desired motion M.sub.d is provided to the motor controller module 680. The motor controller module 680 is configured to generate at least one motor control signal 633 to the joint motors, for instance in form of a signal indicating the motor torque τ.sub.control that each joint motor shall provide to the motor axles or a current signal indicating the current i.sub.control, that each joint motor shall provide. The motor controller module 680 is configured to generate the motor control signal 633 based on: [0113] the desired motion M.sub.d; [0114] a dynamic model of the robot arm D.sub.robot; [0115] the friction torque {circumflex over (F)} of at the input side of the robot joint transmission and/or the output side of the robot joint transmission; [0116] the robot joint transmission torque τ.sub.J between the input side and the output side of the robot joint transmission;
where the friction torque {circumflex over (F)} is obtained by the adaptive friction module 674, the robot joint transmission torque τ.sub.J is obtained by transmission torque module 676 and the dynamic model of the robot arm D.sub.robot is stored in a memory 645. The motor controller module can for instance be configured to generate the motor control signal 633 by carrying out step 562 of the method described in
[0120] The optional motor torque obtaining module 678 is configured to obtain the motor torque provided by the joint motors based on the current i.sub.motor as known in the art and to provide the motor torque τ.sub.motor to the adaptive friction module 674 and optionally to the transmission torque module and the motor controller module 680. However, it is noted that the motor torque obtaining module 678 also can be provided as a part of the adaptive friction module 674, the transmission torque module and/or the motor controller module whereby the current i.sub.motor is provided directly to the various modules. Further the motor torque obtaining module may also be provided as an external module to the robot controller system 615.
[0121] The adaptive friction module 674 is configured to provide the friction torque {circumflex over (F)} at the input side of the robot joint transmission and/or the output side of the robot joint transmission based on at least two of: [0122] the angular position Θ of the motor axle; [0123] the angular position q of the output axle; [0124] the motor torque τ.sub.motor/i.sub.motor provided to the motor axle by the joint motor;
and is configured to carry out step 558 of the method described in
[0125] The transmission torque module 676 is configured to provide the transmission torque {circumflex over (τ)}.sub.J between input side and the output side of the joint transmissions and can be obtained based on at least one of: [0126] the angular position q of the output axle (illustrated in solid line); [0127] the angular position q of the output axle (illustrated in dotted line) and the angular position Θ of the motor axle; [0128] the angular position (Θ) of the motor axle and the motor torque (illustrated in dotted line) provided to the motor axle by the joint motor.
The transmission torque module is configured to carry out step 560 of the method described in
[0129] The robot system 600 illustrated in
[0130]
[0131] In this embodiment step 760 of obtaining the transmission torque {circumflex over (τ)}.sub.J between the input side and output side of the robot joint transmission is further obtained based on the friction torque {circumflex over (F)}. Consequently, the transmission torque is obtained based on the adaptive friction torque whereby the transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) can be obtained and adapted according to the adaptive friction torque. For instance, the transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) can be obtained by using eq. 10, where F.sub.q have been obtained according to step 558. Additionally or alternatively the transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) can be obtained by using eq. 12, where F.sub.Θ each robot have been obtained in step 558.
[0132] In this embodiment step 762 of generating control signals for the joint motors is based on the joint transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) obtained in step 760 and since the joint transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) in step 760 is obtained based on the friction torque {circumflex over (F)} of at the input side of the robot joint transmission and/or the output side of the robot joint transmission the control signals of for the joint motor will in step 762 indirectly also be obtained based on the friction torque F. In addition, as described the desired motor torque are also obtained based on a desired motion M.sub.d of at least a part of the robot arm and a dynamic model of the robot arm D.sub.robot.
[0133]
[0134] In this embodiment the transmission torque module 876 is configured to provide the transmission torque {circumflex over (τ)}.sub.J between the input side and output side of the robot joint transmission based on the friction torque {circumflex over (F)}. Consequently, the transmission torque is obtained based on the adaptive friction whereby the transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) can be obtained and adapted according to the adaptive friction. For instance, the transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) can be obtained by using eq. 10, where F.sub.q have been obtained as described in step 558. Additionally or alternatively the transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) can be obtained by using eq. 12, where F.sub.Θ have been obtained as described in step 558.
[0135] The motor controller module 880 is configured to generate control signals for the joint motors based on the joint transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) provided by transmission torque module 876, where the transmission torque module 876 for instance is configured to carry out step 760 described above. Since the joint transmission torque {circumflex over (τ)}.sub.J({circumflex over (F)}) provided by the transmission torque module 876 is obtained based on the friction torque {circumflex over (F)} of the input side of the robot joint transmission and/or the output side of the robot joint transmission the control signals for the robot joint motor generated by the motor controller module 880 will indirectly also be obtained based on the friction torque {circumflex over (F)}. In addition, as described the desired motor torque are also obtained based on a desired motion M.sub.d of at least a part of the robot arm and a dynamic model of the robot arm D.sub.robot.
[0136]
[0137] In this embodiment step 962 of generating motor control signals comprises: [0138] a step 963 of determining a desired transmission torque τ.sub.J,d; [0139] a step 964 of determining a desired feed-forward motor torque τ.sub.m,FF; [0140] a step 965 of determining a transmission torque error correction motor torque τ.sub.m,torque-err; [0141] a step 967 of determining a resulting motor torque τ.sub.r; [0142] an optional step 966 of determining an error correction motor torque; [0143] a step 968 of generating a motor control signal indicative of a motor control current.
[0144] Step 963 of determining a desired transmission torque τ.sub.J,d indicative of desired transmission torque of the robot joint transmission can be based on: [0145] a dynamic model of the robot D.sub.robot; [0146] at least one motion parameter M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d indicating a desired motion of at least a part of the robot arm; and [0147] the friction torque {circumflex over (F)} of at least one of the input side of the robot joint transmission and the output side of the robot joint transmission.
This makes it possible to obtain a more accurate desired transmission torque τ.sub.J,d as the friction term adaptively can be determined and therefore more correctly be incorporate into the dynamic model of the robot arm. For instance the desired transmission torque τ.sub.J,d may be obtained by using eq. 10 and the desired transmission torque τ.sub.J,d may in step 965 be used to obtain a transmission torque error correction motor torque τ.sub.m,torque-err.
[0148] Step 965 of determining the transmission torque error correction motor torque τ.sub.m,torque-err indicating a motor torque minimizing differences between the desired transmission torque τ.sub.J,d and the robot joint transmission torque {circumflex over (τ)}.sub.J can be based on desired transmission torque τ.sub.J,d; and the robot joint transmission torque {circumflex over (τ)}.sub.J. This makes it possible to compare the actual transmission torque {circumflex over (τ)}.sub.J obtained in step 560 with the desired transmission torque τ.sub.J,d and provide a determine a transmission torque error correction motor torque which can correct eventual differences as known in the art of feed-back control systems.
[0149] Step 964 of determining a desired feed-forward motor torque τ.sub.m,FF indicating a desired motor torque of the joint motor can be based on: [0150] a dynamic model of the robot D.sub.robot; [0151] at least one motion parameter M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d indicating a desired motion of at least a part of the robot arm; and [0152] the friction torque ({circumflex over (F)}) of at least one of the input side of the robot joint transmission and the output side of the robot joint transmission.
This makes it possible to obtain a more accurate desired feed-forward motor torque τ.sub.m,FF as the friction term adaptively can be determined and thus be more correctly incorporated into the dynamic model of the robot. For instance the desired feed-forward motor torque τ.sub.m,FF may be obtained by using eq. 10 and eq. 12 and desired feed-forward motor torque τ.sub.m,FF may then be used to generate the motor control signal as known in the art of feed-forward control mechanisms.
[0153] Step 966 of determining error correction motor torque τ.sub.m,err indicating a motor torque minimizing errors between at least one of: [0154] a desired motion parameter of the robot arm and actual motion parameter of the robot arm; [0155] a desired angular position q.sub.d of the output axle and the angular position q of the output axle; [0156] a desired angular velocity {dot over (q)}.sub.d of the output axle and the angular velocity {dot over (q)} of the output axle; [0157] a desired angular acceleration {umlaut over (q)}.sub.d of the output axle and the angular acceleration velocity {umlaut over (q)} of the output axle; [0158] a desired angular position Θ.sub.d of the motor axle and the angular position Θ of the motor axle; [0159] a desired angular velocity {dot over (Θ)}.sub.d of the motor axle and the angular velocity {dot over (Θ)} of the motor axle; [0160] a desired angular acceleration {umlaut over (Θ)}.sub.d of the motor axle and the angular acceleration velocity {umlaut over (Θ)} of the motor axle; [0161] a desired torque τ.sub.motor,d provided to the motor axle by the joint motor and the motor torque τ.sub.motor) provided to the motor axle by the joint motor.
This makes it possible to compare the parameters of the robot arm with corresponding desired parameters of the robot arm and determine a correction parameters which can be used to correct eventual errors between desired parameters and actual parameters as known in the art of feed-back control systems for instance as described in {15}
[0162] Step 967 of determining a resulting motor torque τ.sub.r indicative of the resulting motor torque to be applied by the joint motor can be based on at least one of: [0163] the transmission torque error correction motor torque τ.sub.m,torque-err; [0164] desired feed-forward motor torque τ.sub.m,FF; and [0165] error correction motor torque τ.sub.m,err;
where the motor control signal is generated based on the resulting motor torque. This makes it possible to generate the motor control signals for the joint motors based on both feed-forward parameters and feed-back parameters where the friction of the robot joint transmissions are adapted according to the operation of the robot arm.
[0166]
[0167] The motion planner module 1070 is configured to provide the desired motions of the robot arm, for instance by generating trajectories of parts of the robot arm. The trajectories can for instance be generated based on a robot program instructing the robot arm to perform various tasks. In the illustrated embodiment the desired motions M.sub.d provided to the motor controller module 1080 are a desired angular position q.sub.d of the output axles of the joint transmissions, a desired angular velocity {dot over (q)}.sub.d of the output axles of the joint transmissions and a desired angular acceleration {umlaut over (q)}.sub.d of output axles of the robot transmission.
[0168] The motor controller module comprises a feed-forward controller module 1082, a torque feed-back module 1084, a motor current controller 1086 and an optional a feed-back controller module 1080.
[0169] The feed-forward controller module 1082 is configured to determine a desired transmission torque τ.sub.J,d indicative of desired transmission torque of the robot joint transmission based on: [0170] a dynamic model of the robot D.sub.robot; [0171] at least one motion parameter M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d indicating a desired motion of at least a part of the robot arm; and [0172] the friction torque ({circumflex over (F)}) of at least one of the input side of the robot joint transmission and the output side of the robot joint transmission.
The feed-forward controller module can for instance be configured to carry out step 963 of the method illustrated in
[0173] The feed-forward controller module 1082 can also be configured to determine a desired feed-forward motor torque τ.sub.m,FF indicating a desired motor torque of the joint motor based on: [0174] a dynamic model of the robot D.sub.robot; [0175] at least one motion parameter M.sub.d, q.sub.d, {dot over (q)}.sub.d, {umlaut over (q)}.sub.d indicating a desired motion of at least a part of the robot arm; and [0176] the friction torque P of at least one of the input side of the robot joint transmission and the output side of the robot joint transmission.
The feed-forward controller module can for instance be configured to carry our step 964 of the method illustrated in
[0177] The torque feed-back controller module 1084 is configured to determine a transmission torque error correction motor torque τ.sub.m,torque-err indicating a motor torque minimizing differences between the desired transmission torque τ.sub.J,d and the robot joint transmission torque ({circumflex over (τ)}.sub.J), where the transmission torque error correction motor torque τ.sub.m,torque-err is determined based on: [0178] the desired transmission torque τ.sub.J,d; and [0179] the robot joint transmission torque {circumflex over (τ)}.sub.J.
The torque feed-back controller module 1084 can for instance be configured to carry out step 965 of the method illustrated in
[0180] The robot controller comprises a feed-back controller module 1088 configured to determine an error correction motor torque τ.sub.m,err indicating a motor torque minimizing errors between at least one of: [0181] a desired motion parameter of the robot arm and actual motion parameter of the robot arm; [0182] a desired angular position q.sub.d of the output axle and the angular position q of the output axle; [0183] a desired angular velocity {dot over (q)}.sub.d of the output axle and the angular velocity {dot over (q)} of the output axle; [0184] a desired angular acceleration {umlaut over (q)}.sub.d of the output axle and the angular acceleration velocity {umlaut over (q)} of the output axle; [0185] a desired angular position Θ.sub.d of the motor axle and the angular position Θ of the motor axle; [0186] a desired angular velocity {dot over (Θ)}.sub.d of the motor axle and the angular velocity {dot over (Θ)} of the motor axle; [0187] a desired angular acceleration {umlaut over (Θ)}.sub.d of the motor axle and the angular acceleration velocity {umlaut over (Θ)} of the motor axle; [0188] a desired torque τ.sub.motor,d provided to the motor axle by the joint motor and the motor torque τ.sub.motor provided to the motor axle by the joint motor.
[0189] The feed-back controller module 1088 can for instance be configured to carry out step 966 of the method illustrated in
[0190] The motor current controller module 1086 is configured to generate a motor control signal indicating a motor current i.sub.control for the robot joint based on a resulting motor torque τ.sub.r indicative of a resulting motor torque to be applied by the joint motor where the resulting motor torque τ.sub.r is determined based on at least one of: [0191] the transmission torque error correction motor torque τ.sub.m,torque-err; [0192] desired feed-forward motor torque τ.sub.m,FF; and [0193] error correction motor torque τ.sub.m,err.
[0194] The motor current controller may be provided as any motor control driver driving and controlling motors base on a desired torque. Typically, such motor control drivers generate signal indicative of the current to be provided to the motor coil. In some embodiment the motor control driver generates the currents directly. It is to be understood that an adaptive or non-adaptive system can be configured to provide smoothed estimates of the position of the motor axles and/or output axles of the robot joints based on noisy measurements.
[0195] The invention comprises an adaptive control system having an adaptive feed-forward control command and a computation of the torque through the robot joint transmission in at least one of the robot joints. The present invention can for instance be provided at a robot arm comprising a robot control system which monitors and controls the robot joint, whereby the position error is reduced when the robot is subject to changes in ambient conditions, wear, etc. This is achieved by providing control of robot joint torque based on an adaptive observer estimating the robot joint friction torque adaptively and the robot joint torque.
BRIEF DESCRIPTION OF FIGURE REFERENCES
[0196]
TABLE-US-00001 600, 800, 1000 Robot system 101 robot arm 103a-103f, 203, 303, 403i, robot joint 403i + 1, 403n, 603 104b, 104c, 104d, 304i; 304i − 1 robot link 105 robot base 107 robot tool flange 209, 309 joint motor 111a-111f, 211 axis of rotation 113a-113f:, 213 rotation arrow 115, 415, 615, 815, 1015 robot controller 117, 617 interface device 119 display 121 input device 123 direction of gravity 225, 325i motor axle 326 spring connecting input side and output side 227, 327i output axle 328 damper connecting input side and output side 229, 329i robot joint transmission 231 output flange 233, 433i; 433i + 1; 433n, 633 motor control signal 235, 635 output encoder 236, 436i; 436i + 1; 436n output encoder signal 237, 637 input encoder 238, 438i; 438i + 1; 438n input encoder signal 239 encoder wheel 241, 641 motor torque sensor 242, 442i; 442i + 1; 442n motor torque signal 443 Processor 445, 645 memory 550 Step of initializing 552 Step of obtaining the angular position of motor axle 554 Step of obtaining the angular position of output axle 556 Step of obtaining the actual motor torque 558 Step of obtaining the friction torque of joint transmission 560, 760 Step of obtaining the transmission torque between the input side and the output side of the joint transmissions 562, 762, 962 Step of generating motor control signals indicative of a desired motor torque 963 Step of determining a desired transmission torque 964 Step of determining a desired feed- forward motor torque 965 Step of determining a transmission torque error correction motor torque 966 Step of determining an error correction motor torque 967 Step of determining resulting motor torque 968 Step of generating a motor control signal indicating desired motor current 670 motion planner 674, 1174 adaptive friction module 676, 876 transmission torque module 678 motor torque module 680, 880, 1080 motor controller module 1082 Feed-forward controller module 1084 torque feed-back controller module 1086 current controller 1088 feed-back controller module 1190 joint transmission deformation module 1191 joint transmission deformation differentiating module 1192 joint torque obtaining module 1193 motor axle inertia torque estimation module 1194 motor axle angular acceleration estimation module 1195 motor axle angular velocity estimation module 1196 motor axle position differentiating module 1197 motor axle angular velocity difference module 1198 A gain and inertia module