Takeoff and Landing

There are two maglev API commands that are not present in any other haptic device. They are ml_Takeoff() and ml_Land() which both take a device handle as arguments.  You probably don't need to know how they work, but you may want to get an idea.

Image The ml_Takeoff() and ml_Land() functions automatically transition the flotor from a resting configuration to a levitated configuration and vice-versa as illustrated in the figure.  None of the control parameters needed for execution are under the control of the user.  The ml_Takeoff() command can be executed from any existing flotor configuration as long as the optical sensors are within their allowable ranges. The procdures require several seconds to complete during which they block execution of any other client commands.
 

The ml_Takeoff() function commands the controller to take the flotor off from a nominal configuration resting against the outer stator assembly to the configuration where it is levitated at position and orientation (0,0,0,0,0,0), ready for haptic interaction. The first block sets the desired handle configuration xd = x, where xd = (xd, yd, zd, θd, Φd, Ψd) is the desired handle configuration and x = (x, y, z, θ, Φ, ψ) is the current configuration. The second block calculates the distance from the current configuration to x = (0,0,0,0,0,0), and divides by a large number N to obtain a small configuration increment δd .The next block increments the desired configuration xd by δd during each iteration of the haptic control loop, slowly moving the flotor assembly according to a PD control law. In the next block, the desired position xd is compared with the desired final position x = (0,0,0,0,0,0) to see if it is less than a small number ε.  If the test is satisfied the procedure ends in the final block with the flotor stably levitated at the origin.

 
Similarly, the ml_Landing() function lands the flotor onto the outer stator in the configuration x = (0, 0, zd, 0, 0, 0), where zd is a position value slightly lower than the bottom of the flotor's range of travel in z.  The first block sets the desired handle position xd to 0's, except for the z position, which is set to z = zd. The next block calculates the distance from the current configuration and divides by a large number N to obtain a small configuration increment δd.  The next block increments the desired configuration xd  by δd during each iteration of the control loop, slowly moving the flotor assembly downward into the landing configuration according to a PD control law.  In the next block, the z coordinate from successive iterations are compared to see if the flotor is no longer moving and has come to rest against the outer stator within a small tolerance  ε’. If the test is satisfied the procedure ends in the last step when the flotor will be left resting against the outer stator.