Motor control apparatus and motor control method thereof

Disclosed herein are a motor control apparatus and a motor control method thereof. The motor control method includes estimating a current torque of a motor based on dynamics of a body driven by the motor, judging whether the estimated torque is higher than a predetermined torque value, compensating for a velocity profile to drive the motor from the predetermined torque value, upon judging that the estimated torque is higher than the predetermined torque value, and driving the motor using the compensated velocity profile. Thereby, the velocity profile is compensated for in real time, and thus the velocity of the motor is raised while preventing the motor from stepping out.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the priority benefit of Korean Patent Application No. 10-2010-0006682, filed on Jan. 25, 2010 in the Korean Intellectual Property Office, the disclosure of which is incorporated herein by reference.

BACKGROUND

Embodiments relate to a motor control apparatus and a motor control method thereof in which a velocity of a motor is controlled according to a velocity profile to drive the motor.

2. Description of the Related Art

In general, a robot controller to control movement of a robot performs control of a position, a velocity, and an acceleration of a motor provided on a robot joint per control cycle according to data, such as a target position, a target velocity, a target acceleration time, and a target deceleration time input by a user.

Here, the motor of the robot joint is driven according to a velocity profile.

In the velocity profile to drive the motor, a velocity zone is divided into an acceleration section, a constant velocity section, and a deceleration section. The velocity profile is defined as a polynomial expression from the position, the velocity, the acceleration time, and the deceleration time of the motor influencing the drive of the motor.

The motor is driven following the above-defined velocity profile. Further, while the motor is driven, the velocity profile is not changed.

The velocity profile is generated based on parameters, such as the position, the velocity, the acceleration time, and the deceleration time, input by the user.

In case of the velocity of the motor, an allowance torque of the motor tends to decrease as the motor reaches a high velocity region of a velocity-torque curve, generally called an NT-curve. Therefore, in order to stably use the motor in all velocity regions, a load of the motor is adjusted so as to generate only a small torque if the motor is driven within a rated RPM or at a high velocity.

However, motion-related parameters of the robot, such as velocity, acceleration, etc., need to be set such that reliability allowing the robot to stably move within all motion regions in which the robot is movable is assured and particularly, the same reliability is assured under unfavorable conditions, such as a section requiring a high torque due to uniqueness or high inertia.

Among several methods to set the parameters of the robot, the most general method is a method in which the highest velocity is set to a rated RPM of the motor, a velocity profile is generated based on the velocity, and other regions higher than the velocity are excluded.

If the motor is used under the above condition, the motor generates the maximum torque in all velocity regions, and the motor is easy to design and control. Further, since there is a margin from the rated RPM to the maximum RPM region, a region where the velocity is unexpectedly rapidly raised due to uniqueness is included, and thus considerably high reliability is assured.

However, in a normal case, a region higher than the rated RPM is not used, and thus efficiency of the velocity of the motor is considerably low.

SUMMARY

Therefore, it is an aspect to provide a motor control apparatus and a motor control method thereof in which a velocity profile is compensated for in real time using a current torque of a motor estimated from a dynamic model of a body driven by the motor so as to prevent step out of the motor and to raise a velocity of the motor.

In accordance with one aspect, a motor control method includes estimating a current torque of a motor based on dynamics of a body driven by the motor, judging whether or not the estimated torque is higher than a predetermined torque value, compensating for a velocity profile to drive the motor from the predetermined torque value, upon judging that the estimated torque is higher than the predetermined torque value, and driving the motor using the compensated velocity profile.

In the estimation of the torque, the torque of the motor may be calculated by Expression 1 below;
τ=D(q){umlaut over (q)}+h(q,{dot over (q)})+c(q)  Expression 1
here, τ denotes a torque of the motor, q is a position of the motor, {dot over (q)} is a velocity of the motor, {umlaut over (q)} is an acceleration of the motor, D(q) is the sum of moment of inertia of the motor and moment of inertia of the driven body, h(q,q) means the sum of coriolis force and centrifugal force, and c(q) is gravity.

