Abstract:
A control method for an haptic device is provided with particular attention to motor control amplifiers exploiting the inate motor dynamics of DC motors. The control method encompasses a digital and analog circuit. In the digital circuit, a command voltage is determined by a digital controller utilizing sensed motion information of the haptic device and a motion command signal. In the analog circuit, an amplifier applies a voltage to an electrical DC motor. The applied voltage incorporates the determined command voltage from the digital controller and a voltage to reduce the electrical dynamics of the electrical DC motor.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims priority from U.S. Provisional Patent Application 61/338,271 filed Feb. 16, 2010, which is incorporated herein by reference. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The invention relates to haptics, robotics and motor control. In particular, the invention relates to motor control amplifiers exploiting the inate motor dynamics of DC motors. 
       BACKGROUND OF THE INVENTION 
       [0003]    Haptic interfaces allow users to feel virtual or remote environments by interacting with a robotic master device coupled to a computer simulation or robotic slave. The effective rendition of interactions ranging from free motion to rigid contact with a virtual surface is a central goal in haptic simulation. Two types of interfaces are commonly discussed, admittance and impedance, describing the causality of the user interaction. The invention is concerned with impedance-type haptic devices which try to accomplish this by producing forces in response to contacts in the virtual environment as a result of motion caused by the user. In the case of free motion, these devices work very well, since they are generally designed to be easily back-driven by the user. Stable simulation of high-stiffness contact, on the other hand, remains a challenge. The present invention addresses this challenge. 
       SUMMARY OF THE INVENTION 
       [0004]    The present invention pertains to methods of controlling an haptic device with particular attention to motor control amplifiers exploiting the inate motor dynamics of DC motors (linear or rotary motors). The control method encompasses a digital and analog circuit. In the digital circuit, a command voltage is determined by a digital controller utilizing sensed motion information of the haptic device and a motion command signal. In the analog circuit, an amplifier applies a voltage to an electrical DC motor. The applied voltage incorporates the determined command voltage from the digital controller and a to voltage to reduce the electrical dynamics of the electrical DC motor (i.e. resistance and/or inductance). The electrical dynamics of the DC motor can be reduced by a voltage according to (i) a positive current feedback voltage, (ii) a positive feedback compensator, or (iii) a negative impedance convertor. Exemplary descriptions are included pertaining to rotary motor, but are not limited to these type of motors as they can also be applied to linear motors. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]      FIG. 1  shows according to an exemplary embodiment of the invention the mapping of motor inductance and residual resistance from the electrical domain to the mechanical domain. 
           [0006]      FIG. 2  shows according to an exemplary embodiment of the invention 3-phase BLDC motor windings in WYE configuration. 
           [0007]      FIG. 3  shows according to an exemplary embodiment of the invention frequency-dependant rendered stiffness of the combined spring drive and controller. The unmodified motor dynamics (dotted curve) are included for comparison. 
           [0008]      FIG. 4  shows according to an exemplary embodiment of the invention a purely motion based virtual environment-device interaction. 
           [0009]      FIG. 5  shows according to an exemplary embodiment of the invention a system block diagram: A drift-compensating mid-level controller interfacing the quasi-static environment to the device, which is operated as a motion source. 
           [0010]      FIG. 6  shows according to an exemplary embodiment of the invention cartesian stiffness ellipses K x   inv  and K x   trans  with α=λ min [(JJ T )−1] for a 2-DOF manipulator (PHANTOM with locked base joint). 
       
    
    
     DETAILED DESCRIPTION 
     1. Spring Drive 
       [0011]    The use of a voltage motor drive with resistive or resistive and inductive load compensation, which we will refer to as a spring drive for brevity, improves the haptic rendering of rigid contact when compared to standard current drive motor amplifiers. The key idea underlying this improvement is slowing the electrical dynamics and allowing the inductance to be utilized as a high-stiffness haptic coupling. This concept and the corresponding notation are covered briefly in this section. 
         [0012]    The electrical dynamics of a typical brushed dc motor are 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       e 
                       A 
                     
                      
                     
                       ( 
                       t 
                       ) 
                     
                   
                   = 
                   
                     
                       Ri 
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                     + 
                     
                       L 
                        
                       
                         
                            
                           
                             i 
                              
                             
                               ( 
                               t 
                               ) 
                             
                           
                         
                         
                            
                           t 
                         
                       
                     
                     + 
                     
                       
                         e 
                         B 
                       
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                   
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
         [0000]    with coupling equations: 
         [0000]        e   B ( t )= k   T {dot over (θ)}( t )  (2)
 
         [0000]      τ( t )= k   T   i ( t ),  (3)
 
         [0000]    where e A  is the applied voltage, e B  is the back-EMF, k T  is the torque/speed constant, τ is the motor torque, i is the winding current, {dot over (θ)} is the rotor velocity, and R and L are the winding resistance and inductance, respectively. To pursue a haptic perspective on the effects of driving a motor with the spring drive, it is useful to interpret R and L as an equivalent mechanical spring K L   
         [0000]    
       
         
           
             
               
                 
                   
                     K 
                     L 
                   
                   = 
                   
                     
                       k 
                       T 
                       2 
                     
                     L 
                   
                 
               
               
                 
                   ( 
                   4 
                   ) 
                 
               
             
           
         
       
     
         [0000]    and damper B R , 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       B 
                       R 
                     
                     = 
                     
                       
                         k 
                         T 
                         2 
                       
                       R 
                     
                   
                   , 
                 
               
               
                 
                   ( 
                   5 
                   ) 
                 
               
             
           
         
       
     
         [0000]    where K L  and B R  are connected in series. The spring drive approach couples the haptic device to the virtual environment through K L , which is available at all frequencies, inherently stable, and very stiff for small L. It does this by eliminating the series B R  through cancellation the winding resistance. 
         [0013]    Resistance cancellation is accomplished by setting 
         [0000]        e   A   ={circumflex over (R)}i+e   W   (6)
 
         [0000]    where {circumflex over (R)} is a conservative estimate of R. This effectively cancels the voltage drop across the winding resistance, while allowing additional voltage inputs e W . Since the motor resistance R varies with temperature and brush commutation, a residual uncancelled resistance 
         [0000]        dR ( T ,θ)= R ( T ,θ)− {circumflex over (R)},   (7)
 
         [0000]    will remain. It corresponds to the residual series damper 
         [0000]    
       
         
           
             
               
                 
                   
                     B 
                     dR 
                   
                   = 
                   
                     
                       
                         k 
                         T 
                         2 
                       
                       
                          
                         R 
                       
                     
                     . 
                   
                 
               
               
                 
                   ( 
                   8 
                   ) 
                 
               
             
           
         
       
     
         [0014]      FIG. 1  shows the mapping of winding inductance L and residual resistance dR into the mechanical domain, leaving {circumflex over (R)} to be canceled by Equation 6. By the electromechanical coupling (Equation 2), the intermediate voltages e W  and e S  relate to the velocities {dot over (θ)} W  and {dot over (θ)} S , respectively; where e W  is the applied node voltage between the series resistances {circumflex over (R)} and dR, e S  is the node voltage between R and L, {dot over (θ)} W  is the velocity of the setpoint of the mechanical equivalent series spring-damper, and {dot over (θ)} S  is the velocity of the connection point between the series spring and damper. With the inductance and residual resistance interpreted in the physical domain, voltage commands to the spring drive are equivalent to velocity commands to the set-point of the series spring-residual damper 
         [0000]        e   W   =k   T θ W .  (9)
 
         [0015]    Therefore, the spring drive operates the dc motor as an approximate motion source. This is in contrast with the current drive motor amplifiers typically used in haptic devices, which speed up the electrical dynamics and operate the motor as a torque source. By recasting the motor as a motion source, it becomes necessary to design the digital controller as a motion controller, again in contrast to the impedance control typically paired with the current drive. 
         [0016]    It is important to note that L may be canceled in addition to R, effectively increasing the stiffness K L . In this case (Equation 6) becomes 
         [0000]    
       
         
           
             
               
                 
                   
                     e 
                     A 
                   
                   = 
                   
                     
                       
                         R 
                         ^ 
                       
                        
                       i 
                     
                     + 
                     
                       
                         L 
                         ^ 
                       
                        
                       
                         
                            
                           
                             i 
                              
                             
                               ( 
                               t 
                               ) 
                             
                           
                         
                         
                            
                           t 
                         
                       
                     
                     + 
                     
                       e 
                       W 
                     
                   
                 
               
               
                 
                   ( 
                   10 
                   ) 
                 
               
             
           
         
       
     
         [0000]    where {circumflex over (L)} is an estimate of L. 
       1.1. Spring Drive Implementation 
       [0017]    Implementation of Equation 6 may be realized via various analog circuit architectures. One option is to use a sense resistor to measure current through the motor, apply a gain of {circumflex over (R)} to the resulting voltage signal, and use a positive feedback loop to route this signal to the input of a suitable voltage amplifier that drives the motor. The command signal e W  is summed with the current feedback signal to produce e A , which is the input to the voltage amplifier. To add cancellation of L, the derivative term 
         [0000]    
       
         
           
             
               L 
               ^ 
             
              
             
               
                  
                 
                   i 
                    
                   
                     ( 
                     t 
                     ) 
                   
                 
               
               
                  
                 t 
               
             
           
         
       
     
         [0000]    is added to the positive current feedback path. 
         [0018]    Another option is to employ a negative impedance converter (NIC). A NIC is an analog op-amp circuit that acts like a negative load. Here, a power op-amp NIC with an effective impedance of −{circumflex over (R)} or −({circumflex over (R)}+{circumflex over (L)} S ) is used to drive the motor. 
       2. Brushless DC Motor 
       [0019]    The compensation of brushed DC motor dynamics described above utilizes a single-value model of R. Brushed DC motors, however, experience resistance discontinuities due to commutation, and this can cause discontinuities in the haptic force experienced by the user during. Here, we extend the idea of utilizing the natural motor dynamics through resistance compensation to brushless DC (BLDC) motors, in part to address this issue. More generally, however, BLDC motors out-perform brushed DC motors, exhibiting higher power density, reliability, and efficiency. They also have lower rotor inertia and torque ripple (with sinusoidal commutation). This section will review the operation and dynamics of BLDC motors before a description of BLDC resistance compensation in the next section. 
         [0020]    Brushless DC motors are constructed with the permanent magnet located on the rotor and several (usually three) windings on the stator. By moving the permanent magnet to the rotor, there is no need to supply current to the rotating element, and brushes or slip rings are unnecessary. In the case of the three phase BLDC motor, the windings are each separated by an angle of 120 degrees. Each winding experiences a sinusoidal back-EMF voltage. External circuitry and control is necessary to commutate a BLDC motor, and several methods are available, most notably six-step block commutation and sinusoidal commutation. The former is inexpensive, requiring only three Hall sensors, which are usually integrated into the motor. Sinusoidal commutation requires position feedback via an encoder or resolver, but theoretically has no torque ripple and can be used for positioning applications. 
         [0021]    The electrical dynamics of a three-phase BLDC are, 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       
                         e 
                         
                           A 
                           1 
                         
                       
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                     - 
                     
                       
                         e 
                         n 
                       
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                   
                   = 
                   
                     
                       
                         R 
                         1 
                       
                        
                       
                         
                           i 
                           1 
                         
                          
                         
                           ( 
                           t 
                           ) 
                         
                       
                     
                     + 
                     
                       
                         L 
                         1 
                       
                        
                       
                         
                            
                           
                             
                               i 
                               1 
                             
                              
                             
                               ( 
                               t 
                               ) 
                             
                           
                         
                         
                            
                           t 
                         
                       
                     
                     + 
                     
                       e 
                       
                         B 
                         1 
                       
                     
                   
                 
               
               
                 
                   ( 
                   11 
                   ) 
                 
               
             
             
               
                 
                   
                     
                       
                         e 
                         
                           A 
                           2 
                         
                       
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                     - 
                     
                       
                         e 
                         n 
                       
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                   
                   = 
                   
                     
                       
                         R 
                         2 
                       
                        
                       
                         
                           i 
                           2 
                         
                          
                         
                           ( 
                           t 
                           ) 
                         
                       
                     
                     + 
                     
                       
                         L 
                         2 
                       
                        
                       
                         
                            
                           
                             
                               i 
                               2 
                             
                              
                             
                               ( 
                               t 
                               ) 
                             
                           
                         
                         
                            
                           t 
                         
                       
                     
                     + 
                     
                       e 
                       
                         B 
                         2 
                       
                     
                   
                 
               
               
                 
                   ( 
                   12 
                   ) 
                 
               
             
             
               
                 
                   
                     
                       
                         e 
                         
                           A 
                           3 
                         
                       
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                     - 
                     
                       
                         e 
                         n 
                       
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                   
                   = 
                   
                     
                       
                         R 
                         3 
                       
                        
                       
                         
                           i 
                           3 
                         
                          
                         
                           ( 
                           t 
                           ) 
                         
                       
                     
                     + 
                     
                       
                         L 
                         3 
                       
                        
                       
                         
                            
                           
                             
                               i 
                               3 
                             
                              
                             
                               ( 
                               t 
                               ) 
                             
                           
                         
                         
                            
                           t 
                         
                       
                     
                     + 
                     
                       e 
                       
                         B 
                         3 
                       
                     
                   
                 
               
               
                 
                   ( 
                   13 
                   ) 
                 
               
             
           
         
       
     
         [0000]    with the back-EMF voltages, 
         [0000]        e   B     1     =k   T {dot over (θ)} sin(θ)  (14)
 
         [0000]        e   B     2     =k   T {dot over (θ)} sin(θ−120°)  (15)
 
         [0000]        e   B     3     =k   T {dot over (θ)} sin(θ+120°)  (16)
 
         [0022]    Note that by definition the three currents add to zero 
         [0000]        i   1   +i   2   +i   3 =0  (17)
 
         [0000]    and each winding contributes a torque in a sinusoidal fashion 
         [0000]      τ 1   =k   T   i   1  sin(θ)  (18)
 
         [0000]      τ 2   =k   T   i   2  sin(θ−120°)  (19)
 
         [0000]      τ 3   =k   T   i   2  sin(θ+120°)  (20)
 
         [0000]    with the total torque 
         [0000]      τ=τ 1 +τ 2 +τ 3 .  (21)
 
         [0023]      FIG. 2  shows the corresponding BLDC windings in a wye configuration. 
         [0024]    Sinusoidal commutation is used to provide constant torque versus the rotor angle and allow for position control. This means that for a given voltage command, e W , the commutated voltage commands to each winding are, 
         [0000]        e   W     1     =e   W  sin(θ)  (22)
 
         [0000]        e   W     2     =e   W  sin(θ−120°)  (23)
 
         [0000]        e   W     3     =e   W  sin(θ+120°)  (24)
 
       3. Exploiting BLDC Motor Dynamics 
       [0025]    Utilizing the natural dynamics of a BLDC motor to couple a user to the virtual environment is conceptually identical to the approach taken for brushed DC motors. However, now the resistances of three separate windings must be canceled by a trio of compensators. For the following analysis an ideal case is considered where the resistances and inductances of each of the three windings are identical and equal to R and L, respectively. As a consequence, by adding Equations 11-13 the common node voltage is the mean of the three terminal voltages, 
         [0000]    
       
         
           
             
               
                 
                   
                     e 
                     n 
                   
                   = 
                   
                     
                       
                         e 
                         
                           A 
                           1 
                         
                       
                       + 
                       
                         e 
                         
                           A 
                           2 
                         
                       
                       + 
                       
                         e 
                         
                           A 
                           3 
                         
                       
                     
                     3 
                   
                 
               
               
                 
                   ( 
                   25 
                   ) 
                 
               
             
           
         
       
     
         [0026]    All three drivers cancel the resistance, while allowing sinusoidally commutated voltage input eW 
         [0000]        e   A     1   ( t )= {circumflex over (R)}i   1 ( t )+ e   W  sin(θ)  (26)
 
         [0000]        e   A     2   ( t )= {circumflex over (R)}i   2 ( t )+ e   W  sin(θ−120°)  (27)
 
         [0000]        e   A     3   ( t )= {circumflex over (R)}i   3 ( t )+ e   W  sin(θ+120°)  (28)
 
         [0000]    such that from Equation 25 and Equation 17 the common node voltage en=0. Substituting Equations 26-28 into Equations 11-13 yields, 
         [0000]    
       
         
           
             
               
                 
                   
                     
                        
                       
                         i 
                         1 
                       
                     
                     
                        
                       t 
                     
                   
                   = 
                   
                     
                       - 
                       
                         
                           k 
                           T 
                         
                         L 
                       
                     
                      
                     
                       θ 
                       . 
                     
                      
                     
                       sin 
                        
                       
                         ( 
                         θ 
                         ) 
                       
                     
                   
                 
               
               
                 
                   ( 
                   29 
                   ) 
                 
               
             
             
               
                 
                   
                     
                        
                       
                         i 
                         2 
                       
                     
                     
                        
                       t 
                     
                   
                   = 
                   
                     
                       - 
                       
                         
                           k 
                           T 
                         
                         L 
                       
                     
                      
                     
                       θ 
                       . 
                     
                      
                     
                       sin 
                        
                       
                         ( 
                         
                           θ 
                           - 
                           
                             120 
                              
                             ° 
                           
                         
                         ) 
                       
                     
                   
                 
               
               
                 
                   ( 
                   30 
                   ) 
                 
               
             
             
               
                 
                   
                     
                        
                       
                         i 
                         3 
                       
                     
                     
                        
                       t 
                     
                   
                   = 
                   
                     
                       - 
                       
                         
                           k 
                           T 
                         
                         L 
                       
                     
                      
                     
                       θ 
                       . 
                     
                      
                     
                       sin 
                        
                       
                         ( 
                         
                           θ 
                           + 
                           
                             120 
                              
                             ° 
                           
                         
                         ) 
                       
                     
                   
                 
               
               
                 
                   ( 
                   31 
                   ) 
                 
               
             
           
         
       
     
         [0027]    Integrating and substituting each i into Equations 18-20, 21 provides the result, 
         [0000]    
       
         
           
             
               
                 
                   
                     τ 
                      
                     
                       ( 
                       t 
                       ) 
                     
                   
                   = 
                   
                     - 
                     
                       
                         
                           k 
                           T 
                           2 
                         
                         L 
                       
                        
                       
                         [ 
                         
                           
                             
                               cos 
                                
                               
                                 ( 
                                 
                                   θ 
                                   0 
                                 
                                 ) 
                               
                             
                              
                             
                               sin 
                                
                               
                                 ( 
                                 θ 
                                 ) 
                               
                             
                           
                           + 
                           
                             
                               cos 
                                
                               
                                 ( 
                                 
                                   
                                     θ 
                                     0 
                                   
                                   - 
                                   
                                     120 
                                      
                                     ° 
                                   
                                 
                                 ) 
                               
                             
                              
                             
                               sin 
                                
                               
                                 ( 
                                 
                                   θ 
                                   - 
                                   
                                     120 
                                      
                                     ° 
                                   
                                 
                                 ) 
                               
                             
                           
                           + 
                           
                             
                               cos 
                                
                               
                                 ( 
                                 
                                   
                                     θ 
                                     0 
                                   
                                   + 
                                   
                                     120 
                                      
                                     ° 
                                   
                                 
                                 ) 
                               
                             
                              
                             
                               sin 
                                
                               
                                 ( 
                                 
                                   θ 
                                   + 
                                   
                                     120 
                                      
                                     ° 
                                   
                                 
                                 ) 
                               
                             
                           
                         
                         ] 
                       
                     
                   
                 
               
               
                 
                   ( 
                   32 
                   ) 
                 
               
             
           
         
       
     
         [0000]    where θ 0 =θ(0) with τ(0)=0. This simplifies to 
         [0000]    
       
         
           
             
               
                 
                   
                     τ 
                      
                     
                       ( 
                       t 
                       ) 
                     
                   
                   = 
                   
                     
                       - 
                       
                         
                           3 
                            
                           
                             k 
                             T 
                             2 
                           
                         
                         
                           2 
                            
                           L 
                         
                       
                     
                      
                     
                       
                         sin 
                          
                         
                           ( 
                           
                             θ 
                             - 
                             
                               θ 
                               0 
                             
                           
                           ) 
                         
                       
                       . 
                     
                   
                 
               
               
                 
                   ( 
                   33 
                   ) 
                 
               
             
           
         
       
     
         [0028]    Thus, over small angles the equivalent inductive spring for a BLDC motor is 
         [0000]    
       
         
           
             
               
                 
                   
                     K 
                     L 
                   
                   = 
                   
                     
                       3 
                        
                       
                         k 
                         T 
                         2 
                       
                     
                     
                       2 
                        
                       L 
                     
                   
                 
               
               
                 
                   ( 
                   34 
                   ) 
                 
               
             
           
         
       
     
         [0029]    In the case where the current feedback gain of the controller is not exactly R, a small resistance dR remains uncancelled leading to an equivalent resistive damper: 
         [0000]    
       
         
           
             
               
                 
                   
                     B 
                     R 
                   
                   = 
                   
                     
                       3 
                        
                       
                         k 
                         T 
                         2 
                       
                     
                     
                       2 
                        
                       dR 
                     
                   
                 
               
               
                 
                   ( 
                   35 
                   ) 
                 
               
             
           
         
       
     
         [0030]    It is important to note that B R  causes drift at low frequencies, while K L  dominates at high frequencies. The cutoff frequency between the two effects is 
         [0000]    
       
         
           
             
               ω 
               cutoff 
             
             = 
             
               
                 dR 
                 L 
               
               . 
             
           
         
       
     
         [0000]    As in Equation 10 the BLDC drivers may also compensate for L to produce a higher inductive stiffness. 
       4. Mid-Level Drift Compensation 
       [0031]    Before any high-level controller can be successfully implemented, the fact that a residual damper B dR  exists between the commanded location θ W  and the output must be addressed. Without compensation, B dR  will allow θ S  and θ to drift unboundedly under low frequency external loads. In haptic applications this drift will degrade the simulation by making sustained rigid contacts feel like dampers. Therefore, position feedback with PD compensation is added digitally to combat drift and yields the control law 
         [0000]        e   W   =k   T {dot over (θ)} S     d     +K   D ({dot over (θ)} S     d   −{dot over (θ)})+ K   P (θ S     d   −θ),  (36)
 
         [0000]    where K P  and K D  are the error gains and θ S     d    and {dot over (θ)} S     d    are the desired motion of the setpoint of the haptic coupling. We assume a first order filter with cutoff frequency λ on the differentiated velocity signal {dot over (θ)}. This constitutes a mid-level controller interface between the analog inductive stiffness of the spring drive and the high-level motion controller described in the next section. It is applicable to both brushed DC and BLDC motors. Implementation of this mid-level controller establishes a hybrid coupling between the user and the virtual environment consisting of the physical motor dynamics, analog electronics modifying these dynamics, and digital drift compensation. The combined physical and analog components comprise the series spring-damper shown in  FIG. 1 , while the digital component connects the parallel spring-damper of Equation 36 between θ and θ S     d   . Functionally, the analog stiffness K L  dominates for high frequency deflections, while the digital mid-level controller pro-vides low to mid frequency stiffness. The frequency-dependent stiffness transfer function for the complete coupling is found by substituting Equation 36 into the resistance-canceled motor dynamics. For the modified brushed DC motor dynamics 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       e 
                       W 
                     
                      
                     
                       ( 
                       t 
                       ) 
                     
                   
                   = 
                   
                     
                       dRi 
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                     + 
                     
                       L 
                        
                       
                         
                            
                           
                             i 
                              
                             
                               ( 
                               t 
                               ) 
                             
                           
                         
                         
                            
                           t 
                         
                       
                     
                     + 
                     
                       
                         e 
                         B 
                       
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                   
                 
               
               
                 
                   ( 
                   37 
                   ) 
                 
               
             
           
         
       
     
         [0000]    the stiffness transfer function is 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       
                         
                           
                             K 
                             θ 
                           
                            
                           
                             ( 
                             s 
                             ) 
                           
                         
                         = 
                           
                          
                         
                           
                             τ 
                             θ 
                           
                            
                           
                             ( 
                             s 
                             ) 
                           
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                          
                         
                           
                             - 
                             
                               
                                 k 
                                 T 
                               
                               
                                 Ls 
                                 + 
                                 dR 
                               
                             
                           
                            
                           
                             
                               
                                 λ 
                                 
                                   s 
                                   + 
                                   λ 
                                 
                               
                               [ 
                               
                                 
                                   ( 
                                   
                                     
                                       
                                         ( 
                                         
                                           
                                             k 
                                             T 
                                           
                                           + 
                                           
                                             K 
                                             D 
                                           
                                           + 
                                           
                                             
                                               K 
                                               P 
                                             
                                             λ 
                                           
                                         
                                         ) 
                                       
                                        
                                       s 
                                     
                                     + 
                                     
                                       K 
                                       P 
                                     
                                   
                                   ) 
                                 
                                 + 
                                 
                                   
                                     
                                       k 
                                       T 
                                     
                                      
                                     
                                       s 
                                       2 
                                     
                                   
                                   λ 
                                 
                               
                               ] 
                             
                             . 
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   38 
                   ) 
                 
               
             
           
         
       
     
         [0032]    The corresponding BLDC motor stiffness transfer function may be found similarly. 
         [0033]    The magnitude Bode plot of Equation 38 shown in  FIG. 3  illustrates the combination of several factors that shape stiffness over frequency. Starting from the natural motor dynamics represented by the dotted curve, the spring drive lowers the corner frequency from R/L to dR/L. The proportional term in the mid-level controller then pulls the low frequency rolloff caused by B dR  up to a dc stiffness 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       K 
                       DC 
                     
                     = 
                     
                       
                         
                           k 
                           T 
                         
                          
                         
                           K 
                           P 
                         
                       
                       dR 
                     
                   
                   , 
                 
               
               
                 
                   ( 
                   39 
                   ) 
                 
               
             
           
         
       
     
         [0000]    while the derivative term boosts stiffness at midrange frequencies before the filter rolls it off to the high frequency stiffness 
         [0000]    
       
         
           
             
               
                 
                   
                     K 
                     HF 
                   
                   = 
                   
                     
                       K 
                       L 
                     
                     = 
                     
                       
                         
                           k 
                           T 
                           2 
                         
                         L 
                       
                       . 
                     
                   
                 
               
               
                 
                   ( 
                   40 
                   ) 
                 
               
             
           
         
       
     
         [0034]    As described earlier, K L  may be increased by electrically reducing L in addition to R, replacing L in the equations above with a residual inductance dL. 
         [0035]    Thus, for a given motor the spring drive approach calls for the robustly stable minimization of dR and maximization of K P  and K D  to achieve the highest possible maximum stiffness at all frequencies. This tuning is then locked in place and the resulting K θ (s) is treated as a passive coupling between the rotor angle θ and the setpoint θ S     d   . This K θ (s), which we will refer to as the coupling stiffness, represents the stiffest contact that the virtual environment can render on this actuator. 
       5. Motion Control of Haptic Devices: One-DOF 
       [0036]    By treating the spring driven DC motor and the mid-level drift compensator as a black-boxed motion source that accepts setpoint motion commands θ S     d    and θ S     d   , we now describe a high-level motion controller in the form of a quasi-static virtual environment (VE). This approach combines the excellent free-space performance of an impedance-type device with the improved contact performance of an admittance-like controller. The structure of this VE is developed here for the one-DOF case before generalization to multiple degrees of freedom in the next section. 
         [0037]    As noted, θ S     d    and {dot over (θ)} S     d    command the setpoint of the coupling stiffness K θ (s). Thus, it is sufficient for the haptic simulation to implement a very simple, purely motion-based VE that uses a virtual proxy or tool to determine θ S     d   , effectively using the coupling stiffness as the connection between the user and the VE. Rigid contact is easily rendered by commanding zero motion and locking the coupling stiffness 
         [0000]      {dot over (θ)} S     d   =0 θ S     d=θ     0 ,  (41)
 
         [0000]    where θ 0  is the location of the contact constraint. Freespace is accomplished by setting the desired motion to track the user 
         [0000]      {dot over (θ)} S     d   ={dot over (θ)} θ S     d   =θ.  (42)
 
         [0038]    A slight lag in filtering the velocity may cause the system to create slight non-zero forces, equivalent to an added mass. Given the low bandwidth of human actions compared to the speed of filtering, however, any added mass tends to fall far below perceptible levels. 
         [0039]    Finally, compliant contact is achieved by setting the desired motion to a fraction of the user motion. The full dynamic range of the VE can be represented by 
         [0000]      θ S     d   =η{dot over (θ)} θ S     d   =ηθ+(1−η)θ 0   (43)
 
         [0000]    where 0≦η≦1, and η=0 and η=1 correspond to rigid contact and freespace, respectively. The low-frequency output stiffness is reduced by the factor η. 
         [0040]      FIG. 4  shows the interaction between the virtual environment and the haptic device. The block diagram in  FIG. 5  illustrates the implementation of the full system, including the spring drive, mid-level drift compensator, and virtual environment. 
         [0041]    As a motion-based VE, no absolute force values are available, either explicitly via measurement or implicitly by commanding motor current. Output stiffnesses, therefore, may no longer be programmed exactly, but must be specified as a fraction of the device&#39;s maximum achievable stiffness. Knowledge of K θ (s), particularly K DC , can be used to estimate values. 
       6. Motion Control of Haptic Devices: Multi-DOF 
       [0042]    In extending the above approach to multi-DOF haptics, we recognize the application&#39;s requirements. Though we wish to display the maximum achievable stiffness, force directions need to be rendered accurately to convey proper geometric surface properties. For example, forces should always fall perpendicular to frictionless surfaces. To support this requirement, perceived output stiffnesses need to be spatially uniform. 
         [0043]    Given an n-DOF device, one drift-compensated spring drive is used to drive each joint motor. Thus, each joint independently replicates the one-DOF system previously described, acting as a joint motion source with a stiffness described by Equation 38. We assume here that all joints exhibit the same stiffness, though relative scaling between joints could be incorporated if necessary. 
         [0044]    We define a desired Cartesian location {right arrow over (x)} S     d    and velocity {right arrow over ({dot over (x)} S     d   , and collect the individual joint values into a joint position vector {right arrow over (q)} and velocity vector q with equivalent desired position {right arrow over (q)} S     d    and velocity {right arrow over ({dot over (q)} S     d   , 
         [0000]        {right arrow over (q)}   S     d     =invkin ( {right arrow over (x)}   S     d   ) {right arrow over ({dot over (q)} S     d     =J   −1   {right arrow over ({dot over (x)}   S     d     (44)
 
         [0000]    obtained by inverting the mechanism&#39;s kinematics, where J is the Jacobian matrix of the mechanism&#39;s forward kinematics. This will produce joint torques 
         [0000]      {right arrow over (τ)}= K   q   Δ{right arrow over (q)}   (45)
 
         [0000]    via a diagonal joint stiffness matrix 
         [0000]        K   q   =K   θ ( s ) I,   (46)
 
         [0000]    which maps to a Cartesian stiffness of 
         [0000]        K   x   inv   =J   −T   K   q   J   −1   =K   θ ( s )( JJ   T ) −1   (47)
 
         [0000]    remembering that 
         [0000]        {right arrow over (F)}=K   x   inv Δ{right arrow over (χ)} {right arrow over (τ)}= J   T   {right arrow over (F)} Δ{right arrow over (χ)}=JΔ{right arrow over (q)}.   (48)
 
         [0045]    Where is the Cartesian force at the end effector, Δ{right arrow over (χ)}=({right arrow over (χ)} Sd −{right arrow over (χ)}), and Δ{right arrow over (q)}=({right arrow over (q)} Sd −{right arrow over (q)}). We denote the stiffness matrix with ‘inv’ to indicate the joint values were set by an inverse Jacobian kinematic algorithm. Unfortunately, this Cartesian stiffness is non-spherical such that forces are not necessarily generated along displacement vectors.  FIG. 6  depicts such a stiffness ellipsoid for a simple 2-DOF case. Proper haptic rendering of force requires that the multi-DOF motion controller reshape this ellipsoid into a sphere. We instead calculate 
         [0000]        {right arrow over (q)}   Sd   ={right arrow over (q)}+αJ   T ( {right arrow over (x)}   Sd   −{right arrow over (x)} )  (49)
 
         [0000]    where α is a scalar, and approximate the set-point derivative as 
         [0000]        {right arrow over ({dot over (q)}   Sd   ={right arrow over ({dot over (q)}+αJ   T ( {right arrow over ({dot over (x)}   Sd   −{right arrow over ({dot over (x)} ),  (50)
 
         [0000]    where we ignore the Jacobian&#39;s derivative. By construction this simplification only affects forces rendered at high velocities and high frequencies with minimal impact on user perception as discussed at the end of this section. This delivers a Cartesian force vector {right arrow over (F)} of 
         [0000]        {right arrow over (F)}=J   −T   K   q   αJ   T   Δ{right arrow over (x)}   (51)
 
         [0000]    and the Cartesion stiffness 
         [0000]        K   x   trans   =αJ   −T   K   q   J   T .  (52)
 
         [0046]    Since K q  is the scaled identity matrix, K x   trans  collapses to the diagonal 
         [0000]        K   x   trans   =αK   θ ( s ) I.   (53)
 
         [0047]    Effectively, the transpose equation 49 has reshaped the ellipsoid into a sphere and restored the force directions to parallel any deflections. 
         [0048]    Having resolved the force direction problem, there is now the issue of what value to select for α. To address this, first recall that each joint is tuned for a maximum joint stiffness K θ (s). Also note that locking each joint results in the Cartesian stiffness K x   inv . Thus, K x   inv  represents the maximum achievable Cartesian stiffness for a given configuration, limited by the stability of each joint. Using the Jacobian transpose solution to the inverse kinematics has reshaped K x   inv  into the Cartesian stiffness ball K x   trans , which must now be appropriately scaled by α. Intuitively, K x   trans  cannot be scaled arbitrarily large, as this would allow the effective Cartesian stiffness to be increased without bound. Indeed, if the magnitude of K x   trans  exceeds that of K x   inv  in any direction, we would be asking for a stiffness beyond the stable maximum. Doing this would effectively increase the gains of one or more joint controllers and compromise their stability. Therefore, taking K x   inv  as the upper bound to maintain stability, the eigenvalues of K x   trans  must satisfy 
         [0000]      λ max ( K   x   trans )≦λ min ( K   x   inv ).  (54)
 
         [0049]    Substituting (53) and (47), this condition simplifies to 
         [0000]      α≦λ min [( JJ   T ) −1 ],  (55)
 
         [0000]    where λm in [(JJ T )−1] may be computed on the fly to maximize K x   trans  independently for each configuration, or computed over the entire workspace offline to select the global minimum for a consistent K x   trans  at all configurations. 
         [0050]      FIG. 6  illustrates in an example the ellipses K x   inv  and K x   trans  with α=λ min [(JJ T )−1] for a PHANTOM constrained to 2-DOF by locking its base motor (three-degree of freedom, impedance-type haptic device). 
         [0051]    The stiffness shape compensation performed by this multi-DOF VE does not have infinite bandwidth. As a result K x   inv  will still exist at high frequencies, and impulsive force vectors may be directed incorrectly. Since these direction discrepancies exist only at high frequency, however, the user will likely be unable to detect them kinesthetically, due to a low perceptual bandwidth of 20 Hz to 30 Hz. Tactile detection of the discrepancy may fare better, the direction discrimination threshold is only about 25 degrees, determined for perception of low frequency forces. Experience with a multi-DOF implementation on a PHANTOM 1.0 suggests that these discrepancies are not perceptible, and certainly not disruptive to the haptic simulation. Similar to the one-DOF case, compliant surfaces and free space may be obtained by setting 
         [0000]        {right arrow over ({dot over (x)}   Sd   =η{right arrow over ({dot over (x)} {right arrow over (x)}   Sd   =η{right arrow over (x)} +(1−η){right arrow over (x)} 0 ,  (56)
 
         [0000]    with 0≦η≦1.