================================
Base
================================
    
.. py:currentmodule:: kortex_api.autogen

.. _BaseArmCalibrationStatusType:

.. py:class:: ArmCalibrationStatusType

     Arm calibration status type

    :canonical: kortex_api.autogen.messages.Base_pb2.ArmCalibrationStatusType
    .. py:attribute:: ARM_CALIBRATION_STATUS_UNKNOWN (0):   Unknown arm calibration status

    .. py:attribute:: ARM_CALIBRATION_STATUS_CALIBRATED (1):   Calibrated status

    .. py:attribute:: ARM_CALIBRATION_STATUS_NOT_CALIBRATED (2):   Not calibrated status

    .. py:attribute:: ARM_CALIBRATION_STATUS_WAITING_ARM_POWER_ON (3):   Waiting arm power on status

.. _BaseServiceVersion:

.. py:class:: ServiceVersion

     Identifies Base service current version

    :canonical: kortex_api.autogen.messages.Base_pb2.ServiceVersion
    .. py:attribute:: RESERVED_0 (0):   Reserved

    .. py:attribute:: CURRENT_VERSION (1):   Current version

.. _BaseActionType:

.. py:class:: ActionType

     Admissible types of actions

    :canonical: kortex_api.autogen.messages.Base_pb2.ActionType
    .. py:attribute:: UNSPECIFIED_ACTION (0):   Unspecified action type

    .. py:attribute:: SEND_TWIST_COMMAND (1):   Control the robot in Cartesian velocity

    .. py:attribute:: SEND_JOINT_SPEEDS (4):   Control each joint speed

    .. py:attribute:: TOGGLE_HAND_GUIDING_MODE (13):   Enable or disable the Hand-Guiding mode

    .. py:attribute:: SWITCH_CONTROL_MAPPING (16):   Switch the active controller map

    .. py:attribute:: NAVIGATE_JOINTS (17):   Select the next actuator to control from control mapping

    .. py:attribute:: NAVIGATE_MAPPINGS (18):   Select a different map

    .. py:attribute:: CHANGE_TWIST (22):   Change the twist

    .. py:attribute:: CHANGE_JOINT_SPEEDS (23):   Change the joint speeds individually

    .. py:attribute:: APPLY_QUICK_STOP (28):   Apply robot quick stop

    .. py:attribute:: CLEAR_FAULTS (29):   Clear faults. Robot will be able to move if there is no more fault (see BaseCyclic.BaseFeedback.[fault_bank_a | fault_bank_b])

    .. py:attribute:: EXECUTE_ACTION (32):   Execute an existing action

    .. py:attribute:: STOP_ACTION (35):   Stop robot movement

    .. py:attribute:: PLAY_PRE_COMPUTED_TRAJECTORY (39):   Play a pre-computed trajectory

    .. py:attribute:: EXECUTE_WAYPOINT_LIST (41):   Execute a trajectory defined by a series of waypoints

    .. py:attribute:: CHANGE_PAYLOAD_PARAMETERS (42):   Change the payload

.. _BaseNetworkType:

.. py:class:: NetworkType

     Admissible network types This is currently used in armbase. Will be moved out of base.proto eventually.

    :canonical: kortex_api.autogen.messages.Base_pb2.NetworkType
    .. py:attribute:: UNSPECIFIED_NETWORK_TYPE (0):   Unspecified network type

    .. py:attribute:: WIFI (1):   Wi-Fi network

    .. py:attribute:: WIRED_ETHERNET (2):   Wired Ethernet network

    .. py:attribute:: WIRED_MICROUSB (3):   Wired Ethernet over USB network (RNDIS)

.. _BaseWifiSecurityType:

.. py:class:: WifiSecurityType

     Admissible Wi-Fi Security types This message may be removed in a future release. It has been moved to Network service.

    :canonical: kortex_api.autogen.messages.Base_pb2.WifiSecurityType
    .. py:attribute:: UNSPECIFIED_AUTHENTICATION (0):   Unspecified Wi-Fi security type

    .. py:attribute:: WEP (1):   WEP authentication required

    .. py:attribute:: WPA2_PERSONAL (2):   WPA2 Personal authentication required

    .. py:attribute:: WPA_PERSONAL (4):   WPA Personal authentication required

    .. py:attribute:: NO_AUTHENTICATION (8):   No authentication required

.. _BaseWifiEncryptionType:

.. py:class:: WifiEncryptionType

     Admissible Wi-Fi encryption types This message may be removed in a future release. It has been moved to Network service.

    :canonical: kortex_api.autogen.messages.Base_pb2.WifiEncryptionType
    .. py:attribute:: UNSPECIFIED_ENCRYPTION (0):   Unspecified Wi-Fi encryption type

    .. py:attribute:: AES_ENCRYPTION (1):   AES encryption

    .. py:attribute:: TKIP_ENCRYPTION (2):   TKIP encryption

    .. py:attribute:: WEP_ENCRYPTION (4):   WEP encryption

.. _BaseSignalQuality:

.. py:class:: SignalQuality

     Admissible signal quality values This message may be removed in a future release. It has been moved to Network service.

    :canonical: kortex_api.autogen.messages.Base_pb2.SignalQuality
    .. py:attribute:: UNSPECIFIED_SIGNAL_QUALITY (0):   Unspecified signal quality

    .. py:attribute:: POOR (1):   Poor signal quality

    .. py:attribute:: FAIR (2):   Fair signal quality

    .. py:attribute:: GOOD (3):   Good signal quality

    .. py:attribute:: EXCELLENT (4):   Excellent signal quality

    .. py:attribute:: NONE (5):   No signal

.. _BaseConfigurationNotificationEvent:

.. py:class:: ConfigurationNotificationEvent

     Admissible configuration events This enum will be removed in a future release. It has been moved to Common proto.

    :canonical: kortex_api.autogen.messages.Base_pb2.ConfigurationNotificationEvent
    .. py:attribute:: UNSPECIFIED_CONFIGURATION_EVENT (0):   Unspecified configuration event

    .. py:attribute:: CONFIGURATION_UPDATED (1):   Configuration deleted

    .. py:attribute:: CONFIGURATION_DELETED (2):   Configuration updated

    .. py:attribute:: CONFIGURATION_DELETED_ALL (3):   All configurations deleted

    .. py:attribute:: CONFIGURATION_CREATED (4):   Configuration created

.. _BaseOperatingMode:

.. py:class:: OperatingMode

     Admissible robot operating modes (used to report robot firmware upgrade current state) This enum will be removed in a future release. It has been renamed UpdatingMode.

    :canonical: kortex_api.autogen.messages.Base_pb2.OperatingMode
    .. py:attribute:: UNSPECIFIED_OPERATING_MODE (0):   Unspecified operating mode

    .. py:attribute:: MAINTENANCE_MODE (1):   Robot in maintenance mode

    .. py:attribute:: UPDATE_MODE (2):   Robot waiting for upgrade package

    .. py:attribute:: UPDATE_COMPLETED_MODE (3):   Robot update successfully completed

    .. py:attribute:: UPDATE_FAILED_MODE (4):   Robot update failed

    .. py:attribute:: SHUTTING_DOWN_MODE (5):   Robot about to shutdown

    .. py:attribute:: RUN_MODE (6):   Robot properly running (or normal operation mode)

    .. py:attribute:: UPDATING_DEVICE_MODE (7):   Robot updating device

.. _BaseUpdatingMode:

.. py:class:: UpdatingMode

     Admissible robot updating modes (used to report robot firmware upgrade current state)

    :canonical: kortex_api.autogen.messages.Base_pb2.UpdatingMode
    .. py:attribute:: UPDATE_MODE_UNSPECIFIED (0):   Unspecified updating mode

    .. py:attribute:: UPDATE_MODE_MAINTENANCE (1):   Robot in maintenance mode

    .. py:attribute:: UPDATE_MODE_UPDATE (2):   Robot waiting for upgrade package

    .. py:attribute:: UPDATE_MODE_UPDATE_COMPLETED (3):   Robot update successfully completed

    .. py:attribute:: UPDATE_MODE_UPDATE_FAILED (4):   Robot update failed

    .. py:attribute:: UPDATE_MODE_SHUTTING_DOWN (5):   Robot about to shutdown

    .. py:attribute:: UPDATE_MODE_IDLE (6):   Robot properly running (or normal operation mode)

    .. py:attribute:: UPDATE_MODE_UPDATING_DEVICE (7):   Robot updating device

.. _BaseServoingMode:

.. py:class:: ServoingMode

     Admissible servoing modes

    :canonical: kortex_api.autogen.messages.Base_pb2.ServoingMode
    .. py:attribute:: UNSPECIFIED_SERVOING_MODE (0):   Unspecified servoing mode

    .. py:attribute:: SINGLE_LEVEL_SERVOING (2):   Single-level servoing

    .. py:attribute:: LOW_LEVEL_SERVOING (3):   Low-level servoing

    .. py:attribute:: BYPASS_SERVOING (4):   Bypass mode

.. _BaseUserEvent:

.. py:class:: UserEvent

     Admissible user event types

    :canonical: kortex_api.autogen.messages.Base_pb2.UserEvent
    .. py:attribute:: UNSPECIFIED_USER_EVENT (0):   Unspecified user event

    .. py:attribute:: LOGGED_OUT (1):   User logged out

    .. py:attribute:: LOGGED_IN (2):   User logged in

.. _BaseControllerType:

.. py:class:: ControllerType

     Admissible controller types

    :canonical: kortex_api.autogen.messages.Base_pb2.ControllerType
    .. py:attribute:: UNSPECIFIED_CONTROLLER_TYPE (0):   Unspecified controller device type

    .. py:attribute:: XBOX_CONTROLLER (1):   Xbox gamepad

    .. py:attribute:: BASIC_JOYSTICK_CONTROLLER (3):   Simplified joystick connected to Kinova robot base

    .. py:attribute:: BASE_GPIO_CONTROLLER (4):   GPIO Controller

    .. py:attribute:: LINK_WRIST_CONTROLLER (6):   Link wrist buttons

.. _BaseControllerEventType:

.. py:class:: ControllerEventType

     Admissible controller event types

    :canonical: kortex_api.autogen.messages.Base_pb2.ControllerEventType
    .. py:attribute:: UNSPECIFIED_CONTROLLER_EVENT (0):   Unspecified controller event

    .. py:attribute:: CONTROLLER_DISCONNECTED (1):   Controller is disconnected

    .. py:attribute:: CONTROLLER_CONNECTED (2):   Controller is connected

.. _BaseControllerElementEventType:

.. py:class:: ControllerElementEventType

     Admissible controller element event types

    :canonical: kortex_api.autogen.messages.Base_pb2.ControllerElementEventType
    .. py:attribute:: UNSPECIFIED_CONTROLLER_ELEMENT_EVENT (0):   Unspecified controller element event

    .. py:attribute:: AXIS_MOVED (1):   Controller axis moved

    .. py:attribute:: BUTTON_DOWN (2):   Controller button pressed

    .. py:attribute:: BUTTON_UP (3):   Controller button released

    .. py:attribute:: BUTTON_CLICK (4):   Controller button clicked

.. _BaseActionEvent:

.. py:class:: ActionEvent

     Admissible action event types

    :canonical: kortex_api.autogen.messages.Base_pb2.ActionEvent
    .. py:attribute:: UNSPECIFIED_ACTION_EVENT (0):   Unspecified action event

    .. py:attribute:: ACTION_END (1):   Action execution end reached

    .. py:attribute:: ACTION_ABORT (2):   Action execution aborted

    .. py:attribute:: ACTION_PAUSE (3):   Action execution paused

    .. py:attribute:: ACTION_START (4):   Action execution started

    .. py:attribute:: ACTION_PREPROCESS_START (5):   Action pre-process started

    .. py:attribute:: ACTION_PREPROCESS_ABORT (6):   Action pre-process aborted

    .. py:attribute:: ACTION_PREPROCESS_END (7):   Action pre-process ended

    .. py:attribute:: ACTION_POSTPROCESS_START (8):   Action post-process started

    .. py:attribute:: ACTION_POSTPROCESS_ABORT (9):   Action post-process aborted

    .. py:attribute:: ACTION_POSTPROCESS_END (10):   Action post-process ended

    .. py:attribute:: ACTION_FEEDBACK (11):   Action feedback received

.. _BaseRobotEvent:

.. py:class:: RobotEvent

     Admissible robot events

    :canonical: kortex_api.autogen.messages.Base_pb2.RobotEvent
    .. py:attribute:: UNSPECIFIED_ROBOT_EVENT (0):   Unspecified robot event

    .. py:attribute:: ARM_CONNECTED (1):   Robot arm is connected

    .. py:attribute:: ARM_DISCONNECTED (2):   Robot arm is disconnected

    .. py:attribute:: USB_STORAGE_CONNECTED (8):   USB storage has been connected

    .. py:attribute:: USB_STORAGE_DISCONNECTED (9):   USB storage has been disconnected

.. _BaseFactoryEvent:

.. py:class:: FactoryEvent

     Admissible factory events

    :canonical: kortex_api.autogen.messages.Base_pb2.FactoryEvent
    .. py:attribute:: UNSPECIFIED_FACTORY_EVENT (0):   Unspecified factory event

    .. py:attribute:: FACTORY_DEFAULT_RESTORED (1):   Factory defaults restored on robot

.. _BaseNetworkEvent:

.. py:class:: NetworkEvent

     Admissible network events This message may be removed in a future release. It has been moved to Network service.

    :canonical: kortex_api.autogen.messages.Base_pb2.NetworkEvent
    .. py:attribute:: UNSPECIFIED_NETWORK_EVENT (0):   Unspecified network event

    .. py:attribute:: WIFI_CONNECTED (1):   Wi-Fi connected

    .. py:attribute:: WIFI_DISCONNECTED (2):   Wi-Fi Disconnected

    .. py:attribute:: WIFI_SCAN_STARTED (3):   Wi-Fi scan was initiated

    .. py:attribute:: WIFI_SCAN_RESULTS (4):   Wi-Fi scan results are available

    .. py:attribute:: WIFI_SCAN_FAILED (5):   Wi-Fi scan failed

    .. py:attribute:: WIFI_NOT_FOUND (6):   Wi-Fi selected network not found

    .. py:attribute:: WIFI_ASSOC_REJECTED (7):   Wi-Fi AP rejected association

    .. py:attribute:: WIFI_AUTH_WRONG_KEY (8):   Wi-Fi wrong PSK supplied

    .. py:attribute:: WIFI_AUTH_CONN_FAILED (9):   Wi-Fi connection failure during auth

    .. py:attribute:: WIFI_AUTH_FAILED (10):   Wi-Fi authentication failure

.. _BaseControllerInputType:

.. py:class:: ControllerInputType

     Admissible controller input types

    :canonical: kortex_api.autogen.messages.Base_pb2.ControllerInputType
    .. py:attribute:: UNSPECIFIED_CONTROLLER_INPUT_TYPE (0):   Unspecified controller input type

    .. py:attribute:: ANALOG (1):   Analog controller input type

    .. py:attribute:: DIGITAL (2):   Digital controller input type