In the judgment as to whether or not the estimated torque is higher than the predetermined torque value, the predetermined torque value may be a torque value corresponding to a velocity value used to estimate the torque on an NT-curve representing the relationship between the velocity and the torque of the motor.

In the compensation of the velocity profile, the velocity profile to drive the motor may be one out of the previous velocity profile used to drive the motor at the previous control cycle and a velocity profile generated from a target position, a target velocity, a target acceleration time, and a target deceleration time input by a user.

The compensation of the velocity profile may include calculating an acceleration of the motor according to the predetermined torque value, calculating a velocity of the motor according to the calculated acceleration, and compensating for the velocity profile using the calculated velocity.

The acceleration of the motor may be calculated by Expression 2 below, and the velocity of the motor may be calculated by Expression 3 below;

The estimation of the torque of the motor may include estimating the torque of the motor per control cycle.

In accordance with another aspect, a motor control method includes receiving a previous position, a previous velocity, and a previous acceleration of a motor provided on an driven body, estimating a current torque of the motor using dynamics of the driven body according to the input data, and driving the motor using different velocity profiles according to the estimated torque of the motor.

The drive of the motor may include comparing the estimated torque of the motor with a predetermined torque value, driving the motor using the previous velocity profile, if, as a result of the comparison, the estimated torque is not higher than the predetermined torque value, and driving the motor using a velocity profile obtained by compensating for the previous velocity profile according to the predetermined torque value, if the estimated torque is higher than the predetermined torque value.

The drive of the motor using the compensated velocity profile may include calculating an acceleration of the motor according to the predetermined torque value, calculating a velocity of the motor according to the calculated acceleration, and compensating for the previous velocity profile using the calculated velocity.

In the drive of the motor, the predetermined torque value may be a torque value corresponding to a velocity value used to estimate the torque on an NT-curve representing the relationship between the velocity and the torque of the motor.

In accordance with a further aspect, a motor control apparatus includes a torque estimation unit to estimate a current torque of a motor based on dynamics of a body driven by the motor, a velocity profile compensation unit to compensate for a velocity profile to drive the motor, a motor drive unit to drive the motor, and a motor control unit to estimate the torque of the motor through the torque estimation unit, to judge whether the estimated torque is higher than a predetermined torque value, to compensate for the velocity profile according to the predetermined torque value through the velocity profile compensation unit, upon judging that the estimated torque is higher than the predetermined torque value, and to drive the motor according to the compensated velocity profile through the motor drive unit.

The motor control unit may calculate an acceleration of the motor according to the predetermined torque value, calculate a velocity of the motor according to the calculated acceleration, and compensate for the velocity profile using the calculated velocity.

The predetermined torque value may be a torque value corresponding to a velocity value used to estimate the torque on an NT-curve representing the relationship between the velocity and the torque of the motor.

The motor control unit may estimate the torque of the motor through the torque estimation unit per control cycle.

The velocity profile to drive the motor may be one out of the previous velocity profile used to drive the motor at the previous control cycle and a velocity profile generated from a target position, a target velocity, a target acceleration time, and a target deceleration time input by a user.

DETAILED DESCRIPTION

Hereinafter, for convenience of description, a humanoid robot having robot joints driven by motors will be described as a driven body to which a motor control apparatus in accordance with one embodiment is applied. However, the driven body may be an industrial robot instead of the humanoid robot, or may be other bodies driven by motors.

FIG. 1is a perspective view illustrating an external appearance of a robot to which the motor control apparatus in accordance with the embodiment is applied.

As shown inFIG. 1, a robot100in accordance with this embodiment is a bipedal robot which walks erect using two legs110L and110R in the same manner as a human, and includes an upper body101including a torso102, a head104, and two arms106L and106R, and a lower body103including the two legs110L and110R.

