:py:mod:`rofunc.simulator.src.franka_nut_bolt_ik_osc`
=====================================================

.. py:module:: rofunc.simulator.src.franka_nut_bolt_ik_osc

.. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`ScrewFSM <rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`orientation_error <rofunc.simulator.src.franka_nut_bolt_ik_osc.orientation_error>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.orientation_error
          :summary:
   * - :py:obj:`control_ik <rofunc.simulator.src.franka_nut_bolt_ik_osc.control_ik>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.control_ik
          :summary:

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`gym <rofunc.simulator.src.franka_nut_bolt_ik_osc.gym>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.gym
          :summary:
   * - :py:obj:`custom_parameters <rofunc.simulator.src.franka_nut_bolt_ik_osc.custom_parameters>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.custom_parameters
          :summary:
   * - :py:obj:`args <rofunc.simulator.src.franka_nut_bolt_ik_osc.args>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.args
          :summary:
   * - :py:obj:`device <rofunc.simulator.src.franka_nut_bolt_ik_osc.device>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.device
          :summary:
   * - :py:obj:`sim_params <rofunc.simulator.src.franka_nut_bolt_ik_osc.sim_params>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.sim_params
          :summary:
   * - :py:obj:`damping <rofunc.simulator.src.franka_nut_bolt_ik_osc.damping>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.damping
          :summary:
   * - :py:obj:`sim <rofunc.simulator.src.franka_nut_bolt_ik_osc.sim>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.sim
          :summary:
   * - :py:obj:`viewer <rofunc.simulator.src.franka_nut_bolt_ik_osc.viewer>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.viewer
          :summary:
   * - :py:obj:`asset_root <rofunc.simulator.src.franka_nut_bolt_ik_osc.asset_root>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.asset_root
          :summary:
   * - :py:obj:`table_dims <rofunc.simulator.src.franka_nut_bolt_ik_osc.table_dims>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_dims
          :summary:
   * - :py:obj:`asset_options <rofunc.simulator.src.franka_nut_bolt_ik_osc.asset_options>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.asset_options
          :summary:
   * - :py:obj:`table_asset <rofunc.simulator.src.franka_nut_bolt_ik_osc.table_asset>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_asset
          :summary:
   * - :py:obj:`bolt_file <rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_file>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_file
          :summary:
   * - :py:obj:`bolt_options <rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_options>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_options
          :summary:
   * - :py:obj:`bolt_asset <rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_asset>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_asset
          :summary:
   * - :py:obj:`nut_file <rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_file>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_file
          :summary:
   * - :py:obj:`nut_options <rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_options>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_options
          :summary:
   * - :py:obj:`nut_asset <rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_asset>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_asset
          :summary:
   * - :py:obj:`franka_asset_file <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_asset_file>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_asset_file
          :summary:
   * - :py:obj:`franka_asset <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_asset>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_asset
          :summary:
   * - :py:obj:`franka_dof_props <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_dof_props>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_dof_props
          :summary:
   * - :py:obj:`franka_lower_limits <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_lower_limits>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_lower_limits
          :summary:
   * - :py:obj:`franka_upper_limits <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_upper_limits>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_upper_limits
          :summary:
   * - :py:obj:`franka_ranges <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_ranges>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_ranges
          :summary:
   * - :py:obj:`franka_mids <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_mids>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_mids
          :summary:
   * - :py:obj:`franka_num_dofs <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_num_dofs>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_num_dofs
          :summary:
   * - :py:obj:`default_dof_pos <rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_pos>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_pos
          :summary:
   * - :py:obj:`default_dof_state <rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_state>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_state
          :summary:
   * - :py:obj:`default_dof_pos_tensor <rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_pos_tensor>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_pos_tensor
          :summary:
   * - :py:obj:`franka_link_dict <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_link_dict>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_link_dict
          :summary:
   * - :py:obj:`franka_hand_index <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_hand_index>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_hand_index
          :summary:
   * - :py:obj:`num_envs <rofunc.simulator.src.franka_nut_bolt_ik_osc.num_envs>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.num_envs
          :summary:
   * - :py:obj:`num_per_row <rofunc.simulator.src.franka_nut_bolt_ik_osc.num_per_row>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.num_per_row
          :summary:
   * - :py:obj:`spacing <rofunc.simulator.src.franka_nut_bolt_ik_osc.spacing>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.spacing
          :summary:
   * - :py:obj:`env_lower <rofunc.simulator.src.franka_nut_bolt_ik_osc.env_lower>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.env_lower
          :summary:
   * - :py:obj:`env_upper <rofunc.simulator.src.franka_nut_bolt_ik_osc.env_upper>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.env_upper
          :summary:
   * - :py:obj:`franka_pose <rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_pose>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_pose
          :summary:
   * - :py:obj:`table_pose <rofunc.simulator.src.franka_nut_bolt_ik_osc.table_pose>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_pose
          :summary:
   * - :py:obj:`bolt_pose <rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_pose>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_pose
          :summary:
   * - :py:obj:`nut_pose <rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_pose>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_pose
          :summary:
   * - :py:obj:`fsm_device <rofunc.simulator.src.franka_nut_bolt_ik_osc.fsm_device>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.fsm_device
          :summary:
   * - :py:obj:`envs <rofunc.simulator.src.franka_nut_bolt_ik_osc.envs>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.envs
          :summary:
   * - :py:obj:`nut_idxs <rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_idxs>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_idxs
          :summary:
   * - :py:obj:`bolt_idxs <rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_idxs>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_idxs
          :summary:
   * - :py:obj:`hand_idxs <rofunc.simulator.src.franka_nut_bolt_ik_osc.hand_idxs>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.hand_idxs
          :summary:
   * - :py:obj:`fsms <rofunc.simulator.src.franka_nut_bolt_ik_osc.fsms>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.fsms
          :summary:
   * - :py:obj:`plane_params <rofunc.simulator.src.franka_nut_bolt_ik_osc.plane_params>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.plane_params
          :summary:
   * - :py:obj:`cam_pos <rofunc.simulator.src.franka_nut_bolt_ik_osc.cam_pos>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.cam_pos
          :summary:
   * - :py:obj:`cam_target <rofunc.simulator.src.franka_nut_bolt_ik_osc.cam_target>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.cam_target
          :summary:
   * - :py:obj:`middle_env <rofunc.simulator.src.franka_nut_bolt_ik_osc.middle_env>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.middle_env
          :summary:
   * - :py:obj:`jacobian <rofunc.simulator.src.franka_nut_bolt_ik_osc.jacobian>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.jacobian
          :summary:
   * - :py:obj:`j_eef <rofunc.simulator.src.franka_nut_bolt_ik_osc.j_eef>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.j_eef
          :summary:
   * - :py:obj:`rb_states <rofunc.simulator.src.franka_nut_bolt_ik_osc.rb_states>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.rb_states
          :summary:
   * - :py:obj:`dof_states <rofunc.simulator.src.franka_nut_bolt_ik_osc.dof_states>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.dof_states
          :summary:
   * - :py:obj:`dof_pos <rofunc.simulator.src.franka_nut_bolt_ik_osc.dof_pos>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.dof_pos
          :summary:
   * - :py:obj:`pos_action <rofunc.simulator.src.franka_nut_bolt_ik_osc.pos_action>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.pos_action
          :summary:
   * - :py:obj:`d_pose <rofunc.simulator.src.franka_nut_bolt_ik_osc.d_pose>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.d_pose
          :summary:
   * - :py:obj:`grip_sep <rofunc.simulator.src.franka_nut_bolt_ik_osc.grip_sep>`
     - .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.grip_sep
          :summary:

API
~~~

.. py:function:: orientation_error(desired, current)
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.orientation_error

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.orientation_error

.. py:function:: control_ik(dpose, damping, j_eef, num_envs)
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.control_ik

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.control_ik

.. py:class:: ScrewFSM(sim_dt, nut_height, bolt_height, screw_speed, screw_limit_angle, device, env_idx)
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM

   .. rubric:: Initialization

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.__init__

   .. py:method:: get_dp_from_target(target_pos, target_quat, hand_pose) -> float
      :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.get_dp_from_target

      .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.get_dp_from_target

   .. py:method:: update(nut_pose, bolt_pose, hand_pose, current_gripper_sep)
      :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.update

      .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.update

   .. py:property:: d_pose
      :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.d_pose

      .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.d_pose

   .. py:property:: gripper_separation
      :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.gripper_separation

      .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.ScrewFSM.gripper_separation

.. py:data:: gym
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.gym
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.gym

.. py:data:: custom_parameters
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.custom_parameters
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.custom_parameters

.. py:data:: args
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.args
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.args

.. py:data:: device
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.device
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.device

.. py:data:: sim_params
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.sim_params
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.sim_params

.. py:data:: damping
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.damping
   :value: 0.15

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.damping

.. py:data:: sim
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.sim
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.sim