.. _BaseControllerBehavior:

.. py:class:: ControllerBehavior

     Admissible controller input behaviors

    :canonical: kortex_api.autogen.messages.Base_pb2.ControllerBehavior
    .. py:attribute:: UNSPECIFIED_CONTROLLER_BEHAVIOR (0):   Unspecified controller behavior

    .. py:attribute:: CONTROLLER_BUTTON_DOWN (1):   Pushing button down

    .. py:attribute:: CONTROLLER_BUTTON_UP (2):   Releasing button

    .. py:attribute:: CONTROLLER_AXIS_POSITIVE (3):   Positive axis movement

    .. py:attribute:: CONTROLLER_AXIS_NEGATIVE (4):   Negative axis movement

    .. py:attribute:: CONTROLLER_BUTTON_CLICK (5):   Button down and up within X msec

.. _BaseBaseDiagnosticIdentifierBankA:

.. py:class:: BaseDiagnosticIdentifierBankA

      Admissible Base bank A diagnostics.  Used with BaseCyclic.BaseFeedback.fault_bank_a 

    :canonical: kortex_api.autogen.messages.Base_pb2.BaseDiagnosticIdentifierBankA
    .. py:attribute:: BASE_BANK_A_UNSPECIFIED_DIAGNOSTIC_IDENTIFIER (0):   0x0 - Unspecified base diagnostic

    .. py:attribute:: BASE_BANK_A_FIRMWARE_UPDATE_FAILURE (1):   0x1 - Firmware update failure

    .. py:attribute:: BASE_BANK_A_EXTERNAL_COMMUNICATION_ERROR (2):   0x2 - External communication error

    .. py:attribute:: BASE_BANK_A_JOINT_FAULT (16):   0x10 - Joint fault

    .. py:attribute:: BASE_BANK_A_NO_KINEMATICS_SUPPORT (32):   0x20 - No kinematics support

    .. py:attribute:: BASE_BANK_A_NETWORK_ERROR (64):   0x40 - Network error

    .. py:attribute:: BASE_BANK_A_JOINT_DETECTION_ERROR (128):   0x80 - Joint detection error

    .. py:attribute:: BASE_BANK_A_NETWORK_INITIALIZATION_ERROR (256):   0x100 - Network initialization error

    .. py:attribute:: BASE_BANK_A_EMERGENCY_STOP_ACTIVATED (4096):   0x1000 - Emergency  stop activated

    .. py:attribute:: BASE_BANK_A_NVRAM_CORRUPTED (32768):   0x8000 - NVRAM corrupted

    .. py:attribute:: BASE_BANK_A_INCOMPATIBLE_FIRMWARE_VERSION (65536):   0x10000 - Incompatible firmware version

    .. py:attribute:: BASE_BANK_A_POWERON_SELF_TEST_FAILURE (131072):   0x20000 - Power on self test failure

    .. py:attribute:: BASE_BANK_A_STOP_TRIGGERED (1048576):   0x100000 - Stop triggered

    .. py:attribute:: BASE_BANK_A_PROTECTION_ZONE_COLLISION_DETECTED (2097152):   0x200000 - Protection zone collision detected

    .. py:attribute:: BASE_BANK_A_SELF_COLLISION_DETECTED (4194304):   0x400000 - Self-collision detected

    .. py:attribute:: BASE_BANK_A_COLLISION_DETECTED (8388608):   0x800000 - Collision detected

    .. py:attribute:: BASE_BANK_A_SAFETY_PARAMETERS_CHECKSUM_MISMATCH (16777216):   0x1000000 - Safety parameters checksum mismatch

    .. py:attribute:: BASE_BANK_A_HARD_STOP_FAILURE (33554432):   0x2000000 - Hard Stop command failed

    .. py:attribute:: BASE_BANK_A_SINGULARITY_ERROR_DETECTED (67108864):   0x4000000 - Singularity error detected

    .. py:attribute:: BASE_BANK_A_JOINT_LIMIT_POSITION (134217728):   0x8000000 - Joint Limit Position

    .. py:attribute:: BASE_BANK_A_JOINT_TRACKING_ERROR (268435456):   0x10000000 - Joint Tracking Error

    .. py:attribute:: BASE_BANK_A_CALIB_SERIAL_NUMBER_INVALID (536870912):   0x20000000 - Calibration serial number invalid

    .. py:attribute:: BASE_BANK_A_ACTUATOR_MODEL_INVALID (1073741824):   0x40000000 - Actuator Model invalid

.. _BaseBaseDiagnosticIdentifierBankB:

.. py:class:: BaseDiagnosticIdentifierBankB

      Admissible Base bank B diagnostics.  Used with BaseCyclic.BaseFeedback.fault_bank_b 

    :canonical: kortex_api.autogen.messages.Base_pb2.BaseDiagnosticIdentifierBankB
    .. py:attribute:: BASE_BANK_B_UNSPECIFIED_DIAGNOSTIC_IDENTIFIER (0):   0x0 - Unspecified base diagnostic

    .. py:attribute:: BASE_BANK_B_JOINT_1_MOTOR_TEMPERATURE_TOO_HIGH (1):   0x1 - Joint 1 motor temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_2_MOTOR_TEMPERATURE_TOO_HIGH (2):   0x2 - Joint 2 motor temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_3_MOTOR_TEMPERATURE_TOO_HIGH (4):   0x4 - Joint 3 motor temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_4_MOTOR_TEMPERATURE_TOO_HIGH (8):   0x8 - Joint 4 motor temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_5_MOTOR_TEMPERATURE_TOO_HIGH (16):   0x10 - Joint 5 motor temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_6_MOTOR_TEMPERATURE_TOO_HIGH (32):   0x20 - Joint 6 motor temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_7_MOTOR_TEMPERATURE_TOO_HIGH (64):   0x40 - Joint 7 motor temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_1_CORE_TEMPERATURE_TOO_HIGH (128):   0x80 - Joint 1 core temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_2_CORE_TEMPERATURE_TOO_HIGH (256):   0x100 - Joint 2 core temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_3_CORE_TEMPERATURE_TOO_HIGH (512):   0x200 - Joint 3 core temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_4_CORE_TEMPERATURE_TOO_HIGH (1024):   0x400 - Joint 4 core temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_5_CORE_TEMPERATURE_TOO_HIGH (2048):   0x800 - Joint 5 core temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_6_CORE_TEMPERATURE_TOO_HIGH (4096):   0x1000 - Joint 6 core temperature too high

    .. py:attribute:: BASE_BANK_B_JOINT_7_CORE_TEMPERATURE_TOO_HIGH (8192):   0x2000 - Joint 7 core temperature too high

.. _BaseLinkStateIdentifierBank:

.. py:class:: LinkStateIdentifierBank

      Admissible State Bank  Used with BaseCyclic.BaseFeedback.state_bank 

    :canonical: kortex_api.autogen.messages.Base_pb2.LinkStateIdentifierBank
    .. py:attribute:: LINK_STATE_BANK_UNSPECIFIED_IDENTIFIER (0):   0x0 - Unspecified Link state bank identifier

    .. py:attribute:: LINK_STATE_BANK_COLLISION_DETECTED (1):   0x1 - Collision detected

.. _BaseLinkSCUDiagnosticIdentifierBankA:

.. py:class:: LinkSCUDiagnosticIdentifierBankA

      Admissible Link SCU bank A diagnostics.  Used with BaseCyclic.BaseFeedback.scu_fault_bank_a 

    :canonical: kortex_api.autogen.messages.Base_pb2.LinkSCUDiagnosticIdentifierBankA
    .. py:attribute:: LINK_SCU_BANK_A_UNSPECIFIED_DIAGNOSTIC_IDENTIFIER (0):   0x0 - Unspecified Link SCU diagnostic bank A identifier

    .. py:attribute:: LINK_SCU_BANK_A_STARTUP_SELF_TESTS_TIMED_OUT (1):   0x1 - startup self-tests timed out

    .. py:attribute:: LINK_SCU_BANK_A_SCU_MCU_BIST_MODULE_FAILURE (2):   0x2 - SCU MCU BIST module failure

    .. py:attribute:: LINK_SCU_BANK_A_SCU_MCU_MEMORY_BIST_FAULT (4):   0x4 - SCU MCU memory BIST fault

    .. py:attribute:: LINK_SCU_BANK_A_SCU_MCU_LOGIC_BIST_FAULT (8):   0x8 - SCU MCU logic BIST fault

    .. py:attribute:: LINK_SCU_BANK_A_SCU_MCU_STARTUP_BIST_TIMEOUT (16):   0x10 - SCU MCU startup BIST timeout

    .. py:attribute:: LINK_SCU_BANK_A_SCU_MCU_CORE_TEMPERATURE_TOO_HIGH (64):   0x40 - SCU MCU core temperature too high

    .. py:attribute:: LINK_SCU_BANK_A_SCU_MCU_CORE_TEMPERATURE_TOO_LOW (128):   0x80 - SCU MCU core temperature too low

    .. py:attribute:: LINK_SCU_BANK_A_SCU_BOARD_TEMPERATURE_TOO_HIGH (256):   0x100 - SCU board temperature too high

    .. py:attribute:: LINK_SCU_BANK_A_SCU_BOARD_TEMPERATURE_TOO_LOW (512):   0x200 - SCU board temperature too low

    .. py:attribute:: LINK_SCU_BANK_A_RESERVED_1024 (1024):   0x400 - reserved

    .. py:attribute:: LINK_SCU_BANK_A_RESERVED_2048 (2048):   0x800 - reserved

    .. py:attribute:: LINK_SCU_BANK_A_SBC_SPI_CONFIGURATION_FAILED (4096):   0x1000 - SBC SPI configuration failed

    .. py:attribute:: LINK_SCU_BANK_A_SBC_FAULT_DETECTED (8192):   0x2000 - SBC fault detected

    .. py:attribute:: LINK_SCU_BANK_A_SBC_DEBUG_MODE_ACTIVE (16384):   0x4000 - SBC debug mode active

    .. py:attribute:: LINK_SCU_BANK_A_CLAMP_VIN_OVERVOLTAGE (32768):   0x8000 - clamp Vin overvoltage

    .. py:attribute:: LINK_SCU_BANK_A_CLAMP_VIN_UNDERVOLTAGE (65536):   0x10000 - clamp Vin_undervoltage

    .. py:attribute:: LINK_SCU_BANK_A_CLAMP_VOUT_OVERVOLTAGE (131072):   0x20000 - clamp Vout overvoltage

    .. py:attribute:: LINK_SCU_BANK_A_CLAMP_VOUT_UNDERVOLTAGE (262144):   0x40000 - clamp Vout undervoltage

    .. py:attribute:: LINK_SCU_BANK_A_CLAMP_TEMPERATURE_TOO_HIGH (524288):   0x80000 - clamp temperature too high

    .. py:attribute:: LINK_SCU_BANK_A_ARM_OVERCURRENT (1048576):   0x100000 - arm overcurrent

    .. py:attribute:: LINK_SCU_BANK_A_EMERGENCY_STOP_BUTTON_SIGNALS_DISAGREEMENT (2097152):   0x200000 - emergency stop button signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_SAFETY_INPUT_0_SIGNALS_DISAGREEMENT (4194304):   0x400000 - safety input 0 signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_SAFETY_INPUT_1_SIGNALS_DISAGREEMENT (8388608):   0x800000 - safety input 1 signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_SAFETY_INPUT_2_SIGNALS_DISAGREEMENT (16777216):   0x1000000 - safety input 2 signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_SAFETY_INPUT_3_SIGNALS_DISAGREEMENT (33554432):   0x2000000 - safety input 3 signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_SAFETY_INPUT_4_SIGNALS_DISAGREEMENT (67108864):   0x4000000 - safety input 4 signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_SAFETY_INPUT_5_SIGNALS_DISAGREEMENT (134217728):   0x8000000 - safety input 5 signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_SAFETY_INPUT_6_SIGNALS_DISAGREEMENT (268435456):   0x10000000 - safety input 6 signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_SAFETY_INPUT_7_SIGNALS_DISAGREEMENT (536870912):   0x20000000 - safety input 7 signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_TP_EMERGENCY_STOP_SIGNALS_DISAGREEMENT (1073741824):   0x40000000 - teach pendant emergency stop button signals disagreement

    .. py:attribute:: LINK_SCU_BANK_A_TP_ENABLING_DEVICE_SIGNALS_DISAGREEMENT (-2147483648):   0x80000000 - teach pendant enabling device signals disagreement

.. _BaseLinkSCUDiagnosticIdentifierBankB:

.. py:class:: LinkSCUDiagnosticIdentifierBankB

      Admissible Link SCU bank B diagnostics.  Used with BaseCyclic.BaseFeedback.scu_fault_bank_b 

    :canonical: kortex_api.autogen.messages.Base_pb2.LinkSCUDiagnosticIdentifierBankB
    .. py:attribute:: LINK_SCU_BANK_B_UNSPECIFIED_DIAGNOSTIC_IDENTIFIER (0):   0x0 - Unspecified Link SCU diagnostic bank B identifier

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_MPU (1):   0x1 - safe comm failure MPU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_1_MAIN_MCU (2):   0x2 - safe comm failure joint 1 main MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_1_SAFETY_MCU (4):   0x4 - safe comm failure joint 1 safety MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_2_MAIN_MCU (8):   0x8 - safe comm failure joint 2 main MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_2_SAFETY_MCU (16):   0x10 - safe comm failure joint 2 safety MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_3_MAIN_MCU (32):   0x20 - safe comm failure joint 3 main MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_3_SAFETY_MCU (64):   0x40 - safe comm failure joint 3 safety MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_4_MAIN_MCU (128):   0x80 - safe comm failure joint 4 main MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_4_SAFETY_MCU (256):   0x100 - safe comm failure joint 4 safety MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_5_MAIN_MCU (512):   0x200 - safe comm failure joint 5 main MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_5_SAFETY_MCU (1024):   0x400 - safe comm failure joint 5 safety MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_6_MAIN_MCU (2048):   0x800 - safe comm failure joint 6 main MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_6_SAFETY_MCU (4096):   0x1000 - safe comm failure joint 6 safety MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_7_MAIN_MCU (8192):   0x2000 - safe comm failure joint 7 main MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_JOINT_7_SAFETY_MCU (16384):   0x4000 - safe comm failure joint 7 safety MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_WRIST_MAIN_MCU (32768):   0x8000 - safe comm failure wrist main MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_COMM_FAILURE_WRIST_SAFETY_MCU (65536):   0x10000 - safe comm failure wrist safety MCU

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_BANK_A_CONFIGURATION_FAILED (131072):   0x20000 - safe DI bank A configuration failed

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_BANK_A_SPI_COMMUNICATION_FAILURE (262144):   0x40000 - safe DI bank A SPI communication failure

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_BANK_A_FAULT_DETECTED (524288):   0x80000 - safe DI bank A fault detected

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_RESERVED_0 (1048576):   0x100000 - safe DI bank A reserved 0

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_RESERVED_1 (2097152):   0x200000 - safe DI bank A reserved 1

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_RESERVED_2 (4194304):   0x400000 - safe DI bank A reserved 2

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_RESERVED_3 (8388608):   0x800000 - safe DI bank A reserved 3

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_RESERVED_4 (16777216):   0x1000000 - safe DI bank A reserved 4

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_RESERVED_5 (33554432):   0x2000000 - safe DI bank A reserved 5

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_RESERVED_6 (67108864):   0x4000000 - safe DI bank A reserved 6

    .. py:attribute:: LINK_SCU_BANK_B_SAFE_DI_RESERVED_7 (134217728):   0x8000000 - safe DI bank A reserved 7