The upper body101of the robot100includes the torso102, the head104connected to the upper portion of the torso102through a neck120, the two arms106L and106R connected to both sides of the upper portion of the torso102through shoulders114L and114R, and hands108L and108R connected to the tips of the two arms106L and106R.

The lower body103of the robot100includes the two legs110L and110R connected to both sides of the lower portion of the torso102of the upper body101, and feet112L and112R connected to the tips of the two legs110L and110R.

Here, “R” and “L” respectively represent the right side and the left side of the robot100, and “COG” represents the center of gravity of the robot100.

FIG. 2is a view illustrating structures of main joints of the robot ofFIG. 1.

As shown inFIG. 2, a pose sensor14is installed on the torso102of the robot100. The pose sensor14detects a tilt angle, i.e., a gradient of the upper body101relative to a vertical axis, and an angular velocity thereof, and generates pose data based on the detected tilt angle and angular velocity.

A waist joint unit15having 1 degree of freedom (DOF) in the yaw direction to rotate the upper body101is installed on the torso101.

Further, cameras41to capture a surrounding image and microphones42for user voice input are installed on the head104of the robot100.

The head104is connected to the torso102of the upper body101through a neck joint unit280. The neck joint unit280includes a rotary joint281rotated in the yaw direction (in the direction of the Z-axis), a rotary joint282rotated in the pitch direction (in the direction of the Y-axis), and a rotary joint283rotated in the roll direction (in the direction of the X-axis), and thus has 3 DOFs.

Motors to rotate the head104are respectively connected to the rotary joints281,282, and283of the neck joint unit280.

Each of the two arms106L and106R of the robot100includes an upper arm link31, a lower arm link32, and a hand33.

The upper arm links31are connected to the upper body101through shoulder joint units250L and250R, the upper arm links31and the lower arm links32are connected to each other through elbow joint units260, and the lower arm links32and the hands33are connected to each other through wrist joint units270.

The shoulder joint units250L and250R are installed at both sides of the torso102of the upper body101, and connect the two arms106L and106R to the torso102of the upper body101.

Each of the elbow joint units260includes a rotary joint261rotated in the pitch direction and a rotary joint262rotated in the yaw direction, and thus has 2 DOFs.

Each of the wrist joint units270includes a rotary joint271rotated in the pitch direction and a rotary joint272rotated in the roll direction, and thus has 2 DOFs.

Five fingers33aare installed on each of the hands33. A plurality of joints (not shown) driven by motors may be installed on each of the fingers33a. The fingers33aperform various motions, such as gripping of a body or pointing in a specific direction, in connection with movements of the arms106.

Further, each of the two legs110L and110R of the robot100includes a thigh link21, a calf link22, and a foot112L or112R.

The thigh links21are connected to the torso102of the upper body101through hip joint units210, the thigh links21and the calf links22are connected to each other through knee joint units220, and the calf links22and the feet112L and112R are connected to each other through ankle joint units230.

Each of the hip joint units210includes a rotary joint211rotated in the yaw direction (in the direction of the Z-axis), a rotary joint212rotated in the pitch direction (in the direction of the Y-axis), and a rotary joint213rotated in the roll direction (in the direction of the X-axis), and thus has 3 DOFs.

Each of the knee joint units220includes a rotary joint221rotated in the pitch direction, and thus has 1 DOF.

Each of the ankle joint units230includes a rotary joint (ankle pitch joint)231rotated in the pitch direction and a rotary joint232(ankle roll joint) rotated in the roll direction, and thus has 2 DOFs.

Since 6 rotary joints of the hip joint units210, the knee joint units220, and the ankle joint units230are provided on each of the two legs110L and110R, total 12 rotary joints are provided on the two legs110L and110R.