.. py:data:: viewer
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.viewer
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.viewer

.. py:data:: asset_root
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.asset_root
   :value: '../assets'

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.asset_root

.. py:data:: table_dims
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_dims
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_dims

.. py:data:: asset_options
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.asset_options
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.asset_options

.. py:data:: table_asset
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_asset
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_asset

.. py:data:: bolt_file
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_file
   :value: 'urdf/nut_bolt/bolt_m4_tight_SI_5x.urdf'

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_file

.. py:data:: bolt_options
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_options
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_options

.. py:data:: bolt_asset
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_asset
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_asset

.. py:data:: nut_file
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_file
   :value: 'urdf/nut_bolt/nut_m4_tight_SI_5x.urdf'

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_file

.. py:data:: nut_options
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_options
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_options

.. py:data:: nut_asset
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_asset
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_asset

.. py:data:: franka_asset_file
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_asset_file
   :value: 'urdf/franka_description/robots/franka_panda.urdf'

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_asset_file

.. py:data:: franka_asset
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_asset
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_asset

.. py:data:: franka_dof_props
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_dof_props
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_dof_props

.. py:data:: franka_lower_limits
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_lower_limits
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_lower_limits

.. py:data:: franka_upper_limits
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_upper_limits
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_upper_limits

.. py:data:: franka_ranges
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_ranges
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_ranges

.. py:data:: franka_mids
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_mids
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_mids

.. py:data:: franka_num_dofs
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_num_dofs
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_num_dofs

.. py:data:: default_dof_pos
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_pos
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_pos

.. py:data:: default_dof_state
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_state
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_state

.. py:data:: default_dof_pos_tensor
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_pos_tensor
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.default_dof_pos_tensor

.. py:data:: franka_link_dict
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_link_dict
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_link_dict

.. py:data:: franka_hand_index
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_hand_index
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_hand_index

.. py:data:: num_envs
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.num_envs
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.num_envs

.. py:data:: num_per_row
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.num_per_row
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.num_per_row

.. py:data:: spacing
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.spacing
   :value: 1.0

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.spacing

.. py:data:: env_lower
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.env_lower
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.env_lower

.. py:data:: env_upper
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.env_upper
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.env_upper

.. py:data:: franka_pose
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_pose
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.franka_pose

.. py:data:: table_pose
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_pose
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.table_pose

.. py:data:: bolt_pose
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_pose
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_pose

.. py:data:: nut_pose
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_pose
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_pose

.. py:data:: fsm_device
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.fsm_device
   :value: 'cpu'

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.fsm_device

.. py:data:: envs
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.envs
   :value: []

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.envs

.. py:data:: nut_idxs
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_idxs
   :value: []

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.nut_idxs

.. py:data:: bolt_idxs
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_idxs
   :value: []

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.bolt_idxs

.. py:data:: hand_idxs
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.hand_idxs
   :value: []

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.hand_idxs

.. py:data:: fsms
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.fsms
   :value: []

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.fsms

.. py:data:: plane_params
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.plane_params
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.plane_params

.. py:data:: cam_pos
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.cam_pos
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.cam_pos

.. py:data:: cam_target
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.cam_target
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.cam_target

.. py:data:: middle_env
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.middle_env
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.middle_env

.. py:data:: jacobian
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.jacobian
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.jacobian

.. py:data:: j_eef
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.j_eef
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.j_eef

.. py:data:: rb_states
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.rb_states
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.rb_states

.. py:data:: dof_states
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.dof_states
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.dof_states

.. py:data:: dof_pos
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.dof_pos
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.dof_pos

.. py:data:: pos_action
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.pos_action
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.pos_action

.. py:data:: d_pose
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.d_pose
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.d_pose

.. py:data:: grip_sep
   :canonical: rofunc.simulator.src.franka_nut_bolt_ik_osc.grip_sep
   :value: None

   .. autodoc2-docstring:: rofunc.simulator.src.franka_nut_bolt_ik_osc.grip_sep
