Exemple #1
0
    def get_collection_handle_by_name(self, collection_name: str) -> int:
        """Retrieves the integer handle for a given collection.

        :param collection_name: Name of the collection to retrieve the integer handle for
        :return: An integer handle for the collection
        """
        return sim.simGetCollectionHandle(collection_name)
Exemple #2
0
    def __init__(self,
                 count: int,
                 name: str,
                 num_joints: int,
                 base_name: str = None,
                 max_velocity=1.0,
                 max_acceleration=4.0,
                 max_jerk=1000):
        """
        Count is used for when we have multiple copies of arms
        :param max_jerk: The second derivative of the velocity.
        """
        joint_names = ['%s_joint%d' % (name, i + 1) for i in range(num_joints)]
        super().__init__(count, name, joint_names, base_name)

        # Used for movement
        self.max_velocity = max_velocity
        self.max_acceleration = max_acceleration
        self.max_jerk = max_jerk

        # handles
        suffix = '' if count == 1 else '#%d' % (count - 2)
        self._snake_head = Dummy('%s_head%s' % (name, suffix))
        self._snake_tail = Dummy('%s_tail%s' % (name, suffix))
        self._collision_collection = sim.simGetCollectionHandle(
            '%s_collection%s' % (name, suffix))
Exemple #3
0
    def __init__(self, count: int, name: str, num_joints: int,
                 base_name: str = None,
                 max_velocity=1.0, max_acceleration=4.0, max_jerk=1000):
        """Count is used for when we have multiple copies of arms"""
        joint_names = ['%s_joint%d' % (name, i+1) for i in range(num_joints)]
        super().__init__(count, name, joint_names, base_name)

        # Used for motion planning
        self.max_velocity = max_velocity
        self.max_acceleration = max_acceleration
        self.max_jerk = max_jerk

        # Motion planning handles
        suffix = '' if count == 0 else '#%d' % (count - 1)
        self._ik_target = Dummy('%s_target%s' % (name, suffix))
        self._ik_tip = Dummy('%s_tip%s' % (name, suffix))
        self._ik_group = sim.simGetIkGroupHandle('%s_ik%s' % (name, suffix))
        self._collision_collection = sim.simGetCollectionHandle(
            '%s_arm%s' % (name, suffix))
    def __init__(self, count: int, num_wheels: int, name: str):
        """Count is used for when we have multiple copies of mobile bases.

        :param count: used for multiple copies of robots
        :param num_wheels: number of actuated wheels
        :param name: string with robot name (same as base in vrep model).
        """

        joint_names = [
            '%s_m_joint%s' % (name, str(i + 1)) for i in range(num_wheels)
        ]
        super().__init__(count, name, joint_names)

        self.num_wheels = num_wheels
        suffix = '' if count == 0 else '#%d' % (count - 1)

        wheel_names = [
            '%s_wheel%s%s' % (name, str(i + 1), suffix)
            for i in range(self.num_wheels)
        ]
        self.wheels = [Shape(name) for name in wheel_names]

        # Motion planning handles
        self.intermediate_target_base = Dummy('%s_intermediate_target_base%s' %
                                              (name, suffix))
        self.target_base = Dummy('%s_target_base%s' % (name, suffix))

        self._collision_collection = sim.simGetCollectionHandle('%s_base%s' %
                                                                (name, suffix))

        # Robot parameters and handle
        self.z_pos = self.get_position()[2]
        self.target_z = self.target_base.get_position()[-1]
        self.wheel_radius = self.wheels[0].get_bounding_box()[5]  # Z
        self.wheel_distance = np.linalg.norm(
            np.array(self.wheels[0].get_position()) -
            np.array(self.wheels[1].get_position()))

        # Make sure dummies are orphan if loaded with ttm
        self.intermediate_target_base.set_parent(None)
        self.target_base.set_parent(None)