A multi-axis force and torque (F/T) sensor24is installed between the foot112L or112R and the ankle joint unit230of each of the two legs110L and110R. The F/T sensor24measures three-directional components Mx, My, and Mz of moment and three-directional components Fx, Fy, and Fz of force transmitted from each of the feet112L and112R, thus detecting whether or not each of the feet112L and112R contacts the ground and load applied to the feet112L and112R.

Although not shown in the drawings, motors to respectively drive the rotary joints are installed on the robot100. The motor control apparatus in accordance with the embodiment properly controls such a motor to allow robot100to achieve various motions.

FIG. 3is a control block diagram of the motor control apparatus in accordance with the embodiment.

As shown inFIG. 3, the motor control apparatus in accordance with the embodiment includes an input unit300, a motor control unit310, a velocity profile generation unit320, a torque estimation unit330, a velocity profile compensation unit340, and a motor drive unit350.

The input unit300is electrically connected to the motor control unit310, which performs general control of a motor360. However, it is understood that the input unit300may be optically connected to the motor control unit310. The input unit300receives velocity profile generation data to generate a velocity profile, input by a user.

The velocity profile generation data may include a position, a velocity, an acceleration time, and a deceleration time of the motor360. The velocity profile generation data may further include an acceleration and a deceleration instead of the acceleration time and the deceleration time.

The velocity profile expresses a movement amount of a motor to be moved per control cycle to drive the motor. The motor receives a moving position thereof per control cycle by integrating such a value, thus being driven. That is, the velocity profile expresses a series of velocity values of the motor, to move the robot joint from a start position to a target position, at respective times.

Further, the velocity profile generation unit320, the torque estimation unit330, the velocity profile compensation unit340, and the motor drive unit350are electrically connected to the motor control unit310.

The velocity profile generation unit320may generate a velocity profile from the position, the velocity, the acceleration time, and the deceleration time of the motor360input through the input unit300according to a control signal of the motor control unit310.

The torque estimation unit330estimates a current torque of the motor360using a dynamic model of a robot which is driven by the motor360according to the control signal of the motor control unit310.

The current torque τ of the motor360using the dynamic model of the robot is defined by Expression 1 below.
τ==D(q){umlaut over (q)}+h(q,{dot over (q)})+c(q)  Expression 1
Here, τ is a torque of the motor, q is a position of the motor, {dot over (q)} is a velocity of the motor, {umlaut over (q)} is an acceleration of the motor, D(q) is the sum of moment of inertia of the motor and moment of inertia of the robot joint, h(q,q) is the sum of coriolis force and centrifugal force, and c(q) is gravity.

Respective terms represent amounts of torque according to acceleration, velocity, and position, and any additional term, such as frictional force, may be considered.

The velocity profile compensation unit340calculates an acceleration according to a torque τNT—curveon an NT-curve when the current torque τ of the motor360estimated using the dynamic model of the robot according to the control signal of the motor control unit310, calculates a velocity from the calculated acceleration, and compensates for the previous velocity profile using the velocity.

Here, the acceleration {umlaut over (q)} according to the torque τNT—curveon the NT-curve is an acceleration at which the motor360may move per control cycle, and is calculated by Expression 2 below.

q¨=τNT⁢_⁢curve-h⁡(q,q.)+c⁡(q)D⁡(q)Expression⁢⁢2
The velocity {dot over (q)} of the motor360calculated from the acceleration {umlaut over (q)} of the motor360calculated through Expression 2 is the maximum velocity at which the motor360may move, and is calculated by Expression 3 below.

Consequently, the velocity profile compensation unit340compensates for the previous velocity profile using the velocity of the motor360calculated through Expression 3.

That is, the velocity profile compensation unit340compensates for the previous velocity profile to have the velocity value calculated through Expression 3 instead of the velocity value of the previous velocity profile at the current control cycle. Here, the compensated velocity profile is a velocity profile in which velocity values at respective times are compensated for to have the same target position and target velocity as those of the previous velocity profile.