.. _BaseLinkSCUDiagnosticIdentifierBankC:

.. py:class:: LinkSCUDiagnosticIdentifierBankC

      Admissible Link SCU bank C diagnostics.  Used with BaseCyclic.BaseFeedback.scu_fault_bank_c 

    :canonical: kortex_api.autogen.messages.Base_pb2.LinkSCUDiagnosticIdentifierBankC
    .. py:attribute:: LINK_SCU_BANK_C_UNSPECIFIED_DIAGNOSTIC_IDENTIFIER (0):   0x0 - Unspecified Link SCU diagnostic bank C identifier

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DI_BANK_B_CONFIGURATION_FAILED (1):   0x1 - safe DI bank B configuration failed

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DI_BANK_B_SPI_COMMUNICATION_FAILURE (2):   0x2 - safe DI bank B SPI communication failure

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DI_BANK_B_FAULT_DETECTED (4):   0x4 - safe DI bank B fault detected

    .. py:attribute:: LINK_SCU_BANK_C_ENABLING_DEVICE_OPERATING_MODE_VIOLATION (8):   0x8 - Enabling devices vs. arm operating mode violation detected

    .. py:attribute:: LINK_SCU_BANK_C_WRIST_ENABLING_DEVICE_OPERATING_MODE_VIOLATION (16):   0x10 - Wrist enabling device vs. arm operating mode violation detected

    .. py:attribute:: LINK_SCU_BANK_C_TCP_POSITION_DISAGREEMENT (32):   0x20 - tcp position disagreement

    .. py:attribute:: LINK_SCU_BANK_C_TCP_ORIENTATION_DISAGREEMENT (64):   0x40 - tcp orientation disagreement

    .. py:attribute:: LINK_SCU_BANK_C_TCP_TRANSLATION_SPEED_DISAGREEMENT (128):   0x80 - tcp translation speed disagreement

    .. py:attribute:: LINK_SCU_BANK_C_TCP_ROTATION_SPEED_DISAGREEMENT (256):   0x100 - tcp rotation speed disagreement

    .. py:attribute:: LINK_SCU_BANK_C_TCP_MONITORING_RESERVED_0 (512):   0x200 - tcp monitoring reserved 0

    .. py:attribute:: LINK_SCU_BANK_C_TCP_MONITORING_RESERVED_1 (1024):   0x400 - tcp monitoring reserved 1

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CONFIGURATION_FAILED (2048):   0x800 - safe DO bank A configuration failed

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_SPI_COMMUNICATION_FAILURE (4096):   0x1000 - safe DO bank A SPI communication failure

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_UNDERVOLTAGE_LOCKOUT (8192):   0x2000 - safe DO bank A undervoltage lockout

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CHA_0_FAULT_DETECTED (16384):   0x4000 - safe DO bank A channel 0 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CHA_1_FAULT_DETECTED (32768):   0x8000 - safe DO bank A channel 1 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CHA_2_FAULT_DETECTED (65536):   0x10000 - safe DO bank A channel 2 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CHA_3_FAULT_DETECTED (131072):   0x20000 - safe DO bank A channel 3 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CHA_4_FAULT_DETECTED (262144):   0x40000 - safe DO bank A channel 4 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CHA_5_FAULT_DETECTED (524288):   0x80000 - safe DO bank A channel 5 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CHA_6_FAULT_DETECTED (1048576):   0x100000 - safe DO bank A channel 6 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_A_CHA_7_FAULT_DETECTED (2097152):   0x200000 - safe DO bank A channel 7 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_CONFIGURATION_FAILED (4194304):   0x400000 - safe DO bank B configuration failed

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_SPI_COMMUNICATION_FAILURE (8388608):   0x800000 - safe DO bank B SPI communication failure

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_UNDERVOLTAGE_LOCKOUT (16777216):   0x1000000 - safe DO bank B undervoltage lockout

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_CHA_0_FAULT_DETECTED (33554432):   0x2000000 - safe DO bank B channel 0 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_CHA_1_FAULT_DETECTED (67108864):   0x4000000 - safe DO bank B channel 1 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_CHA_2_FAULT_DETECTED (134217728):   0x8000000 - safe DO bank B channel 2 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_CHA_3_FAULT_DETECTED (268435456):   0x10000000 - safe DO bank B channel 3 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_CHA_4_FAULT_DETECTED (536870912):   0x20000000 - safe DO bank B channel 4 fault detected

    .. py:attribute:: LINK_SCU_BANK_C_SAFE_DO_BANK_B_CHA_5_FAULT_DETECTED (1073741824):   0x40000000 - safe DO bank B channel 5 fault detected

.. _BaseLinkSCUDiagnosticIdentifierBankD:

