phobos geometry module¶
This module provides all utilities that are related to mesh handling
Submodules¶
phobos.geometry.geometry module¶
- phobos.geometry.geometry.create_box(mesh, oriented=True, scale=1.0)¶
- Create a box element. 
- phobos.geometry.geometry.create_cylinder(mesh, scale=1.0)¶
- Create a cylinder. 
- phobos.geometry.geometry.create_sphere(mesh, scale=1.0)¶
- Create a sphere 
- phobos.geometry.geometry.get_reflection_matrix(point=array([0, 0, 0]), normal=array([0, 1, 0]))¶
- phobos.geometry.geometry.get_vertex_id(x, vertices)¶
- phobos.geometry.geometry.identical(mesh_a, mesh_b)¶
- phobos.geometry.geometry.improve_mesh(mesh)¶
- phobos.geometry.geometry.reduce_mesh(mesh, factor)¶
phobos.geometry.io module¶
- phobos.geometry.io.as_trimesh(scene_or_mesh, scale=None, silent=False)¶
- phobos.geometry.io.blender_2_mesh_info_dict(mesh)¶
- Creates the mesh info dict :param mesh: bpy.types.Mesh - Returns:
- (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[3*(n,3)]] intc, [“texture_coords”: (n,2) single]} 
- Return type:
- {“vertices” 
 
- phobos.geometry.io.export_mesh(mesh, filepath, urdf_path=None, dae_mesh_color=None)¶
- Export the mesh to a given filepath with an urdf_path. Detects the format by file ending. NOTE: For bobj it’s necessary to pass a trimesh.Trimesh as mesh other will raise an AssertionError. - Parameters:
- mesh – trimesh.Trimesh or trimesh.Scene 
- filepath – the filepath where to write the file 
- **mesh_info_dict – {“vertices”: (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[n*(n,3)]] intc, [“texture_coords”: (n,2) single]} 
 
- Returns:
- (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[3*(n,3)]] intc, [“texture_coords”: (n,2) single]} 
- Return type:
- {“vertices” 
 
- phobos.geometry.io.import_mars_mesh(filepath, urdf_path=None)¶
- phobos.geometry.io.import_mesh(filepath, urdf_path=None)¶
- Import the mesh from a given filepath with an urdf_path. 
- phobos.geometry.io.mesh_info_dict_2_trimesh(vertices, faces, vertex_normals=None, texture_coords=None, **mesh_info_dict)¶
- Creates the trimesh from the mesh info dict :param **mesh_info_dict: {“vertices”: (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[3*(n,3)]] intc, [“texture_coords”: (n,2) single]} - Returns:
- trimesh.Trimesh 
 
- phobos.geometry.io.parse_bobj(filepath)¶
- Parses the mesh_info_dict from bobj format. - Parameters:
- filepath – the filepath where to write the file 
- Returns:
- (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[3*(n,3)]] intc, [“texture_coords”: (n,2) single]} 
- Return type:
- {“vertices” 
 
- phobos.geometry.io.parse_dae(filepath)¶
- phobos.geometry.io.parse_obj(filepath)¶
- phobos.geometry.io.triangulate_faces_in_info_dict(faces, **mesh_info_dict)¶
- Triangulates the faces of the given mesh info dict. :param **mesh_info_dict: {“vertices”: (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[n*(n,3)]] intc, [“texture_coords”: (n,2) single]} - Returns:
- (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[3*(n,3)]] intc, [“texture_coords”: (n,2) single]} 
- Return type:
- {“vertices” 
 
- phobos.geometry.io.trimesh_2_mesh_info_dict(mesh)¶
- Creates the mesh info dict :param mesh: trimesh.Trimesh - Returns:
- (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[3*(n,3)]] intc, [“texture_coords”: (n,2) single]} 
- Return type:
- {“vertices” 
 
- phobos.geometry.io.write_bobj(filepath, vertices=None, vertex_normals=None, faces=None, texture_coords=None, **mesh_info_dict)¶
- Writes the mesh_info_dict to bobj format. - Parameters:
- filepath – the filepath where to write the file 
- **mesh_info_dict – {“vertices”: (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[n*(n,3)]] intc, [“texture_coords”: (n,2) single]} 
 
- Returns:
- (n,3) single, “vertex_normals”: (n,3) single, “faces”: [n*[3*(n,3)]] intc, [“texture_coords”: (n,2) single]} 
- Return type:
- {“vertices” 
 
phobos.geometry.robot module¶
Tools for visual and collision editing.
- phobos.geometry.robot.find_zero_pose_collisions(robot)¶
- phobos.geometry.robot.generate_kccd_optimizer_ready_collision(robot, linkname, outputdir, join_first=True, merge_additionally=None, mars_meshes=False, reduce_meshes=0)¶
- Takes the convexhulls of all visuals of the link and joins them to one mesh. If the join_first option is set to true then the meshes will be joint before the convexhull is generated. - WARNING: This function will edit the meshes pathes to absolute ones and should therefore only be used with a URDF that’S only purpose is to generate the kccd model 
- phobos.geometry.robot.join_collisions(robot, linkname, collisionnames=None, name_id=None, only_return=False)¶
- Replaces a series of visuals/collisions with a joined version of those given 
- phobos.geometry.robot.reduce_mesh_collision(robot, linkname, collisionname=None, reduction=0.4)¶
- Reduces the mesh collision(s) of the link(s) which have the corresponding collisionname. 
- phobos.geometry.robot.remove_collision(robot, linkname, collisionname=None)¶
- Remove the collision(s) of the link(s) which have the corresponding collisionname. 
- phobos.geometry.robot.remove_visual(robot, linkname, visualname=None)¶
- Remove the visual(s) of the link(s) which have the corresponding visualname. 
- phobos.geometry.robot.replace_collision(robot, linkname, shape='box', oriented=False, scale=1.0)¶
- Replace the collision(s) stated in linkname of the robot with an oriented shape. 
- phobos.geometry.robot.replace_collisions(robot, shape='box', oriented=False, exclude=None)¶
- Replace all collisions of the robot ( except exclude’s ) with a given shape. This can be a ‘sphere’, ‘cylinder’, ‘box’ or ‘convex’. 
- phobos.geometry.robot.replace_geometry(element, shape='box', oriented=False, scale=1.0)¶
- Replace the geometry of the element with an oriented shape. urdf_path is needed for mesh loading. :param element: An geometry element representation.Visual or representation.Collision :param shape: [‘box’, ‘sphere’, ‘cylinder’, ‘convex’] :param oriented: Whether the bounding box should be oriented to have the minimum volume to cover the element :param scale: whether the created shape shall be scaled by the given value - Returns:
- None 
 
- phobos.geometry.robot.replace_visual(robot, linkname, shape='box', oriented=False)¶
- Replace the visual(s) stated in linkname of the robot with an oriented shape. 
- phobos.geometry.robot.replace_visuals(robot, shape='box', oriented=False, exclude=None)¶
- Replace all visuals of the robot ( except exclude’s ) with a given shape. This can be a ‘sphere’, ‘cylinder’, ‘box’ or ‘convex’.