The motor drive unit350drives the motor360using the previous velocity profile or the compensated velocity profile according to the control signal of the motor control unit310. Thereby, the motor360is driven following the previous velocity profile or the compensated velocity profile during one control cycle. That is, the motor360is driven so that the velocity of the motor360reaches the velocity value of the previous velocity profile corresponding to the current control cycle or the velocity value of the compensated velocity profile.

The motor control unit310provides the position, the velocity, the acceleration time, and the deceleration time, input through the input unit300, to the velocity profile generation unit320, and generates the velocity profile through the velocity profile generation unit320.

As described above, such a velocity profile represents velocity values at respective times satisfying the target position, the target velocity, the target acceleration time, and the target deceleration time, input through the input unit300.

Further, the motor control unit310estimates the current torque of the motor360per control cycle using the dynamic model of the robot driven by the motor360through the torque estimation unit330.

Further, the motor control unit310compares the torque estimated through the torque estimation unit330with a predetermined torque value, and compensates for the velocity profile based on the predetermined torque through the velocity profile compensation unit340, if the estimated torque is greater than the predetermined torque.

Here, the predetermined torque value is a torque value on the NT-curve at the current control cycle. That is, the predetermined torque value is a torque value corresponding to a velocity used to estimate the torque on the NT-curve representing the relationship between the velocity N and the torque T of the motor360. The NT-curve is predetermined.

That is, the motor control unit310compares the current torque of the motor360estimated using the dynamic model of the robot with the torque value on the NT-curve corresponding to the current torque, and compensates for the velocity profile based on the torque value on the NT-curve such that the torque is limited if the estimated torque is greater than the torque value on the NT-curve.

Further, the motor control unit310controls the motor drive unit350such that the motor360is driven according to the compensated velocity profile. That is, the motor control unit310drives the motor360such that the velocity of the motor360reaches a velocity value on the compensated velocity profile corresponding to the current control cycle.

FIG. 4illustrates a velocity profile generated according to data input by a user in the motor control apparatus in accordance with the embodiment.FIG. 5illustrates velocity-torque curves before and after expansion in the motor control apparatus in accordance with the embodiment.

As shown inFIG. 4, a trapezoidal velocity profile requires constant current during acceleration and deceleration and has a short time to reach a target position, and thus is mainly used.

The velocity profile of the motor360is formed in a trapezoidal shape including an acceleration section Tacc, a constant velocity section Tcon, and a deceleration section Tdecaccording to the position, the velocity, the acceleration time, and the deceleration time of the motor360.

Set-up of the acceleration section Taccand the deceleration section Tdecserves to prevent step out of the motor due to rotation according to the value of the highest velocity, and set values thereof are important. When the acceleration time is excessively long, a constant velocity operation time becomes short, and at this time, the velocity of the motor becomes slow. The position of the motor is expressed by dimensions, and the acceleration time and the deceleration time thereof are generally set to the same value.

The most important factor in the operation of the motor is to prevent of the motor from stepping out during operation. Therefore, the highest velocity of the motor is generally set to a value not exceeding a rated RPM.

A solid line represents a conventional velocity profile generated by setting the highest velocity V′ to the rated RPM.

On the other hand, a dotted line represents a velocity profile generated by raising the highest velocity V to a velocity within an over-drive region, which is a velocity region higher than the maximum RPM. That is, the velocity profile represented by the dotted line is obtained by adjusting only the velocity to be higher than that of the velocity profile represented by the solid line. The reason why the step out of the motor is prevented even though the motor is driven using the velocity profile represented by the dotted line is that, in the embodiment of the present invention, the current torque of the motor is estimated using a dynamic equation of the robot per control cycle, and the previous velocity profile is compensated for in real time, if the estimated torque exceeds the predetermined torque value.

InFIG. 4, movement amounts of the motor, i.e., respective dimensions of trapezoidal shapes, in the velocity profile represented by the dotted line and the velocity profile represented by the solid line are the same.