.. py:class:: LinkSCUDiagnosticIdentifierBankD

      Admissible Link SCU bank D diagnostics.  Used with BaseCyclic.BaseFeedback.scu_fault_bank_d 

    :canonical: kortex_api.autogen.messages.Base_pb2.LinkSCUDiagnosticIdentifierBankD
    .. py:attribute:: LINK_SCU_BANK_D_UNSPECIFIED_DIAGNOSTIC_IDENTIFIER (0):   0x0 - Unspecified Link SCU diagnostic bank D identifier

    .. py:attribute:: LINK_SCU_BANK_D_SAFE_DO_BANK_B_CHA_6_FAULT_DETECTED (1):   0x1 - safe DO bank B channel 6 fault detected

    .. py:attribute:: LINK_SCU_BANK_D_SAFE_DO_BANK_B_CHA_7_FAULT_DETECTED (2):   0x2 - safe DO bank B channel 7 fault detected

    .. py:attribute:: LINK_SCU_BANK_D_FCCU_RESET_OCCURRED (4):   0x4 - FCCU reset occurred

    .. py:attribute:: LINK_SCU_BANK_D_SOFTWARE_WATCHDOG_TIMER_RESET_OCCURRED (8):   0x8 - software watchdog timer reset occurred

    .. py:attribute:: LINK_SCU_BANK_D_SBC_WATCHDOG_RESET_OCCURRED (16):   0x10 - SBC watchdog reset occurred

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_FAULT_DETECTED (32):   0x20 - joint fault detected

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_1_POSITION_DISAGREEMENT (64):   0x40 - joint 1 position disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_2_POSITION_DISAGREEMENT (128):   0x80 - joint 2 position disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_3_POSITION_DISAGREEMENT (256):   0x100 - joint 3 position disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_4_POSITION_DISAGREEMENT (512):   0x200 - joint 4 position disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_5_POSITION_DISAGREEMENT (1024):   0x400 - joint 5 position disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_6_POSITION_DISAGREEMENT (2048):   0x800 - joint 6 position disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_7_POSITION_DISAGREEMENT (4096):   0x1000 - joint 7 position disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_1_SPEED_DISAGREEMENT (8192):   0x2000 - joint 1 speed disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_2_SPEED_DISAGREEMENT (16384):   0x4000 - joint 2 speed disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_3_SPEED_DISAGREEMENT (32768):   0x8000 - joint 3 speed disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_4_SPEED_DISAGREEMENT (65536):   0x10000 - joint 4 speed disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_5_SPEED_DISAGREEMENT (131072):   0x20000 - joint 5 speed disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_6_SPEED_DISAGREEMENT (262144):   0x40000 - joint 6 speed disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_7_SPEED_DISAGREEMENT (524288):   0x80000 - joint 7 speed disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_1_TORQUE_DISAGREEMENT (1048576):   0x100000 - joint 1 torque disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_2_TORQUE_DISAGREEMENT (2097152):   0x200000 - joint 2 torque disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_3_TORQUE_DISAGREEMENT (4194304):   0x400000 - joint 3 torque disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_4_TORQUE_DISAGREEMENT (8388608):   0x800000 - joint 4 torque disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_5_TORQUE_DISAGREEMENT (16777216):   0x1000000 - joint 5 torque disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_6_TORQUE_DISAGREEMENT (33554432):   0x2000000 - joint 6 torque disagreement

    .. py:attribute:: LINK_SCU_BANK_D_JOINT_7_TORQUE_DISAGREEMENT (67108864):   0x4000000 - joint 7 torque disagreement

    .. py:attribute:: LINK_SCU_BANK_D_ARM_POWER_RELAY_A_STUCK (134217728):   0x8000000 - power relay A is stuck

    .. py:attribute:: LINK_SCU_BANK_D_ARM_POWER_RELAY_B_STUCK (268435456):   0x10000000 - power relay B is stuck

    .. py:attribute:: LINK_SCU_BANK_D_ARM_INRUSH_CURRENT_LIMITER_MOSFET_STUCK (536870912):   0x20000000 - inrush current limiter mosfet circuit is stuck

    .. py:attribute:: LINK_SCU_BANK_D_EMERGENCY_STOP_DELAY_CIRCUIT_A_MALFUNCTION (1073741824):   0x40000000 - malfunction detected in Emergency Stop Delay Circuit A

    .. py:attribute:: LINK_SCU_BANK_D_EMERGENCY_STOP_DELAY_CIRCUIT_B_MALFUNCTION (-2147483648):   0x80000000 - malfunction detected in Emergency Stop Delay Circuit B

.. _BaseWrenchMode:

.. py:class:: WrenchMode

     Admissible wrench (force) modes

    :canonical: kortex_api.autogen.messages.Base_pb2.WrenchMode
    .. py:attribute:: UNSPECIFIED_WRENCH_MODE (0):   Unspecified wrench mode

    .. py:attribute:: WRENCH_RESTRICTED (1):   Wrench restricted mode (tool motion is authorized only in the direction of the wrench command)

    .. py:attribute:: WRENCH_NORMAL (2):   Wrench normal mode (tool motion is authorized in any direction)

.. _BaseHandGuidingMode:

.. py:class:: HandGuidingMode

     Admissible Hand-Guiding modes

    :canonical: kortex_api.autogen.messages.Base_pb2.HandGuidingMode
    .. py:attribute:: UNSPECIFIED_HAND_GUIDING_MODE (0):   Unspecified Hand-Guiding mode

    .. py:attribute:: CARTESIAN (1):   Cartesian Hand-Guiding mode

    .. py:attribute:: JOINT (2):   Joint Hand-Guiding mode

    .. py:attribute:: NULL_SPACE (3):   Null space Hand-Guiding mode

    .. py:attribute:: DISABLED (4):   No Hand-Guiding

.. _BaseNavigationDirection:

.. py:class:: NavigationDirection

     Admissible map navigation directions

    :canonical: kortex_api.autogen.messages.Base_pb2.NavigationDirection
    .. py:attribute:: UNSPECIFIED_NAVIGATION_DIRECTION (0):   Unspecified navigation direction

    .. py:attribute:: NEXT (1):   Go to next map

    .. py:attribute:: UP (2):   Go to parent map group (not implemented yet)

    .. py:attribute:: DOWN (3):   Go to children map group (not implemented yet)

    .. py:attribute:: PREVIOUS (4):   Go to previous map

.. _BaseJointNavigationDirection:

.. py:class:: JointNavigationDirection

     Admissible joint navigation directions

    :canonical: kortex_api.autogen.messages.Base_pb2.JointNavigationDirection
    .. py:attribute:: UNSPECIFIED_JOINT_NAVIGATION_DIRECTION (0):   Unspecified joint navigation direction

    .. py:attribute:: JOINT_NEXT (1):   Go to next joint

    .. py:attribute:: JOINT_PREVIOUS (2):   Go to previous joint

.. _BaseSoundType:

.. py:class:: SoundType

     Admissible sound types (not implemented yet)

    :canonical: kortex_api.autogen.messages.Base_pb2.SoundType
    .. py:attribute:: UNSPECIFIED_SOUND_TYPE (0):   Unspecified sound types

    .. py:attribute:: BIP_SERIES (1):   Bip series sound type

    .. py:attribute:: SINGLE_BIP (2):   Single bin sound type

.. _BaseXboxOneDigitalInputIdentifier:

.. py:class:: XboxOneDigitalInputIdentifier

     Admissible XBOXONE digital inputs

    :canonical: kortex_api.autogen.messages.Base_pb2.XboxOneDigitalInputIdentifier
    .. py:attribute:: UNSPECIFIED_XBOXONE_DIGITAL (0):   Unspecified  digital input

    .. py:attribute:: XBOXONE_PAD_UP (1):   Pad up input

    .. py:attribute:: XBOXONE_PAD_DOWN (2):   Pad down input

    .. py:attribute:: XBOXONE_PAD_LEFT (3):   Pad left input

    .. py:attribute:: XBOXONE_PAD_RIGHT (4):   Pad right input

    .. py:attribute:: XBOXONE_FILE_BUTTON_START (5):   File button start input

    .. py:attribute:: XBOXONE_DOCUMENT_BUTTON_BACK (6):   Document button back input

    .. py:attribute:: XBOXONE_LEFT_THUMB_BUTTON (7):   Left thumb button input

    .. py:attribute:: XBOXONE_RIGHT_THUMB_BUTTON (8):   Right thumb button input

    .. py:attribute:: XBOXONE_LEFT_SHOULDER (9):   Left shoulder input

    .. py:attribute:: XBOXONE_RIGHT_SHOULDER (10):   Right shoulder input

    .. py:attribute:: XBOXONE_BUTTON_A (13):   Button A input

    .. py:attribute:: XBOXONE_BUTTON_B (14):   Button B input

    .. py:attribute:: XBOXONE_BUTTON_X (15):   Button X input

    .. py:attribute:: XBOXONE_BUTTON_Y (16):   Button Y input

.. _BaseXboxOneAnalogInputIdentifier:

