def setup_inverse_kinematics(self):
        """
        This function is responsible for doing any setup for inverse kinematics.
        Inverse Kinematics maps end effector (EEF) poses to joint angles that
        are necessary to achieve those poses. 
        """

        # Set up a connection to the PyBullet simulator.
        p.connect(p.DIRECT)
        p.resetSimulation()

        # get paths to urdfs
        self.robot_urdf = pjoin(
            self.bullet_data_path, "sawyer_description/urdf/sawyer_arm.urdf"
        )

        # load the urdfs
        self.ik_robot = p.loadURDF(self.robot_urdf, (0, 0, 0.9), useFixedBase=1)

        # Simulation will update as fast as it can in real time, instead of waiting for
        # step commands like in the non-realtime case.
        p.setRealTimeSimulation(1)
def setup_inverse_kinematics ( self ) : p . connect ( p . DIRECT ) p . resetSimulation ( ) self . robot_urdf = pjoin ( self . bullet_data_path , "sawyer_description/urdf/sawyer_arm.urdf" ) self . ik_robot = p . loadURDF ( self . robot_urdf , ( 0 , 0 , 0.9 ) , useFixedBase = 1 ) p . setRealTimeSimulation ( 1 )
This function is responsible for doing any setup for inverse kinematics.
        Inverse Kinematics maps end effector (EEF) poses to joint angles that
        are necessary to achieve those poses.