Field of the invention
[0001] This invention relates to the control of drive systems for machines such as robot
arms.
Background of the invention
[0002] A typical robotic manipulator comprises a series of rigid elements which are coupled
together by joints. The elements may be joined in series to form an arm. The joints
can be driven so as to cause relative motion of the rigid elements. The rigid elements
may stem from a base and terminate in an end effector. Thus motion at the joints can
be used to position the end effector at a desired location. Each joint may provide
rotational motion or linear motion. The joints may be driven by any suitable means,
for example electric motors or hydraulic actuators.
[0003] When the robot is in operation it will be required to cause the end effector to move
to some desired position. For example, the robot may be required to use the end effector
to pick up an object. That would require the end effector to be moved to where the
object is. To accomplish this, some combination of motions of the joints is required.
Calculating those motions is the role of the robot's control system.
[0004] Conventionally the robot is provided with position sensors, each of which senses
the configuration of a respective one of the joints. This position information is
fed to the control system.
[0005] A well-known strategy for the control system is as follows:
- 1. Receive information indicating a desired position of the end effector.
- 2. Determine a set of target configurations of the joints of the robot that will result
in the end effector being in that position. This is known as inverse kinematics.
- 3. Receive information indicating the current configuration of each joint in the robot,
compare those current configurations to the target configurations and calculate a
set of torques or forces required at each joint in order to reduce the error between
the respective joint's current and target positions.
- 4. Send drive signals to the actuators in the robot in order to impose those torques
or forces at the respective joints.
[0006] This series of steps is performed repetitively so that over time the motion of the
robot conforms to the target configurations. Instead of, or in addition to, indicating
a position of the end effector, the information input to the system could indicate
a desired position of another part of the robot. This may apply if, for example, a
robot arm is required to avoid an external obstruction near the mid-point of the arm.
[0007] An alternative approach is known as impedance control. Impedance control involves
regulating the relationship between (i) torque/force and (ii) position, velocity and
acceleration.
[0008] In certain applications, controlling the impedance of the end-effector is more advantageous
than only controlling the position. For example, in an application where the end effector
is required to insert a long rod (for example an endoscope) through a small aperture
(e.g. a port), it is advantageous for the end effector to have a finite stiffness,
so that slight misalignment between the port and endoscope can be accommodated.
[0009] Figure 1 illustrates one way of implementing impedance control for a robot manipulator.
In this approach the following inputs are fed to an impedance control block:
- pd (a desired position vector), Rd (a desired rotation matrix), vd (a desired velocity) and v'd (a desired acceleration) derived from a command source;
- pc (a position vector in a compliant frame), Rc (a rotation matrix in a compliant frame) and vc (a velocity in a compliant frame) derived by forward kinematics in the direct kinematics
block; and
- hc (measured end effector torque/force).
[0010] The impedance control block implements the impedance control model based on those
inputs in order to generate a demanded acceleration (α) in joint space. The demanded
acceleration is expressed as the vector of

where
qd is the commanded joint motion q. These are then moderated by an inverse dynamics
block to generate a set of drive torques or forces τ which are used to drive the robot
manipulator. It is understood that in this approach impedance is synthesised at the
end effector. This has the disadvantage that the contact torque/force (h
c) at the end effector should be measured, which may be difficult or even impossible
in some situations: for example some surgical robotic applications, and involves additional
cost and potentially unreliability. A further problem with this approach is that it
relies on modelling inverse dynamics. This requires ongoing computation of the manipulator's
accelerations and makes the control performance sensitive to the accuracy of the model
of the robot manipulator, which may be inaccurate in its data for masses, inertias,
losses and so on. A further problem is that the impedance control approach is sensitive
to external disturbances that are outside the scope of the model, such as drive friction
and unexpected physical obstacles. These will lead to position tracking errors.
[0011] Figure 2 shows a second way of implementing impedance control. In this approach an
inner motion control loop is provided. The objective of this scheme is to make the
manipulator stiff, so that it faithfully tracks a demanded position
pc and rotation
Rc in a compliant frame as computed by the impedance control block. The commanded values
pd, Rd, vd and
v'd are provided to the impedance control block together with the measured
hc. The impedance control block synthesises a desired mechanical impedance of the end
effector by solving the second order dynamic equation:

for
vdc and
v'dc. In this equation,
KM represents a matrix of spring constants and
vdc represents the difference in position between the demand reference frame and the
compliant frame. The desired position, rotation, speed and acceleration in the compliant
frame are passed to a position and orientation control block. That block is a controller
which sets the tracking performance of the system based on the difference between
the values determined from the impedance control block and the values determined by
direct kinematics. The output of the position and orientation control block is a set
of set of output torques or forces α, representing the demanded accelerations in joint
space, which are processed as in the scheme of figure 1. The scheme of figure 2 may
help to address the problems with position tracking in the scheme of figure 1, but
it has a number of other disadvantages. First, impedance is computed in the end effector's
Cartesian reference frame (
hc represents force in x, y, z and torque in three rotational dimensions). In some applications
it may be desirable to use other coordinate systems. Second, the system of figure
2 brings the inverse kinematics problem into the control of position and orientation.
This is problematic because typically the inverse kinematics problem is considered
hard to solve. One reason for this is that there can be multiple solutions (i.e. there
can be multiple sets of joint angles which will give a particular end effector position).
Another reason is that certain poses of the manipulator can become singular, meaning
that it is impossible to make subsequent movements of the effector in all directions
with finite joint velocities. For these reasons, embedding the inverse kinematics
solution within the feedback loop makes it significantly harder to validate any potential
failure cases of the algorithm as a whole. Finally, as with the system of figure 1,
it is supposed that torque/force will be measured at the end effector, which may be
impractical and can introduce additional cost and unreliability, as discussed above.
[0012] There is a need for an improved control system for mechanical systems such as robot
manipulators.
Summary of the invention
[0013] According to the present invention there is provided a method for controlling a mechanical
system having a plurality of components interlinked by a plurality of driven joints,
the method comprising: measuring the torques or forces about or at the driven joints
and forming a load signal representing the measured torques or forces; receiving a
motion demand signal representing a desired state of the system; implementing an impedance
control algorithm in dependence on the motion demand signal and the load signal to
form a target signal indicating a target configuration for each of the driven joints;
measuring the configuration of each of the driven joints and forming a state signal
representing the measured configurations; and forming a set of drive signals for the
joints by, for each joint, comparing the target configuration of that joint as indicated
by the target signal to the measured configuration of that joint as indicated by the
state signal.
[0014] The method may comprise driving each of the driven joints in dependence on the respective
drive signal. Each of the driven joints may be provided with a respective electric
motor for driving motion at the joint. Each drive signal may be applied to the respective
electric motor.
[0015] The method may comprise repeatedly performing the second measuring step, the forming
step and the driving step. The step of forming the set of drive signals may be performed
at higher frequency than the step of forming the target signal.
[0016] The impedance control algorithm may be implemented in dependence on, for each driven
joint, a respective mass, damper and spring term.
[0017] The motion demand signal may represents a desired configuration for each of the driven
joints.
[0018] The method may comprise: receiving a primary motion demand signal representing a
desired physical position of a part of the mechanical system; performing an inverse
kinematic computation to determine a configuration for each of the driven joints that
would position the part of the mechanical system at the desired physical position;
and providing those configurations as the motion demand signal.
[0019] The method may comprise: receiving data representing desired impedance characteristics
for the physical system in a first coordinate space; and converting that data to,
for each driven joint, a respective mass, damper and spring term.
[0020] The first coordinate space may be a Cartesian, non-Cartesian, topological or vector
space.
[0021] The impedance control algorithm may be implemented in joint space.
[0022] The motion demand signal may represent a desired physical position of a part of the
mechanical system.
[0023] The said step of implementing the impedance control algorithm may comprises: implementing
the impedance control algorithm to determine a target physical position of the part
of the mechanical system; performing an inverse kinematic computation to determine
a configuration for each of the driven joints that is suitable for positioning the
part of the mechanical system at the target physical position; and forming the target
signal as indicating those configurations as the target configurations for the driven
joints.
[0024] The method may comprise: specifying additional information indicating a desired configuration
of the mechanical system. The step of performing an inverse kinematic computation
is performed so as to determine a configuration for each of the driven joints that
is suitable for positioning the part of the mechanical system at the target physical
position and satisfying the desired configuration specified by the additional information.
[0025] The method may comprise converting the measured torques or forces about or at the
driven joints to a first coordinate space different from the space in which they were
measured so as to form the load signal.
[0026] The first coordinate space may be a Cartesian space, non-Cartesian space, topological
space or vector space.
[0027] The mechanical system may be a robot manipulator.
[0028] The mechanical system may be a surgical robot. The end effector of the surgical robot
may be a surgical tool.
[0029] The mechanical system may be a master-slave manipulator. The motion demand signal
may be formed by a master controller.
[0030] According to a second aspect of the invention there is provided a controller for
a mechanical system, the controller being configured to perform a method as set out
above.
[0031] According to a third aspect of the invention there is provided a robot manipulator
having a plurality of components interlinked by a plurality of driven joints and a
controller configured for controlling the manipulator by a method as set out above.
[0032] According to a fourth aspect of the invention there is provided a non-transitory
computer readable storage medium having stored thereon computer readable instructions
that, when executed at a computer system, cause the computer system to perform a method
as set out above.
[0033] The said part may be an end effector or a part proximal of the end effector. The
desired position of the part may be a defined by defining a unique position of the
part or a permitted locus of the part.
[0034] The components may be rigid and/or elongate components. The joints may be rotational
and/or linear joints.
Detailed description
[0035] The present invention will now be described by way of example with reference to the
accompanying drawings.
[0036] In the drawings:
Figure 1 is a block diagram of a prior art impedance control algorithm.
Figure 2 is a block diagram of another prior art impedance control algorithm.
Figure 3 illustrates an example robot arm.
Figure 4 shows an example architecture for a control unit.
Figure 5 is a block diagram of a first impedance control algorithm ("A").
Figure 6 is a block diagram of a second impedance control algorithm ("B").
[0037] Figure 3 shows an example of a robot manipulator arm. The arm extends from a base
1, which can be fixed in position or may be movable, e.g. on a trolley. The arm is
composed of a set of rigid elements 2-10, terminating in an end effector 11. The rigid
arm elements are coupled together in series by reconfigurable joints 12-19. In this
example the joints are all revolute joints but they could provide for linear motion.
Each joint is provided with a respective position sensor 20 for sensing the positional
configuration of the joint and a torque sensor 21 for sensing torque about the joint.
Data from these sensors is fed to a control unit 22. An electric motor 23 is provided
at each joint to drive relative rotation at the joint of the two arm elements that
are interconnected by the joint. For clarity, only some of the sensors 20, 21 and
the motors 23 are shown in figure 3. The electric motors are driven by signals from
the control unit 22. The control unit could be a computer. The control unit receives
input from a command device 24. That input represents a stimulus or demand for the
manipulator to move in a particular way. The command device could for example sense
physical command inputs from a user by which a user can signal desired motions of
the arm. The command device could include one or more joysticks or other physically
movable controllers, it could comprises sensors for contactlessly sensing motions
of a user (e.g. using analysis of a video stream showing the user) or it could be
a computer which automatically commands motion of the arm in accordance with a stored
program.
[0038] Such a command computer could be functionally and/or physically integrated with the
control computer. The command device could be co-located with the control unit or
remote from it. The control unit could be co-located with the robot manipulator or
remote from it. Communication links are provided between the arm and the control unit
and between the control unit and the command device. These could independently be
wired and/or wireless links. Further information on an arm of this type is disclosed
in
WO 2015/132549.
[0039] The control unit 22 will typically be a computer; either in a single housing or distributed
between multiple physical units and potentially between different locations. Figure
4 shows an example architecture for the control unit. In this example the control
unit comprises a memory 40 which non-transiently stores program code that is executable
by a processor 41. A temporary memory 42 (e.g. RAM) is available for used by the processor.
The processor is coupled to interfaces 43 and 44. Interface 43 interfaces to the sensors
and motors of the arm. Interface 44 interfaces to the command device. The non-transient
program code stored in memory 40 is arranged to cause the processor 41 to perform
the functions required to implement the desired control algorithm, e.g. one of algorithms
A and B as described further below. Alternatively, some or all of the functions of
the control unit 22 could be implemented in dedicated hardware.
[0040] Two control algorithms, A and B, will be described below. In each algorithm a set
of desired configurations (
qd) are computed for the joints of the arm.
qd can be a vector specifying a configuration for each joint of the arm. The configurations
may be angular and/or linear configurations, depending on the motion of each joint.
The desired configurations are compared to the current configurations as sensed by
the position sensors 20 of the arm. In dependence on the difference between each joint's
desired configuration and its current configuration a joint space position controller
computes a torque which when applied about the joint will tend to drive the joint
towards the desired configuration. Each joint is then driven in accordance with the
respective computed torque, preferably so as to apply substantially that computed
torque about the joint.
[0041] An impedance model is used to calculate the desired joint configurations. The impedance
model has inputs from an external stimulus, and design constraints which can be specified
so as to achieve a desired impedance. The external stimulus could be a pre-programmed
trajectory for the end effector or any part of the arm, or could be given by direct
user input as in the case of a master-slave manipulator.
[0042] The first control algorithm A will now be described with reference to figure 5.
[0043] The first control algorithm comprises the following functional blocks: a reference
position inverse kinematics block 50, a joint space impedance parameter computation
block 51, a joint space impedance control solver block 52 which may solve ordinary
differential equations (ODEs), and a joint space position controller block 53. Figure
5 also shows the manipulator and its environment as a block 54. Functional blocks
50 to 53 may be implemented in any suitable combination of hardware and/or software.
[0044] In the description below the term
p represents a position in a suitable reference frame, which could be but is not necessarily
a Cartesian reference frame. The term q represents a set of joint angles for joints
12-19 in the arm of figure 3. In other examples where one or more of the joints permits
linear motion, q could represent linear configuration(s) of the joint(s).
[0045] In general terms, the first control algorithm operates in the following way.
- A reference position pref, which represents the base position of the end effector 11 before it has been perturbed
by exogenous forces, is input to the reference position inverse kinematics block 50.
The reference position inverse kinematics block 50 performs inverse kinematics to
derive a set of reference joint angles qref corresponding to pref.
- The joint space impedance parameter computation block 51 calculates a set of matrices
Mq(q), Dq(q) and Kq(q) which represent the appropriate mass, damper and spring terms respectively for the
desired impedance behaviour of the manipulator.
- qref, Mq(q), Dq(q) and Kq(q) are input to the joint space impedance control solver block 52 together with the
torques F sensed by the torque sensors 21 of the arm joints. That block processes
the inputs in accordance with a relationship describing an impedance-based control
system to form qd, which is a set of demanded joint angles.
- qd is input to the joint space position controller block 53 together with q, which represents
the measured positions of the joints as derived from the position sensors 20. The
joint space position controller block 53 forms a set of drive outputs to the motors
23 of the arm in dependence on the difference between the desired and actual configurations
of the respective joint at which that motor acts. Each drive output represents a command
torque to the respective motor. The drive outputs are passed to the motors 23 of the
arm to cause them to apply corresponding torques/forces to the joints of the arm.
The joint space position controller could be a proportional-differential controller,
or another linear or non-linear control law (e.g. proportional-integral-derivative
(PID), PID with inverse dynamics, PID with feedback linearization, stochastic control
laws such as Kalman filters, LQG control, H-2 or H-infinity control laws, fuzzy logic
control laws, model predictive control (MPC) laws aka dynamic matrix control laws.
[0046] One example of how this can be implemented mathematically is as follows.
[0047] Values are chosen for
Mq, Dq, and
Kq to set the desired mass, damper and spring terms. A convenient approach is to choose
a desired spring constant K and then choose M and D to make the system critically
damped at a chosen frequency.
[0048] The joint space impedance control solver can solve the following equation for q:

where
q̃ denotes
qref and τ
m represents the set of measured torques at each joint. In order to solve this a standard
approach may be used, for instance:

[0049] Such an equation can be solved with state variables

and
q̃ using a time-step method.
[0050] In the general Cartesian case,
Mq and
Dq can be shown to be:

[0051] Where J indicates the Jacobian and
Kq(
q)
q̃ is better calculated as
J(
q)
TKxx̃.
[0052] In some situations, for example when the mechanical system is a redundant serial
robot manipulator,
Mq(
q) might be not a full rank matrix. In that case a number of approaches can be followed.
- One approach is to use an ODE solver algorithm which does not require Mq(q)-1 to be computed (for instance the Runge-Kutta method or the Bogacki-Shampine method).
- Another approach is to choose a matrix T such TTMq(q)T is invertable: for example with T being akin to the identity matrix but with specific columns removed; and then to
solve not for q but for r, where r is defined such that Tr = q. This approach results in r being of reduced dimension relative to q. This approach
can be advantageous when the system being controlled is a redundant manipulator when
it may be desired for the impedance constraint only to apply to a certain subspace
of the joint angles q. Furthermore T could be not constant, but instead may be parameterised on q. In this case, the subspace
of q in the null space of T can be assigned directly.
[0053] It should be noted that in operation
Mq(q), Dq(q) and
Kq(q) are not necessarily constant, and may need to be periodically updated. On the other
hand,
Mx, Dq and
Kq may sensibly be chosen to be constant, although they could also vary over time.
[0054] In this first control algorithm A position control can be achieved either by ensuring
that the dimensions to be controlled are in the null space of
TT, or by specifying a suitably stiff impedance for those dimensions.
[0055] The reference position inverse kinematics block can be omitted if the reference position
is supplied in joint space.
[0056] The impedance parameters could be supplied in any suitable space, and converted into
joint space. If they are supplied in joint space then the joint space impedance parameter
computation block 51 could be omitted.
[0057] To illustrate this first control algorithm, consider the joint 14 of the robot arm
of figure 3. Due to the redundant nature of the arm, for many poses of the arm it
is possible to freely adjust joint 14 whilst keeping the terminal part 10 of the arm
stationary in the world reference frame. When there is rotation at joint 14 the next-most-distal
part of arm, 5, will move along a path. Suppose the designer wishes to specify a mechanical
impedance for motion along this path. Adopting the notation that the matrices describing
the behaviour of the arm treat the joints of the arm in turn starting from the most-proximal
joint 12, and noting that joint 14 is the third joint from the proximal end of the
arm,
T can be set as:

[0058] This will result in
Mq ,
Dq and
Kq all being scalar. The torque is given as
TTτm, which is also scalar. Hence the ODE may be solved to give the component of
qd for joint 14. That component of q
d can then be combined with the other q
d components computed from the reference inverse kinematics, and the resulting complete
joint position vector can be supplied as a set of points into the joint space position
controller 53.
[0059] A second control algorithm B will now be described with reference to figure 6.
[0060] The second control algorithm comprises the following functional blocks: an impedance
control block 60, an inverse kinematics block 61, an additional input block 62, a
joint space position controller block 63 and a torque transformation block 64. Figure
6 also shows the manipulator and its environment as a block 65. Functional blocks
60 to 64 may be implemented in any suitable combination of hardware and/or software.
[0061] In general terms, the second control algorithm operates in the following way.
- A reference position pref, which represents the base position of the end effector 11 before it has been perturbed
by exogenous forces, is input to the impedance control block 60 together with the
matrices Mq(q), Dq(q) and Kq(q) and FZ, which represents the measured torques/forces on the joints transformed into the
same coordinate system as pref is expressed in. The impedance control block 60 implements an impedance control scheme
to form a desired position pd for the end effector.
- Additional position inputs may be provided from the additional input block 62. This
may be used when one or more joints are to operate under position control instead
of impedance control.
- The inverse kinematics block 61 performs inverse kinematics to derive a set of desired
joint angles qd corresponding to the complete set of pd values supplied to the block 61. These are joint angles which, when adopted by the
manipulator, will result in the end effector being in the desired location.
- qd is input to the joint space position controller block 63 together with q, which represents
the measured positions of the joints as derived from the position sensors 20. The
joint space position controller block 63 forms a set of drive outputs to the motors
23 of the arm in dependence on the difference between the desired and actual configurations
of the respective joint at which that motor acts. Each drive output represents a command
torque to the respective motor. The drive outputs are passed to the motors 23 of the
arm to cause them to apply corresponding torques/forces to the joints of the arm.
The joint space position controller could be a proportional-differential controller,
or any of the alternative approaches listed above.
- The torque transformation block 64 receives the torques/forces as measured by the
sensors 21 on the arm and transforms them into a vector Fz which represents the information
in the same coordinate system as is used for pref and pd. This may be done in accordance with the equation F = J(q)T FZ, where J is the Jacobian. Note that to compute Fzfrom F may not always be uniquely possible (i.e. J(q)T-1 may not exist). Then logic can be provided to select an FZ from the valid candidates.
[0062] In the first control algorithm A the impedance parameters can be supplied in a coordinate
system different to that in which the impedance control algorithm is implemented.
In the second control algorithm B the coordinate system(s) in which
pref and the impedance matrices are defined can be different from the coordinate system
in which the values F are measured. Conveniently
pref and the impedance matrices can be defined in the coordinate system in which the impedance
itself is specified. In each case the said coordinate system may be a well-known coordinate
system (e.g. spherical, quadraplanar, elliptic cylindrical, polar, spheroidal, orthocentric,
toroidal, harmonic or Gaussian) or may be an arbitrary coordinate system defined by
a parameterisation of a vector or topological space). The coordinate system may have
any number of dimensions suitable to the data needed to be represented. In one example
the coordinate system could be a Cartesian space, defined on three linear axes whose
orientations are fixed in space. In another example the coordinate system could be
a non-Cartesian system defined by parameters none of which represents a linear value
on an axis whose orientation is fixed in space. By choosing an appropriate coordinate
system to the required impedance characteristics the impedance definition matrices
Mp, Dp, Kp can, if desired, be kept constant. This can reduce the amount of computation needed
to implement the algorithm. For example, if the impedance is to be synthesised on
the surface of a sphere,
Mp, Dp, Kp could be 2x2 matrices, and the impedance control would define motion in two degrees
of freedom, whilst the other four degrees of freedom would be controlled directly,
e.g. from block 61.
[0063] The impedance control block 60 may compute the demanded position
pd by solving the ODE for the mechanical impedance and then by setting a position demand
to the inverse kinematics.
[0064] In some situations it will be convenient for the impedance matrices and
pref to be expressed in spherical coordinates. When spherical coordinates are being used
the following can be noted:
- It may be efficient for the inverse kinematics block 62 to operate partly in spherical
coordinates and partly in another convenient coordinate system (e.g. a Cartesian system).
A practical way to achieve this might be to specify impedances for the polar angle
and azimuth angle (θ, ϕ), but to specify the sphere radius (p) and the rotary end
effector positions directly. The inverse kinematics block 62 can simply convert from
the specified spherical coordinates back into, the other system In the case of a spherical
to Cartesian transformation the standard relationships can be used (x = ρ sin θ cos ϕ, y = ρ sin θ sin ϕ, z = ρ cos θ)
- The torque transformation performed in block 64 can operate in a two-step manner.
First it can convert from torques expressed in joint space to Cartesian torques by
a suitable means. The example manipulator shown in figure 3 has eight joints, each
with torque sensors. Therefore the pseudo inverse of J(q)Tcan be used to determine Fz from F. Letting Fzx, Fzy and Fzz denote the x, y and z components of force acting, the forces acting in spherical
coordinate can be represented as follows, using the well-known unit vectors for spherical
coordinates:


- Using spherical coordinates is unlikely to be desirable for large polar angular values,
because distance along the surface for small changes in azimuth angle tend to zero
as the polar angle tends to 90 degrees.
[0065] In both algorithms A and B the loops through blocks 53/63 and 54/65 with feedback
of q to block 53 may be performed asynchronously from the generation of
qd. For example that feedback loop may be performed at higher frequency than the generation
of
qd.
[0066] The control unit 22 may be capable of implementing either or both of the first and
second control algorithms A, B. It may configured so as to select whether to apply
the first or second algorithm in dependence on the operation of the manipulator. The
first control algorithm is particularly convenient for use when the required impedance
behaviour maps closely to the reference frame of the end effector, for example when
the impedance can be readily expressed in Cartesian x, y, z coordinates and rotary
degrees of freedom. The second control algorithm is particularly convenient for use
when the required impedance behaviour does not map closely to the reference frame
of the end effector, for example when the impedance is defined for movements of the
end effector on an arbitrary N dimensional coordinate system, such as the surface
of a sphere. Considerations that may influence the choice of algorithm include testability,
computational complexity and clarity of presentation..
[0067] In each of algorithms A and B the torque/force signals F received from the torque/force
sensors 20, 21 at the joints of the manipulator may be conditioned before being used
in other parts of the respective algorithm. For example, they may be adjusted by subtracting
force modelled in dependence on the current pose of the arm to substantially cancel
the effect of gravity and/or inertial torque/forces from the measured forces/torques,
they may be filtered to remove noise and/or they may be processed to remove measurement
offset.
[0068] Impedance control in accordance with the algorithms A and B described above can be
useful in control systems for driven articulated mechanical systems where it is necessary
for the mechanical system to interact with the environment in a controlled manner.
The impedance can be defined to provide any required physical impedance behaviour.
For example it may be advantageous for a robotic manipulator's end effector to appear
springy to a user interacting with it. In this case the desired behaviour of the end
effector position is one which the position is linearly proportional to the exogenous
force applied at the end effector. This can be defined by means of the impedance matrices.
In general, the impedance matrices may permit an arbitrary mechanical impedance (that
is an arbitrary relationship between torque/force and position) to be defined. The
impedance may be defined in any suitable vector space, with any suitable number of
dimensions. The impedance may be defined for any position along the robotic manipulator.
[0069] In algorithms A and B the joint space position controller blocks may optionally perform
inverse dynamics.
[0070] It will be noted that the algorithms A and B as described above do not require calculations
to be made to attempt to compensate for uncertainty in the actual applied torques/forces.
Instead, the algorithms form their outputs in dependence on measured joint configurations
and measured torques/forces. This can be simpler and more accurate than some prior
approaches.
[0071] In algorithms A and B the inverse kinematics problem is kept separate from the position
control loop. One potential advantage of this is that the problem of arm position
control in joint space can be separated from, and solved and optimised independently
of, the inverse kinematics problem. Another potential advantage of this is that the
inverse kinematics approach can be independently developed. In the case of redundant
serial manipulators (such as that of figure 3), the redundancy can be resolved without
impacting on the inner position control loop. This can improve the safety and the
control accuracy of the manipulator.
[0072] As described above, the impedances can be defined in an arbitrary coordinate system.
Then in one or more degrees of freedom the manipulator may operate under impedance
control, while in the remaining degree(s) of freedom the manipulator may operate under
position control.
[0073] Unlike some prior art approaches algorithms A and B do not require a dedicated torque/force
sensor at the end effector, although such a sensor could be used.
[0074] Algorithms A and B are particularly suitable for use when the joints are driven with
high gear ratios. High gear ratios are often advantageous because they can deliver
a good highest power/volume ratio. In joints which are directly driven by electric
motors, it is often feasible to determine the torque/force delivered by a joint by
from an examination of the current through its drive motor. This is because most electric
motors have a well-defined current-torque relationship. However, due to drive-train
frictional losses at high (e.g. 1:100 or more) gear ratios, it can be difficult to
estimate the joint output torque from measurement of the motor-side torque in high
ratio drives. Instead, torque sensors can be incorporated at or in the final output
bearing or linkage of each joint. This can avoid the need to estimate joint torques
from motor-side quantities. In addition the presence of torque sensors within each
joint can negate the need for a force/torque sensor at the end effector.
[0075] The robot or manipulator could be for any suitable purpose. For example, it could
be an industrial robot or a surgical robot. In the case of a surgical robot the end
effector could be a surgical tool such as a scalpel, surgical cutter, surgical pincer
or cauteriser.
[0076] The joints could be driven by electric motors, which could be rotary or linear, or
by other means such as hydraulic or pneumatic actuators. These would be driven from
the same control algorithms.
[0077] In the description above algorithms A and B have been split into functional blocks
for ease of explanation. In practice, two or more of these blocks could be architecturally
combined.
[0078] Algorithms A and B as described above could be applied to robots or manipulators
of any suitable form. They are not limited to arms of the type shown in figure 3.
The methods could be used to control manipulators that are configured in ways other
than with arms: for example machining tables. The methods could be used to control
other mechanical devices with interlinked parts that can be driven to move relative
to each other, such as crane or excavator arms, vehicle suspension systems and movable
aircraft flight surface elements.
[0079] The applicant hereby discloses in isolation each individual feature described herein
and any combination of two or more such features, to the extent that such features
or combinations are capable of being carried out based on the present specification
as a whole in the light of the common general knowledge of a person skilled in the
art, irrespective of whether such features or combinations of features solve any problems
disclosed herein, and without limitation to the scope of the claims. The applicant
indicates that aspects of the present invention may consist of any such individual
feature or combination of features. In view of the foregoing description it will be
evident to a person skilled in the art that various modifications may be made within
the scope of the invention.
1. A method for controlling a mechanical system having a plurality of components interlinked
by a plurality of driven joints, the method comprising:
receiving a motion demand signal expressed in a cartesian coordinate system; representing
a desired physical position of a part of the mechanical system and
measuring the configuration of each of the driven joints and forming a state signal
representing the measured configurations,
wherein the method is
characterised in that it comprises:
measuring the torques or forces about or at the driven joints and converting the measured
torques or forces to the cartesian coordinate system to form a load signal representing
the measured torques or forces;
implementing an impedance control algorithm (52; 60) in the cartesian coordinate system
comprising:
solving an ordinary differential equation to determine a target physical position
of the part of the mechanical system, the ordinary differential equation having inputs
of the motion demand signal, the load signal, and constant impedance parameters;
performing an inverse kinematic computation to determine a configuration for each
of the driven joints that is suitable for positioning the part of the mechanical system
at the target physical position, and
forming a target signal indicating those configurations as the target configuration
for each of the driven joints; and
forming a set of drive signals for the joints by, for each joint, comparing the target
configuration of that joint as indicated by the target signal to the measured configuration
of that joint as indicated by the state signal.
2. A method as claimed in claim 1, comprising driving each of the driven joints in dependence
on the respective drive signal.
3. A method as claimed in claim 2, comprising repeatedly performing the second measuring
step, the forming step and the driving step, wherein the step of forming the set of
drive signals is performed at higher frequency than the step of forming the target
signal.
4. A method as claimed in any preceding claim, wherein implementing the impedance control
algorithm comprises:
receiving data representing desired impedance characteristics for the physical system
in a first coordinate space;
converting that data to, for each driven joint, a respective mass, damper and spring
term; and
solving the ordinary differential equation from the respective mass, damper and spring
terms for each driven joint.
5. A method as claimed in any preceding claim, comprising:
specifying additional information (61) indicating a desired configuration of the mechanical
system; and
the step of performing an inverse kinematic computation is performed so as to determine
a configuration for each of the driven joints that is suitable for positioning the
part of the mechanical system at the target physical position and satisfying the desired
configuration specified by the additional information.
6. A method as claimed in claim 4, or claim 5 as dependent on claim 4, wherein the first
coordinate space is (i) a non-Cartesian coordinate space; (ii) a topological space;
or (iii) a vector space.
7. A method as claimed in any preceding claim, wherein the mechanical system is: (i)
a robot manipulator; and/or (ii) a surgical robot; and/or (iii) a master-slave manipulator
and the motion demand signal is formed by a master controller.
8. A controller (22) for a mechanical system having a plurality of components interlinked
by a plurality of driven joints, the controller being configured to:
receive a motion demand signal expressed in a cartesian coordinate system representing
a desired physical position of a part of the mechanical system; and
form a state signal representing the measured configurations of each of the driven
joints received from a position sensor (20);
and
characterised in that it is configured to:
form a load signal representing the measured torques and forces received from a torque
sensor (21) by converting the measured torques of forces to the cartesian coordinate
system;
implement an impedance control algorithm in the cartesian coordinate system (52; 60)
comprising:
solving an ordinary differential equation to determine a target physical position
of the part of the mechanical system, the ordinary differential equation having inputs
of the motion demand signal, the load signal, and constant impedance parameters;
performing an inverse kinematic computation to determine a configuration for each
of the driven joints that is suitable for positioning the part of the mechanical system
at the target physical position, and
forming a target signal indicating those configurations as the target configurations
for each of the driven joints; and
form a set of drive signals for the joints by, for each joint, comparing the target
configuration of that joint as indicated by the target signal to the measured configuration
of that joint as indicated by the state signal.
9. A non-transitory computer readable storage medium (40) having stored thereon computer
readable instructions that, when executed at a computer system (41; 22), cause the
computer system to control a mechanical system having a plurality of components interlinked
by a plurality of driven joints by performing a method comprising the steps of:
receiving a motion demand signal expressed in a cartesian coordinate system representing
a desired physical position of a part of the mechanical system; and
forming a state signal representing the measured configurations of each of the driven
joints received from a position sensor (20);
and
characterised by the steps of:
forming a load signal representing the measured torques and forces received from a
torque sensor by converting the measured torques of forces to the cartesian coordinate
system (21);
implementing an impedance control algorithm in the cartesian coordinate system (52;
60) comprising:
solving an ordinary differential equation to determine a target physical position
of the part of the mechanical system, the ordinary differential equation having inputs
of the motion demand signal, the load signal, and constant impedance parameters;
performing an inverse kinematic computation to determine a configuration for each
of the driven joints that is suitable for positioning the part of the mechanical system
at the target physical position, and
forming a target signal indicating those configurations as the target configurations
for each of the driven joints; and
forming a set of drive signals for the joints by, for each joint, comparing the target
configuration of that joint as indicated by the target signal to the measured configuration
of that joint as indicated by the state signal.