In the embodiment, the motor360is driven at an initial state using the velocity profile represented by the dotted line, judgment as to whether or not the current torque of the motor360, estimated using the dynamic equation of the robot, is excessive by comparing the current torque with the predetermined torque value is carried out whenever the control cycle is changed, the velocity profile represented by the dotted line is compensated for to limit the torque value, if it is judged that the estimated torque is excessive, and then the motor360is driven using the compensated velocity profile.

As shown inFIG. 5, as the velocity increases, the torque generated from the motor360is reduced, and thus the motor360is overloaded and step out of the motor360may be generated.

InFIG. 5, a thin solid line represents a standard NT-curve in which the highest velocity is limited to a rated RPM. Since, in the standard NT-curve, the highest velocity is limited to the rated RPM, even though the velocity of the motor360is unexpectedly raised to be higher than the rated RPM, step out of the motor360is not generated up to a fixed level.

However, since a region higher than the rated RPM is not generally used, the motor360is driven in a relatively low velocity region.

On the other hand, a thick solid line represents an NT-curve extended from the standard NT-curve. Since, in the extended NT-curve, torque is lowered in a velocity region prior to the maximum RPM but the highest velocity is extended to a velocity region higher than the maximum RPM, the motor360may be driven in a relatively high velocity region.

In the embodiment, if the torque of the motor360estimated using the dynamic equation exceeds the predetermined torque value, the velocity profile is compensated for in real time and the motor360is driven according to the compensated velocity profile, and thus step out of the motor360is not generated.

That is, in the embodiment, the torque of the motor360is estimated using the dynamic equation of the robot per control cycle, the estimated torque is compared with the torque value on the extended NT-curve ofFIG. 5, the velocity profile is compensated for according to the torque value on the extended NT-curve to limit the torque, if the current torque of the motor360exceeds the torque value on the extended NT-curve, and the motor360is driven according to the compensated velocity profile, thereby preventing from the motor360stepping out.

FIG. 6illustrates a compensated velocity profile in the motor control apparatus in accordance with the embodiment.

As shown inFIG. 6, a dotted line represents a velocity profile prior to compensation, and a solid line represents a compensated velocity profile.

It is noted that in the compensated velocity profile represented by the solid line, high velocity regions, expressed by circles shown in a chain double-dashed line, are mainly compensated for, compared with the velocity profile prior to compensation represented by the dotted line. This is caused by decrease of the torque as the velocity is closer to the high velocity region, as shown inFIG. 5.

That is, when the velocity is changed from the acceleration section to the constant velocity section and when the velocity is changed from the constant velocity section to the deceleration section, as expressed by the circles shown in the chain double-dashed line, compensation for the velocity profile is mainly achieved. Here, it is noted that the velocity of the compensated velocity profile is lower than the velocity of the velocity profile prior to compensation for the restricted times corresponding to the circles shown in the chain double-dashed line.

More specifically with reference toFIG. 6, before the motor360reaches the region shown in the chain double-dashed line in which the velocity is changed from the acceleration section to the constant velocity section, the motor360is driven following the velocity profile prior to compensation represented by the dotted line.

This means that the torque of the motor360estimated based on the dynamic equation of the robot does not exceed the torque value on the NT-curve ofFIG. 5having the velocity corresponding thereto before the motor360reaches the region in which the velocity is changed from the acceleration section to the constant velocity section.

Then, when the motor360reaches the region in which the velocity is changed from the acceleration section to the constant velocity section, the motor360is driven using the compensated velocity profile instead of the velocity profile prior to compensation represented by the dotted line.

This means that the torque of the motor360estimated based on the dynamic equation of the robot exceeds the torque value on the NT-curve ofFIG. 5having the velocity corresponding thereto in the region in which the velocity is changed from the acceleration section to the constant velocity section.

