예제 #1
0
 def __init__(self,
              header=None,
              orientation=None,
              link_name=None,
              absolute_x_axis_tolerance=0.0,
              absolute_y_axis_tolerance=0.0,
              absolute_z_axis_tolerance=0.0,
              weight=1):
     """
     Notes
     -----
     The naming of the absolute_x/y/z_axis_tolerances might be misleading:
     If you specify the absolute_x/y/z_axis_tolerances with [0.01, 0.01, 6.3],
     it means that the frame's x-axis and y-axis are allowed to rotate about
     the z-axis by an angle of 6.3 radians, whereas the z-axis can only change
     by 0.01.
     """
     self.header = header or Header()
     self.orientation = orientation or Quaternion(
     )  # geometry_msgs/Quaternion
     self.link_name = link_name or ""
     self.absolute_x_axis_tolerance = float(absolute_x_axis_tolerance)
     self.absolute_y_axis_tolerance = float(absolute_y_axis_tolerance)
     self.absolute_z_axis_tolerance = float(absolute_z_axis_tolerance)
     self.weight = float(weight)
예제 #2
0
    def __init__(self,
                 header=None,
                 id="collision_obj",
                 type=None,
                 primitives=None,
                 primitive_poses=None,
                 meshes=None,
                 mesh_poses=None,
                 planes=None,
                 plane_poses=None,
                 subframe_names=None,
                 subframe_poses=None,
                 operation=0):
        self.header = header or Header(
        )  # a header, used for interpreting the poses
        self.id = id  # the id of the object (name used in MoveIt)
        self.type = type or ObjectType(
        )  # The object type in a database of known objects
        # solid geometric primitives
        self.primitives = primitives or []
        self.primitive_poses = primitive_poses or []
        # meshes
        self.meshes = meshes or []
        self.mesh_poses = mesh_poses or []
        # bounding planes
        self.planes = planes or []
        self.plane_poses = plane_poses or []

        self.operation = operation  # ADD or REMOVE or APPEND or MOVE
예제 #3
0
    def from_msg(cls, msg):
        kwargs = {}

        kwargs['header'] = Header.from_msg(msg['header'])
        kwargs['id'] = msg['id']
        kwargs['type'] = ObjectType.from_msg(msg['type'])
        kwargs['pose'] = Pose.from_msg(
            msg['pose']) if 'pose' in msg else Pose()

        kwargs['primitives'] = [
            SolidPrimitive.from_msg(i) for i in msg['primitives']
        ]
        kwargs['primitive_poses'] = [
            Pose.from_msg(i) for i in msg['primitive_poses']
        ]
        kwargs['meshes'] = [Mesh.from_msg(i) for i in msg['meshes']]
        kwargs['mesh_poses'] = [Pose.from_msg(i) for i in msg['mesh_poses']]
        kwargs['planes'] = [Plane.from_msg(i) for i in msg['planes']]
        kwargs['plane_poses'] = [
            Pose.from_frame(i) for i in msg['plane_poses']
        ]

        kwargs['operation'] = msg['operation']

        return cls(**kwargs)
예제 #4
0
    def __init__(self,
                 header=None,
                 id="collision_obj",
                 type=None,
                 primitives=None,
                 primitive_poses=None,
                 meshes=None,
                 mesh_poses=None,
                 planes=None,
                 plane_poses=None,
                 subframe_names=None,
                 subframe_poses=None,
                 operation=0,
                 pose=None):
        self.header = header or Header(
        )  # a header, used for interpreting the poses
        self.id = id  # the id of the object (name used in MoveIt)
        self.type = type or ObjectType(
        )  # The object type in a database of known objects
        self.pose = pose or Pose(
        )  # currently not actively used in FAB, but needed to be present otherwise ROS Noetic complains about empty quaternion

        # solid geometric primitives
        self.primitives = primitives or []
        self.primitive_poses = primitive_poses or []
        # meshes
        self.meshes = meshes or []
        self.mesh_poses = mesh_poses or []
        # bounding planes
        self.planes = planes or []
        self.plane_poses = plane_poses or []

        self.operation = operation  # ADD or REMOVE or APPEND or MOVE
예제 #5
0
 def __init__(self, header=None, link_name=None, target_point_offset=None,
              constraint_region=None, weight=None):
     self.header = header or Header()
     self.link_name = link_name or ""
     self.target_point_offset = target_point_offset or Vector3(0., 0., 0.)  # geometry_msgs/Vector3
     self.constraint_region = constraint_region or BoundingVolume()         # moveit_msgs/BoundingVolume
     self.weight = float(weight) or 1.
예제 #6
0
 def __init__(self,
              header=Header(),
              min_corner=Vector3(-1000, -1000, -1000),
              max_corner=Vector3(1000, 1000, 1000)):
     self.header = header
     self.min_corner = min_corner
     self.max_corner = max_corner
예제 #7
0
 def __init__(self, header=None, link_name=None, target_point_offset=None,
              constraint_region=None, weight=None):
     self.header = header if header else Header()
     self.link_name = link_name if link_name else ""
     self.target_point_offset = target_point_offset if target_point_offset else Vector3(0.,0.,0.) # geometry_msgs/Vector3
     self.constraint_region = constraint_region if constraint_region else BoundingVolume() # moveit_msgs/BoundingVolume
     self.weight = float(weight) if weight else 1.
예제 #8
0
    def from_collision_mesh(cls, collision_mesh):
        """Creates a collision object from a :class:`compas_fab.robots.CollisionMesh`
        """
        kwargs = {}
        kwargs['header'] = Header(frame_id=collision_mesh.root_name)
        kwargs['id'] = collision_mesh.id
        kwargs['meshes'] = [Mesh.from_mesh(collision_mesh.mesh)]
        kwargs['mesh_poses'] = [Pose.from_frame(collision_mesh.frame)]

        return cls(**kwargs)
예제 #9
0
 def __init__(self, header=None, min_corner=None, max_corner=None):
     self.header = header or Header()
     self.min_corner = min_corner or Vector3(-1000, -1000, -1000)
     self.max_corner = max_corner or Vector3(1000, 1000, 1000)