Free Drive =========== Invoke directly from RDK ------------------------ 1. Switch the robot into :ref:`primitive_mode`. 2. Call ``Robot::ExecutePrimitive()`` to execute ``FloatingCartesian`` primitive for free drive in Cartesian space, or ``FloatingJoint`` for free drive in joint space. For example:: # Python ... robot.ExecutePrimitive("FloatingCartesian()") while robot.busy(): time.sleep(1) ... .. caution:: Free drive will be activated immediately regardless of whether the enabling button on the motion bar is pressed down or not. You can implement your own code to only activate free drive while enabling button is pressed down with the help of a condition check on ``Robot::enabling_button_pressed()``. .. note:: Both ``FloatingCartesian`` and ``FloatingJoint`` primitives require a license. Invoke from Flexiv Elements --------------------------- With the teach pendant connected, free drive can be invoked under either Manual or Auto mode. Free drive under Manual mode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The robot's movement speed is restricted under Manual mode, thus free drive feels **heavy**. To invoke: 1. Toggle the *Auto/Manual Slide Switch* on the motion bar to the **lower** position to exit Auto (Remote) mode and enter Manual mode. 2. Click the *Freedrive On & Off* button on the motion bar. LED on the motion bar will turn deep blue, and a window for controlling free drive will pop up in Flexiv Elements. 3. Follow instructions in Flexiv Elements to unlock Cartesian or joint axes to free drive. 4. Press and hold *Enabling Button* on the motion bar to activate free drive. Free drive under Auto mode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The robot's movement speed is not restricted under Auto mode, thus free drive feels **light**. To invoke: 1. Same as step 1 above to put the robot into Manual mode first. 2. Push the *Auto/Manual Slide Switch* back to **upper** position, a window will pop-up asking you to choose which type of Auto mode to enter, choose **AUTO**. 3. Same as steps 2 to 4 as above.