Motor controller and method for controlling a motor
The force-based motor control system addresses the speed limitations of service robots by using a correction force calculated from multiple signal inputs to mitigate collision energy, allowing for safer and faster operation.
Patent Information
- Application Number
- PCT/EP2024/087799
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-12-21
- Filing Date
- 2024-12-20
- Publication Date
- 2025-06-26
AI Technical Summary
Service robots operating in unstructured environments face limitations in speed due to the risk of collisions, as they must manage unpredictable terrain and undetected objects on the ground, which can lead to high collision energy and potential damage.
A force-based motor control system that uses a correction force determined by a combination of motor encoder signals, windup force signals, and effective correction force signals to mitigate collision energy, allowing robots to maintain speed while reducing the risk of damage.
The system effectively reduces collision energy by quickly detecting changes in motor encoder signals and stabilizing motor control through windup force signal management, enabling robots to operate at higher speeds with reduced risk of damage.
Smart Images

Figure EP2024087799_26062025_PF_FP_ABST
Abstract
Description
[0001] Motor Controller and Method for Controlling a Motor
[0002] Description
[0003] The present application is concerned with motor controlling.
[0004] For robots which are designed for unstructured environments, called service robots herein, collisions belong to the standard repertoire to deal with. While for industry robots, speed is substantially limited by the components and control strategies, the speed for service robots is substantially determined by the tolerable collision energy. For instance, a walking robot could walk at low speed or high speed, but depending thereon, it would more or less stomp due to the fact that the position of the floor is not exactly known. Moreover, service robots need to be prepared that objects, which lie on the ground, might not be detected by sensors of the robot, and lead to collisions of even higher collision energy. Thus, the walking speed of such robots would practically be limited by the collision energy resulting from such collisions to be expected. Robots which are too fast, are liable to cause damages to the objects or themselves, or could even destruct themselves due to such collisions. Basically, the damage or destruction is caused by the fact that much of the kinetic energy of the robot is transferred during a certain time interval, and the shorter this time interval, the larger the resulting force onto the robot resulting from the collision. There are different strategies in order to keep this force within acceptable limits:
[0005] 1 . Limiting the speed of the robot.
[0006] 2. The use of lightweight design in the robot structure.
[0007] 3. The use of motors with low inertia.
[0008] 4. The use of structures and gears with high overload capacity.
[0009] 5. The use of series elastic elements.
[0010] The above-identified complementary strategies are well-proven, but partially in conflict with each other: For instance, the use of structures with high overload capability contravenes the aim of designing a robot of lightweight design. This conflict is difficult to solve.
[0011] Accordingly, there is a need for a concept which accompanies or alleviates the aboveidentified strategies and enables a motor driven object or system such as a robot to deal with unexpected or unavoidable collisions more efficiently, easing compromises regarding performance, structural stability, elasticity and weight of the robot.
[0012] Thus, it is the object of the present invention to provide a concept which allows for motor driven objects to cope with unexpected or unavoidable collisions more efficiently, and this object is achieved by the motor controller and method for controlling of the claims of the present application.
[0013] An idea underlying the present application is that a force-based motor control may be used in order to reduce the collision energy to deal with in case of collisions or shocks. That is, a basis, a force-based control is used: A set force obtained by correcting an externally controlled force by use of a correction force is subject to a limitation - selected to account for, for example, physical limitations of motor, gear and motor controller - so as to obtain an effectively set force which is then subject to force-to-current conversion to determine a current to be applied onto the motor. According to the inventors’ finding, the correction force may be determined when using, in addition to a motor encoder signal of a motor encoder of the motor, a windup force signal formed and an effective correction force signal. The effective correction force signal may be formed by a, e.g. linear, combination of two or more of the externally controlled force, the correction force, the set force and the effectively set force and is indicative of an force correction caused by the motor controller. The windup force signal may be formed by a, e.g. linear, combination of the effectively set force with one or more of the externally controlled force, the correction force, and the set force. The underlying thoughts are as follows: Based on the motor encoder signal, collisions and the associated sudden change in a trend of the motor encoder signal may be detected quickly. The windup force signal enables to avoid instabilities of the motor control otherwise caused by the limitation of the correction force. The effective correction force signal, in turn, enables to analyse the effective force correction recursively and directly and may assist in distinguishing between intended changes of the motor encoder signal’s trend and unintended ones. That is, in other words, the inventive motor control is force-based in that the internally processed parameters relate to forces, namely the externally controlled force, the set force, the effectively set force, the windup force signal and the effective correction force signal and, last but not least, the correction force, and alleviates the overall burden in order to attain shock or collision resistance, such as the burden with respect to the design of the motor, gear and / or other components of a motorized structure into which the motor control is integrated. According to an embodiment of the present application, the motor is a rotational electric motor, e.g. an electric motor configured to convert electrical energy provided by electrical current into force in the form of a torque applied on the motor's shaft, and the forces are torques. The motorized structure may then, for instance, be a leg or arm such as the leg or arm of a robot.
[0014] Subjecting a template of newest - or most recent - sample values of the motor encoded angle signal, the windup force signal and the effective correction force signal to a scalar function may be used to determine the correction force. The scalar function may be formed by a linear function or a non-linear function. In particular, the scalar function may be embodied by a machine learned predictor. For instance, a neural network may be used. For training the machine learned predictor or neural network, a cost function may be used which depends on one or more of a measure for uncompensated collision energy, a measure for temporal duration until the correction force vanishes, a measure for current noise increase imposed by the correction force, and a measure of sensitivity against variations against mechanical design parameters.
[0015] In accordance with an embodiment, the determination of the correction force is split-up into three branches, each being fed by one of the three inputs, namely motor encoder signal, windup force signal and effective correction force signal. In these separate branches or modules, the motor encoder signal is used to obtain a first correction force contribution signal indicative of an acceleration, the effective correction force signal is used to obtain a second correction force contribution signal, and the windup force signal is used so as to obtain an instability-avoidance signal, wherein the first correction force contribution signal, the second correction force contribution signal and the instability-avoidance signal are combined to obtain the correction force. The individual branches or modules may, again, use linear or non-linear mappings. For instance, a neural network may be used in each of these branches / modules.
[0016] In accordance with an embodiment, the motor encoder signal is filtered using a first filter so as to obtain the first correction force contribution signal, the windup force signal is filtered using a second filter so as to obtain the second correction force contribution signal, and the effective correction force signal is filtered using a third filter so as to obtain the instabilityavoidance signal. The filters may be FIR filters. By this measure, the implementation and training efforts are reduced, while still leading to a sufficient shock and / or collision reduction. According to an embodiment, the filter kernel sizes of the filters are different, wherein the first filter’s kernel size exceeds the kernel size of the second and third filters. By this measure, it is possible to realize a damping by forming a tail at the end of the first FIR filter’s impulse response for stabilizing instabilities which are inherent for a straightforward inertia compensation. Moreover, this enables rendering the motor control short-term dissipative, while retaining long-term speed-invariance. Naturally, such size relationship may also advantageously be used in case of forming the individual branches or modules in a manner other than using FIR filters, i.e., a template of newest sample values of the motor encoder signal which feed a scalar function of the first branch, may contain more sample values and / or form a longer time interval than corresponding templates of newest sample values of the windup force signal and the effective correction force signal, respectively.
[0017] In accordance with an embodiment, the motor encoder signal is filtered using an FIR filter which is designed so that a predetermined FIR filter tap’s coefficient of the first filter equals a negative sum over all coefficients of the first filter except the predetermined FIR filter tap’s coefficient so that the sum over all coefficient of the first filter is zero or an absolute of the sum over all coefficient of the first filter is smaller than 1 % of an absolute of the, in magnitude, greatest coefficient among the coefficients of the first filter, and a first moment of the coefficients of the first filter about the predetermined FIR filter tap is zero or an absolute of the first moment of the coefficients of the first filter about the predetermined FIR filter tap is smaller than 1 % of an absolute of the, in magnitude, greatest coefficient among the coefficients of the first filter. This ensures the first correction force contribution signal is position and speed invariant and enables that this first filter may be made an Fl R filter whose coefficients need not to be subject to any training, while stability may nevertheless be strengthened. The predetermined FIR filter tap may correspond to the zero-delay filter tab. Additionally, the one-tap-delay FIR filter tap’s coefficient may be set so as to negatively compensate the first moment of the coefficients of the first filter, except the one-tap-delay FIR filter tap’s coefficient, about the predetermined FIR filter tab. The two-tap-delay FIR filter tap’s coefficient and the zero-delay FIR filter tap’s coefficient may be of equal sign and opposite in sign relative to the one-tap-delay FIR filter tap’s coefficient so as to substantially yield an impulse response largely proportional to a second derivative. An absolute of a sum over the two-tap-delay FIR filter tap’s coefficient, the zero-delay FIR filter tap’s coefficient and the one-tap-delay FIR filter tap’s coefficient may be smaller than 10% of an absolute of the one-tap-delay FIR filter tap’s coefficient. A sum of absolutes of coefficients of the first filter, other than the two-tap-delay FIR filter tap’s coefficient, the one-tap-delay FIR filter tap’s coefficient and the zero-delay FIR filter tap’s coefficient, is smaller than 10% of an absolute of the one-tap-delay FIR filter tap’s coefficient. That is, these other coefficients form a sort of “tail” of the FIR filter impulse response function and may correspond to a constant function or a function decaying towards the trailing end of the FIR filter kernel, such as forming a linear function, a quadratic function or an exponential function or any other preferably monotonic or strictly monotonic function.
[0018] According to an embodiment, the aforementioned combination of the first correction force contribution signal, the second correction force contribution signal and the instabilityavoidance signal may be embodied by a summation over these signals. This summation renders any learning of the branches’ / modules’ functions easier such as the those for the second and third branches / modules in case of using the FIR filter implementation discussed above with respect to the motor encoder signal. For instance, it might enable the use of a gradient descent method for training.
[0019] Further details of the present application are the subject of dependent claims wherein preferred embodiments of the present application are described below with respect to the figures, among which:
[0020] Fig. 1 shows a block diagram of an embodiment of a motor controller and an example for its embedding into an example for a motorized system;
[0021] Fig. 2 shows graphs of FIR filter coefficients for FIR filters which, according to an embodiment, are used in order to implement the correction force determiner;
[0022] Fig. 3a-3h show graphs showing certain signals occurring in an exemplary collision situation in the embodiment of Fig. 1 according to a concrete simulation in order to illustrate the concept and advantages of the present application; and
[0023] Fig. 4 shows a block diagram of an further embodiment of a motor controller and an example for its embedding into an example for a motorized system, here using a combination of an HR and FIR filter for forming the first force correction contribution.
[0024] Equal or equivalent elements or elements with equal or equivalent functionality are denoted in the following description by equal or equivalent reference numerals even if occurring in different figures. In the following description, a plurality of details is set forth to provide a more thorough explanation of embodiments of the present invention. However, it will be apparent to those skilled in the art that embodiments of the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring embodiments of the present invention. In addition, features of the different embodiments described herein after may be combined with each other, unless specifically noted otherwise.
[0025] The discussion brought forward in the introductory portion of the specification shall briefly be resumed. In particular, the disadvantages of the strategies discussed in the introductory portion are:
[0026] 1 . Limited speed, which, in turn, limits the usability of the robot.
[0027] 2. Lightweight design within the robot structure makes sense, but is limited due to item 4.
[0028] 3. The usage of motors with limited inertia is very helpful, but there are technical limits.
[0029] 4. The usage of structures and gears with high overload capability tends to increase costs as well as the weight of the overall structure, e.g., the robot.
[0030] 5. The usage of series elastic elements also comes with associated costs: Costs and volume of such series elastic elements are proportional to the energy to be absorbed. Further, such elements tend to lead to a lower control accuracy.
[0031] The above thoughts led to embodiments of the present application according to which the collision energy is limited by a compensation of the motor inertia. Generally, this requires an observation of a second derivative of the motor position such as the motor angle in case of a rotational motor. In robotics, such concepts are known. See, for instance, [1], Known algorithms are, however, either slow or unstable. The ETCH algorithm of [1] is useful to alleviate forces caused by patients, but by far too slow for real collisions.
[0032] In accordance with the embodiments described below, the problem of more efficiently achieving a shock / collision resistance is achieved by the usage of a force / torque-based motor control where the correction force / torque is determined based on, in addition to the motor encoder signal, a windup force signal formed and an effective correction force signal. In effect, the correction force determination operates in a recursive manner as the correction force for a next sample of the externally controlled force is determined based on one or more most recent samples of, inter alia, the effectively set force which, in turn, merges from the correction force, and determined based on most recent motor encoder signal readings / samples which, via the dependency of the effectively set force is influenced by the correction force, too.
[0033] Fig. 1 shows an embodiment for a motor controller 10 in an example where this motor controller 10 is embedded into a motorized system 12, but it is explicitly noted that all details of Fig. 1 with respect to elements of the motorized system 12 external to the motor controller 10 are optional for the motor controller 10 and that the motor controller 10 may alternatively be used with respect to, or built into a different motorized system 12. Additionally, although the motorized system 12 is depicted in Fig. 1 as comprising a leg 14 motorized via a gear 16 by a motor 18, this shall not be interpreted as limiting the usability of the motor controller 10 of Fig. 1. Rather, the motor controller 10 may alternatively be used in other motorized systems 12 such as, for instance, where some other object is moved by motor 18 such as an arm or the like. For instance, the motorized system 12 may be a robot.
[0034] Further, the embodiment described in the following assumes that the motor 18 is a rotational motor so that the motor encoder signal corresponds to angular positions of a shaft of motor 18, but it is pointed out that all the details described with respect to Fig. 1 may readily be transferred onto a linear motion actuator in case of which the motor encoder signal would relate to a linear position and the torques mentioned in the description of Fig. 1 would be linear forces.
[0035] To finish the description of the “environment” or outside of the motor controller 10 of Fig. 1 , as can be seen in the figure, system 12 further comprises a position-velocity-torque (PVT) controller 20 which, based on a certain control algorithm which, for instance, analyses one or more sensor signals, outputs a torque signal TPVT 22 to motor controller 10. In addition to the just-mentioned optional sensor signals, PVT controller 20 uses the motor encoder signal 24 which is indicative of the motor’s 18 rotational position (pmot as well as a gear position signal 26 being indicative of a rotational position (pout of the gear 16 or leg 14, respectively. Based on the inbound signals, the controller 20 determines the externally controlled torque TPVT 22.
[0036] It should be noted that controller 20, which is entrusted with higher level control tasks, may operate at a lower operational rate than the sample rate at which motor controller 10 operates. To be more precise, while motor controller 10 might operate at the motor encoder signal’s 24 sample rate, controller 20 may operate at a rate which is, for instance, even lower than a fifth or even a tenth of the sample rate of signal 24. The sample rate of the gear position signal 26 may also be lower than the sample rate of signal 24 and may, for instance, coincide with, or be larger than, the processing rate of controller 20.
[0037] The motor controller 10 is for controlling motor 18 by appropriately determining a current Lot 28 which is to be applied to motor 18, namely appropriately determined based on the externally controlled torque TPVT. Motor 18 moves, via gear 16, and electrically powered according to the just-mentioned current 28, leg 14. As just-mentioned, both motor 18 and gear 16 output position signals 24 and 26, among which the motor encoder signal 24 is a further input for motor controller 10.
[0038] Based on current samples of the externally controlled torque 22 and the motor encoder signal 24 as well as a current sample of an internally determined correction torque TCOrr, 30, a motor controller 10 determines current 28 based on which motor 18 reaches its position measured with the next sample of the motor encoder signal 24 and so forth. As already described above, the externally controlled torque 22 may change at a lower rate due to the lower processing rate of controller 20.
[0039] The internal structure of the motor controller 10 of Fig. 1 is as follows. A corrector 32 corrects the externally controlled torque 22 by use of the correction torque 30, wherein, for instance, corrector 32 may simply add the correction torque 30 to the externally controlled torque 22. Naturally, a subtraction might be used as well. Corrector 32 obtains, as output, a set torque 34, Tset, which is fed into a torque limiter 36 which subjects the set torque 34 to a limitation with respect to a first certain maximum torque in one motor direction and, optionally, a second certain maximum torque into the opposite motor direction, so as to obtain an effectively set torque 38. First and second maximum torques may by be equal to each other in magnitude, or may be different to each other. Further, they may depend on certain parameters relating to a current state of the motor 18 in terms of gear play as outlined in more detail blow. In other words, the limiter 36 performs a clipping. Torque 34 is clipped as far as exceeding the first maximum torque and clipped as far as falling below the second maximum torque. The effectively set torque 38 is fed into a torque-to-current converter 40 which converts the inbound torque 38 into the current 28. That is, converter 40 determines current 28 and outputs said current to motor 18. It is noted that the current 28 determined by converter 40 is a signal and might not be the actual current applied to motor 18. Rather, the latter current may stem from a current supply or an amplifier not shown in Fig. 1. Also, the motor current may be an abstract quantity to be decomposed into a multi-phase current, oftentimes, three-phase. Likewise, the torques 22, 30, 34 and 38 or signals, too, which are indicative of the corresponding torques. Examples for the conversion are described in more detail below. In principle, it is a mapping of the effectively set torque 38 onto current 28 according to some mapping function which, in turn, is adapted to the environment, i.e. the motorized system 12, such as to the motor 18 and maybe the gear 16 and leg 14 in terms of relevant design parameters such as stiffness, inertia, friction and motor efficiency.
[0040] Beyond the elements of motor controller 10 described above, motor controller 10 comprises a correction torque determiner 42. This determiner 42 determines and outputs the aforementioned torque correction 30 to corrector 32 and receives, as inputs, the externally set torque 22, the effectively set torque 38 as well as the motor encoder signal 24. Internally, determiner 42 comprises an effective correction signal determiner 44, a windup signal determiner 46 as well as a determination module 48. Determiner 44 determines an effective correction torque signal 50 based on the externally controlled torque 22 and the effectively set torque 38 such as by subtraction. For instance, determiner 44 might be implemented as a subtractor receiving torque 22 at its positive input and the effectively set torque 38 at its negative input. Determiner 46 determines the windup torque signal 52 based on a difference between the effective correction torque signal 50 and the correction torque 30. For instance, determiner 46 may be embodied as a subtractor receiving correction torque 30 as its positive input, and effective correction torque signal 50 at its negative input, while the opposite may be true as well. The determination module 48 receives the motor encoder signal 24, the windup signal 52 as well as the effective correction torque signal 50 and determines, based thereupon, the correction torque 30.
[0041] Fig. 1 also shows an embodiment of an internal structure of determiner 48. This is the module responsible for determining the correction torque 30 so as to assist in reducing the energy to cope with in case of unexpected mechanical shocks such as due to unexpected or unavoidable collisions during the operation. In particular, while different embodiments exist to implement determiner 48, the embodiment illustrated in Fig. 1 splits-up the determination of the current torque 30 based on the three inputs, namely the motor encoder signal 24, the windup signal 52 and the effective correction signal 50 onto three branches or sub-modules 48a, 48b and 48c. The first one, 48a, receives the motor encoder signal 24 and determines, based thereupon, a first correction torque contribution signal 54a. The second, 48b, receives the effective correction signal 50 and determines, based thereupon, a second correction torque contribution signal 54b. And the third branch or sub-module 58c receives the wind-up signal 52 and determines, based thereupon, an instability-avoidance signal 54c. The three signals 54a, 54b and 54c are combined by a combiner 56 of module 58 to obtain the correction torque 30. As further outlined in more detail below, the individual sub-modules 48a to 48c may be embodied as FIR filters, and the combination by combiner 46 may be embodied by a summation but, even here, alternatives exist which are also discussed further below, such as forming each individual sub-module 48a to 48c, as a different linear function, or as a non-linear function or as a neural network, or such as forming each of sub-module 48b and 48c, as a machine learned functions such as a neural network while using an FIR for sub-module 48a, and further variants of Fig. 1 are also discussed below, such as embodying whole module 48 as a scalar function, which may be linear or non-linear, or a neural network.
[0042] After having described Fig. 1 , it should be noted that alternatives exists in many aspects including, for instance, the formation of signals 50 and 52. For instance, in the above embodiment, it had been described that the effective correction torque signal 50 is determined based on a difference between the externally controlled torque 22 and the effectively set torque 38, and that the windup torque signal 52 based on a difference between the correction torque 30 and the effective correction torque signal 50. Thus, here the effective correction torque signal 50 corresponds to a linear combination of the externally controlled torque 22 and the effectively set torque 38, and the windup torque signal 52 to a linear combination of the correction torque 30, the externally controlled torque 22 and the effectively set torque 38. However, other linear combinations are feasible as well. For instance, the windup signal 52 might be formed based on a difference between torques 34 and 38, while determining the effective correction signal 50 based on a difference between such windup signal and the correction signal. Further variants such as forming weighted averages between the mentioned variants are imaginable.
[0043] The overall concept shall now briefly be described, whereafter the description proceeds with some details of underlying thoughts which resulted in the embodiments of the present application, as well as a description of further details with respect to individual (summodules of Fig. 1 and possibilities to design determiner 48.
[0044] In particular, generally, the PVT controller 20 is for controlling a movement of the overall motorized system 12 by appropriately moving leg 14 via motor 18. To this end, controller 20 outputs an intended torque, namely the externally controlled torque 22. The motor controller 10 is for realizing this torque at motor 18 with, however, reducing the energy to be compensated and induced by a mechanical shock due to, for instance, a collision of leg 14 with the environment. Note that the torque limiter 36 serially connected between controller 20, and motor 18 does not limit the torque which motor 18 exerts onto, or experiences from outside. Rather, the torque limiter 36 merely limits the set torque resulting from the correction of the externally controlled torque 22 using the correction torque 30 and limits, thus, primarily an unfeasible or undesirable over-reaction against collisions. The correction torque determiner 42 is, thus, designed to appropriately determine the correction torque 30 so that, if there is currently no collision, motor 18 moves leg 14 as intended by externally controlled torque 22, whereas, if a collision takes place, the collision energy is, as fast as possible, compensated or consumed by appropriately controlling the motor 18 so that the controller 20 has no urgency to detect the collision and may, as soon as having detected the collision, react appropriately such as by entering a corresponding collision or contact mode, trying-out an alternative movement, walking backward, using a brake in order to stop the motor’s 18 shaft or combinations thereof. In the embodiments outlined in more detail below, the correction torque determiner 42 is even able to cope with a controller 20 which, upon having detected the collision, halting the motor’s shaft in that the control loop realized a motor controller 10 does not lead to over-excessive or exploding current behaviour of current 28 due to the abrupt halting. To this end, determiner 48 uses, besides motor encoder signal 24 itself, two further signals in order to appropriately determine the correction torque 30, namely the aforementioned windup signal 52 and the effective correction torque signal 50. The latter provides information or hints regarding whether any acceleration of the motor’s shaft occur intentionally or not, and the former signal provides a possibility to avoid instabilities which could otherwise result without the usage of that signal.
[0045] That is, motor controller 10 and high-level or main controller 20 form a kind of motor controller system for controlling motor 18 with motor controller 10 controlling the motor 18 with compensation against shock-induced excess torque depending on the externally controlled torque 22 and controller 20 determining the externally controlled torque 22 based on an intended movement of the object moved by the motor 18, i.e. the motorized system 12. This motor controller system is, thus, a dual loop controller which controls, for instance, motor angle / position as well as output angle of the gear 16 or leg 14 by using an implicit or explicit gear I spring model and controller 20 may actually control one or more of position, velocity, and torque at the same time, so that the PVT acronym has been used in Fig. 1.
[0046] As described above, the motorized system 12 may form a robot comprising one more legs or arms each rotatable via a gear, with the robot comprising, for each such leg or arm, a motor for moving the respective leg or arm via the corresponding gear. A motor controller or motor controller system may then control the motor with compensation against shock induced excess force onto the gear as described above.
[0047] After having described the embodiment of Fig. 1 for a motor controller and a motorized system, the description is resumed with an explanation or description of thoughts which led to a certain implementation according to Fig. 1.
[0048] Actuators designed for robots, follow different concept or design strategies. Impedance control may, for instance, be made using a spring and by measuring torque by comparing encoder readings before and after the spring. It is, however, also possible to use a low inertia motor, not too much gear reduction and some compliance in the robot legs. Comparing these two concepts, while a spring constant of approximately X Nm / rad might, for instance, be used with a former impedance control, an equivalent spring constant of approximately 3X Nm / rad would be suitable for the latter approach. With this increased stiffness, however, even a drive with a reduced inertia cannot cope with sudden shocks without experiencing significant excess torque. Thus, while the usage of a low inertia motor might be preferable, it will reduce and not totally eliminate the excess torque exerted onto the motor in case of collisions. The embodiments of the present application address this issue by measuring the motor acceleration and mitigating that excess by some kind of “inertia compensation algorithm”.
[0049] Technically speaking, what is asked for is a negative D2term. In position control, a P term would amount to a spring constant as a P-term generates a torque that is proportional to the displacement from a desired position, thus generating an “electronic spring”. A D term would correspond to a damper as a D-term generates a force that is proportional to the difference of the position over two consecutive readings which is an approximation proportional to the angular velocity which corresponds to a velocity dependent torque which amounts to a damper. A D2term corresponds to inertia as a D2term generates a force proportional to the second derivative over time, which emulates an inertia. A D term is already problematic because it involves “differentiation” which, in practice, means taking the difference of two consecutive noisy encoder values, thus adding system delay and massively increasing noise. Take a D2term, and the square applies to the problems, too: double delay, square the noise. This is one of the main reasons that D2terms are seldom seen in industrial applications. Still, the prospect of peak torque mitigation with all its implications for gear and system design, makes it worth trying to address these issues, and the embodiments described in the present application enable to deal with these issues. In particular, in accordance with the present application, not only the motor encoder readings are used, but also the windup signal 52 and the effective correction torque / force signal 0. The reader is again reminded that the description preliminarily, and especially with respect to Fig. 1 , focuses on rotational motors and torque instead of force, but that all these statements in the description may readily be transferred onto non-rotational motors by replacing torque with force, angle with position and so forth.
[0050] A naive implementation of the inertia compensation algorithm would just estimate the D2term such as by the use of a 3-tap FIR filter with the sequence of FIR coefficients 1 , -2, 1 , or would use to this end a Kalman filter, which would, however, add delay to the system. The filter would be multiplied with a factor with the aim of adding a motor current that is proportional to the filter output. Such a naive implementation has, however, drawbacks as follows:
[0051] 1 . The D2term does not take energy out of the system. Given the inevitable system delay resulting from the evaluation of three consecutive encoder readings, the system will inevitably become unstable if an external damper is missing.
[0052] 2. As soon as the algorithm acts upon the motor, it will change the very acceleration it is evaluating. Thus, the algorithm becomes self-defeating.
[0053] 3. The D2term is extremely noisy and requires high resolution encoders. “Filtering” will not work as it would increase system delay.
[0054] 4. Of necessity, such an algorithm relies on accurate torque estimation.
[0055] Consequently, the following takeaways have been deduced from the above drawbacks, which finally led to the embodiments presented herein:
[0056] 1 . There should be some sort of dissipative term in the algorithm, but a) the algorithm should be speed-invariant. In the example of Fig. 1 , this means that the function underlying determiner 48 should be speed-invariant or, in case of the 3- branch implementation, the function (e.g., FIR filter) of branch 48a (as the speed invariance is then automatically also met with respect to the other two branches 48b and 48c). The two goals are even more easily achievable if a short-term-long-term approach is used: short-term dissipative, long-term speed-invariant. b) the algorithm should also be position invariant. That is, the function underlying the determiner for 48 should be position invariant or, if the 3-branch implementation is used, the function underlying branch / module 48a (as the position invariance is then automatically also met with respect to the other two branches 48b and 48c).
[0057] 2. The algorithm should also take into account its effect upon itself. There should be some sort of “compensation of the compensation”. a) As a corollary, the real limitations of the motor should be taken into account when designing the function underlying the determiner 48, such as current limit, situation and the like. In particular, they should be taken into account so as to avoid “slewrate induced instabilities” which is a particularly nasty effect that results from windup induced system delays. b) Consequently, the compensation realized by the motor controller 10 should contain some “anti-windup” terms, too, and this is why determiner 48 uses, besides the motor encoder signal 24, the windup signal 52.
[0058] 3) The “set value” of the algorithm should not be a current, but a torque / force. The current is derived by a simple conversion from torque to current, in Fig. 1 in module 40. Physical effects such as temperature and situation effects may be taken into account in the conversion.
[0059] It is clear that in the determination of the function of determiner 48 such as the gains of the underlying FIR filters in case of using FIR filter implementation, should be chosen high enough in order to have an effect and sufficiently low to avoid overly noisy motor currents.
[0060] That is, summarizing the above, the only sensor signal that is used by the motor controller 10 is actually the motor encoder's signal 24, i.e. a signal measuring a current position of motor 18 such as its motor shaft in case of a rotational motor 18. To keep complexity manageable, it might be advantageous to implement determiner 48 in a manner so that the same is purely linear, i.e. so that the function of this determiner 48 is linear. Insofar, in terms of complexity, the implementation using FIR filters 48a to 48c might be advantageous, with combiner 48 combining the FIR filtered signals 54a to 54c in combiner 56.
[0061] Thus, in case of using the FIR filter implementation, the algorithm underlying motor controller 10 itself is a set of vector multiplications. The vector multiplications, which embody the FIR filtering, are denoted by the middle dot ■.
[0062] Again, the above thoughts led to the embodiments presented herein. Assume that some higher-level algorithm such as controller 20 in Fig. 1 , sets a torque (which is a force in the general case of not being restricted to rotational motors), namely signal 22, and let us call that value DesiredTorque for the time being. We will modify that torque 22 by TorqueCorrection, i.e. 30. Of course, the motor torque is limited to ± MaxTorque, namely by limiter 36, with assuming here, for ease of understanding, equal maximum torque in both motor directions, and at the end, we get a TorqueCorrectedSetValue, i.e. 38. The Effectivecorrection is the difference between DesiredTorque and TorqueCorrectedSetValue as this difference measures the deviation of the effectively set or applied torque from the actually desired torque. This Effectivecorrection corresponds to signal 50 in Fig. 1. Any windup can be detected by evaluating the difference between Effectivecorrection and TorqueCorrection, this difference corresponding to signal 52 in Fig. 1.
[0063] By this nomenclature, we have now everything in place. In case of using the FIR filter implementation in the separate branches according to Fig. 1 , some samples of the above- mentioned variables need to be multiplied by some “fixed” FIR vectors. These could be CAN (Controller Area Network) objects or objects of another field bus system. Changing them on the fly could be risky, but feasible. There are three FIR vectors or, in different terms, three different FIR filters: the FIR filter 48a which is here denoted as MotionPositionFIR, the FIR filter 48b which is here denoted as CorrectionCompensationFIR, the FIR filter 48c which is here called WindupFIR.
[0064] It turned out that the FIR filter length for the FIR filters 48b and 48c may be chosen shorter than the FIR filter length of FIR filter 48a. In a concrete example, the FIR filter length for filter 48a has been chosen to be 43 whereas a filter length of eight filter taps has been chosen for the other filters 48b and 48c. More statements and explanations regarding the coefficients will follow. More generally, the FIR filter length naof FIR filter 48a (in terms of maximum tap span) might be more than 3 times the filter length of, or the average of the filter length of, FIR filters 48b und 48c, called nb and nc, i.e. na> 3 / 2 * (nb + nc) The latter FIR filters 48b and 48c might slightly differ in FIR filter length such that one is, at maximum, twice as long as the other, i.e. | nb - nc| s min(nb,nc). Moreover, the FIR filters’ kernels might have “gaps” or, in different terms, taps acting like FIR coefficients of zero. Such multiplications with zero coefficients may, naturally, be skipped in the FIR filter implementation. As to the filter length of the FIR filters in modules 48b and 48c, it might be advantageous to set same so as to be between a tenth and half of the natural frequency period of the serial connection of motor 18, gear 16 and leg 14, as manifesting itself, for instance in the oscillation of the motor encoder signal in case of a collision as depicted in Fig. 3b after time 120 measured, for instance, as the temporal distance in motor encoder samples from time 120 of collision until the second return to the motor position at this time 120 in case of zero externally controlled torque and setting torque correction 30 to zero.
[0065] Now, more formally:
[0066] TorqueCorrection 1 = MotorPositionFIR ■ (last namotor encoder readings) TorqueCorrection2 = CorrectionCompensationFIR ■ (last nb Effectivecorrection values) TorqueCorrection3 = WindupFIR ■ [(last ncTorqueCorrection values) - (last ncEffectivecorrection values)]
[0067] TorqueCorrection = TorqueCorrection 1 + TorqueCorrection2 + TorqueCorrection3
[0068] TorqueCorrectedSetValue = max(min((DesiredTorque + TorqueCorrection), MaxTorque), - MaxTorque)
[0069] Effectivecorrection = TorqueCorrectedSetValue - DesiredTorque
[0070] Figs. 2 and 3a to 3h illustrate a simulation test example based on a concrete implementation for the embodiment of Fig. 1 and, especially, the motor controller 10 with using FIR filters having the FIR filter coefficients shown in Fig. 2. In particular, from top to bottom, Fig. 2 shows examples for filter coefficients for filter 48a, filter coefficients for the FIR filter 48b and filter coefficients for the filter 48c. The just-mentioned concrete examples for filter lengths have been used. As discussed in more detail below, the first three leading-tap filter coefficients of filter 48a substantially correspond to a second derivative computation, while the FIR filter coefficients at the tail of the filter are comparatively small and form a kind of averaging means. The coefficients of filter 48a are not trained, whereas the FIR filter coefficients of the WindupFIR and the CorrectionCompensationFIR in branches / modules 48c and 48b are the result of training. In particular, in Fig. 2, the FIR filter coefficients of the FIR filter in branch / module 48a are shown as points and columns in a graph, whereas a curve-representation is used for the other two FIR filters and branches 48b and 48c. The filter coefficients’ filter-tap positions are indicated along the horizontal axis. Note that they are numbered, for each FIR, starting with 1 for the highest delay tap position to the zero delay tap position which, thus, is positioned at 43 for Filter 48a and 8 for filters 48b and 48c.
[0071] All FIR filters’ filter coefficients are shown in a manner having the zero-delay tap filter coefficients registered at the right-hand side. That is, the zero-tap coefficient 100 of the motor position FIR of branch 48a is, within the filter kernel, multiplied with the most recent or current motor encoder signal sample 101 (see Fig. 1). Altogether the motor position FIR filter of Fig. 2 has here exemplary na=43 coefficients so that the zero-tap filter coefficient 100 is indicated to be positioned at the forty-third position or filter-tap position. Right below, the zero-tap FIR filter coefficient 104 of the wind-up FIR of branch 48c is indicated to be positioned at the eighth filter-tap position as this FIR filter has eight filter coefficients. Likewise, right below, the zero-tap filter coefficient 102 of the correction compensation FIR of branch 48b, is also indicated to be positioned at the eighth filter-tap position. Coefficient 102 is multiplied within the correction compensation FIR’s filter kernel with the most recent sample 103 (see Fig. 1) of signal 50, which, in turn, has been obtained using - or depends on - the TorqueCorrection 30 resulting from the FIR filtering computations relating to the previous filter kernel position, for which, for instance, the FIR filter kernel of the motor position FIR had the zero-tap filter coefficient 100 registered to the motor encoder signal sample which is, at the moment of FIR filtering using FIR filter of module 48b so that coefficient 102 is multiplied with sample 103, positioned at the one-tap-delay position indicated at 107 in Fig. 1 . Similar statement is true with respect to coefficient 104 of windup FIR 48c which is multiplied with the most recent sample 105 (see Fig. 1) of signal 52.
[0072] The FIR filters of Fig. 2 have been used and evaluated in the simulation of Fig. 3 to 3h in a situation where the externally-controlled torque 22 is zero, i.e. the outside controller or master controller wants leg 14 to swing freely. That is, signals 22, 34 and 38 are, at the beginning, up to a point where the leg 14 hits a certain object, i.e. up to the situation of a shock or collision, zero. Fig. 3a shows the graph of signal 38. For all graphs in Figs. 3a to 3h, the x-axis corresponds to the time axis in sample duration units. The y-axis in each graph shows the corresponding signal in arbitrary units. Figs. 3a to 3h show in the order mentioned: TorqueCorrectedSetValue 38, the motor encoder signal 24, TorqueCorrection 1 54a, Effectivecorrection 50, TorqueCorrection2 54b, TorqueCorrection - Effectivecorrection, corresponding to signal 52, TorqueCorrection3 54c and TorqueCorrection 30. The time axes in these figures are horizontally registered to each other. At some point 120 in time, the leg 14 hits an object, i.e. the collision takes place. This is visible in the motor encoder signal graph of Fig. 3b.: up to time 120, the motor encoder signal changes, here increases. From that time onwards, physical structure characteristics such as the motor inertia, motor / gear / leg stiffness and the like, cause that the motor substantially keeps on moving at approximately the same rate for a certain time period which is roughly and exemplarily indicated as 122 in the figures. Relatively soon after the collision 120, the motor position FIR of module 48a starts yielding large (in absolute sense) values intended to instruct motor 18 to exert torque into a direction which reduces the collision energy for the whole system. The torque correction signal in Fig. 3h is, accordingly, caused to rapidly change which results in the effective correction signal in Fig. 3d to assume non-zero values as the latter signal corresponds, in this example, to the torque correction of Fig. 3h due to the externally-provided torque 22 being zero. Due to this, the correction compensation FIR filter starts contributing to the torque correction signal of Fig. 3h in the same sense or in the same direction as torque correction 1 of Fig. 3c provided by the motor position FIR as it is depicted in Fig. 3e. And finally, the windup FIR of module 48c obtains via signal 52, TorqueCorrection - Effectivecorrection, shown in Fig. 3f, an information on the effective influence or impact of torque limiter 36 and produces, as a further combination signal to the final torque correction, the signal shown in Fig. 3g supposed to avoid instabilities.
[0073] Figs. 3a to 3h have additionally been simulated for the case that after some period of time, here exemplary approx.. 360 sample periods, the master controller decides to use a brake, or Coulomb friction kicks in, effectively halting the motor 18 and, nevertheless, motor controller 10 does not overreact and keeps within a stable situation. Merely low fluctuations in the torque corrected set value occur.
[0074] In designing the motor position FIR forming branch or module 48a, the following considerations might be useful. As explained above, the motor position FIR should meet three conditions: position invariance, i.e. no hidden P-term, speed invariance, i.e. no hidden D-term, and moderate noise.
[0075] As to position invariance, the mode of operation of motor controller 10 should be position invariant, i.e. it should display identical behavior no matter what the starting position of the motor 18 is. Otherwise, there would be a hidden P-term, and P-terms belong to any higher- level control loop, not torque control which motor controller 10 is responsible for. In terms of the motor position FIR’s weights or coefficients, this means that the sum of all FIR coefficients of the motor position FIR should be zero, because then, any constant position offset would add zero torque.
[0076] This zero-sum condition can be achieved by making one of the FIR coefficients of the motor position FIR the negative sum of all other FIR coefficients xtof the motor position FIR. In an embodiment, the zero-delay tap FIR coefficient 100 can be used to this end.
[0077] As to speed invariance, the mode of operation of motor controller 10 should also be speedinvariant, because otherwise it would introduce a hidden D-term, which belongs to position control algorithms, not torque control. The long-term torque should be equal to the desired set torque.
[0078] The speed invariance can be codified by using the following thought experiment: a motor at constant speed would have a constant difference between successive encoder readings, i.e. successive samples of the motor encoder signal 24. Without loss of generality, we can assume that this difference is one (or any other constant term). So, in that thought experiment, we would multiply all taps or coefficients of the FIR filter with a vector [1 , 2, 3, ... , n], with n being the FIR filter length, and sum them, and the resulting scalar product should be zero.
[0079] A direct way of ensuring this condition comes with the beauty of technical mechanics: the above condition implies that the first moment of the filter taps or filter coefficients should be zero, and this amounts to a zero-torque condition. Such a zero-torque condition can be ensured without too much calculation. For example, we can use any reference point. From the position invariant condition, we derived one predetermined tap’s coefficient, such as 100, as the negative sum of the previous taps. To avoid circular references, we can render that tap’s coefficient the reference point. We now choose another tap’s coefficient, such as the coefficient belonging to a neighboring tap, to ensure the zero-torque condition, which for a na-tap FIR filter looks like this:
[0080] Again, in Fi. 2, nais 43.
[0081] Further, the motor position FIR filter realizes a double differentiation, as seen by the alternating signs of the three leading-end FIR filter coefficients, i.e. the zero-delay FIR filter coefficient 100 used to realize the position invariance, the one-tap-delay FIR filter coefficient 106 which may be, as outlined above, used to realize the speed invariance, and the two- tap-delay FIR filter coefficient 108 in Fig. 2. Among these coefficients, coefficients 100 and 108 are of same sign, while coefficient 106 between same is of opposite sign. For maximum impact mitigation, these terms or coefficients will become huge, which comes with two practical disadvantages: the motor controller 10 or, to be more precise, determiner 48 or, to be even more precise, module 48a and its FIR filter implementation, respectively, namely the motor position FIR, would multiply encoder noise by exactly those huge weights / coefficients, and would lose robustness by being overly dependent on “constants” like motor inertia or torque constant being constant.
[0082] This can be remedied by limiting the FIR filter coefficients. One practical way is to set coefficient 108 to a predetermined value such as to a value of 100. For example, the coefficient may be set to a value between
[0083] 2M / 400 <Xna-2< 2M / 20 wherein M is the number of bits at which the integer multiplications for FIR filter at module 48a are performed.
[0084] Thus, at least coefficients 100, 106 and 108 of the FIR filter in module 48a might be designed as described above, thereby reducing optimization efforts to optimize further coefficients or parameters of modules 48a-48c. Note, however, that while coefficient 100 might equal the negative sum over all coefficients of the motor position FIR except coefficient 100 so that the sum over all coefficient of the first filter is zero, this might naturally by relaxed to an extent where the absolute of the sum over all coefficients of this motion position FIR keeps smaller than 1% of an absolute of the, in magnitude, greatest coefficient among the coefficients of the first filter. Likewise, the determination of coefficient 106 may be relaxed to an extent where the first moment of the coefficients about coefficient 100 is smaller than 10% - or, alternatively, 5% or even 1 % - of an absolute of the, in magnitude, greatest coefficient among the coefficients of the first filter. Even in the relaxed state, the first correction torque contribution signal 54a might get sufficiently position and speed independent.
[0085] Further, as became clear from the above, an absolute of a sum over the two-tap-delay FIR filter tap’s coefficient 108, the zero-delay FIR filter tap’s coefficient 100 and the one-tap- delay FIR filter tap’s coefficient 106 is not zero, because the remainder yields the sum over the remaining coefficients 110 which form the “tail” of the motor position FIR. The sum over these coefficients 110 may be chosen so that same is smaller than 10% of an absolute of the one-tap-delay FIR filter tap’s coefficient.
[0086] Coefficients 110 form a sort of “tail” of the FIR filter impulse response function of the motor position FIR and may correspond to a constant function or a function decaying towards the trailing end 112 of the FIR filter kernel, such as forming a linear function, a quadratic function or an exponential function or any other monotonic or strictly monotonic function as depicted in Fig. 2 at 114.
[0087] That is, briefly summarizing and repeating the above, module 48a primarily forms a second derivative of its input, namely signal 24, with additionally showing some negative low-pass filtering contribution. The windup FIR may show, as depicted in Fig. 2, some low-pass filtering characteristic in that all its non-zero coefficients are of the same sign such as negative.
[0088] To see if the dimensioning went right, a simulation can be made by use of a certain ENOB (effective number of bits of encoder resolution) such as 13 bits.
[0089] As a matter of fact, inertia compensation algorithms are laden with instability traps, and the motor controller 10 is no exception. To assess its stability, simulations may, however, be done and verified in a minimum viable product (MVP) based on a certain motor design of motor 18. The following robustness criteria, or one or more thereof, might be tested against:
[0090] First, robustness against changes in rotor mass inertia and torque constant should be checked. Should, for some reason, the motor mass inertia change, or should, for some other reason, the motor torque constant change, the effect would be similar: the relationship between current command and rotor acceleration would be affected.
[0091] There are two ranges for change:
[0092] 1 . “Normal" changes during production, and normal errors in operation, like temperature transients that are not accurately reflected by the motor model. These changes amount to about ±10% and may be simulated with a what-if analysis, where the rotor mass inertia is varied accordingly, and where the total vibration energy after a certain settling time is measured, indicating stability.
[0093] 2. ’’Radical" changes because of a product redesign. Here, a re-normalization of the FIR parameters is needed. This can be simulated by a parameter which linearly scales the whole motor position FIR curve. Without re-optimizing the correction compensation FIR, one can simulate that the rotor inertia of can be changed within the range of 15% to 200% without generating instabilities, even with ±10% post-production variation. Hence, it is highly recommended to re-normalize the FIR coefficients at production after making some dynamic tests that reveal that torque constant as well as rotor moment of inertia.
[0094] Thus, the coefficients of FIR filters or parameters, such as neural network weights, in scalar functions in modules 48a and 48b, or, in case of using a rather general scalar function implementation in determiner 48, the parameters of the scalar function of determiner 48, such as neural network weights, might be optimized using a cost function which depends on measure of sensitivity against variations of mechanical design parameters, or might be optimized otherwise with checking any optimization intermediate result, however, with respect to meeting some minimum level of insensitivity against variations of mechanical design parameters.
[0095] Second, as to robustness against Coulomb friction, the following is noted. Much unlike damping, Coulomb friction poses a real problem for torque control because it amounts to an infinitely stiff motor because there is no movement within a certain current range. This could lead to unpleasant audible oscillations up until that current range. For that reason, a “zero acceleration phase” may be simulated such as seen in Figs. 3a to 3h after temporal digit 400. During that phase, the current is not to explode. These unwanted oscillations may be included as part of the optimization criteria, i.e. this criterion may be used as one criterion for optimizing the coefficients within determiner 48.
[0096] Thus, the coefficients of FIR filters or parameters, such as neural network weights, in scalar functions in modules 48a and 48b, or, in case of using a rather general scalar function implementation in determiner 48, the parameters of the scalar function of determiner 48, such as neural network weights, might be optimized using a cost function which depends on measure of robustness against Coulomb friction such as measuring the swing height after a motor halting at a predetermined reminder motor speed as described above, or might be optimized otherwise with checking any optimization intermediate result, however, with respect to meeting not showing instabilities at such a Coulomb friction situation. Note that, alternatively, motor controller 10 might have some bypass or gating functionality so as to disable the effective correction torque 30 in situations where the motor 18 becomes slower than a predetermined limit close to the motor encoder’s noise in which case the optimization might be relaxed in this regard.
[0097] Third, some robustness against high-impact energies should also be present. The system might spin into a slew-rate induced instability. Therefore, the FIR coefficients, especially the anti-windup part, should be tuned accordingly. The motor controller 10 may be simulated against collisions up to some expected or admitted maximum speed such as, for instance, 18 rad / s radians per second.
[0098] Thus, the coefficients of FIR filters or parameters, such as neural network weights, in scalar functions in modules 48a and 48b, or, in case of using a rather general scalar function implementation in determiner 48, the parameters of the scalar function of determiner 48, such as neural network weights, might be optimized with checking any optimization intermediate result, however, with respect to meeting this criterion.
[0099] Fourth, robustness against encoder non-linearities should also be taken into account. Encoder noise has already been mentioned above. Encoder non-linearities are a different issue because they are reproducible and therefore introduce spurious acceleration signals. For example, an integral non-linearity (INL) with high harmonic content was found to be inacceptable even if its absolute value was comparatively low. . Thus, the coefficients of FIR filters or parameters, such as neural network weights, in scalar functions in modules 48a and 48b, or, in case of using a rather general scalar function implementation in determiner 48, the parameters of the scalar function of determiner 48, such as neural network weights, might be optimized with checking any optimization intermediate result, however, with respect to meeting this criterion.
[0100] The coefficients of FIR filters or parameters, such as neural network weights, in scalar functions in modules 48a and 48b, or, in case of using a rather general scalar function implementation in determiner 48, the parameters of the scalar function of determiner 48, such as neural network weights, might additionally or alternatively be optimized using a cost function which depends on at least one or more of a measure for uncompensated collision energy, a measure for temporal duration until the correction torque vanishes, and a measure for current noise increase imposed by the correction torque. In other words, coefficients of the filters 48a and 48b might be machine learned using a cost function which depends on at least one or more of a measure for uncompensated collision energy, a measure for temporal duration until the correction force vanishes, a measure for current noise increase imposed by the correction force, a measure of sensitivity against variations of mechanical design parameters, a measure of robustness against Coulomb friction, and a measure of robustness against motor encoder non-linearities. The optimization may attempt to minimize the cost function which might increase with the one or more measures mentioned.
[0101] If using a robot as motorized system 12, elastic elements might be used to facilitate the motor controller’s mode of operation and the optimization may take the elasticities into account. That is, the mentioned FIR coefficients or parameters might be optimized to cope with all elasticities such as coping with zero elasticity to avoid instabilities due to Coulomb friction.
[0102] The description brought forward above concentrated on the internal elements of motor controller 10, but for the time being, converter 40 and possibilities for a cooperation with main controller 20 have not been described so far in more detail. The following description now concentrates on the latter issues. Due to the fact that the following description, inter alia, focuses on details concerning elements external to motor controller 10, such as details concerning motor, gear and controller 20, some initial statements shall be made.
[0103] As already described above, while the motor controller 10 of the present application may be used in relation with any type of motor such as linear actuators of rotational motors, the following description concentrates on an example where motor 18 a rotational electric motor with a sub-millisecond mechanical time-constant, typical of so-called torque-motors. Such a motor 18 includes rotor, but does not include the bearings which are considered part of the gear 16, instead. The gear 16 may, for instance, be a two-stage planetary gear. The term actuator may denote the combination of motor 18 and gear 16 and encompass, accordingly, the corresponding electronics, sensors, connectors and the housing. The terms “actuator” and “[robotic] joint” may be used interchangeably.
[0104] A further aspect concerns signs. Positive q-currents denote currents that, if large enough, will result in a positive acceleration of the motor’s 18 position and likewise a positive motor torque denotes a torque, if large enough, will result into motor 18 exerting a positive acceleration with respect to the motor encoder signal. A positive acceleration may be defined as the second derivative of the motor encoder signal 24. The motor encoder readings or, using a different term, the motor encoder signal’s 24 sample values may be measured in certain units such as in increments with n increments resulting into one complete motor turn in case of a rotational motor 18 as currently assumed to apply. For instance, 10,240 increments per motor turn, i.e., 2560 cpt = 10x256 may apply. This corresponds roughly to 13 bits. Gear encoder readings or, in different terms, the samples of the gear position signal 26 may be measured in less accurate increments than compared to a motor position signal 24 such as at 4096 increments per output turn of gear 16 corresponding to, for instance 12 bits. In the description brought forward below, some portions relate to the actuator or motor being in a certain state, namely in one or four quadrants. These descriptive portions relate to a coordinate system where the horizontal or x axis corresponds to the motor’s 18 speed whereas the vertical or y axis corresponds to the motor’s torque so that the first quadrant Q1 corresponds to a situation where the motor’s 18 speed is positive just as the torque is, while the second quadrant Q2 corresponds to a case where the motor’s 18 speed is negative, whereas the torque is positive, and the third quadrant Q3 corresponds to a situation where the speed is negative, just as the torque is, and the fourth quadrant Q4 corresponds to a situation where the speed is positive, whereas the torque is negative. It is also worth noting that while motor controller 10 is concerned with motor torque control which refers to finding the right current setting to achieve a certain motor torque, including, for instance, viscous friction c5, but excluding static friction MVA. The actuator torque control is about finding the right motor torque setting to get a desired joined output torque. As will become clear from the following description, the two control loops have to be distinguished and while motor control is concerning with a formal motor torque control, the latter actuator torque control is rather part of the tasks associated with the PVT controller 20.
[0105] As already described above, it is the task of converter 40 to map the inbound torque command, namely the effectively set torque 38 onto a current 28 to be applied to motor 18. The mapping could be denoted by function l / M). Finding a formula for l(M) with M denoting the motor torque is much easier than M(l) because the former explodes while the latter situates. Exploding formula are easier to describe by the use of, for instance, polynomials. As a matter of fact, they are much more accurate than the currently used busy functions which could alternatively be used.
[0106] To calculate the motor current lmot as a function of the motor torque command Tmot, one should take the following into account, in this sequence: Additional torque due to motor Coulomb friction MVAmot and viscous friction Csmot than temperature drift of magnets described by Tcmagn which is a negative number, and then the situation curve.
[0107] Please note that for the definitions here, the usual definitions of the Park and Clarke transforms and the implicit conversion factors used in the motor controller to give the equivalent block commutation currents. Then further, in SI units, a motor without friction, at 25 °C would need the following current to achieve the torque T25:
[0108] Where kv is the speed constant, i.e., the inverse of the torque constant, and k2..ks are its higher order terms. T25 needs to be adjusted for temperature and friction, again in SI units: Here, Tmot is the torque command, i.e. , the torque to be mapped onto current lmot. MVAmot is the static friction of the motor . sgn (signum) is a function outputting the sign of its attribute. Wmot is the speed of the motor encoder signal, i.e., the first derivative. Csmot is, as already outlined above, the viscous friction of the motor 18. Tcmagn is as already denoted above, the temperature drift of the magnets within motor 18. 1 is the motor’s 18 temperature.
[0109] The simple Cs term in the above formula has certain shortcomings which are addressed as follows by using, instead, a refined model for viscous friction C5:
[0110] 1 . The viscous friction is torque dependent. So, one way to address this is to make Cs a constant plus a linear torque dependent term.
[0111] 2. The viscous friction has an eddy current term that makes the motor less effective in reverse mode.
[0112] Hence, the above formula is modified and c5 split into 4 coefficients as follows:
[0113] Here, in addition to the parameters discussed above, C53 C54 and C51 are certain viscosity parameters.
[0114] In the above formula, the motor speed a>motneeds not to be too accurate since it is multiplied with a rather small C5. Depending on the control mode, it can be taken from the last speed reading, i.e., the most recent or current sample of the motor encoder signal 24 or, to be more precise, a difference of the last two encoder readings or motor encoder signal samples divided by cycle time. It should be noted that converter 40 might also be used within another control loop which, for instance, bypasses the motor controller 10 which is, as explained herein, responsible for establishing a motor torque control. In case of such alternative modes or control loop, it may be that a certain command is provided. Such mode could be a joint-position-velocity-torque control mode.
[0115] That is, back to Fig. 1 , converter 40 may, in mapping the inbound effectively set torque signal 38 onto the motor current lmot equate Tmot in the last formula with the inbound command, i.e., signal 38, and setting the other parameters in this formula according to predefined values specifically set for the structure of the surrounding elements of the motor control 10 and with setting, for instance, cmotin the manner just-described, namely by deriving an estimate of the current velocity based on the motor encoder signal 24. The result is a variable T25 determined depending on, inter alia, motor temperature and the effectively set torque, and a polynomial function in this variable, such as the above one of order five, is used to compute the motor current.
[0116] It should be noted that any higher-level control part of motorized system 12 such as the PVT controller 20 might have an interest, or may use, an information on some effective motor torque exerted by motor 18 onto leg 14 via gear 16. In order to do so, not only the actual motor torque needs to be evaluated, but also its angular acceleration amot which would eat up part of the torque because of the finite motor inertia 0mot. The basic formula is eff ^mot mot mot
[0117] Here, Tmot is, again, the effectively set torque 38. amot is determined in the manner outlined in more detail below. Converter 40 might be responsible for informing controller 20 or any other module of motorized system 12 on the effective motor torque Tfeff.
[0118] On the one hand, amot and Tmot are quite noisy. On the other hand, the motor controller’s 10 position control frequency is much higher than the high level controller’s 20 frequencies such as more than 5 times higher. For instance position control frequency might be 2.5 kHz with a time interval Atof 500 microseconds whereas the processing frequency of controller 20 might be 400 Hz at most, so that the frequencies might be separated by a factor of larger than 5 or, even larger than 6. This enables to smooth out the torque and acceleration readings: We can take the average of the last six set torques Tmot, which, as just-explained, equal TZetf 38 and the average of the last six accelerations, and for the latter there is a neat trick we can use. Let <?, be a sequence of the last motor encoder readings 24, in SI units, where tpris the most recent reading. Then, an estimate for the most recent acceleration would be The average of the last n acceleration estimates is therefore
[0119] So, this averaged acceleration a^tmight be used as the acceleration in the above formula to compute Teffand amounts to the difference of two speed readings that are n samples apart, divided by their time difference n*At. So, one implementation of the above formula could look like this: actual speed estimate — last speed estimate sent to master a = - time elapsed between the two readings
[0120] Another method would be to use an HR exponential filter or to use an averaging filter with “reset” that is triggered by a corresponding signal. These averaging filters could be applied to both the acceleration and the set torque.
[0121] As already outlined above, controller 20 is rather interested in controlling leg 14 or, differently speaking, gear 16 rather than motor 18. This joint torque control can, substantially, be decomposed into two steps, namely determining the right quadrant, and then the use of the right formula.
[0122] To be more precise, in determining the externally controlled torque 22, controller 20 determines this torque 22 actually on the basis of a wished joint torque Tjoint to be attained. In doing so, controller 20 takes into account the current “status” of motor 18, i.e., at which quadrant the motor or actuator currently is. This is explained in more detail below.
[0123] The joint torque control includes the gear 16 and is, therefore, strongly dependent on the quadrant the joint 16 is operating in. The decision which quadrant is currently present for joint torque control is done as follows: The sign of the speed is determined by comparing the last two motor position readings, i.e., the last two samples of the motor encoder signal 24, while the sign of the joint torque is just determined by looking at the sign of the desired joint torque, i.e., some parameter or value occurring in the inner of the joint torque control of controller 20. Note that in the transition between torque signs, there might be a jump in the relation between gear and motor position due to gear play. As a justification, the following is noted. The motor encoder in motor 18 is more accurate than the encoder at the gear 16. Therefore, motor speed is better to assess the gear. The gear 16 is quite stiff, so a motor speed change will propagate quite fast through the gear 16. As for the torque sign, this is used to assess the desired motor torque and current, and it is logical to “assume the sale” that the desired torque will indeed be achieved, with the intended sign. The timing of the sign reversal will align well with torque control because of the very high torque bandwidth.
[0124] The most important ingredient is the gear efficiency. The gear 16 is said to be operated in reverse if it is in Q2 or Q4. The intrinsic “maximum” gear efficiency is different for forward and reverse operation, with an estimation for the reverse efficiency being:
[0125] IJreverse 2 g forward 1
[0126] The greverseis the efficiency of the gear in reverse mode, i.e. , in Q2 or Q4, whilst gforwardis the gear efficiency on forward mode, i.e., Q1 or Q3.
[0127] It is still recommended to assign a separate, measurement-based value for the reverse efficiency instead of just calculating it.
[0128] The tricky part is that if we introduce friction, the gear may change quadrants depending at which way you look at this. For the rather efficient gear, we are using, the resulting error will be negligible, so the following simplified formulae (where c5 has been condensed with motor c5) can be used for a gear 16 with reduction ratio i:
[0129] Here, MVAgear is the gear’s static friction, as seen from the gear output
[0130] Estimating the effective joint torque is tricky because the relationship between motor torque and joint torque is discontinuous. To make things worse, there is Coulomb friction at each stage, making the determination of the right quadrant quite difficult. So, we must live with a certain “no-man’s-land” between the quadrants the size of which is directly dependent on all friction terms. Thus, the ugly compromise is to rely on the set value of the joint torque for the determination of its sign.
[0131] An estimate for the joint torque is
[0132] Teffis an estimate of the effective motor torque and the estimation may be attained by some averaging for acceleration and said torque as described above.
[0133] Thus, summarizing the above, position control and torque control are envisaged. The position control is just pure, no speed settings, at 50 Hz, so eight samples come with the same position each. Therefore, rather low positon gains are advantageous to avoid sore tooth noise.
[0134] Summarizing the above embodiments, the embodiments are able to detect collisions by way of surveillance of motor / rotor movement. In effect, the correction torque signal 30 leads to an additional current, leading into the same direction as the impact of the collision. This is done by means of determiner 48 which may be implemented by FIR filters. One of these FIR filters may evaluate the development of the motor position.
[0135] An additional damping is established by prolonging this FIR filter and an appropriate choice of appropriate, efficiency which stabilize the instability which is inherent for a simple mass compensation.
[0136] Further, a further FIR filter might be used in determiner 48 which takes into account the impact of the torque compensation onto the motor position and yields a corresponding correction contribution 48b.
[0137] Another FIR filter is introduced in order to avoid instabilities induced by the torque limiter.
[0138] The coefficients may be determined such that one or more of the following aims are achieved: Stability for all possible stiffnesses which are below a chosen leg stiffness. Thus, if the robot leg hits a soft object or if the leg swings freely, this situation should by no means lead to instabilities.
[0139] Further, there should be stability against Coulomb friction: Even if the motor moves below static friction, the torque control should not get instable.
[0140] Further, the amplification of noise should be endurable: An evaluation of the second derivative of the motor position signal inherently comes along with large noise. Determiner 48 or the filters therein should be dimensioned in such a manner that, using the given accuracy of the motor encoder, the additional noise imposed by the current correction is so small that the additional heat resulting therefrom is relatively low. A useable target value is, for instance, an RMS-value of the noise which is a tenth of the nominal moment; but this means the additional heat is below 1 % of the nominal power loss.
[0141] As described above, converter 40 should provide a good torque feet forward. This includes an efficient determination of the quadrant and; accordingly, the taking into account of friction forces and gear efficiencies. This might assist in avoiding instabilities.
[0142] Summarizing the above description and presentation of certain embodiments, the following aspects / embodiments have been, inter alias, described above, and additionally described features of above embodiments are individually and in combination combinable with these subsequently described aspects and embodiments and vice versa, to yield even further embodiments of the present application.
[0143] According to aspect 1 , a motor controller 10 for controlling a motor with compensation against shock-induced excess force has been described, which comprises 1) a corrector 32 configured to correct an externally controlled force 22 by use of a correction force 30 so as to obtain a set force 34, and 2) a force limiter 36 configured to subject the set force 34 to a limitation so as to obtain an effectively set force 38. The limitation may be for accounting for physical limitations of the motor, in other words, for modifying the set force 34 into a force which may be realistically attained by the motor, with this force being called effectively set force 38. Further, motor controller comprises 3) a force-to-current converter 40 configured to determine a current 28 to be applied onto the motor 18 based on the effectively set force 38b and 4) a correction force determiner 42 configured to determine the correction force 30 based on A) a motor encoder signal of a motor encoder of the motor 18, B) an effective correction force signal 50 corresponding to a - e.g. linear or non-linear, generally speaking, analytical or mathematical - combination of two or more of a) the externally controlled force 22, b) the correction force 30, c) the set force 34 and d) the effectively set force 38, which effective correction force signal 50 is indicative of an force correction caused by the motor controller, and c) a windup force signal 52 corresponding to a - e.g. linear or non-linear, generally speaking, analytical or mathematical - combination of the effectively set force 38 with one or more of a) the externally controlled force 22, ) the correction force 30 and y) the set force 34. The windup force signal 52 may have the function of providing a measure for a discrepancy of the set force 34 and the effectively set force 38, obtained by the force limiter 36. For instance, the discrepancy measure and, thus, the windup force signal 52 may be based on a difference between the set force 34 and the effectively set force 38 or may be, more generally speaking, based on a, e.g. linear or non-linear, combination of the set force 34 and the effectively set force 38 so as to be indicative of the windup. In other words, the windup force signal 52 renders any windup detectable, or is indicative of windup. According to aspect 2, additionally to aspect 1 , the motor controller may be configured to form the effective correction force signal 50 based on a difference between the externally controlled force 22 and the effectively set force 38, and / or the windup force signal 52 based on a difference between the correction force 30 and the effective correction force signal 50. According to aspect 3, additionally to aspect 1 or 2, the correction force determiner 42 may be configured to determine the correction force 30 by subjecting a template of most recent sample values of the motor encoder signal 24, the windup force signal 52 and the effective correction force signal 50 to a scalar function. According to aspect 4, additionally to any of aspects 1 to 3, the correction force determiner may be configured to determine the correction force ( ™) by 1) separately determining - from the motor encoder signal (24) a first correction force contribution signal (54a) which is indicative of an acceleration, - from the effective correction force signal (50) a second correction force contribution signal (54b); and - from the windup force signal (52) an instability-avoidance signal (54c); and 2) combining the first correction force contribution signal (54a), the second correction force contribution signal (54b) and the instability-avoidance signal (54c) to obtain the correction force (30).
[0144] According to aspect 5, additionally to aspect 4, the motor controller may be configured to determine the first correction force contribution signal 54a from the motor encoder signal 24 by use of a first filter, determine the second correction force contribution signal 54b from the effective correction force signal (50) by use of a second filter; and determine the instability- avoidance signal 54c from the windup force signal 52 by use of a third filter. Optionally, the first filter, the second filter and the third filter may be, or may comprise, FIR filters. The first filter may exceed the second and third filters in filter kernel size. According to aspect 6, additionally to aspect 4 or 5, the motor controller may be configured to determine the first correction force contribution signal 54a from the motor encoder signal 24 by use of a first filter, wherein the first filter is a FIR filter, and designed so that a predetermined FIR filter tap’s coefficient 100 of the first filter equals a negative sum over all coefficients of the first filter except the predetermined FIR filter tap’s coefficient 100 so that the sum over all coefficients of the first filter is zero, or deviates from the negative sum over all coefficients of the first filter except the predetermined FIR filter tap’s coefficient 100 by an amount small enough so that an absolute of the sum over all coefficients of the first filter is smaller than 1 % of an absolute of the, in magnitude, greatest coefficient among the coefficients of the first filter, and a first moment of the coefficients of the first filter about the predetermined FIR filter tap is zero or an absolute of the first moment of the coefficients of the first filter about the predetermined FIR filter tap is smaller than 10% of an absolute of the, in magnitude, greatest coefficient among the coefficients of the first filter. According to aspect 6, additionally to aspect6, the predetermined FIR filter tap may be a zero-delay filter tap. According to aspect 8, additionally to aspect 7, a one-tap-delay FIR filter tap’s coefficient 106 of the first filter may be set so as to correspond to minus the first moment of the coefficients of the first filter, except the one-tap-delay FIR filter tap’s coefficient, about the predetermined FIR filter tap. According to aspect 9, additionally to aspect 8, a two-tap-delay FIR filter tap’s coefficient 108 and the zero-delay FIR filter tap’s coefficient 100 of the first filter may be of equal sign and opposite in sign relative to the one-tap-delay FIR filter tap’s coefficient 106 with an absolute of a sum over the two-tap-delay FIR filter tap’s coefficient 108, the zero-delay FIR filter tap’s coefficient 100 and the one-tap-delay FIR filter tap’s coefficient 106 being smaller than 10% of an absolute of the one-tap-delay FIR filter tap’s coefficient 106, and coefficients of the first filter, other than the two-tap-delay FIR filter tap’s coefficient 108, the one-tap-delay FIR filter tap’s coefficient 106 and the zero-delay FIR filter tap’s coefficient, form a monotonic function, monotonically decreasing away from the two- tap-delay FIR filter tap’s coefficient 108. However, since the calculation of long Fl Rs is tedious and memory consuming, instead of forming the first filter using a pure FIR only, according to an alternative approach, the first filter is built as a combination of an FIR filter and an HR filter. The FIR filter component of the first filter may correspond to the first three FIR filter tap’s coefficients described herein, i.e. corresponding to the aspects 7 - 9. The FIR filter component of the first filter would then, however, have a length of 3 only. The second component would be a one-tap HR that HR filters the motor encoder signal 24 with the output being added to the FIR component’s output signal. That is, FIR filter and HR filter components of the first would be connected in parallel with their filtered output signals being added, wherein the FIR filter component assumes the tasks outlined above, and the HR filter component assumes the role of the erstwhile FIR filter tail, i.e. it approximates the quadratic formula of the erstwhile tail of the motor position FIR. Thus, in above description, TorqueCorrection would become TorqueCorrection = MotorPositionFIR ■ (last 3 motor encoder readings) + CorrectionCompensationFIR ■ (last 8 Effectivecorrection values) + WindupFIR ■ [(last 8 Torque correction values) - (last 8 Effectivecorrection values)] + MotorPositionllR with MotorPositionllR = HR_Amplitude * last_motor_encoder_reading + (1 -MPosIIRweight) * MotorPositionllR, where said weight may be between 1 / 6 and 1 / 20 such as 1 / 11. Naturally, a x-tap HF filter with x>1 might be used alternatively. Further, as said, the FIR filter component of the first filter may correspond to the first three FIR filter tap’s coefficients described herein, i.e. corresponding to the aspects 7 - 9, but in order to account for the HR term, a slight variation may takes place For instance, A “=0(l — w)n= “ is the sum of the HR component or term. Thus, the zero-order FIR filter tap’s coefficient, MotorPositionFIR[2], since the motor position FIR has three coefficients, would be calculated as MotorPositionFIR[2]= -HRAmplitude / MPoslIRweight- MotorPositionFIR[1]-MotorPositionFIR[0] with IIRAmplitude being an amplitude of the HR filter for multiplication with the most recent motor encoder signal sample and MPosIIRweight being the weight for weighting the previous HR filter output obtained for the previous motor encoder signal sample before adding the corresponding product (weight times previous HR filter output ) to the product of amplitude and current or most recent motor encoder signal sample. Similar adaptations may be done for the implementing the first moment rule which is attained by the one-tap-delay FIR filter tap’s coefficient. To account for the additional effect of the HR, we weigh the HR coefficients with their time, i.e. their index. Using the identity we can calculate the amount to be discounted by evaluating the term at n=1 and n=infinity. So, the new zero torque condition is:
[0145] 1 — MPosIIRweight
[0146] = —2 MotorPositionFIR[0] — IIRAmplitude
[0147] Note that MotorPositionFIR\I\ might be computed prior to MotorPositionFIR[2],
[0148] MotorPositionFIR[0] might be set first, with then computing MotorPositionFIR[l] based on MotorPositionFIR[0] , MPosIIRweight and IIRAmplitude as indicated and then computing Motor PositionFIR[2] based on Motor PositionFIR[l], Motor PositionFIR[0] , MPosIIRweight and IIRAmplitude as indicated. MPosIIRweight and IIRAmplitude might be subject to training or might be heuristically determined so as to take over the task of the erstwhile FIR filter’s tail. Fig. 4 shows the modification compared to Fig. 1 when using a one-tap HR filter component 48a2 for the first filter 48a, in addition to the FIR filter component 48ai which is, then, only 3 taps long, with an adder 402 combining the HR filter’s and the FIR filter’s outputs. The HR filter 48a2 receives the motor encoder signal 24 and feeds its output to the other input, other than the one fed by the FIR filtered output signal. In the inner, the HR filter computes its output MotorPositionllR according to MotorPositionllR = HR_Amplitude * last_motor_encoder_reading + (1 -MPosIIRweight) * MotorPositionllR wherein in the figure last_motor_encoder_reading is the inbound current motor encoder signal sample, HR_Amplitude is indicated by A and MPosIIRweight by w.
[0149] According to aspect 10, additionally to any of aspects 5 to 9, coefficients of the first filter and the second filter may be machine learned using a cost function which depends on at least one or more of a measure for uncompensated collision energy, a measure for temporal duration until the correction force vanishes, a measure for current noise increase imposed by the correction force, a measure of sensitivity against variations of mechanical design parameters, a measure of robustness against Coulomb friction, and a measure of robustness against motor encoder non-linearities. According to aspect 11 , additionally to any of aspects4 to 10, the correction force determiner 42 may be configured to combine the first correction force contribution signal, the second correction force contribution signal and the instability-avoidance signal by forming a summation over the first correction force contribution signal, the second correction force contribution signal and the instabilityavoidance signal. According to aspect 12, additionally to any of aspects 1 to 11 , the force- to-current converter 40 may be configured to determine the current to be applied onto the motor based on the effectively set force using a polynomial function in a force variable which depends on a motor temperature and the effectively set force. According to aspect 13, additionally to any of aspects 1 to 12, the motor may be a rotational electric motor, the shock-induced excess force may be a shock-induced excess torque, the externally controlled force 22 may be a externally controlled torque, the correction force 30 may be a correction torque 30, the effectively set force 38 may be a effectively set torque and the motor encoder signal may be indicative of an angle of a position of a rotor of the motor. According to aspect 14, a motor controller system for controlling a motor has been described, which comprises a motor controller 10 for controlling the motor with compensation against shock-induced excess force depending on an externally controlled force 22 according to any of aspects 1 to 13, and a high-level controller configured to determine the externally controlled force based on an intended movement of an object moved by the motor. According to aspect 15, a motorized System has been described, which comprises a motor 18, and a motor controller 10 for controlling the motor with compensation against shock induced excess force according to any of aspects 1 to 13 or a motor controller system according to aspects 14, and according to aspect 16, a robot comprising a leg or arm rotatable via a gear, a motor for moving the leg or arm via the gear, and a motor controller for controlling the motor with compensation against shock induced excess force onto the gear according to any of aspects 1 to 13 or a motor controller system according to aspect 14.
[0150] Some notes shall be made with respect to the above description. To account for the nearperfect point-symmetry of the I (M) curve, the even powers of the polynomial might be quite useless. Therefore, the above formula of lmo tmight be modified to force point symmetry, so that the above formula would be amended to read:
[0151] Although some aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a feature of a method step. Analogously, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus.
[0152] In particular, above description revealed, and may be used to further defines: a method for controlling a motor with compensation against shock-induced excess force, comprising correcting an externally controlled force 22 by use of a correction force (30) so as to obtain a set force 34, subjecting the set force 34 to a limitation so as to obtain an effectively set force (38); determining a current 28 to be applied onto the motor 18 based on the effectively set force 38; and determining the correction force 30 based on a motor encoder signal of a motor encoder of the motor 18, an effective correction force signal 50 corresponding to a, e.g. linear, combination of two or more of the externally controlled force 22, the correction force 30, the set force 34 and the effectively set force 38, which is indicative of an force correction caused by the motor controller, and a windup force signal 52 corresponding to a, e.g. linear, combination of the effectively set force 38 with one or more of the externally controlled force 22, the correction force 30 and the set force 34, and a computer program having a program code for performing, when running on a computer, such a method as just defined.
[0153] Depending on certain implementation requirements, embodiments of the invention may be implemented in hardware or in software. The implementation may be performed using a digital storage medium, for example a floppy disk, a DVD, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, having electronically readable control signals stored thereon, which cooperate (or are capable of cooperating) with a programmable computer system such that the respective method is performed.
[0154] Some embodiments according to the invention comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that one of the methods described herein is performed. Generally, embodiments of the present invention may be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer. The program code may for example be stored on a machine readable carrier.
[0155] Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier.
[0156] In other words, an embodiment of the inventive method is, therefore, a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer.
[0157] A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer-readable medium) comprising, recorded thereon, the computer program for performing one of the methods described herein. The data carrier, the digital storage medium or the recorded medium are typically tangible and / or non- transitionary.
[0158] A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the methods described herein. The data stream or the sequence of signals may for example be configured to be transferred via a data communication connection, for example via the internet.
[0159] A further embodiment comprises a processing means, for example a computer, or a programmable logic device, configured to or adapted to perform one of the methods described herein.
[0160] A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.
[0161] A further embodiment according to the invention comprises an apparatus or a system configured to transfer (for example, electronically or optically) a computer program for performing one of the methods described herein to a receiver. The receiver may, for example, be a computer, a mobile device, a memory device or the like. The apparatus or system may, for example, comprise a file server for transferring the computer program to the receiver. In some embodiments, a programmable logic device (for example a field programmable gate array) may be used to perform some or all of the functionalities of the methods described herein. In some embodiments, a field programmable gate array may cooperate with a microprocessor in order to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware apparatus.
[0162] The apparatus described herein may be implemented using a hardware apparatus, or using a computer, or using a combination of a hardware apparatus and a computer.
[0163] The apparatus described herein, or any components of the apparatus described herein, may be implemented at least partially in hardware and / or in software.
[0164] The methods described herein may be performed using a hardware apparatus, or using a computer, or using a combination of a hardware apparatus and a computer.
[0165] The above described embodiments are merely illustrative for the principles of the present invention. It is understood that modifications and variations of the arrangements and the details described herein will be apparent to others skilled in the art. It is the intent, therefore, to be limited only by the scope of the impending patent claims and not by the specific details presented by way of description and explanation of the embodiments herein.
[0166] References
[0167] [1] Fabian Just, Kilian Baur, Verena Klamroth-Marganska, Robert Reiner and Geog Router: Motor Inertia Compensation of the ARMin Rehabilitation Robot, ETCH, Zurich, 2016.
Claims
Claims1. Motor controller (10) for controlling a motor with compensation against shock- induced excess force, comprising a corrector (32) configured to correct an externally controlled force (22) by use of a correction force (30) so as to obtain a set force (34), a force limiter (36) configured to subject the set force (34) to a limitation so as to obtain an effectively set force (38); a force-to-current converter (40) configured to determine a current (28) to be applied onto the motor (18) based on the effectively set force (38); and a correction force determiner (42) configured to determine the correction force (30) based on a motor encoder signal of a motor encoder of the motor (18), an effective correction force signal (50) corresponding to a combination of two or more of the externally controlled force (22), the correction force (30), the set force (34) and the effectively set force (38), which is indicative of an force correction caused by the motor controller, and a windup force signal (52) corresponding to a combination of the effectively set force (38) with one or more of the externally controlled force (22), the correction force (30) and the set force (34).
2. Motor controller of claim 1 , configured to formthe effective correction force signal (50) based on a difference between the externally controlled force (22) and the effectively set force (38), and the windup force signal (52) based on a difference between the correction force (30) and the effective correction force signal (50).
3. Motor controller of claim 1 or 2, wherein the correction force determiner (42) is configured to determine the correction force (30) by subjecting a template of most recent sample values of the motor encoder signal (24), the windup force signal (52) and the effective correction force signal (50) to a scalar function.
4. Motor controller of any of claims 1 to 3, wherein the correction force determiner is configured to determine the correction force (TCOrr) by separately determining from the motor encoder signal (24) a first correction force contribution signal (54a) which is indicative of an acceleration, from the effective correction force signal (50) a second correction force contribution signal (54b); and from the windup force signal (52) an instability-avoidance signal (54c); and combining the first correction force contribution signal (54a), the second correction force contribution signal (54b) and the instability-avoidance signal (54c) to obtain the correction force (30).
5. Motor controller of claim 4, configured to determine the first correction force contribution signal (54a) from the motor encoder signal (24) by use of a first filter, determine the second correction force contribution signal (54b) from the effective correction force signal (50) by use of a second filter; anddetermine the instability-avoidance signal (54c) from the windup force signal (52) by use of a third filter; wherein the first filter, the second filter and the third filter are FIR filters, and wherein the first filter exceeds the second and third filters in filter kernel size.
6. Motor controller of claim 4 or 5, configured to determine the first correction force contribution signal (54a) from the motor encoder signal (24) by use of a first filter, wherein the first filter is a FIR filter, and designed so that1) a predetermined FIR filter tap’s coefficient (100) of the first filter equals a negative sum over all coefficients of the first filter except the predetermined FIR filter tap’s coefficient (100) so that the sum over all coefficients of the first filter is zero, or deviates from the negative sum over all coefficients of the first filter except the predetermined FIR filter tap’s coefficient (100) by an amount small enough so that an absolute of the sum over all coefficients of the first filter is smaller than 1% of an absolute of the, in magnitude, greatest coefficient among the coefficients of the first filter, and2) a first moment of the coefficients of the first filter about the predetermined FIR filter tap is zero or an absolute of the first moment of the coefficients of the first filter about the predetermined FIR filter tap is smaller than 10% of an absolute of the, in magnitude, greatest coefficient among the coefficients of the first filter.
7. Motor controller of claim 6, wherein the predetermined FIR filter tap is a zero-delay filter tap.
8. Motor controller of claim 7, whereina one-tap-delay FIR filter tap’s coefficient (106) is set so as to correspond to minus the first moment of the coefficients of the first filter, except the one-tap-delay FIR filter tap’s coefficient, about the predetermined FIR filter tap.
9. Motor controller of claim 8, wherein a two-tap-delay FIR filter tap’s coefficient (108) and the zero-delay FIR filter tap’s coefficient (100) are of equal sign and opposite in sign relative to the one-tap-delay FIR filter tap’s coefficient (106) with an absolute of a sum over the two-tap-delay FIR filter tap’s coefficient (108), the zero-delay FIR filter tap’s coefficient (100) and the one-tap-delay FIR filter tap’s coefficient (106) being smaller than 10% of an absolute of the one-tap-delay FIR filter tap’s coefficient (106), and coefficients of the first filter, other than the two-tap-delay FIR filter tap’s coefficient (108), the one-tap-delay FIR filter tap’s coefficient (106) and the zero-delay FIR filter tap’s coefficient, form a monotonic function, monotonically decreasing away from the two-tap-delay FIR filter tap’s coefficient (108).
10. Motor controller of any of claims 5 to 9, wherein coefficients of the first filter and the second filter are machine learned using a cost function which depends on at least one or more of a measure for uncompensated collision energy, a measure for temporal duration until the correction force vanishes, a measure for current noise increase imposed by the correction force, a measure of sensitivity against variations of mechanical design parameters, a measure of robustness against Coulomb friction, and a measure of robustness against motor encoder non-linearities.11 . Motor controller of any of claims 4 to 10, wherein the correction force determiner (42) is configured to combine the first correction force contribution signal, the second correction force contribution signal and the instabilityavoidance signal by forming a summation over the first correction force contributionsignal, the second correction force contribution signal and the instability-avoidance signal.
12. Motor controller of any of claims 1 to 11 , wherein the force-to-current converter (40) is configured to determine the current to be applied onto the motor based on the effectively set force using a polynomial function in a force variable which depends on a motor temperature and the effectively set force.
13. Motor controller of any of claims 1 to 12, wherein the motor is a rotational electric motor, the shock-induced excess force is a shock-induced excess torque, the externally controlled force (22) is a externally controlled torque, the correction force (30) is a correction torque (30), the effectively set force (38) is a effectively set torque and the motor encoder signal is indicative of an angle of a position of a rotor of the motor.
14. Motor controller system for controlling a motor, comprising a motor controller (10) for controlling the motor with compensation against shock- induced excess force depending on an externally controlled force (22) according to any of claims 1 to 13, and a high-level controller configured to determine the externally controlled force based on an intended movement of an object moved by the motor.
15. Motorized System comprising a motor (18), and a motor controller (10) for controlling the motor with compensation against shock induced excess force according to any of claims 1 to 13 or a motor controller system according to claim 14.
16. Robot comprisinga leg or arm rotatable via a gear, a motor for moving the leg or arm via the gear, and a motor controller for controlling the motor with compensation against shock induced excess force onto the gear according to any of claims 1 to 13 or a motor controller system according to claim 14.
Citation Information
Patent Citations
Method for suppressing speed ripple by using torque compensator based on activation function
US20130113408A1
Control device, control method, and control system
US20210323148A1
Motor controller and motor controlling method
US20230188070A1