.. py:class:: XboxOneAnalogInputIdentifier

     Admissible XBOXONE analog inputs

    :canonical: kortex_api.autogen.messages.Base_pb2.XboxOneAnalogInputIdentifier
    .. py:attribute:: UNSPECIFIED_XBOXONE_ANALOG (0):   Unspecified analog input

    .. py:attribute:: XBOXONE_THUMB_LEFT_X (1):   Thumb left X input

    .. py:attribute:: XBOXONE_THUMB_LEFT_Y (2):   Thumb left Y input

    .. py:attribute:: XBOXONE_THUMB_RIGHT_X (3):   Thumb right X input

    .. py:attribute:: XBOXONE_THUMB_RIGHT_Y (4):   Thumb right Y input

    .. py:attribute:: XBOXONE_TRIGGER_LEFT (5):   Trigger left input

    .. py:attribute:: XBOXONE_TRIGGER_RIGHT (6):   Trigger right input

.. _BaseGen3WristDigitalInputIdentifier:

.. py:class:: Gen3WristDigitalInputIdentifier

     Admissible Gen3 wrist digital inputs

    :canonical: kortex_api.autogen.messages.Base_pb2.Gen3WristDigitalInputIdentifier
    .. py:attribute:: UNSPECIFIED_WRIST_DIGITAL (0):   Unspecified digital input

    .. py:attribute:: WRIST_BUTTON_1 (1):   Button 1 input

    .. py:attribute:: WRIST_BUTTON_2 (2):   Button 2 input

    .. py:attribute:: WRIST_BUTTON_BOTH (3):   Button 1 + Button 2 combo

.. _BaseLink6WristDigitalInputIdentifier:

.. py:class:: Link6WristDigitalInputIdentifier

     Admissible Link 6 wrist digital inputs

    :canonical: kortex_api.autogen.messages.Base_pb2.Link6WristDigitalInputIdentifier
    .. py:attribute:: UNSPECIFIED_BUTTON (0):   Unspecified digital input

    .. py:attribute:: HAND_GUIDING_BUTTON (1):   Hand-Guiding button

    .. py:attribute:: SNAPSHOT_BUTTON (2):   Snapshot button

    .. py:attribute:: PLUS_BUTTON (3):   "Plus" button (+)

    .. py:attribute:: MINUS_BUTTON (4):   "Minus" button (-)

    .. py:attribute:: MODE_SELECTION_BUTTON (5):   Mode selection button

.. _BaseCapSenseMode:

.. py:class:: CapSenseMode

     Admissible capacitive sensor modes

    :canonical: kortex_api.autogen.messages.Base_pb2.CapSenseMode
    .. py:attribute:: RESERVED (0):   Reserved, do not use

    .. py:attribute:: INACTIVE (1):   Cap sensor is inactive

    .. py:attribute:: ACTIVE_AUTO_THRESHOLD (2):   Cap sensor is active in automatic threshold mode

    .. py:attribute:: ACTIVE_NOISE_ATT (4):   Cap sensor is active with noise mitigation enabled

    .. py:attribute:: ACTIVE_NORMAL (5):   Cap sensor is active in normal mode

    .. py:attribute:: CONFIGURATION (6):   Configuration mode

.. _BaseTrajectoryContinuityMode:

.. py:class:: TrajectoryContinuityMode

     Admissible trajectory continuity mode

    :canonical: kortex_api.autogen.messages.Base_pb2.TrajectoryContinuityMode
    .. py:attribute:: TRAJECTORY_CONTINUITY_MODE_UNSPECIFIED (0):   Unspecified continuity

    .. py:attribute:: TRAJECTORY_CONTINUITY_MODE_POSITION (1):   Position continuity only

    .. py:attribute:: TRAJECTORY_CONTINUITY_MODE_SPEED (2):   Position and speed continuity

    .. py:attribute:: TRAJECTORY_CONTINUITY_MODE_ACCELERATION (3):   Position, speed and acceleration continuity

.. _BaseTrajectoryErrorType:

.. py:class:: TrajectoryErrorType

     Trajectory validation error types

    :canonical: kortex_api.autogen.messages.Base_pb2.TrajectoryErrorType
    .. py:attribute:: TRAJECTORY_ERROR_TYPE_UNSPECIFIED (0):   Unspecified error type

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_OUTSIDE_WORKSPACE (1):   The desired pose is outside robot workspace

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_ACTUATOR_COUNT_MISMATCH (2):   The provided number of joint values does not match robot's number of actuators

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_DURATION (3):   The duration exceeds a limit or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_JOINT_NO_MOTION (4):   The robot's actuators are already at the targeted configuration

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_JOINT_SPEED (5):   The joint speed exceeds a limit, initial speed does not match current robot speed or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_JOINT_ACCELERATION (7):   The joint acceleration exceeds a limit or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_TIME_STEP (8):   The time step does not match robot time step or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_TRAJECTORY_SIZE (9):   The trajectory size is outside the limits or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_JOINT_POSITION (11):   The joint position exceeds a limit, initial joint position does not match current robot joint position or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_TRAJECTORY_ALREADY_RUNNING (15):   The new trajectory cannot start because another trajectory is being played

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_CARTESIAN_POSITION (20):   The cartesian position exceeds a limit, initial pose does not match current robot pose or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_CARTESIAN_ORIENTATION (21):   The cartesian orientation exceeds a limit, initial orientation does not match current robot orientation or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_CARTESIAN_LINEAR_VELOCITY (22):   The cartesian linear velocity exceeds a limit or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_CARTESIAN_ANGULAR_VELOCITY (23):   The cartesian angular velocity exceeds a limit or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_JOINT_TORQUE (24):   The joint torque exceeds a limit or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_MULTIPLE_WAYPOINT_TYPE_LIST (25):   The waypoints in a trajectory must be all of the same type (cartesian or angular)

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INITIAL_WAYPOINT_NO_STOP (26):   The first waypoint must not have blending

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_FINAL_WAYPOINT_NO_STOP (27):   The last waypoint must not have blending

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_BLENDING_RADIUS (28):   The blending radius must be positive and not overlap other blendings or waypoint or is invalid

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_INVALID_REFERENCE_FRAME (29):   The reference frame is invalid or not supported

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_NUMERICAL_ERROR_IMPOSSIBLE_TRAJECTORY (30):   The conditions (points, velocities) of the trajectory lead to numerical errors that make the computation impossible

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_CONTROLLED_STOP_IN_PROGRESS (31):   A controlled stop is in progress

    .. py:attribute:: TRAJECTORY_ERROR_TYPE_COMPUTE_FAIL_UNEXPECTED_ERROR (32):   Computation of Waypoint trajectory failed due to an unknown error.

.. _BaseTrajectoryInfoType:

.. py:class:: TrajectoryInfoType

     Additional trajectory info type

    :canonical: kortex_api.autogen.messages.Base_pb2.TrajectoryInfoType
    .. py:attribute:: UNSPECIFIED_TRAJECTORY_INFORMATION (0):   No information provided

    .. py:attribute:: JOINT_ACCELERATION_LIMIT_REACHED (1):   Joint acceleration limit reached

    .. py:attribute:: JOINT_SPEED_LIMIT_REACHED (2):   Joint speed limit reached

    .. py:attribute:: JOINT_POSITION_LIMIT_REACHED (3):   Joint position limit reached

    .. py:attribute:: JOINT_TORQUE_LIMIT_REACHED (4):   Joint torque limit reached

    .. py:attribute:: SINGULARITY_REGION (5):   The arm is inside a singularity region

    .. py:attribute:: INVERSE_KINEMATIC_FAILED (6):   The inverse kinematic calculation has failed

    .. py:attribute:: CARTESIAN_ACCELERATION_LIMIT_REACHED (7):   Cartesian acceleration limit reached

    .. py:attribute:: CARTESIAN_SPEED_LIMIT_REACHED (8):   Cartesian speed limit reached

    .. py:attribute:: CARTESIAN_POSITION_LIMIT_REACHED (9):   Cartesian position limit reached

    .. py:attribute:: CARTESIAN_WRENCH_LIMIT_REACHED (10):   Cartesian torque limit reached

    .. py:attribute:: ENTERING_PROTECTION_ZONE (11):   The arm is entering a protection zone

    .. py:attribute:: WAYPOINT_REACHED (12):   Waypoint reached

    .. py:attribute:: TRAJECTORY_OK (13):   There is more trajectory notification

