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)
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))
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)