code: def send_ned_velocity(velocity_x, velocity_y, velocity_z, duration):
      
      msg = vehicle.message_factory.set_position_target_local_ned_encode(
          0,       # time_boot_ms (not used)
          0, 0,    # target system, target component
          mavutil.mavlink.MAV_FRAME_LOCAL_NED, # frame
          0b0000111111000111, # type_mask (only speeds enabled)
          0, 0, 0, # x, y, z positions (not used)
          velocity_x, velocity_y, velocity_z, # x, y, z velocity in m/s
          0, 0, 0, # x, y, z acceleration (not supported yet, ignored in GCS_Mavlink)
          0, 0)    # yaw, yaw_rate (not supported yet, ignored in GCS_Mavlink) 
  
      # send command to vehicle on 1 Hz cycle
      for x in range(0,duration):
          vehicle.send_mavlink(msg)
          time.sleep(1)
docs: Move vehicle in direction based on specified velocity vectors and
      for the specified duration.
  
      This uses the SET_POSITION_TARGET_LOCAL_NED command with a type mask enabling only 
      velocity components 
      (http://dev.ardupilot.com/wiki/copter-commands-in-guided-mode/#set_position_target_local_ned).
      
      Note that from AC3.3 the message should be re-sent every second (after about 3 seconds
      with no message the velocity will drop back to zero). In AC3.2.1 and earlier the specified
      velocity persists until it is canceled. The code below should work on either version 
      (sending the message multiple times does not cause problems).
      
      See the above link for information on the type_mask (0=enable, 1=ignore). 
      At time of writing, acceleration and yaw bits are ignored.