.. _BaseEnablingDeviceEvent:

.. py:class:: EnablingDeviceEvent

     Enabling device event type

    :canonical: kortex_api.autogen.messages.Base_pb2.EnablingDeviceEvent
    .. py:attribute:: UNSPECIFIED_ENABLING_DEVICE_EVENT (0):   No enabling device event

    .. py:attribute:: ENABLING_DEVICE_PRESSED (1):   The enabling device has been pressed

    .. py:attribute:: ENABLING_DEVICE_RELEASED (2):   The enabling device has been released

.. _BaseEnablingDeviceType:

.. py:class:: EnablingDeviceType

     Enabling device type

    :canonical: kortex_api.autogen.messages.Base_pb2.EnablingDeviceType
    .. py:attribute:: UNSPECIFIED_ENABLING_DEVICE_TYPE (0):   Unspecified enabling device

    .. py:attribute:: WRIST_ENABLING_DEVICE (1):   Wrist enabling device

    .. py:attribute:: TEACH_PENDANT_ENABLING_DEVICE (2):   Teach pendant enabling device

    .. py:attribute:: SAFETY_INPUT_ENABLING_DEVICE (3):   Safety input enabling device

.. _BaseInverseKinematicsEventType:

.. py:class:: InverseKinematicsEventType

     Inverse kinematics event type

    :canonical: kortex_api.autogen.messages.Base_pb2.InverseKinematicsEventType
    .. py:attribute:: UNSPECIFIED_IK_EVENT (0):   Unspecified inverse kinematics event

    .. py:attribute:: IK_SOLUTION_NOT_FOUND (1):   Inverse kinematic solution event

    .. py:attribute:: IK_SINGULARITY_REGION (2):   Arm is in a singularity region event

.. _BaseJointLimitEventType:

.. py:class:: JointLimitEventType

     Joint limit event type

    :canonical: kortex_api.autogen.messages.Base_pb2.JointLimitEventType
    .. py:attribute:: UNSPECIFIED_JOINT_LIMIT_EVENT (0):   Unspecified joint limit event

    .. py:attribute:: JOINT_LIMIT_ACCELERATION (1):   Joint acceleration limit reached

    .. py:attribute:: JOINT_LIMIT_SPEED (2):   Joint speed limit reached

    .. py:attribute:: JOINT_LIMIT_POSITION (3):   Joint position limit reached

    .. py:attribute:: JOINT_LIMIT_POSITION_TOWARDS_LIMITS (4):   Joint moving toward joint position limits

    .. py:attribute:: JOINT_LIMIT_TORQUE (5):   Joint torque limit reached

    .. py:attribute:: JOINT_LIMIT_ACCELERATION_SATURATED (6):   Joint acceleration saturated

    .. py:attribute:: JOINT_LIMIT_SPEED_SATURATED (7):   Joint speed saturated

    .. py:attribute:: JOINT_LIMIT_POSITION_SATURATED (8):   Joint position saturated

    .. py:attribute:: JOINT_LIMIT_TRACKING_ERROR (9):   Joint position tracking error has exceeded the configured robot joint position tracking error limit

.. _BaseProtectionZoneEventType:

.. py:class:: ProtectionZoneEventType

     Protection zone event type

    :canonical: kortex_api.autogen.messages.Base_pb2.ProtectionZoneEventType
    .. py:attribute:: UNSPECIFIED_PROTECTION_ZONE_EVENT (0):   Unspecified protection zone event

    .. py:attribute:: PROTECTION_ZONE_INSIDE_REDUCED_SPEED_ZONE (1):   The tool or the arm has entered a reduced speed zone

    .. py:attribute:: PROTECTION_ZONE_INSIDE_STOP_ZONE (2):   The tool or the arm has entered in a protection zone (stopping)

.. _BaseProtectionZoneElementType:

.. py:class:: ProtectionZoneElementType

     Protection zone element type

    :canonical: kortex_api.autogen.messages.Base_pb2.ProtectionZoneElementType
    .. py:attribute:: UNSPECIFIED_PROTECTION_ZONE_ELEMENT (0):   Unspecified protection zone element type

    .. py:attribute:: PROTECTION_ZONE_ELEMENT_TOOL (1):   The tool has triggered the protection zone event

    .. py:attribute:: PROTECTION_ZONE_ELEMENT_ARM (2):   The arm has triggered the protection zone event

.. _BaseCollisionEventType:

.. py:class:: CollisionEventType

     Collision event type

    :canonical: kortex_api.autogen.messages.Base_pb2.CollisionEventType
    .. py:attribute:: UNSPECIFIED_COLLISION_EVENT (0):   Unspecified collision event type

    .. py:attribute:: COLLISION_DETECTED_EVENT (1):   A Collision has been detected on one or many joints

    .. py:attribute:: SELF_COLLISION_PREVENTED_EVENT (2):   A self collision between two joints has been prevented

.. _BaseCartesianLimitEventType:

.. py:class:: CartesianLimitEventType

     Cartesian limit event type

    :canonical: kortex_api.autogen.messages.Base_pb2.CartesianLimitEventType
    .. py:attribute:: UNSPECIFIED_CARTESIAN_LIMIT_EVENT (0):   Unspecified cartesian limit event

    .. py:attribute:: TOOL_LINEAR_VELOCITY_LIMIT (1):   Tool linear velocity limit reached

    .. py:attribute:: TOOL_ANGULAR_VELOCITY_LIMIT (2):   Tool angular velocity limit reached

    .. py:attribute:: ELBOW_LINEAR_VELOCITY_LIMIT (3):   Elbow linear velocity limit reached

    .. py:attribute:: TOOL_LINEAR_VELOCITY_SATURATED (4):   Tool linear velocity saturated

    .. py:attribute:: TOOL_ANGULAR_VELOCITY_SATURATED (5):   Tool angular velocity saturated

    .. py:attribute:: ELBOW_LINEAR_VELOCITY_SATURATED (6):   Elbow linear velocity saturated

.. _BaseProgramRequestEventType:

.. py:class:: ProgramRequestEventType

     Program request event type

    :canonical: kortex_api.autogen.messages.Base_pb2.ProgramRequestEventType
    .. py:attribute:: PROGRAM_REQUEST_UNSPECIFIED (0):   Unspecified program request

    .. py:attribute:: PROGRAM_REQUEST_PAUSE (1):   Program request pause

    .. py:attribute:: PROGRAM_REQUEST_RESUME (2):   Program request resume

    .. py:attribute:: PROGRAM_REQUEST_STOP (3):   Program request stop

    .. py:attribute:: PROGRAM_REQUEST_PAUSE_AUTOMATIC_RESUME (4):   Program request pause with automatic resume

.. _BaseAcknowledgeActionEvent:

.. py:class:: AcknowledgeActionEvent

     Acknowledge action event type

    :canonical: kortex_api.autogen.messages.Base_pb2.AcknowledgeActionEvent
    .. py:attribute:: UNSPECIFIED_ACKNOWLEDGE_ACTION_EVENT (0):   No acknowledge action event

    .. py:attribute:: ACKNOWLEDGE_ACTION_OCCURRED (1):   Acknowledge action occurred