Further, the compensated velocity profile is made by reflecting the velocity value calculated from the torque value on the NT-curve on the velocity profile prior to compensation represented by the dotted line (with reference to the velocity profile represented by the solid line). Here, the compensated velocity profile may compensate for the velocity profile prior to compensation represented by the dotted line for all time sections, or may compensate for the velocity profile prior to compensation represented by the dotted line only for time sections which will progress thereafter, except for the time sections which progressed already.

FIG. 7is a flow chart illustrating a motor control method in accordance with one embodiment.

With reference toFIG. 7, the motor control unit310receives velocity profile generation data, such as a position, a velocity, an acceleration time, and a deceleration time of the motor360, input by a user through the input unit300(operation400).

When the motor control unit310receives the position, the velocity, the acceleration time, and the deceleration time of the motor360, input by the user, the motor control unit310controls the velocity profile generation unit320to generate a velocity profile from the position, the velocity, the acceleration time, and the deceleration time of the motor360(operation401).

After the velocity profile is generated, the motor control unit310estimates a torque τ of the motor360using a dynamic model of a robot through the torque estimation unit330(operation402). Here, the torque τ of the motor360is calculated by Expression 1 below.
τ=D(q){umlaut over (q)}+h(q,{dot over (q)})+c(q)  Expression 1
Here, τ is a torque of the motor, q is a position of the motor, {dot over (q)} is a velocity of the motor, {umlaut over (q)} is an acceleration of the motor, D(q) is the sum of moment of inertia of the motor and moment of inertia of the robot joint, h(q,q) is the sum of coriolis force and centrifugal force, and c(q) is gravity.

After the torque τ of the motor360is estimated, the motor control unit310compares the estimated torque τ with a predetermined torque, i.e., a torque τNT—curveon the NT-curve, and judges whether the estimated torque τ exceeds the torque τNT—curveon the NT-curve (operation403).

As a result of operation403, if it is judged that the estimated torque τ is less than the torque τNT—curveon the NT-curve, the motor360is driven according to the previous velocity profile (operation404). Here, the previous velocity profile is the velocity profile generated during operation401at an initial stage, and is the velocity profile used at the previous control cycle if there is a compensated velocity profile. Thereafter, the method is fed back to operation402, and then the following operations are performed.

On the other hand, as the result of operation403, if it is judged that the estimated torque τ exceeds the torque τNT—curveon the NT-curve, an acceleration of the motor360is calculated using the torque τNT—curveon the NT-curve to limit the torque of the motor360to the torque τNT—curveon the NT-curve (operation405), and a velocity of the motor360is calculated using the calculated acceleration (operation406).

The acceleration {umlaut over (q)} of the motor360calculated from the torque τNT—curveon an NT-curve is the maximum acceleration at which the motor360may move per control cycle, and is calculated by Expression 2 below.

Further, the velocity {dot over (q)} of the motor360calculated from the calculated acceleration {umlaut over (q)} of the motor360is the maximum velocity which the motor360may generate, and is calculated by Expression 3 below.

Consequently, the velocity profile generated during operation401using Expression 3 is compensated for in real time, thereby being capable of driving the robot with the desired maximum efficiency.

After the velocity of the motor360according to the torque τNT—curveon an NT-curve is calculated, the motor control unit310controls the velocity profile compensation unit340to compensate for the velocity profile generated during operation401using the calculated velocity (operation407).

Thereafter, the motor control unit310controls the motor drive unit350to drive the motor360using the compensated velocity profile (operation408). Thereafter, the method is fed back to operation402, and the following operations are performed.

As is apparent from the above description, in a motor control apparatus and a motor control method thereof in accordance with one embodiment, a velocity profile to drive a motor is compensated for in real time using a current torque of the motor estimated from a dynamic model of a body driven by the motor, thereby being capable of driving the motor at the maximum velocity while preventing step out of the motor and thus raising the velocity of the motor.