├── img ├── depth.png ├── img_test │ ├── table_mask.png │ └── table_depth_3c.png └── img_urdf │ ├── camera_rgb.mat │ ├── camera_rgb.png │ ├── camera_depth.mat │ ├── camera_depth.png │ ├── camera_mask.mat │ ├── camera_depth_rev.mat │ └── camera_depth_rev.png ├── myModel ├── tray │ ├── tray.stl │ ├── tray.urdf │ └── tray_textured.obj ├── traybox │ ├── tray_textured.mtl │ ├── traybox.urdf │ └── tray_textured.obj └── objs │ └── cube_22.obj ├── franka_panda ├── meshes │ ├── finger.blend │ ├── finger.blend1 │ ├── gripper.blend │ ├── visual │ │ ├── colors.png │ │ ├── link2.mtl │ │ ├── link1.mtl │ │ ├── finger.mtl │ │ ├── finger_1.mtl │ │ ├── link5.mtl │ │ ├── link4.mtl │ │ ├── link3.mtl │ │ ├── hand.mtl │ │ └── link6.mtl │ └── collision │ │ ├── finger_1.mtl │ │ ├── link6.mtl │ │ ├── finger_1.obj │ │ ├── finger.obj │ │ ├── link0.obj │ │ ├── hand.obj │ │ ├── link2.obj │ │ └── link3.obj ├── LICENSE.txt ├── panda.urdf └── panda_1.urdf ├── README.md ├── main_sim_grasp_urdf.py ├── tool.py ├── mesh.py ├── camera.py ├── panda_sim_grasp.py ├── simEnv.py └── grasp.py /img/depth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/depth.png -------------------------------------------------------------------------------- /myModel/tray/tray.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/myModel/tray/tray.stl -------------------------------------------------------------------------------- /img/img_test/table_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_test/table_mask.png -------------------------------------------------------------------------------- /img/img_urdf/camera_rgb.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_urdf/camera_rgb.mat -------------------------------------------------------------------------------- /img/img_urdf/camera_rgb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_urdf/camera_rgb.png -------------------------------------------------------------------------------- /img/img_urdf/camera_depth.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_urdf/camera_depth.mat -------------------------------------------------------------------------------- /img/img_urdf/camera_depth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_urdf/camera_depth.png -------------------------------------------------------------------------------- /img/img_urdf/camera_mask.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_urdf/camera_mask.mat -------------------------------------------------------------------------------- /franka_panda/meshes/finger.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/franka_panda/meshes/finger.blend -------------------------------------------------------------------------------- /img/img_test/table_depth_3c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_test/table_depth_3c.png -------------------------------------------------------------------------------- /franka_panda/meshes/finger.blend1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/franka_panda/meshes/finger.blend1 -------------------------------------------------------------------------------- /franka_panda/meshes/gripper.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/franka_panda/meshes/gripper.blend -------------------------------------------------------------------------------- /img/img_urdf/camera_depth_rev.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_urdf/camera_depth_rev.mat -------------------------------------------------------------------------------- /img/img_urdf/camera_depth_rev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/img/img_urdf/camera_depth_rev.png -------------------------------------------------------------------------------- /franka_panda/meshes/visual/colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dexin-wang/panda_grasp_sim_2/HEAD/franka_panda/meshes/visual/colors.png -------------------------------------------------------------------------------- /myModel/traybox/tray_textured.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 1 3 | 4 | newmtl None 5 | Ns 0.000000 6 | Ka 0.000000 0.000000 0.000000 7 | Kd 0.800000 0.800000 0.800000 8 | Ks 0.800000 0.800000 0.800000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | map_Kd tray.jpg 14 | -------------------------------------------------------------------------------- /franka_panda/meshes/visual/link2.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'link3.blend' 2 | # Material Count: 1 3 | 4 | newmtl Part__Feature024 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 1.000000 1.000000 1.000000 8 | Ks 0.125000 0.125000 0.125000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | map_Kd colors.png 14 | -------------------------------------------------------------------------------- /franka_panda/meshes/visual/link1.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'link2.blend' 2 | # Material Count: 1 3 | 4 | newmtl Part__Feature_001 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 1.000000 1.000000 1.000000 8 | Ks 0.062500 0.062500 0.062500 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | map_Kd colors.png 14 | -------------------------------------------------------------------------------- /franka_panda/meshes/collision/finger_1.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'finger.blend' 2 | # Material Count: 2 3 | 4 | newmtl DefaultMaterial.001 5 | Ns 225.000000 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 0.800000 0.800000 0.800000 8 | Ks 0.500000 0.500000 0.500000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.450000 11 | d 1.000000 12 | illum 2 13 | 14 | newmtl None 15 | Ns 500 16 | Ka 0.8 0.8 0.8 17 | Kd 0.8 0.8 0.8 18 | Ks 0.8 0.8 0.8 19 | d 1 20 | illum 2 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # panda_grasp_sim_2 2 | 3 | 这个源码的完整版是用来测试我的抓取检测算法,由于还没有发表,所以删除了算法部分,剩下的程序也是可以运行的。 4 | 完整版运行视频:https://www.bilibili.com/video/BV12a4y1n7S9 5 | 6 | 依赖包: 7 | numpy 8 | pybullet 9 | 10 | 11 | 通过以下命令运行: 12 | ``` 13 | python3 main_sim_grasp_urdf.py 14 | ``` 15 | 16 | 操作说明在运行脚本里写了。 17 | 18 | 运行程序需要的obj和urdf可以在我的google网盘中下载: https://drive.google.com/drive/folders/1wthmGOocuzXH5bAyxm3zEzwB4WikEfVI?usp=sharing 19 | 20 | 任何问题可以联系dexinwang@mail.sdu.edu.cn 21 | -------------------------------------------------------------------------------- /franka_panda/meshes/visual/finger.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'link2.blend' 2 | # Material Count: 2 3 | 4 | newmtl Part__Feature001_006.001 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 0.901961 0.921569 0.929412 8 | Ks 0.250000 0.250000 0.250000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | map_Kd colors.png 14 | 15 | newmtl Part__Feature_007.001 16 | Ns -1.960784 17 | Ka 1.000000 1.000000 1.000000 18 | Kd 0.250980 0.250980 0.250980 19 | Ks 0.250000 0.250000 0.250000 20 | Ke 0.000000 0.000000 0.000000 21 | Ni 1.000000 22 | d 1.000000 23 | illum 2 24 | map_Kd colors.png 25 | -------------------------------------------------------------------------------- /franka_panda/meshes/visual/finger_1.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'finger.blend' 2 | # Material Count: 2 3 | 4 | newmtl Part__Feature001_006.001 5 | Ns 0.000000 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 0.901961 0.921569 0.929412 8 | Ks 0.250000 0.250000 0.250000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | map_Kd colors.png 14 | 15 | newmtl Part__Feature_007.001 16 | Ns 0.000000 17 | Ka 1.000000 1.000000 1.000000 18 | Kd 0.250980 0.250980 0.250980 19 | Ks 0.250000 0.250000 0.250000 20 | Ke 0.000000 0.000000 0.000000 21 | Ni 1.000000 22 | d 1.000000 23 | illum 2 24 | map_Kd colors.png 25 | -------------------------------------------------------------------------------- /franka_panda/meshes/visual/link5.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 3 3 | 4 | newmtl Part__Feature_002_004_003.002 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 1.000000 1.000000 1.000000 8 | Ks 0.015625 0.015625 0.015625 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | map_Kd colors.png 14 | 15 | newmtl Shell001_001_001_003.002 16 | Ns -1.960784 17 | Ka 1.000000 1.000000 1.000000 18 | Kd 0.250000 0.250000 0.250000 19 | Ks 0.015625 0.015625 0.015625 20 | Ke 0.000000 0.000000 0.000000 21 | Ni 1.000000 22 | d 1.000000 23 | illum 2 24 | map_Kd colors.png 25 | 26 | newmtl Shell_001_001_003.002 27 | Ns -1.960784 28 | Ka 1.000000 1.000000 1.000000 29 | Kd 1.000000 1.000000 1.000000 30 | Ks 0.015625 0.015625 0.015625 31 | Ke 0.000000 0.000000 0.000000 32 | Ni 1.000000 33 | d 1.000000 34 | illum 2 35 | -------------------------------------------------------------------------------- /myModel/objs/cube_22.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.91.0 OBJ File: '1.blend' 2 | # www.blender.org 3 | mtllib cube_22.mtl 4 | o Cube 5 | v 1.000000 1.000000 -1.000000 6 | v 1.000000 -1.000000 -1.000000 7 | v 1.000000 1.000000 1.000000 8 | v 1.000000 -1.000000 1.000000 9 | v -1.000000 1.000000 -1.000000 10 | v -1.000000 -1.000000 -1.000000 11 | v -1.000000 1.000000 1.000000 12 | v -1.000000 -1.000000 1.000000 13 | vt 0.625000 0.500000 14 | vt 0.875000 0.500000 15 | vt 0.875000 0.750000 16 | vt 0.625000 0.750000 17 | vt 0.375000 0.750000 18 | vt 0.625000 1.000000 19 | vt 0.375000 1.000000 20 | vt 0.375000 0.000000 21 | vt 0.625000 0.000000 22 | vt 0.625000 0.250000 23 | vt 0.375000 0.250000 24 | vt 0.125000 0.500000 25 | vt 0.375000 0.500000 26 | vt 0.125000 0.750000 27 | vn 0.0000 1.0000 0.0000 28 | vn 0.0000 0.0000 1.0000 29 | vn -1.0000 0.0000 0.0000 30 | vn 0.0000 -1.0000 0.0000 31 | vn 1.0000 0.0000 0.0000 32 | vn 0.0000 0.0000 -1.0000 33 | usemtl Material 34 | s off 35 | f 1/1/1 5/2/1 7/3/1 3/4/1 36 | f 4/5/2 3/4/2 7/6/2 8/7/2 37 | f 8/8/3 7/9/3 5/10/3 6/11/3 38 | f 6/12/4 2/13/4 4/5/4 8/14/4 39 | f 2/13/5 1/1/5 3/4/5 4/5/5 40 | f 6/11/6 5/10/6 1/1/6 2/13/6 41 | -------------------------------------------------------------------------------- /franka_panda/meshes/visual/link4.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'link4.blend' 2 | # Material Count: 4 3 | 4 | newmtl Part__Feature001_001_003_001.001 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 1.000000 1.000000 1.000000 8 | Ks 0.007812 0.007812 0.007812 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | 14 | newmtl Part__Feature002_001_003_001.001 15 | Ns -1.960784 16 | Ka 1.000000 1.000000 1.000000 17 | Kd 0.250980 0.250980 0.250980 18 | Ks 0.007812 0.007812 0.007812 19 | Ke 0.000000 0.000000 0.000000 20 | Ni 1.000000 21 | d 1.000000 22 | illum 2 23 | map_Kd colors.png 24 | 25 | newmtl Part__Feature003_001_003_001.001 26 | Ns -1.960784 27 | Ka 1.000000 1.000000 1.000000 28 | Kd 1.000000 1.000000 1.000000 29 | Ks 0.007812 0.007812 0.007812 30 | Ke 0.000000 0.000000 0.000000 31 | Ni 1.000000 32 | d 1.000000 33 | illum 2 34 | map_Kd colors.png 35 | 36 | newmtl Part__Feature_002_003_001.001 37 | Ns -1.960784 38 | Ka 1.000000 1.000000 1.000000 39 | Kd 1.000000 1.000000 1.000000 40 | Ks 0.007812 0.007812 0.007812 41 | Ke 0.000000 0.000000 0.000000 42 | Ni 1.000000 43 | d 1.000000 44 | illum 2 45 | map_Kd colors.png 46 | -------------------------------------------------------------------------------- /franka_panda/meshes/visual/link3.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'link4.blend' 2 | # Material Count: 4 3 | 4 | newmtl Part__Feature001_010_001_002 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 1.000000 1.000000 1.000000 8 | Ks 0.007812 0.007812 0.007812 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | map_Kd colors.png 14 | 15 | newmtl Part__Feature002_007_001_002 16 | Ns -1.960784 17 | Ka 1.000000 1.000000 1.000000 18 | Kd 1.000000 1.000000 1.000000 19 | Ks 0.007812 0.007812 0.007812 20 | Ke 0.000000 0.000000 0.000000 21 | Ni 1.000000 22 | d 1.000000 23 | illum 2 24 | map_Kd colors.png 25 | 26 | newmtl Part__Feature003_004_001_002 27 | Ns -1.960784 28 | Ka 1.000000 1.000000 1.000000 29 | Kd 1.000000 1.000000 1.000000 30 | Ks 0.007812 0.007812 0.007812 31 | Ke 0.000000 0.000000 0.000000 32 | Ni 1.000000 33 | d 1.000000 34 | illum 2 35 | map_Kd colors.png 36 | 37 | newmtl Part__Feature_001_001_001_002 38 | Ns -1.960784 39 | Ka 1.000000 1.000000 1.000000 40 | Kd 0.250980 0.250980 0.250980 41 | Ks 0.007812 0.007812 0.007812 42 | Ke 0.000000 0.000000 0.000000 43 | Ni 1.000000 44 | d 1.000000 45 | illum 2 46 | map_Kd colors.png 47 | -------------------------------------------------------------------------------- /franka_panda/meshes/visual/hand.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'link2.blend' 2 | # Material Count: 5 3 | 4 | newmtl Part__Feature001_008_005.001 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 0.250980 0.250980 0.250980 8 | Ks 0.007812 0.007812 0.007812 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | map_Kd colors.png 14 | 15 | newmtl Part__Feature002_005_005.001 16 | Ns -1.960784 17 | Ka 1.000000 1.000000 1.000000 18 | Kd 0.901961 0.921569 0.929412 19 | Ks 0.015625 0.015625 0.015625 20 | Ke 0.000000 0.000000 0.000000 21 | Ni 1.000000 22 | d 1.000000 23 | illum 2 24 | 25 | newmtl Part__Feature005_001_005.001 26 | Ns -1.960784 27 | Ka 1.000000 1.000000 1.000000 28 | Kd 1.000000 1.000000 1.000000 29 | Ks 0.015625 0.015625 0.015625 30 | Ke 0.000000 0.000000 0.000000 31 | Ni 1.000000 32 | d 1.000000 33 | illum 2 34 | map_Kd colors.png 35 | 36 | newmtl Part__Feature005_001_005_001.001 37 | Ns -1.960784 38 | Ka 1.000000 1.000000 1.000000 39 | Kd 0.901961 0.921569 0.929412 40 | Ks 0.015625 0.015625 0.015625 41 | Ke 0.000000 0.000000 0.000000 42 | Ni 1.000000 43 | d 1.000000 44 | illum 2 45 | map_Kd colors.png 46 | 47 | newmtl Part__Feature_009_005.001 48 | Ns -1.960784 49 | Ka 1.000000 1.000000 1.000000 50 | Kd 0.250980 0.250980 0.250980 51 | Ks 0.015625 0.015625 0.015625 52 | Ke 0.000000 0.000000 0.000000 53 | Ni 1.000000 54 | d 1.000000 55 | illum 2 56 | map_Kd colors.png 57 | -------------------------------------------------------------------------------- /myModel/traybox/traybox.urdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /myModel/tray/tray.urdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /main_sim_grasp_urdf.py: -------------------------------------------------------------------------------- 1 | """ 2 | 用于验证生成的抓取配置标注 3 | 随机放置物体,渲染图像,生成抓取配置,仿真机器人抓取 4 | 5 | 操作步骤: 6 | 1、运行后自动开始加载物体到仿真环境中。 7 | 2、按 1 开始渲染深度图。 8 | 3、等待渲染结束,按 2 开始计算抓取位姿,计算完毕后,自动开始抓取。 9 | 4、按 3 可重新加载物体。 10 | """ 11 | 12 | import pybullet as p 13 | import pybullet_data 14 | import time 15 | import math 16 | import cv2 17 | import numpy as np 18 | from simEnv import SimEnv 19 | import panda_sim_grasp as panda_sim 20 | 21 | 22 | GRASP_GAP = 0.005 23 | GRASP_DEPTH = 0.005 24 | 25 | def run(): 26 | # 'E:/research/dataset/grasp/my_dense/mesh_database/egad_train_set' 27 | database_path = 'E:/research/dataset/grasp/my_dense/mesh_database/dex-net' # 数据库路径 28 | 29 | cid = p.connect(p.GUI) # 连接服务器 30 | env = SimEnv(p, database_path) # 初始化虚拟环境 31 | # 初始化panda机器人 32 | panda = panda_sim.PandaSimAuto(p, [0, -0.5, 0]) 33 | 34 | GRASP_STATE = False 35 | grasp_config = {'x':0, 'y':0, 'z':0.05, 'angle':0, 'width':0.08} 36 | # x y z width的单位是m, angle的单位是弧度 37 | img_path = 'img/img_urdf' 38 | 39 | all_num = 0 # 预设抓取次数 40 | obj_nums = 20 # 每次加载的物体个数 41 | start_idx = 0 # 开始加载的物体id 42 | 43 | idx = start_idx 44 | while True: 45 | # 加载物体 46 | env.loadObjsInURDF(idx, obj_nums) 47 | idx += obj_nums 48 | 49 | while True: 50 | p.stepSimulation() 51 | time.sleep(1./240.) 52 | 53 | # 检测按键 54 | keys = p.getKeyboardEvents() 55 | if ord('1') in keys and keys[ord('1')]&p.KEY_WAS_TRIGGERED: 56 | # 渲染图像 57 | env.renderURDFImage(save_path=img_path) 58 | 59 | if ord('2') in keys and keys[ord('2')]&p.KEY_WAS_TRIGGERED: 60 | # 计算抓取配置 61 | # graspFig = getGrasp(path=img_path) 62 | # print('抓取配置: ', graspFig) 63 | # if graspFig[4] == 0: 64 | # print('>> 无法抓取!') 65 | # continue 66 | # grasp_config['x'], grasp_config['y'], grasp_config['z'], grasp_config['angle'], grasp_config['width'] = graspFig 67 | GRASP_STATE = True 68 | 69 | if GRASP_STATE: 70 | # 机器人抓取 71 | if panda.step([grasp_config['x'], grasp_config['y'], grasp_config['z'] - GRASP_DEPTH], grasp_config['angle'], (grasp_config['width'])/2): 72 | GRASP_STATE = False 73 | all_num += 1 74 | print('>> 抓取完毕: ', all_num) 75 | 76 | # 按3重置环境 77 | if ord('3') in keys and keys[ord('3')]&p.KEY_WAS_TRIGGERED: 78 | env.removeObjsInURDF() 79 | break 80 | 81 | 82 | 83 | if __name__ == "__main__": 84 | run() -------------------------------------------------------------------------------- /tool.py: -------------------------------------------------------------------------------- 1 | import math 2 | import cv2 3 | import os 4 | import zipfile 5 | import numpy as np 6 | 7 | 8 | def quaternion_to_rotation_matrix(q): # x, y ,z ,w 9 | rot_matrix = np.array( 10 | [[1.0 - 2 * (q[1] * q[1] + q[2] * q[2]), 2 * (q[0] * q[1] - q[3] * q[2]), 2 * (q[3] * q[1] + q[0] * q[2])], 11 | [2 * (q[0] * q[1] + q[3] * q[2]), 1.0 - 2 * (q[0] * q[0] + q[2] * q[2]), 2 * (q[1] * q[2] - q[3] * q[0])], 12 | [2 * (q[0] * q[2] - q[3] * q[1]), 2 * (q[1] * q[2] + q[3] * q[0]), 1.0 - 2 * (q[0] * q[0] + q[1] * q[1])]], 13 | dtype=np.float) 14 | return rot_matrix 15 | 16 | 17 | def getTransfMat(offset, rotate): 18 | """ 19 | 将平移向量和旋转矩阵合并为变换矩阵 20 | offset: (x, y, z) 21 | rotate: 旋转矩阵 22 | """ 23 | mat = np.array([ 24 | [rotate[0, 0], rotate[0, 1], rotate[0, 2], offset[0]], 25 | [rotate[1, 0], rotate[1, 1], rotate[1, 2], offset[1]], 26 | [rotate[2, 0], rotate[2, 1], rotate[2, 2], offset[2]], 27 | [0, 0, 0, 1.] 28 | ]) 29 | return mat 30 | 31 | def depth2Gray(im_depth): 32 | """ 33 | 将深度图转至8位灰度图 34 | """ 35 | # 16位转8位 36 | x_max = np.max(im_depth) 37 | x_min = np.min(im_depth) 38 | if x_max == x_min: 39 | print('图像渲染出错 ...') 40 | raise EOFError 41 | 42 | k = 255 / (x_max - x_min) 43 | b = 255 - k * x_max 44 | return (im_depth * k + b).astype(np.uint8) 45 | 46 | # def resize(img): 47 | # returncv2.resize(img, (1000, 1000)) 48 | 49 | def distancePt(pt1, pt2): 50 | """ 51 | 计算两点之间的欧氏距离 52 | pt: [row, col] 或 [x, y] 53 | return: float 54 | """ 55 | return ((pt1[0] - pt2[0]) ** 2 + (pt1[1] - pt2[1]) ** 2) ** 0.5 56 | 57 | def distancePt3d(pt1, pt2): 58 | """ 59 | 计算两点之间的欧氏距离 60 | pt: [x, y, z] 61 | return: float 62 | """ 63 | return ((pt1[0] - pt2[0]) ** 2 + (pt1[1] - pt2[1]) ** 2 + (pt1[2] - pt2[2]) ** 2) ** 0.5 64 | 65 | 66 | def calcAngleOfPts(pt1, pt2): 67 | """ 68 | 计算从pt1到pt2的逆时针夹角 [0, 2pi) 69 | 70 | pt: [x, y] 二维坐标系中的坐标,不是图像坐标系的坐标 71 | 72 | return: 弧度 73 | """ 74 | dy = pt2[1] - pt1[1] 75 | dx = pt2[0] - pt1[0] 76 | return (math.atan2(dy, dx) + 2*math.pi) % (2*math.pi) 77 | 78 | 79 | def radians_TO_angle(radians): 80 | """ 81 | 弧度转角度 82 | """ 83 | return 180 * radians / math.pi 84 | 85 | def angle_TO_radians(angle): 86 | """ 87 | 角度转弧度 88 | """ 89 | return math.pi * angle / 180 90 | 91 | def depth3C(depth): 92 | """ 93 | 将深度图转化为3通道 np.uint8类型 94 | """ 95 | depth_3c = depth[..., np.newaxis] 96 | depth_3c = np.concatenate((depth_3c, depth_3c, depth_3c), axis=2) 97 | return depth_3c.astype(np.uint8) 98 | 99 | def zip_file(filedir): 100 | """ 101 | 压缩文件夹至同名zip文件 102 | """ 103 | file_news = filedir + '.zip' 104 | # 如果已经有压缩的文件,删除 105 | if os.path.exists(file_news): 106 | os.remove(file_news) 107 | 108 | z = zipfile.ZipFile(file_news,'w',zipfile.ZIP_DEFLATED) #参数一:文件夹名 109 | for dirpath, dirnames, filenames in os.walk(filedir): 110 | fpath = dirpath.replace(filedir,'') #这一句很重要,不replace的话,就从根目录开始复制 111 | fpath = fpath and fpath + os.sep or ''#这句话理解我也点郁闷,实现当前文件夹以及包含的所有文件的压缩 112 | for filename in filenames: 113 | z.write(os.path.join(dirpath, filename),fpath+filename) 114 | z.close() 115 | 116 | 117 | def unzip(file_name): 118 | """ 119 | 解压缩zip文件至同名文件夹 120 | """ 121 | zip_ref = zipfile.ZipFile(file_name) # 创建zip 对象 122 | os.mkdir(file_name.replace(".zip","")) # 创建同名子文件夹 123 | zip_ref.extractall(file_name.replace(".zip","")) # 解压zip文件内容到子文件夹 124 | zip_ref.close() # 关闭zip文件 125 | 126 | 127 | if __name__ == "__main__": 128 | filename = "D:/research/grasp_detection/Grasp_Correction/code-1/img/img_urdf_1" #要压缩的文件夹路径 129 | # zip_file(filename) # 压缩 130 | unzip(filename + '.zip') # 解压 -------------------------------------------------------------------------------- /franka_panda/meshes/visual/link6.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'link2.blend' 2 | # Material Count: 17 3 | 4 | newmtl Face064_002_001_002_001.001 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 1.000000 0.000000 0.000000 8 | Ks 0.003906 0.003906 0.003906 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | 14 | newmtl Face065_002_001_002_001.001 15 | Ns -1.960784 16 | Ka 1.000000 1.000000 1.000000 17 | Kd 0.000000 1.000000 0.000000 18 | Ks 0.003906 0.003906 0.003906 19 | Ke 0.000000 0.000000 0.000000 20 | Ni 1.000000 21 | d 1.000000 22 | illum 2 23 | 24 | newmtl Face374_002_001_002_001.001 25 | Ns -1.960784 26 | Ka 1.000000 1.000000 1.000000 27 | Kd 1.000000 1.000000 1.000000 28 | Ks 0.003906 0.003906 0.003906 29 | Ke 0.000000 0.000000 0.000000 30 | Ni 1.000000 31 | d 1.000000 32 | illum 2 33 | 34 | newmtl Face539_002_001_002_001.001 35 | Ns -1.960784 36 | Ka 1.000000 1.000000 1.000000 37 | Kd 0.250980 0.250980 0.250980 38 | Ks 0.003906 0.003906 0.003906 39 | Ke 0.000000 0.000000 0.000000 40 | Ni 1.000000 41 | d 1.000000 42 | illum 2 43 | map_Kd colors.png 44 | 45 | newmtl Part__Feature001_009_001_002_001.001 46 | Ns -1.960784 47 | Ka 1.000000 1.000000 1.000000 48 | Kd 0.250980 0.250980 0.250980 49 | Ks 0.003906 0.003906 0.003906 50 | Ke 0.000000 0.000000 0.000000 51 | Ni 1.000000 52 | d 1.000000 53 | illum 2 54 | map_Kd colors.png 55 | 56 | newmtl Part__Feature002_006_001_002_001.001 57 | Ns -1.960784 58 | Ka 1.000000 1.000000 1.000000 59 | Kd 0.250980 0.250980 0.250980 60 | Ks 0.003906 0.003906 0.003906 61 | Ke 0.000000 0.000000 0.000000 62 | Ni 1.000000 63 | d 1.000000 64 | illum 2 65 | map_Kd colors.png 66 | 67 | newmtl Shell002_002_001_002_001.001 68 | Ns -1.960784 69 | Ka 1.000000 1.000000 1.000000 70 | Kd 1.000000 1.000000 1.000000 71 | Ks 0.003906 0.003906 0.003906 72 | Ke 0.000000 0.000000 0.000000 73 | Ni 1.000000 74 | d 1.000000 75 | illum 2 76 | 77 | newmtl Shell003_002_001_002_001.001 78 | Ns -1.960784 79 | Ka 1.000000 1.000000 1.000000 80 | Kd 1.000000 1.000000 1.000000 81 | Ks 0.003906 0.003906 0.003906 82 | Ke 0.000000 0.000000 0.000000 83 | Ni 1.000000 84 | d 1.000000 85 | illum 2 86 | 87 | newmtl Shell004_001_001_002_001.001 88 | Ns -1.960784 89 | Ka 1.000000 1.000000 1.000000 90 | Kd 1.000000 1.000000 1.000000 91 | Ks 0.003906 0.003906 0.003906 92 | Ke 0.000000 0.000000 0.000000 93 | Ni 1.000000 94 | d 1.000000 95 | illum 2 96 | 97 | newmtl Shell005_001_001_002_001.001 98 | Ns -1.960784 99 | Ka 1.000000 1.000000 1.000000 100 | Kd 1.000000 1.000000 1.000000 101 | Ks 0.003906 0.003906 0.003906 102 | Ke 0.000000 0.000000 0.000000 103 | Ni 1.000000 104 | d 1.000000 105 | illum 2 106 | 107 | newmtl Shell006_003_002_001.001 108 | Ns -1.960784 109 | Ka 1.000000 1.000000 1.000000 110 | Kd 0.901961 0.921569 0.929412 111 | Ks 0.015625 0.015625 0.015625 112 | Ke 0.000000 0.000000 0.000000 113 | Ni 1.000000 114 | d 1.000000 115 | illum 2 116 | 117 | newmtl Shell007_002_002_001.001 118 | Ns -1.960784 119 | Ka 1.000000 1.000000 1.000000 120 | Kd 0.250000 0.250000 0.250000 121 | Ks 0.003906 0.003906 0.003906 122 | Ke 0.000000 0.000000 0.000000 123 | Ni 1.000000 124 | d 1.000000 125 | illum 2 126 | 127 | newmtl Shell011_002_002_001.001 128 | Ns -1.960784 129 | Ka 1.000000 1.000000 1.000000 130 | Kd 1.000000 1.000000 1.000000 131 | Ks 0.003906 0.003906 0.003906 132 | Ke 0.000000 0.000000 0.000000 133 | Ni 1.000000 134 | d 1.000000 135 | illum 2 136 | 137 | newmtl Shell012_002_002_001.001 138 | Ns -1.960784 139 | Ka 1.000000 1.000000 1.000000 140 | Kd 1.000000 1.000000 1.000000 141 | Ks 0.003906 0.003906 0.003906 142 | Ke 0.000000 0.000000 0.000000 143 | Ni 1.000000 144 | d 1.000000 145 | illum 2 146 | map_Kd colors.png 147 | 148 | newmtl Shell_003_001_002_001.001 149 | Ns -1.960784 150 | Ka 1.000000 1.000000 1.000000 151 | Kd 0.250980 0.250980 0.250980 152 | Ks 0.003906 0.003906 0.003906 153 | Ke 0.000000 0.000000 0.000000 154 | Ni 1.000000 155 | d 1.000000 156 | illum 2 157 | map_Kd colors.png 158 | 159 | newmtl Union001_001_001_002_001.001 160 | Ns -1.960784 161 | Ka 1.000000 1.000000 1.000000 162 | Kd 0.039216 0.541176 0.780392 163 | Ks 0.003906 0.003906 0.003906 164 | Ke 0.000000 0.000000 0.000000 165 | Ni 1.000000 166 | d 1.000000 167 | illum 2 168 | 169 | newmtl Union_001_001_002_001.001 170 | Ns -1.960784 171 | Ka 1.000000 1.000000 1.000000 172 | Kd 0.039216 0.541176 0.780392 173 | Ks 0.003906 0.003906 0.003906 174 | Ke 0.000000 0.000000 0.000000 175 | Ni 1.000000 176 | d 1.000000 177 | illum 2 178 | -------------------------------------------------------------------------------- /franka_panda/meshes/collision/link6.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'link2.blend' 2 | # Material Count: 17 3 | 4 | newmtl Face064_002_001_002_001.001 5 | Ns -1.960784 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 1.000000 0.000000 0.000000 8 | Ks 0.003906 0.003906 0.003906 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | 14 | newmtl Face065_002_001_002_001.001 15 | Ns -1.960784 16 | Ka 1.000000 1.000000 1.000000 17 | Kd 0.000000 1.000000 0.000000 18 | Ks 0.003906 0.003906 0.003906 19 | Ke 0.000000 0.000000 0.000000 20 | Ni 1.000000 21 | d 1.000000 22 | illum 2 23 | 24 | newmtl Face374_002_001_002_001.001 25 | Ns -1.960784 26 | Ka 1.000000 1.000000 1.000000 27 | Kd 1.000000 1.000000 1.000000 28 | Ks 0.003906 0.003906 0.003906 29 | Ke 0.000000 0.000000 0.000000 30 | Ni 1.000000 31 | d 1.000000 32 | illum 2 33 | 34 | newmtl Face539_002_001_002_001.001 35 | Ns -1.960784 36 | Ka 1.000000 1.000000 1.000000 37 | Kd 0.250980 0.250980 0.250980 38 | Ks 0.003906 0.003906 0.003906 39 | Ke 0.000000 0.000000 0.000000 40 | Ni 1.000000 41 | d 1.000000 42 | illum 2 43 | map_Kd D:\dev\pybullet_robots\data\franka_panda\meshes\visual\colors.png 44 | 45 | newmtl Part__Feature001_009_001_002_001.001 46 | Ns -1.960784 47 | Ka 1.000000 1.000000 1.000000 48 | Kd 0.250980 0.250980 0.250980 49 | Ks 0.003906 0.003906 0.003906 50 | Ke 0.000000 0.000000 0.000000 51 | Ni 1.000000 52 | d 1.000000 53 | illum 2 54 | map_Kd D:\dev\pybullet_robots\data\franka_panda\meshes\visual\colors.png 55 | 56 | newmtl Part__Feature002_006_001_002_001.001 57 | Ns -1.960784 58 | Ka 1.000000 1.000000 1.000000 59 | Kd 0.250980 0.250980 0.250980 60 | Ks 0.003906 0.003906 0.003906 61 | Ke 0.000000 0.000000 0.000000 62 | Ni 1.000000 63 | d 1.000000 64 | illum 2 65 | map_Kd D:\dev\pybullet_robots\data\franka_panda\meshes\visual\colors.png 66 | 67 | newmtl Shell002_002_001_002_001.001 68 | Ns -1.960784 69 | Ka 1.000000 1.000000 1.000000 70 | Kd 1.000000 1.000000 1.000000 71 | Ks 0.003906 0.003906 0.003906 72 | Ke 0.000000 0.000000 0.000000 73 | Ni 1.000000 74 | d 1.000000 75 | illum 2 76 | 77 | newmtl Shell003_002_001_002_001.001 78 | Ns -1.960784 79 | Ka 1.000000 1.000000 1.000000 80 | Kd 1.000000 1.000000 1.000000 81 | Ks 0.003906 0.003906 0.003906 82 | Ke 0.000000 0.000000 0.000000 83 | Ni 1.000000 84 | d 1.000000 85 | illum 2 86 | 87 | newmtl Shell004_001_001_002_001.001 88 | Ns -1.960784 89 | Ka 1.000000 1.000000 1.000000 90 | Kd 1.000000 1.000000 1.000000 91 | Ks 0.003906 0.003906 0.003906 92 | Ke 0.000000 0.000000 0.000000 93 | Ni 1.000000 94 | d 1.000000 95 | illum 2 96 | 97 | newmtl Shell005_001_001_002_001.001 98 | Ns -1.960784 99 | Ka 1.000000 1.000000 1.000000 100 | Kd 1.000000 1.000000 1.000000 101 | Ks 0.003906 0.003906 0.003906 102 | Ke 0.000000 0.000000 0.000000 103 | Ni 1.000000 104 | d 1.000000 105 | illum 2 106 | 107 | newmtl Shell006_003_002_001.001 108 | Ns -1.960784 109 | Ka 1.000000 1.000000 1.000000 110 | Kd 0.901961 0.921569 0.929412 111 | Ks 0.015625 0.015625 0.015625 112 | Ke 0.000000 0.000000 0.000000 113 | Ni 1.000000 114 | d 1.000000 115 | illum 2 116 | 117 | newmtl Shell007_002_002_001.001 118 | Ns -1.960784 119 | Ka 1.000000 1.000000 1.000000 120 | Kd 0.250000 0.250000 0.250000 121 | Ks 0.003906 0.003906 0.003906 122 | Ke 0.000000 0.000000 0.000000 123 | Ni 1.000000 124 | d 1.000000 125 | illum 2 126 | 127 | newmtl Shell011_002_002_001.001 128 | Ns -1.960784 129 | Ka 1.000000 1.000000 1.000000 130 | Kd 1.000000 1.000000 1.000000 131 | Ks 0.003906 0.003906 0.003906 132 | Ke 0.000000 0.000000 0.000000 133 | Ni 1.000000 134 | d 1.000000 135 | illum 2 136 | 137 | newmtl Shell012_002_002_001.001 138 | Ns -1.960784 139 | Ka 1.000000 1.000000 1.000000 140 | Kd 1.000000 1.000000 1.000000 141 | Ks 0.003906 0.003906 0.003906 142 | Ke 0.000000 0.000000 0.000000 143 | Ni 1.000000 144 | d 1.000000 145 | illum 2 146 | map_Kd D:\dev\pybullet_robots\data\franka_panda\meshes\visual\colors.png 147 | 148 | newmtl Shell_003_001_002_001.001 149 | Ns -1.960784 150 | Ka 1.000000 1.000000 1.000000 151 | Kd 0.250980 0.250980 0.250980 152 | Ks 0.003906 0.003906 0.003906 153 | Ke 0.000000 0.000000 0.000000 154 | Ni 1.000000 155 | d 1.000000 156 | illum 2 157 | map_Kd D:\dev\pybullet_robots\data\franka_panda\meshes\visual\colors.png 158 | 159 | newmtl Union001_001_001_002_001.001 160 | Ns -1.960784 161 | Ka 1.000000 1.000000 1.000000 162 | Kd 0.039216 0.541176 0.780392 163 | Ks 0.003906 0.003906 0.003906 164 | Ke 0.000000 0.000000 0.000000 165 | Ni 1.000000 166 | d 1.000000 167 | illum 2 168 | 169 | newmtl Union_001_001_002_001.001 170 | Ns -1.960784 171 | Ka 1.000000 1.000000 1.000000 172 | Kd 0.039216 0.541176 0.780392 173 | Ks 0.003906 0.003906 0.003906 174 | Ke 0.000000 0.000000 0.000000 175 | Ni 1.000000 176 | d 1.000000 177 | illum 2 178 | -------------------------------------------------------------------------------- /mesh.py: -------------------------------------------------------------------------------- 1 | import os 2 | import numpy as np 3 | from matplotlib import pyplot as plt 4 | from mpl_toolkits.mplot3d import Axes3D 5 | from matplotlib import path 6 | 7 | 8 | GRASP_MAX_W = 0.08 # 最大张开宽度 9 | 10 | 11 | def clacPlane(pt1, pt2, pt3): 12 | """ 13 | 根据三点计算平面方程 ax+by+cz+d=0 14 | pts: [[x, y, z], [x, y, z], [x, y, z]] 15 | return: A B C z=Ax+By+C 16 | """ 17 | 18 | a = (pt2[1]-pt1[1])*(pt3[2]-pt1[2]) - (pt2[2]-pt1[2])*(pt3[1]-pt1[1]) 19 | b = (pt2[2]-pt1[2])*(pt3[0]-pt1[0]) - (pt2[0]-pt1[0])*(pt3[2]-pt1[2]) 20 | c = (pt2[0]-pt1[0])*(pt3[1]-pt1[1]) - (pt2[1]-pt1[1])*(pt3[0]-pt1[0]) 21 | d = 0 - (a * pt1[0] + b * pt1[1] + c * pt1[2]) 22 | 23 | return a, b, c, d 24 | 25 | # if a == 0 or b == 0 or c == 0 or d == 0: 26 | # print('a = ', a) 27 | # print('b = ', b) 28 | # print('c = ', c) 29 | # print('d = ', d) 30 | # return np.array([-1*a/c, -1*b/c, -1*d/c]) 31 | 32 | def ptsInTriangle(pt1, pt2, pt3): 33 | """ 34 | 获取pt1 pt2 pt3 组成的三角形内的坐标点 35 | pt1: float [x, y] 36 | """ 37 | p = path.Path([pt1, pt2, pt3]) 38 | 39 | min_x = int(min(pt1[0], pt2[0], pt3[0])) 40 | max_x = int(max(pt1[0], pt2[0], pt3[0])) 41 | min_y = int(min(pt1[1], pt2[1], pt3[1])) 42 | max_y = int(max(pt1[1], pt2[1], pt3[1])) 43 | 44 | pts = [] 45 | for x in range(min_x, max_x+1): 46 | for y in range(min_y, max_y+1): 47 | if p.contains_points([(x, y)])[0]: 48 | pts.append([x, y]) 49 | 50 | return pts 51 | 52 | 53 | class Mesh: 54 | """ 55 | mesh 类,读取obj文件,坐标转换,生成空间深度图 56 | """ 57 | def __init__(self, filename, scale=-1): 58 | """ 59 | 读取obj文件,获取v 和 f 60 | 只用于读取EGAD数据集的obj文件 61 | 62 | filename: obj文件名 63 | scale: 物体缩放尺度, 64 | int: 缩放scale倍 65 | -1 : 自动设置scale,使外接矩形框的中间边不超过抓取器宽度(0.07)的80% scale最大为0.001 66 | """ 67 | assert scale == -1 or scale > 0 68 | # print(filename) 69 | if scale > 0: 70 | self._scale = scale 71 | else: 72 | self._scale = 1 73 | 74 | with open(filename) as file: 75 | self.points = [] 76 | self.faces = [] 77 | while 1: 78 | line = file.readline() 79 | if not line: 80 | break 81 | strs = line.split(" ") 82 | if strs[0] == "v": 83 | self.points.append((float(strs[1])*self._scale, float(strs[2])*self._scale, float(strs[3])*self._scale)) 84 | if strs[0] == "f": 85 | if strs[1].count('//'): 86 | idx1, idx2, idx3 = strs[1].index('//'), strs[2].index('//'), strs[3].index('//') 87 | self.faces.append((int(strs[1][:idx1]), int(strs[2][:idx2]), int(strs[3][:idx3]))) 88 | else: 89 | self.faces.append((int(strs[1]), int(strs[2]), int(strs[3]))) 90 | 91 | self.points = np.array(self.points) 92 | self.faces = np.array(self.faces, dtype=np.int64) 93 | if scale == -1: 94 | self._scale = self.get_scale() 95 | self.points = self.points * self._scale 96 | 97 | 98 | def min_z(self): 99 | """ 100 | 返回最小的z坐标 101 | """ 102 | return np.min(self.points[:, 2]) 103 | 104 | 105 | def get_scale(self): 106 | """ 107 | 自适应设置scale 108 | """ 109 | d_x = np.max(self.points[:, 0]) - np.min(self.points[:, 0]) 110 | d_y = np.max(self.points[:, 1]) - np.min(self.points[:, 1]) 111 | d_z = np.max(self.points[:, 2]) - np.min(self.points[:, 2]) 112 | ds = [d_x, d_y, d_z] 113 | ds.sort() 114 | scale = (GRASP_MAX_W - 0.01) * 0.8 / ds[1] 115 | if scale > 0.001: 116 | scale = 0.001 117 | 118 | return scale 119 | 120 | 121 | def scale(self): 122 | return self._scale 123 | 124 | 125 | def calcCenterPt(self): 126 | """ 127 | 计算mesh的中心点坐标 128 | return: [x, y, z] 129 | """ 130 | return np.mean(self.points, axis=0) 131 | 132 | 133 | def transform(self, mat): 134 | """ 135 | 根据旋转矩阵调整顶点坐标 136 | """ 137 | points = self.points.T # 转置 138 | ones = np.ones((1, points.shape[1])) 139 | points = np.vstack((points, ones)) 140 | # 转换 141 | # print(mat.shape) 142 | # print(points.shape) 143 | new_points = np.matmul(mat, points)[:-1, :] 144 | self.points = new_points.T # 转置 (n, 3) 145 | 146 | 147 | if __name__ == "__main__": 148 | p = path.Path([(0, 0), (0.001, 0), (0, 0.001)]) 149 | ret = p.contains_points([(0.00001, 0.00001)])[0] 150 | print(ret) 151 | 152 | 153 | 154 | -------------------------------------------------------------------------------- /camera.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import math 3 | import time 4 | import numpy as np 5 | import scipy.io as scio 6 | 7 | # 图像参数 8 | HEIGHT = 480 9 | WIDTH = 640 10 | 11 | 12 | def radians_TO_angle(radians): 13 | """ 14 | 弧度转角度 15 | """ 16 | return 180 * radians / math.pi 17 | 18 | def angle_TO_radians(angle): 19 | """ 20 | 角度转弧度 21 | """ 22 | return math.pi * angle / 180 23 | 24 | def eulerAnglesToRotationMatrix(theta): 25 | """ 26 | 欧拉角转旋转矩阵 27 | theta: [r, p, y] 28 | """ 29 | R_x = np.array([[1, 0, 0 ], 30 | [0, math.cos(theta[0]), -math.sin(theta[0]) ], 31 | [0, math.sin(theta[0]), math.cos(theta[0]) ] 32 | ]) 33 | 34 | 35 | 36 | R_y = np.array([[math.cos(theta[1]), 0, math.sin(theta[1]) ], 37 | [0, 1, 0 ], 38 | [-math.sin(theta[1]), 0, math.cos(theta[1]) ] 39 | ]) 40 | 41 | R_z = np.array([[math.cos(theta[2]), -math.sin(theta[2]), 0], 42 | [math.sin(theta[2]), math.cos(theta[2]), 0], 43 | [0, 0, 1] 44 | ]) 45 | 46 | 47 | R = np.dot(R_z, np.dot( R_y, R_x )) 48 | 49 | return R 50 | 51 | def getTransfMat(offset, rotate): 52 | """ 53 | 将平移向量和旋转矩阵合并为变换矩阵 54 | offset: (x, y, z) 55 | rotate: 旋转矩阵 56 | """ 57 | mat = np.array([ 58 | [rotate[0, 0], rotate[0, 1], rotate[0, 2], offset[0]], 59 | [rotate[1, 0], rotate[1, 1], rotate[1, 2], offset[1]], 60 | [rotate[2, 0], rotate[2, 1], rotate[2, 2], offset[2]], 61 | [0, 0, 0, 1.] 62 | ]) 63 | return mat 64 | 65 | 66 | class Camera: 67 | def __init__(self): 68 | """ 69 | 初始化相机参数,计算相机内参 70 | """ 71 | self.fov = 60 # 垂直视场 72 | self.length = 0.7 73 | self.H = self.length * math.tan(angle_TO_radians(self.fov/2)) # 图像上方点的到中心点的实际距离 m 74 | self.W = WIDTH * self.H / HEIGHT # 图像右方点的到中心点的实际距离 m 75 | # 计算 f/dx 和 f/dy 76 | self.A = (HEIGHT / 2) * self.length / self.H 77 | # 计算内参 78 | self.InMatrix = np.array([[self.A, 0, WIDTH/2 - 0.5], [0, self.A, HEIGHT/2 - 0.5], [0, 0, 1]], dtype=np.float) 79 | # 计算世界坐标系->相机坐标系的转换矩阵 4*4 80 | # 欧拉角: (pi, 0, 0) 平移(0, 0, 0.7) 81 | rotMat = eulerAnglesToRotationMatrix([math.pi, 0, 0]) 82 | self.transMat = getTransfMat([0, 0, 0.7], rotMat) 83 | 84 | 85 | def img2camera(self, pt, dep): 86 | """ 87 | 获取像素点pt在相机坐标系中的坐标 88 | pt: [x, y] 89 | dep: 深度值 90 | 91 | return: [x, y, z] 92 | """ 93 | pt_in_img = np.array([[pt[0]], [pt[1]], [1]], dtype=np.float) 94 | ret = np.matmul(np.linalg.inv(self.InMatrix), pt_in_img) * dep 95 | return list(ret.reshape((3,))) 96 | # print('坐标 = ', ret) 97 | 98 | def camera2img(self, coord): 99 | """ 100 | 将相机坐标系中的点转换至图像 101 | coord: [x, y, z] 102 | 103 | return: [row, col] 104 | """ 105 | z = coord[2] 106 | coord = np.array(coord).reshape((3, 1)) 107 | rc = (np.matmul(self.InMatrix, coord) / z).reshape((3,)) 108 | 109 | return list(rc)[:-1] 110 | 111 | def length_TO_pixels(self, l, dep): 112 | """ 113 | 与相机距离为dep的平面上 有条线,长l,获取这条线在图像中的像素长度 114 | l: m 115 | dep: m 116 | """ 117 | return l * self.A / dep 118 | 119 | def camera2world(self, coord): 120 | """ 121 | 获取相机坐标系中的点在世界坐标系中的坐标 122 | corrd: [x, y, z] 123 | 124 | return: [x, y, z] 125 | """ 126 | coord.append(1.) 127 | coord = np.array(coord).reshape((4, 1)) 128 | coord_new = np.matmul(self.transMat, coord).reshape((4,)) 129 | return list(coord_new)[:-1] 130 | 131 | def world2camera(self, coord): 132 | """ 133 | 获取世界坐标系中的点在相机坐标系中的坐标 134 | corrd: [x, y, z] 135 | 136 | return: [x, y, z] 137 | """ 138 | coord.append(1.) 139 | coord = np.array(coord).reshape((4, 1)) 140 | coord_new = np.matmul(np.linalg.inv(self.transMat), coord).reshape((4,)) 141 | return list(coord_new)[:-1] 142 | 143 | def world2img(self, coord): 144 | """ 145 | 获取世界坐标系中的点在图像中的坐标 146 | corrd: [x, y, z] 147 | 148 | return: [row, col] 149 | """ 150 | # 转到相机坐标系 151 | coord = self.world2camera(coord) 152 | # 转到图像 153 | pt = self.camera2img(coord) # [y, x] 154 | return [int(pt[1]), int(pt[0])] 155 | 156 | def img2world(self, pt, dep): 157 | """ 158 | 获取像素点的世界坐标 159 | pt: [x, y] 160 | dep: 深度值 m 161 | """ 162 | coordInCamera = self.img2camera(pt, dep) 163 | return self.camera2world(coordInCamera) 164 | 165 | 166 | -------------------------------------------------------------------------------- /myModel/tray/tray_textured.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.78 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | mtllib tray_textured.mtl 4 | o edge_4_Cube.001 5 | v -0.573309 0.580000 0.261247 6 | v -0.426691 0.419400 -0.002214 7 | v -0.590083 0.580000 0.250354 8 | v -0.573309 -0.580000 0.261247 9 | v -0.409917 0.419400 0.008679 10 | v -0.590083 -0.580000 0.250354 11 | v -0.409917 -0.419400 0.009162 12 | v -0.426691 -0.419400 -0.001731 13 | vt 0.9046 0.2397 14 | vt 0.7929 0.2434 15 | vt 0.9174 0.2393 16 | vt 0.9537 0.7559 17 | vt 0.7801 0.2438 18 | vt 0.9664 0.7554 19 | vt 0.8291 0.7599 20 | vt 0.8419 0.7595 21 | vn 0.2565 0.8821 -0.3950 22 | vn 0.8392 0.0002 0.5438 23 | vn 0.8395 0.0000 0.5433 24 | vn 0.8396 -0.0000 0.5432 25 | vn 0.2568 -0.8819 -0.3954 26 | vn -0.8396 -0.0002 -0.5433 27 | vn -0.8392 -0.0000 -0.5438 28 | vn -0.8391 0.0000 -0.5439 29 | vn 0.5446 -0.0005 -0.8387 30 | vn -0.5446 -0.0000 0.8387 31 | vn 0.8391 0.0003 0.5440 32 | vn -0.8397 -0.0003 -0.5430 33 | usemtl None 34 | s 1 35 | f 1/1/1 2/2/1 3/3/1 36 | f 4/4/2 5/5/3 1/1/4 37 | f 6/6/5 7/7/5 4/4/5 38 | f 3/3/6 8/8/7 6/6/8 39 | f 5/5/9 8/8/9 2/2/9 40 | f 4/4/10 3/3/10 6/6/10 41 | f 1/1/1 5/5/1 2/2/1 42 | f 4/4/2 7/7/11 5/5/3 43 | f 6/6/5 8/8/5 7/7/5 44 | f 3/3/6 2/2/12 8/8/7 45 | f 5/5/9 7/7/9 8/8/9 46 | f 4/4/10 1/1/10 3/3/10 47 | o edge_1_Cube.003 48 | v 0.580000 0.590083 0.250354 49 | v -0.419960 0.426691 -0.001860 50 | v -0.580000 0.590083 0.250354 51 | v 0.580000 0.573309 0.261247 52 | v 0.420014 0.426691 -0.001059 53 | v -0.580000 0.573309 0.261247 54 | v 0.420014 0.409917 0.009834 55 | v -0.419960 0.409917 0.009033 56 | vt 0.8346 0.9187 57 | vt 0.2203 0.8574 58 | vt 0.1480 0.9187 59 | vt 0.8346 0.9129 60 | vt 0.7623 0.8574 61 | vt 0.1480 0.9129 62 | vt 0.7623 0.8511 63 | vt 0.2203 0.8511 64 | vn 0.0004 0.8386 -0.5448 65 | vn 0.0001 0.8391 -0.5439 66 | vn 0.0000 0.8393 -0.5437 67 | vn 0.8823 -0.2564 -0.3948 68 | vn -0.0004 -0.8392 0.5439 69 | vn -0.0001 -0.8386 0.5447 70 | vn 0.0000 -0.8385 0.5449 71 | vn -0.8826 -0.2560 -0.3942 72 | vn 0.0008 -0.5446 -0.8387 73 | vn 0.0000 0.5446 0.8387 74 | vn 0.0005 0.8383 -0.5452 75 | vn -0.0005 -0.8394 0.5435 76 | usemtl None 77 | s 1 78 | f 9/9/13 10/10/14 11/11/15 79 | f 12/12/16 13/13/16 9/9/16 80 | f 14/14/17 15/15/18 12/12/19 81 | f 11/11/20 16/16/20 14/14/20 82 | f 13/13/21 16/16/21 10/10/21 83 | f 12/12/22 11/11/22 14/14/22 84 | f 9/9/13 13/13/23 10/10/14 85 | f 12/12/16 15/15/16 13/13/16 86 | f 14/14/17 16/16/24 15/15/18 87 | f 11/11/20 10/10/20 16/16/20 88 | f 13/13/21 15/15/21 16/16/21 89 | f 12/12/22 9/9/22 11/11/22 90 | o edge_2_Cube 91 | v 0.590083 0.580000 0.250354 92 | v 0.409917 0.420060 0.009390 93 | v 0.573309 0.580000 0.261247 94 | v 0.590083 -0.580000 0.250354 95 | v 0.426691 0.420060 -0.001503 96 | v 0.573309 -0.580000 0.261247 97 | v 0.426691 -0.419158 -0.002053 98 | v 0.409917 -0.419158 0.008840 99 | vt 0.9410 0.8520 100 | vt 0.7523 0.8566 101 | vt 0.9234 0.8524 102 | vt 0.8896 0.1426 103 | vt 0.7698 0.8562 104 | vt 0.8721 0.1430 105 | vt 0.7185 0.1468 106 | vt 0.7009 0.1472 107 | vn -0.2561 0.8826 -0.3943 108 | vn 0.8394 0.0003 -0.5435 109 | vn 0.8390 0.0001 -0.5441 110 | vn 0.8389 0.0000 -0.5443 111 | vn -0.2569 -0.8818 -0.3956 112 | vn -0.8390 -0.0003 0.5441 113 | vn -0.8394 -0.0001 0.5436 114 | vn -0.8395 -0.0000 0.5434 115 | vn -0.5446 0.0005 -0.8387 116 | vn 0.5446 -0.0000 0.8387 117 | vn 0.8396 0.0004 -0.5433 118 | vn -0.8388 -0.0004 0.5444 119 | usemtl None 120 | s 1 121 | f 17/17/25 18/18/25 19/19/25 122 | f 20/20/26 21/21/27 17/17/28 123 | f 22/22/29 23/23/29 20/20/29 124 | f 19/19/30 24/24/31 22/22/32 125 | f 21/21/33 24/24/33 18/18/33 126 | f 20/20/34 19/19/34 22/22/34 127 | f 17/17/25 21/21/25 18/18/25 128 | f 20/20/26 23/23/35 21/21/27 129 | f 22/22/29 24/24/29 23/23/29 130 | f 19/19/30 18/18/36 24/24/31 131 | f 21/21/33 23/23/33 24/24/33 132 | f 20/20/34 17/17/34 19/19/34 133 | o base_Cube.004 134 | v 0.420000 0.420000 0.010000 135 | v -0.420000 0.420000 -0.010000 136 | v -0.420000 0.420000 0.010000 137 | v 0.420000 -0.420000 0.010000 138 | v 0.420000 0.420000 -0.010000 139 | v -0.420000 -0.420000 0.010000 140 | v 0.420000 -0.420000 -0.010000 141 | v -0.420000 -0.420000 -0.010000 142 | vt 0.7524 0.8072 143 | vt -0.3038 0.8371 144 | vt -0.3038 0.8371 145 | vt 0.7012 0.1905 146 | vt 0.7524 0.8072 147 | vt -0.3550 0.2204 148 | vt 0.7012 0.1905 149 | vt -0.3550 0.2204 150 | vn 0.0000 1.0000 0.0000 151 | vn 1.0000 -0.0000 0.0000 152 | vn 0.0000 -1.0000 0.0000 153 | vn -1.0000 -0.0000 0.0000 154 | vn 0.0000 0.0000 -1.0000 155 | vn 0.0000 -0.0000 1.0000 156 | usemtl None 157 | s 1 158 | f 25/25/37 26/26/37 27/27/37 159 | f 28/28/38 29/29/38 25/25/38 160 | f 30/30/39 31/31/39 28/28/39 161 | f 27/27/40 32/32/40 30/30/40 162 | f 29/29/41 32/32/41 26/26/41 163 | f 28/28/42 27/27/42 30/30/42 164 | f 25/25/37 29/29/37 26/26/37 165 | f 28/28/38 31/31/38 29/29/38 166 | f 30/30/39 32/32/39 31/31/39 167 | f 27/27/40 26/26/40 32/32/40 168 | f 29/29/41 31/31/41 32/32/41 169 | f 28/28/42 25/25/42 27/27/42 170 | o edge_3_Cube.002 171 | v 0.580000 -0.573309 0.261247 172 | v -0.419400 -0.409917 0.008678 173 | v -0.580000 -0.573309 0.261247 174 | v 0.580000 -0.590083 0.250354 175 | v 0.419883 -0.409917 0.009162 176 | v -0.580000 -0.590083 0.250354 177 | v 0.419883 -0.426691 -0.001731 178 | v -0.419400 -0.426691 -0.002215 179 | vt 0.8690 0.1040 180 | vt 0.1365 0.1739 181 | vt 0.0188 0.1040 182 | vt 0.8690 0.0968 183 | vt 0.7517 0.1739 184 | vt 0.0188 0.0968 185 | vt 0.7517 0.1668 186 | vt 0.1365 0.1668 187 | vn -0.0002 0.8392 0.5438 188 | vn -0.0000 0.8395 0.5433 189 | vn 0.0000 0.8396 0.5432 190 | vn 0.8825 0.2562 -0.3945 191 | vn 0.0002 -0.8396 -0.5433 192 | vn 0.0000 -0.8392 -0.5438 193 | vn 0.0000 -0.8391 -0.5439 194 | vn -0.8821 0.2565 -0.3950 195 | vn -0.8822 0.2565 -0.3950 196 | vn 0.0005 0.5446 -0.8387 197 | vn 0.0000 -0.5446 0.8387 198 | vn -0.0003 0.8391 0.5440 199 | vn 0.0003 -0.8397 -0.5430 200 | usemtl None 201 | s 1 202 | f 33/33/43 34/34/44 35/35/45 203 | f 36/36/46 37/37/46 33/33/46 204 | f 38/38/47 39/39/48 36/36/49 205 | f 35/35/50 40/40/51 38/38/51 206 | f 37/37/52 40/40/52 34/34/52 207 | f 36/36/53 35/35/53 38/38/53 208 | f 33/33/43 37/37/54 34/34/44 209 | f 36/36/46 39/39/46 37/37/46 210 | f 38/38/47 40/40/55 39/39/48 211 | f 35/35/50 34/34/51 40/40/51 212 | f 37/37/52 39/39/52 40/40/52 213 | f 36/36/53 33/33/53 35/35/53 214 | -------------------------------------------------------------------------------- /myModel/traybox/tray_textured.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.78 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | mtllib tray_textured.mtl 4 | o edge_4_Cube.001 5 | v -0.573309 0.580000 0.261247 6 | v -0.426691 0.419400 -0.002214 7 | v -0.590083 0.580000 0.250354 8 | v -0.573309 -0.580000 0.261247 9 | v -0.409917 0.419400 0.008679 10 | v -0.590083 -0.580000 0.250354 11 | v -0.409917 -0.419400 0.009162 12 | v -0.426691 -0.419400 -0.001731 13 | vt 0.9046 0.2397 14 | vt 0.7929 0.2434 15 | vt 0.9174 0.2393 16 | vt 0.9537 0.7559 17 | vt 0.7801 0.2438 18 | vt 0.9664 0.7554 19 | vt 0.8291 0.7599 20 | vt 0.8419 0.7595 21 | vn 0.2565 0.8821 -0.3950 22 | vn 0.8392 0.0002 0.5438 23 | vn 0.8395 0.0000 0.5433 24 | vn 0.8396 -0.0000 0.5432 25 | vn 0.2568 -0.8819 -0.3954 26 | vn -0.8396 -0.0002 -0.5433 27 | vn -0.8392 -0.0000 -0.5438 28 | vn -0.8391 0.0000 -0.5439 29 | vn 0.5446 -0.0005 -0.8387 30 | vn -0.5446 -0.0000 0.8387 31 | vn 0.8391 0.0003 0.5440 32 | vn -0.8397 -0.0003 -0.5430 33 | usemtl None 34 | s 1 35 | f 1/1/1 2/2/1 3/3/1 36 | f 4/4/2 5/5/3 1/1/4 37 | f 6/6/5 7/7/5 4/4/5 38 | f 3/3/6 8/8/7 6/6/8 39 | f 5/5/9 8/8/9 2/2/9 40 | f 4/4/10 3/3/10 6/6/10 41 | f 1/1/1 5/5/1 2/2/1 42 | f 4/4/2 7/7/11 5/5/3 43 | f 6/6/5 8/8/5 7/7/5 44 | f 3/3/6 2/2/12 8/8/7 45 | f 5/5/9 7/7/9 8/8/9 46 | f 4/4/10 1/1/10 3/3/10 47 | o edge_1_Cube.003 48 | v 0.580000 0.590083 0.250354 49 | v -0.419960 0.426691 -0.001860 50 | v -0.580000 0.590083 0.250354 51 | v 0.580000 0.573309 0.261247 52 | v 0.420014 0.426691 -0.001059 53 | v -0.580000 0.573309 0.261247 54 | v 0.420014 0.409917 0.009834 55 | v -0.419960 0.409917 0.009033 56 | vt 0.8346 0.9187 57 | vt 0.2203 0.8574 58 | vt 0.1480 0.9187 59 | vt 0.8346 0.9129 60 | vt 0.7623 0.8574 61 | vt 0.1480 0.9129 62 | vt 0.7623 0.8511 63 | vt 0.2203 0.8511 64 | vn 0.0004 0.8386 -0.5448 65 | vn 0.0001 0.8391 -0.5439 66 | vn 0.0000 0.8393 -0.5437 67 | vn 0.8823 -0.2564 -0.3948 68 | vn -0.0004 -0.8392 0.5439 69 | vn -0.0001 -0.8386 0.5447 70 | vn 0.0000 -0.8385 0.5449 71 | vn -0.8826 -0.2560 -0.3942 72 | vn 0.0008 -0.5446 -0.8387 73 | vn 0.0000 0.5446 0.8387 74 | vn 0.0005 0.8383 -0.5452 75 | vn -0.0005 -0.8394 0.5435 76 | usemtl None 77 | s 1 78 | f 9/9/13 10/10/14 11/11/15 79 | f 12/12/16 13/13/16 9/9/16 80 | f 14/14/17 15/15/18 12/12/19 81 | f 11/11/20 16/16/20 14/14/20 82 | f 13/13/21 16/16/21 10/10/21 83 | f 12/12/22 11/11/22 14/14/22 84 | f 9/9/13 13/13/23 10/10/14 85 | f 12/12/16 15/15/16 13/13/16 86 | f 14/14/17 16/16/24 15/15/18 87 | f 11/11/20 10/10/20 16/16/20 88 | f 13/13/21 15/15/21 16/16/21 89 | f 12/12/22 9/9/22 11/11/22 90 | o edge_2_Cube 91 | v 0.590083 0.580000 0.250354 92 | v 0.409917 0.420060 0.009390 93 | v 0.573309 0.580000 0.261247 94 | v 0.590083 -0.580000 0.250354 95 | v 0.426691 0.420060 -0.001503 96 | v 0.573309 -0.580000 0.261247 97 | v 0.426691 -0.419158 -0.002053 98 | v 0.409917 -0.419158 0.008840 99 | vt 0.9410 0.8520 100 | vt 0.7523 0.8566 101 | vt 0.9234 0.8524 102 | vt 0.8896 0.1426 103 | vt 0.7698 0.8562 104 | vt 0.8721 0.1430 105 | vt 0.7185 0.1468 106 | vt 0.7009 0.1472 107 | vn -0.2561 0.8826 -0.3943 108 | vn 0.8394 0.0003 -0.5435 109 | vn 0.8390 0.0001 -0.5441 110 | vn 0.8389 0.0000 -0.5443 111 | vn -0.2569 -0.8818 -0.3956 112 | vn -0.8390 -0.0003 0.5441 113 | vn -0.8394 -0.0001 0.5436 114 | vn -0.8395 -0.0000 0.5434 115 | vn -0.5446 0.0005 -0.8387 116 | vn 0.5446 -0.0000 0.8387 117 | vn 0.8396 0.0004 -0.5433 118 | vn -0.8388 -0.0004 0.5444 119 | usemtl None 120 | s 1 121 | f 17/17/25 18/18/25 19/19/25 122 | f 20/20/26 21/21/27 17/17/28 123 | f 22/22/29 23/23/29 20/20/29 124 | f 19/19/30 24/24/31 22/22/32 125 | f 21/21/33 24/24/33 18/18/33 126 | f 20/20/34 19/19/34 22/22/34 127 | f 17/17/25 21/21/25 18/18/25 128 | f 20/20/26 23/23/35 21/21/27 129 | f 22/22/29 24/24/29 23/23/29 130 | f 19/19/30 18/18/36 24/24/31 131 | f 21/21/33 23/23/33 24/24/33 132 | f 20/20/34 17/17/34 19/19/34 133 | o base_Cube.004 134 | v 0.420000 0.420000 0.010000 135 | v -0.420000 0.420000 -0.010000 136 | v -0.420000 0.420000 0.010000 137 | v 0.420000 -0.420000 0.010000 138 | v 0.420000 0.420000 -0.010000 139 | v -0.420000 -0.420000 0.010000 140 | v 0.420000 -0.420000 -0.010000 141 | v -0.420000 -0.420000 -0.010000 142 | vt 0.7524 0.8072 143 | vt -0.3038 0.8371 144 | vt -0.3038 0.8371 145 | vt 0.7012 0.1905 146 | vt 0.7524 0.8072 147 | vt -0.3550 0.2204 148 | vt 0.7012 0.1905 149 | vt -0.3550 0.2204 150 | vn 0.0000 1.0000 0.0000 151 | vn 1.0000 -0.0000 0.0000 152 | vn 0.0000 -1.0000 0.0000 153 | vn -1.0000 -0.0000 0.0000 154 | vn 0.0000 0.0000 -1.0000 155 | vn 0.0000 -0.0000 1.0000 156 | usemtl None 157 | s 1 158 | f 25/25/37 26/26/37 27/27/37 159 | f 28/28/38 29/29/38 25/25/38 160 | f 30/30/39 31/31/39 28/28/39 161 | f 27/27/40 32/32/40 30/30/40 162 | f 29/29/41 32/32/41 26/26/41 163 | f 28/28/42 27/27/42 30/30/42 164 | f 25/25/37 29/29/37 26/26/37 165 | f 28/28/38 31/31/38 29/29/38 166 | f 30/30/39 32/32/39 31/31/39 167 | f 27/27/40 26/26/40 32/32/40 168 | f 29/29/41 31/31/41 32/32/41 169 | f 28/28/42 25/25/42 27/27/42 170 | o edge_3_Cube.002 171 | v 0.580000 -0.573309 0.261247 172 | v -0.419400 -0.409917 0.008678 173 | v -0.580000 -0.573309 0.261247 174 | v 0.580000 -0.590083 0.250354 175 | v 0.419883 -0.409917 0.009162 176 | v -0.580000 -0.590083 0.250354 177 | v 0.419883 -0.426691 -0.001731 178 | v -0.419400 -0.426691 -0.002215 179 | vt 0.8690 0.1040 180 | vt 0.1365 0.1739 181 | vt 0.0188 0.1040 182 | vt 0.8690 0.0968 183 | vt 0.7517 0.1739 184 | vt 0.0188 0.0968 185 | vt 0.7517 0.1668 186 | vt 0.1365 0.1668 187 | vn -0.0002 0.8392 0.5438 188 | vn -0.0000 0.8395 0.5433 189 | vn 0.0000 0.8396 0.5432 190 | vn 0.8825 0.2562 -0.3945 191 | vn 0.0002 -0.8396 -0.5433 192 | vn 0.0000 -0.8392 -0.5438 193 | vn 0.0000 -0.8391 -0.5439 194 | vn -0.8821 0.2565 -0.3950 195 | vn -0.8822 0.2565 -0.3950 196 | vn 0.0005 0.5446 -0.8387 197 | vn 0.0000 -0.5446 0.8387 198 | vn -0.0003 0.8391 0.5440 199 | vn 0.0003 -0.8397 -0.5430 200 | usemtl None 201 | s 1 202 | f 33/33/43 34/34/44 35/35/45 203 | f 36/36/46 37/37/46 33/33/46 204 | f 38/38/47 39/39/48 36/36/49 205 | f 35/35/50 40/40/51 38/38/51 206 | f 37/37/52 40/40/52 34/34/52 207 | f 36/36/53 35/35/53 38/38/53 208 | f 33/33/43 37/37/54 34/34/44 209 | f 36/36/46 39/39/46 37/37/46 210 | f 38/38/47 40/40/55 39/39/48 211 | f 35/35/50 34/34/51 40/40/51 212 | f 37/37/52 39/39/52 40/40/52 213 | f 36/36/53 33/33/53 35/35/53 214 | -------------------------------------------------------------------------------- /franka_panda/meshes/collision/finger_1.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.91.0 OBJ File: 'finger.blend' 2 | # www.blender.org 3 | mtllib finger_1.mtl 4 | o finger 5 | v 0.010360 0.026508 0.000155 6 | v 0.010449 0.005998 0.000147 7 | v -0.010387 0.005956 0.000132 8 | v -0.010387 0.005956 0.000132 9 | v -0.010479 0.017638 0.018988 10 | v -0.010401 0.026428 0.000167 11 | v -0.010401 0.026428 0.000167 12 | v -0.010479 0.017638 0.018988 13 | v -0.010389 0.025490 0.019188 14 | v 0.010449 0.005998 0.000147 15 | v -0.008730 0.003754 0.036165 16 | v -0.010387 0.005956 0.000132 17 | v 0.010401 0.025518 0.019037 18 | v -0.010389 0.025490 0.019188 19 | v 0.005840 0.016065 0.053804 20 | v -0.010387 0.005956 0.000132 21 | v -0.010401 0.026428 0.000167 22 | v 0.010360 0.026508 0.000155 23 | v 0.008616 0.015819 0.051328 24 | v 0.010495 0.016778 0.018436 25 | v 0.010401 0.025518 0.019037 26 | v 0.010495 0.016778 0.018436 27 | v 0.008693 0.003660 0.050166 28 | v 0.010449 0.005998 0.000147 29 | v 0.008616 0.015819 0.051328 30 | v 0.008693 0.003660 0.050166 31 | v 0.010495 0.016778 0.018436 32 | v -0.008623 0.003725 0.050953 33 | v -0.010387 0.005956 0.000132 34 | v -0.008730 0.003754 0.036165 35 | v 0.010449 0.005998 0.000147 36 | v 0.008693 0.003660 0.050166 37 | v -0.008730 0.003754 0.036165 38 | v 0.008693 0.003660 0.050166 39 | v -0.005481 0.003695 0.053725 40 | v -0.008730 0.003754 0.036165 41 | v 0.010401 0.025518 0.019037 42 | v 0.010495 0.016778 0.018436 43 | v 0.010449 0.005998 0.000147 44 | v 0.010401 0.025518 0.019037 45 | v 0.010449 0.005998 0.000147 46 | v 0.010360 0.026508 0.000155 47 | v 0.010401 0.025518 0.019037 48 | v 0.010360 0.026508 0.000155 49 | v -0.010389 0.025490 0.019188 50 | v -0.010389 0.025490 0.019188 51 | v -0.005278 0.016081 0.053849 52 | v 0.005840 0.016065 0.053804 53 | v -0.007778 0.016016 0.052366 54 | v -0.005278 0.016081 0.053849 55 | v -0.010389 0.025490 0.019188 56 | v -0.008623 0.003725 0.050953 57 | v -0.005481 0.003695 0.053725 58 | v -0.007778 0.016016 0.052366 59 | v -0.010387 0.005956 0.000132 60 | v -0.008623 0.003725 0.050953 61 | v -0.010479 0.017638 0.018988 62 | v 0.010401 0.025518 0.019037 63 | v 0.005840 0.016065 0.053804 64 | v 0.008616 0.015819 0.051328 65 | v 0.010360 0.026508 0.000155 66 | v -0.010401 0.026428 0.000167 67 | v -0.010389 0.025490 0.019188 68 | v -0.010479 0.017638 0.018988 69 | v -0.008841 0.015758 0.050589 70 | v -0.010389 0.025490 0.019188 71 | v -0.008841 0.015758 0.050589 72 | v -0.007778 0.016016 0.052366 73 | v -0.010389 0.025490 0.019188 74 | v 0.005840 0.016065 0.053804 75 | v -0.005481 0.003695 0.053725 76 | v 0.006138 0.003756 0.053578 77 | v -0.005278 0.016081 0.053849 78 | v -0.005481 0.003695 0.053725 79 | v 0.005840 0.016065 0.053804 80 | v 0.008693 0.003660 0.050166 81 | v 0.006138 0.003756 0.053578 82 | v -0.005481 0.003695 0.053725 83 | v 0.006138 0.003756 0.053578 84 | v 0.008693 0.003660 0.050166 85 | v 0.008616 0.015819 0.051328 86 | v -0.005481 0.003695 0.053725 87 | v -0.008623 0.003725 0.050953 88 | v -0.008730 0.003754 0.036165 89 | v -0.007778 0.016016 0.052366 90 | v -0.005481 0.003695 0.053725 91 | v -0.005278 0.016081 0.053849 92 | v -0.008623 0.003725 0.050953 93 | v -0.008841 0.015758 0.050589 94 | v -0.010479 0.017638 0.018988 95 | v 0.006138 0.003756 0.053578 96 | v 0.008616 0.015819 0.051328 97 | v 0.005840 0.016065 0.053804 98 | v -0.007778 0.016016 0.052366 99 | v -0.008841 0.015758 0.050589 100 | v -0.008623 0.003725 0.050953 101 | vn 0.0007 0.0004 -1.0000 102 | vn -1.0000 -0.0007 -0.0045 103 | vn -0.9999 0.0115 0.0012 104 | vn 0.0021 -0.9981 -0.0611 105 | vn 0.0006 0.9649 0.2625 106 | vn -0.0006 0.0017 -1.0000 107 | vn 0.9983 0.0068 0.0572 108 | vn 0.9977 -0.0590 0.0323 109 | vn 0.9984 0.0008 0.0570 110 | vn -0.8368 -0.5474 0.0050 111 | vn 0.0312 -0.9985 -0.0456 112 | vn -0.0032 -1.0000 -0.0027 113 | vn 0.9999 0.0114 -0.0093 114 | vn 1.0000 0.0043 -0.0019 115 | vn -0.0010 0.9986 0.0524 116 | vn 0.0025 0.9652 0.2616 117 | vn -0.1923 0.9395 0.2834 118 | vn -0.6613 -0.0407 0.7490 119 | vn -0.9977 -0.0596 0.0320 120 | vn 0.3362 0.8967 0.2879 121 | vn -0.0039 0.9988 0.0492 122 | vn -0.9986 0.0102 0.0524 123 | vn -0.6166 0.7429 0.2606 124 | vn 0.0128 -0.0180 0.9998 125 | vn 0.0041 -0.0101 0.9999 126 | vn 0.0056 -0.9995 0.0325 127 | vn 0.7986 -0.0522 0.5996 128 | vn -0.0077 -1.0000 -0.0019 129 | vn -0.5101 -0.0003 0.8601 130 | vn -0.9986 -0.0166 0.0508 131 | vn 0.6657 0.0024 0.7463 132 | vn -0.8582 -0.0001 0.5134 133 | usemtl DefaultMaterial.001 134 | s 1 135 | f 1//1 2//1 3//1 136 | f 4//2 5//2 6//2 137 | f 7//3 8//3 9//3 138 | f 10//4 11//4 12//4 139 | f 13//5 14//5 15//5 140 | f 16//6 17//6 18//6 141 | f 19//7 20//7 21//7 142 | f 22//8 23//8 24//8 143 | f 25//9 26//9 27//9 144 | f 28//10 29//10 30//10 145 | f 31//11 32//11 33//11 146 | f 34//12 35//12 36//12 147 | f 37//13 38//13 39//13 148 | f 40//14 41//14 42//14 149 | f 43//15 44//15 45//15 150 | f 46//16 47//16 48//16 151 | f 49//17 50//17 51//17 152 | f 52//18 53//18 54//18 153 | f 55//19 56//19 57//19 154 | f 58//20 59//20 60//20 155 | f 61//21 62//21 63//21 156 | f 64//22 65//22 66//22 157 | f 67//23 68//23 69//23 158 | f 70//24 71//24 72//24 159 | f 73//25 74//25 75//25 160 | f 76//26 77//26 78//26 161 | f 79//27 80//27 81//27 162 | f 82//28 83//28 84//28 163 | f 85//29 86//29 87//29 164 | f 88//30 89//30 90//30 165 | f 91//31 92//31 93//31 166 | f 94//32 95//32 96//32 167 | o 立方体 168 | v 0.008375 0.009238 0.095061 169 | v 0.008375 0.004086 0.095061 170 | v 0.008375 0.009238 0.053440 171 | v 0.008375 0.004086 0.053440 172 | v -0.008746 0.009238 0.095061 173 | v -0.008746 0.004086 0.095061 174 | v -0.008746 0.009238 0.053440 175 | v -0.008746 0.004086 0.053440 176 | vt 0.375000 0.000000 177 | vt 0.625000 0.000000 178 | vt 0.625000 0.250000 179 | vt 0.375000 0.250000 180 | vt 0.625000 0.500000 181 | vt 0.375000 0.500000 182 | vt 0.625000 0.750000 183 | vt 0.375000 0.750000 184 | vt 0.625000 1.000000 185 | vt 0.375000 1.000000 186 | vt 0.125000 0.500000 187 | vt 0.125000 0.750000 188 | vt 0.875000 0.500000 189 | vt 0.875000 0.750000 190 | vn 0.5773 0.5773 0.5773 191 | vn 0.5773 -0.5773 0.5773 192 | vn 0.5773 -0.5773 -0.5773 193 | vn 0.5773 0.5773 -0.5773 194 | vn -0.5773 -0.5773 -0.5773 195 | vn -0.5773 0.5773 -0.5773 196 | vn -0.5773 -0.5773 0.5773 197 | vn -0.5773 0.5773 0.5773 198 | usemtl None 199 | s 1 200 | f 97/1/33 98/2/34 100/3/35 99/4/36 201 | f 99/4/36 100/3/35 104/5/37 103/6/38 202 | f 103/6/38 104/5/37 102/7/39 101/8/40 203 | f 101/8/40 102/7/39 98/9/34 97/10/33 204 | f 99/11/36 103/6/38 101/8/40 97/12/33 205 | f 104/5/37 100/13/35 98/14/34 102/7/39 206 | -------------------------------------------------------------------------------- /franka_panda/meshes/collision/finger.obj: -------------------------------------------------------------------------------- 1 | # File produced by Open Asset Import Library (http://www.assimp.sf.net) 2 | # (assimp v3.0.1262) 3 | 4 | mtllib finger.stl.obj.mtl 5 | 6 | # 96 vertex positions 7 | v 0.01036 0.0264034 0.000154629 8 | v 0.0104486 0.0025833 0.000146801 9 | v -0.0103872 0.00253418 0.000131696 10 | v -0.0103872 0.00253418 0.000131696 11 | v -0.0104795 0.0161016 0.0189882 12 | v -0.0104013 0.0263094 0.00016651 13 | v -0.0104013 0.0263094 0.00016651 14 | v -0.0104795 0.0161016 0.0189882 15 | v -0.0103889 0.0252203 0.0191876 16 | v 0.0104486 0.0025833 0.000146801 17 | v -0.0087304 -2.35252e-05 0.0361648 18 | v -0.0103872 0.00253418 0.000131696 19 | v 0.0104005 0.0252534 0.0190366 20 | v -0.0103889 0.0252203 0.0191876 21 | v 0.00583983 0.0142743 0.0538035 22 | v -0.0103872 0.00253418 0.000131696 23 | v -0.0104013 0.0263094 0.00016651 24 | v 0.01036 0.0264034 0.000154629 25 | v 0.00861608 0.0139887 0.0513279 26 | v 0.0104948 0.0151026 0.0184356 27 | v 0.0104005 0.0252534 0.0190366 28 | v 0.0104948 0.0151026 0.0184356 29 | v 0.00869277 -0.000132643 0.0501662 30 | v 0.0104486 0.0025833 0.000146801 31 | v 0.00861608 0.0139887 0.0513279 32 | v 0.00869277 -0.000132643 0.0501662 33 | v 0.0104948 0.0151026 0.0184356 34 | v -0.00862294 -5.68019e-05 0.0509528 35 | v -0.0103872 0.00253418 0.000131696 36 | v -0.0087304 -2.35252e-05 0.0361648 37 | v 0.0104486 0.0025833 0.000146801 38 | v 0.00869277 -0.000132643 0.0501662 39 | v -0.0087304 -2.35252e-05 0.0361648 40 | v 0.00869277 -0.000132643 0.0501662 41 | v -0.00548142 -9.11208e-05 0.0537247 42 | v -0.0087304 -2.35252e-05 0.0361648 43 | v 0.0104005 0.0252534 0.0190366 44 | v 0.0104948 0.0151026 0.0184356 45 | v 0.0104486 0.0025833 0.000146801 46 | v 0.0104005 0.0252534 0.0190366 47 | v 0.0104486 0.0025833 0.000146801 48 | v 0.01036 0.0264034 0.000154629 49 | v 0.0104005 0.0252534 0.0190366 50 | v 0.01036 0.0264034 0.000154629 51 | v -0.0103889 0.0252203 0.0191876 52 | v -0.0103889 0.0252203 0.0191876 53 | v -0.00527792 0.0142931 0.053849 54 | v 0.00583983 0.0142743 0.0538035 55 | v -0.00777838 0.0142182 0.0523659 56 | v -0.00527792 0.0142931 0.053849 57 | v -0.0103889 0.0252203 0.0191876 58 | v -0.00862294 -5.68019e-05 0.0509528 59 | v -0.00548142 -9.11208e-05 0.0537247 60 | v -0.00777838 0.0142182 0.0523659 61 | v -0.0103872 0.00253418 0.000131696 62 | v -0.00862294 -5.68019e-05 0.0509528 63 | v -0.0104795 0.0161016 0.0189882 64 | v 0.0104005 0.0252534 0.0190366 65 | v 0.00583983 0.0142743 0.0538035 66 | v 0.00861608 0.0139887 0.0513279 67 | v 0.01036 0.0264034 0.000154629 68 | v -0.0104013 0.0263094 0.00016651 69 | v -0.0103889 0.0252203 0.0191876 70 | v -0.0104795 0.0161016 0.0189882 71 | v -0.00884117 0.0139176 0.0505894 72 | v -0.0103889 0.0252203 0.0191876 73 | v -0.00884117 0.0139176 0.0505894 74 | v -0.00777838 0.0142182 0.0523659 75 | v -0.0103889 0.0252203 0.0191876 76 | v 0.00583983 0.0142743 0.0538035 77 | v -0.00548142 -9.11208e-05 0.0537247 78 | v 0.00613802 -2.06026e-05 0.0535776 79 | v -0.00527792 0.0142931 0.053849 80 | v -0.00548142 -9.11208e-05 0.0537247 81 | v 0.00583983 0.0142743 0.0538035 82 | v 0.00869277 -0.000132643 0.0501662 83 | v 0.00613802 -2.06026e-05 0.0535776 84 | v -0.00548142 -9.11208e-05 0.0537247 85 | v 0.00613802 -2.06026e-05 0.0535776 86 | v 0.00869277 -0.000132643 0.0501662 87 | v 0.00861608 0.0139887 0.0513279 88 | v -0.00548142 -9.11208e-05 0.0537247 89 | v -0.00862294 -5.68019e-05 0.0509528 90 | v -0.0087304 -2.35252e-05 0.0361648 91 | v -0.00777838 0.0142182 0.0523659 92 | v -0.00548142 -9.11208e-05 0.0537247 93 | v -0.00527792 0.0142931 0.053849 94 | v -0.00862294 -5.68019e-05 0.0509528 95 | v -0.00884117 0.0139176 0.0505894 96 | v -0.0104795 0.0161016 0.0189882 97 | v 0.00613802 -2.06026e-05 0.0535776 98 | v 0.00861608 0.0139887 0.0513279 99 | v 0.00583983 0.0142743 0.0538035 100 | v -0.00777838 0.0142182 0.0523659 101 | v -0.00884117 0.0139176 0.0505894 102 | v -0.00862294 -5.68019e-05 0.0509528 103 | 104 | # 0 UV coordinates 105 | 106 | # 96 vertex normals 107 | vn 0.000724164 0.000331308 -1 108 | vn 0.000724164 0.000331308 -1 109 | vn 0.000724164 0.000331308 -1 110 | vn -0.99999 -0.000585782 -0.00447174 111 | vn -0.99999 -0.000585782 -0.00447174 112 | vn -0.99999 -0.000585782 -0.00447174 113 | vn -0.99995 0.00990875 0.00122006 114 | vn -0.99995 0.00990875 0.00122006 115 | vn -0.99995 0.00990875 0.00122006 116 | vn 0.00240304 -0.997479 -0.0709137 117 | vn 0.00240304 -0.997479 -0.0709137 118 | vn 0.00240304 -0.997479 -0.0709137 119 | vn 0.000668274 0.953556 0.301214 120 | vn 0.000668274 0.953556 0.301214 121 | vn 0.000668274 0.953556 0.301214 122 | vn -0.0005789 0.00146393 -0.999999 123 | vn -0.0005789 0.00146393 -0.999999 124 | vn -0.0005789 0.00146393 -0.999999 125 | vn 0.998344 0.00589157 0.0572229 126 | vn 0.998344 0.00589157 0.0572229 127 | vn 0.998344 0.00589157 0.0572229 128 | vn 0.998185 -0.050838 0.0322792 129 | vn 0.998185 -0.050838 0.0322792 130 | vn 0.998185 -0.050838 0.0322792 131 | vn 0.998371 0.000729252 0.0570496 132 | vn 0.998371 0.000729252 0.0570496 133 | vn 0.998371 0.000729252 0.0570496 134 | vn -0.871287 -0.490747 0.00522707 135 | vn -0.871287 -0.490747 0.00522707 136 | vn -0.871287 -0.490747 0.00522707 137 | vn 0.0362712 -0.99794 -0.0529128 138 | vn 0.0362712 -0.99794 -0.0529128 139 | vn 0.0362712 -0.99794 -0.0529128 140 | vn -0.00372285 -0.999988 -0.00316058 141 | vn -0.00372285 -0.999988 -0.00316058 142 | vn -0.00372285 -0.999988 -0.00316058 143 | vn 0.999909 0.00984192 -0.00926313 144 | vn 0.999909 0.00984192 -0.00926313 145 | vn 0.999909 0.00984192 -0.00926313 146 | vn 0.999991 0.00372285 -0.00191858 147 | vn 0.999991 0.00372285 -0.00191858 148 | vn 0.999991 0.00372285 -0.00191858 149 | vn -0.0011495 0.99815 0.0607926 150 | vn -0.0011495 0.99815 0.0607926 151 | vn -0.0011495 0.99815 0.0607926 152 | vn 0.00284562 0.953846 0.300284 153 | vn 0.00284562 0.953846 0.300284 154 | vn 0.00284562 0.953846 0.300284 155 | vn -0.218924 0.920873 0.32259 156 | vn -0.218924 0.920873 0.32259 157 | vn -0.218924 0.920873 0.32259 158 | vn -0.661425 -0.0350314 0.749193 159 | vn -0.661425 -0.0350314 0.749193 160 | vn -0.661425 -0.0350314 0.749193 161 | vn -0.998169 -0.0513123 0.0320353 162 | vn -0.998169 -0.0513123 0.0320353 163 | vn -0.998169 -0.0513123 0.0320353 164 | vn 0.377717 0.867563 0.323518 165 | vn 0.377717 0.867563 0.323518 166 | vn 0.377717 0.867563 0.323518 167 | vn -0.00448618 0.998355 0.0571685 168 | vn -0.00448618 0.998355 0.0571685 169 | vn -0.00448618 0.998355 0.0571685 170 | vn -0.998589 0.0087761 0.0523757 171 | vn -0.998589 0.0087761 0.0523757 172 | vn -0.998589 0.0087761 0.0523757 173 | vn -0.665951 0.690851 0.281485 174 | vn -0.665951 0.690851 0.281485 175 | vn -0.665951 0.690851 0.281485 176 | vn 0.0127505 -0.0155288 0.999798 177 | vn 0.0127505 -0.0155288 0.999798 178 | vn 0.0127505 -0.0155288 0.999798 179 | vn 0.00408502 -0.00870048 0.999954 180 | vn 0.00408502 -0.00870048 0.999954 181 | vn 0.00408502 -0.00870048 0.999954 182 | vn 0.006542 -0.999267 0.0377181 183 | vn 0.006542 -0.999267 0.0377181 184 | vn 0.006542 -0.999267 0.0377181 185 | vn 0.798906 -0.0450007 0.59977 186 | vn 0.798906 -0.0450007 0.59977 187 | vn 0.798906 -0.0450007 0.59977 188 | vn -0.00899609 -0.999957 -0.00218479 189 | vn -0.00899609 -0.999957 -0.00218479 190 | vn -0.00899609 -0.999957 -0.00218479 191 | vn -0.510144 -0.000216662 0.860089 192 | vn -0.510144 -0.000216662 0.860089 193 | vn -0.510144 -0.000216662 0.860089 194 | vn -0.998608 -0.0142745 0.0507836 195 | vn -0.998608 -0.0142745 0.0507836 196 | vn -0.998608 -0.0142745 0.0507836 197 | vn 0.665648 0.00209596 0.746263 198 | vn 0.665648 0.00209596 0.746263 199 | vn 0.665648 0.00209596 0.746263 200 | vn -0.858159 -4.90786e-05 0.513384 201 | vn -0.858159 -4.90786e-05 0.513384 202 | vn -0.858159 -4.90786e-05 0.513384 203 | 204 | # Mesh '' with 32 faces 205 | g 206 | usemtl DefaultMaterial 207 | f 1//1 2//2 3//3 208 | f 4//4 5//5 6//6 209 | f 7//7 8//8 9//9 210 | f 10//10 11//11 12//12 211 | f 13//13 14//14 15//15 212 | f 16//16 17//17 18//18 213 | f 19//19 20//20 21//21 214 | f 22//22 23//23 24//24 215 | f 25//25 26//26 27//27 216 | f 28//28 29//29 30//30 217 | f 31//31 32//32 33//33 218 | f 34//34 35//35 36//36 219 | f 37//37 38//38 39//39 220 | f 40//40 41//41 42//42 221 | f 43//43 44//44 45//45 222 | f 46//46 47//47 48//48 223 | f 49//49 50//50 51//51 224 | f 52//52 53//53 54//54 225 | f 55//55 56//56 57//57 226 | f 58//58 59//59 60//60 227 | f 61//61 62//62 63//63 228 | f 64//64 65//65 66//66 229 | f 67//67 68//68 69//69 230 | f 70//70 71//71 72//72 231 | f 73//73 74//74 75//75 232 | f 76//76 77//77 78//78 233 | f 79//79 80//80 81//81 234 | f 82//82 83//83 84//84 235 | f 85//85 86//86 87//87 236 | f 88//88 89//89 90//90 237 | f 91//91 92//92 93//93 238 | f 94//94 95//95 96//96 239 | 240 | -------------------------------------------------------------------------------- /panda_sim_grasp.py: -------------------------------------------------------------------------------- 1 | import time 2 | import numpy as np 3 | import math 4 | 5 | useNullSpace = 1 6 | ikSolver = 0 7 | pandaEndEffectorIndex = 11 #8 8 | pandaNumDofs = 7 9 | 10 | ll = [-7]*pandaNumDofs 11 | #upper limits for null space (todo: set them to proper range) 12 | ul = [7]*pandaNumDofs 13 | #joint ranges for null space (todo: set them to proper range) 14 | jr = [7]*pandaNumDofs 15 | # restposes for null space 16 | jointPositions=(0.8045609285966308, 0.525471701354679, -0.02519566900946519, -1.3925086098003587, 0.013443782914225877, 1.9178323512245277, -0.007207024243406651, 0.01999436579245478, 0.019977024051412193) 17 | # [0.98, 0.458, 0.31, -2.24, -0.30, 2.66, 2.32, 0.02, 0.02] 18 | rp = jointPositions 19 | 20 | class PandaSim(object): 21 | def __init__(self, bullet_client, offset): 22 | self.p = bullet_client 23 | self.p.setPhysicsEngineParameter(solverResidualThreshold=0) 24 | self.offset = np.array(offset) 25 | 26 | flags = self.p.URDF_ENABLE_CACHED_GRAPHICS_SHAPES 27 | orn=[0, 0, 0, 1] 28 | self.panda = self.p.loadURDF("franka_panda/panda_1.urdf", np.array([0,0,0])+self.offset, orn, useFixedBase=True, flags=flags) 29 | index = 0 30 | self.state = 0 31 | self.control_dt = 1./240. 32 | self.finger_target = 0 33 | self.gripper_height = 0.2 34 | #create a constraint to keep the fingers centered 35 | c = self.p.createConstraint(self.panda, 36 | 9, 37 | self.panda, 38 | 10, 39 | jointType=self.p.JOINT_GEAR, 40 | jointAxis=[1, 0, 0], 41 | parentFramePosition=[0, 0, 0], 42 | childFramePosition=[0, 0, 0]) 43 | self.p.changeConstraint(c, gearRatio=-1, erp=0.1, maxForce=50) 44 | 45 | for j in range(self.p.getNumJoints(self.panda)): 46 | self.p.changeDynamics(self.panda, j, linearDamping=0, angularDamping=0) 47 | info = self.p.getJointInfo(self.panda, j) 48 | #print("info=",info) 49 | jointName = info[1] 50 | jointType = info[2] 51 | if (jointType == self.p.JOINT_PRISMATIC): 52 | self.p.resetJointState(self.panda, j, jointPositions[index]) 53 | index=index+1 54 | 55 | if (jointType == self.p.JOINT_REVOLUTE): 56 | self.p.resetJointState(self.panda, j, jointPositions[index]) 57 | index=index+1 58 | self.t = 0. 59 | 60 | def calcJointLocation(self, pos, orn): 61 | """ 62 | 根据 pos 和 orn 计算机械臂的关节位置 63 | """ 64 | jointPoses = self.p.calculateInverseKinematics(self.panda, pandaEndEffectorIndex, pos, orn, ll, ul, jr, rp, maxNumIterations=20) 65 | return jointPoses 66 | 67 | 68 | def setArm(self, jointPoses): 69 | """ 70 | 设置机械臂位置 71 | """ 72 | for i in range(pandaNumDofs): 73 | self.p.setJointMotorControl2(self.panda, i, self.p.POSITION_CONTROL, jointPoses[i], force=5 * 240.) 74 | 75 | def setGripper(self, finger_target): 76 | """ 77 | 设置机械手位置 78 | """ 79 | for i in [9,10]: 80 | self.p.setJointMotorControl2(self.panda, i, self.p.POSITION_CONTROL, finger_target, force= 30) 81 | 82 | 83 | def step(self, pos, angle, gripper_w): 84 | """ 85 | pos: [x, y, z] 86 | angle: 弧度 87 | gripper_w: 抓取器张开宽度 88 | """ 89 | 90 | # 测试用 91 | # pos = [0.5, 0, 0.3] # 机械手位置 92 | # orn = self.p.getQuaternionFromEuler([math.pi, 0., math.pi / 2]) # 机械手方向 93 | # jointPoses = self.calcJointLocation(pos, orn) 94 | # print('jointPoses = ', jointPoses) 95 | # self.setArm(jointPoses) 96 | # return False 97 | 98 | # 更新状态 99 | self.update_state() 100 | 101 | pos[2] += 0.047 102 | if self.state == 0: 103 | # print('恢复初始状态') 104 | pos = [0.5, 0, 0.4] # 机械手位置 105 | orn = self.p.getQuaternionFromEuler([math.pi,0., math.pi / 2]) # 机械手方向 106 | jointPoses = self.calcJointLocation(pos, orn) 107 | self.setArm(jointPoses) 108 | return False 109 | 110 | elif self.state == 1: 111 | # print('物体上方,张开抓取器') 112 | pos[2] += 0.1 113 | orn = self.p.getQuaternionFromEuler([math.pi,0.,angle + math.pi / 2]) # 机械手方向 114 | jointPoses = self.calcJointLocation(pos, orn) 115 | self.setArm(jointPoses) 116 | self.setGripper(gripper_w) 117 | return False 118 | 119 | elif self.state == 2: 120 | # print('抓取位置') 121 | orn = self.p.getQuaternionFromEuler([math.pi,0.,angle + math.pi / 2]) # 机械手方向 122 | jointPoses = self.calcJointLocation(pos, orn) 123 | self.setArm(jointPoses) 124 | return False 125 | 126 | elif self.state == 3: 127 | # print('闭合抓取器') 128 | self.setGripper(0) 129 | return False 130 | 131 | elif self.state == 4: 132 | # print('物体上方') 133 | pos[2] += 0.05 134 | orn = self.p.getQuaternionFromEuler([math.pi,0.,angle + math.pi / 2]) # 机械手方向 135 | jointPoses = self.calcJointLocation(pos, orn) 136 | self.setArm(jointPoses) 137 | return False 138 | 139 | elif self.state == 5: 140 | # print('物体上方(预抓取位置)') 141 | pos[2] = 0.4 142 | orn = self.p.getQuaternionFromEuler([math.pi,0.,angle + math.pi / 2]) # 机械手方向 143 | jointPoses = self.calcJointLocation(pos, orn) 144 | self.setArm(jointPoses) 145 | return False 146 | 147 | # ========================= 晃动抓取器,测试抓取稳定性 ========================= 148 | elif self.state == 6: 149 | # print('x正方向晃动') 150 | pos[2] = 0.4 151 | pos[0] -= 0.05 152 | orn = self.p.getQuaternionFromEuler([math.pi,0.,angle + math.pi / 2]) # 机械手方向 153 | jointPoses = self.calcJointLocation(pos, orn) 154 | self.setArm(jointPoses) 155 | return False 156 | elif self.state == 7: 157 | # print('x负方向晃动') 158 | pos[2] = 0.4 159 | pos[0] += 0.05 160 | orn = self.p.getQuaternionFromEuler([math.pi,0.,angle + math.pi / 2]) # 机械手方向 161 | jointPoses = self.calcJointLocation(pos, orn) 162 | self.setArm(jointPoses) 163 | return False 164 | # ========================= ========================= 165 | 166 | elif self.state == 8: 167 | # print('托盘边缘') 168 | pos = [0.3, 0, 0.4] # 机械手位置 169 | orn = self.p.getQuaternionFromEuler([math.pi,0.,math.pi / 2]) # 机械手方向 170 | jointPoses = self.calcJointLocation(pos, orn) 171 | self.setArm(jointPoses) 172 | return False 173 | 174 | elif self.state == 9: 175 | # print('盒子上方') 176 | pos = [0.5, 0, 0.4] # 机械手位置 177 | orn = self.p.getQuaternionFromEuler([math.pi,0.,math.pi / 2]) # 机械手方向 178 | jointPoses = self.calcJointLocation(pos, orn) 179 | self.setArm(jointPoses) 180 | return False 181 | 182 | elif self.state == 10: 183 | # print('张开抓取器') 184 | self.setGripper(0.04) 185 | self.reset() # 重置状态 186 | return True 187 | 188 | 189 | def reset(self): 190 | """ 191 | 重置状态 192 | """ 193 | self.state = 0 194 | self.state_t = 0 195 | self.cur_state = 0 196 | 197 | 198 | class PandaSimAuto(PandaSim): 199 | def __init__(self, bullet_client, offset): 200 | """ 201 | 0: 重置状态 202 | 1: 物体上方(预抓取位置),张开抓取器 203 | 2: 抓取位置 204 | 3: 闭合抓取器 205 | 4: 物体上方(预抓取位置) 206 | 207 | 5: x正方向晃动 208 | 6: 物体上方(预抓取位置) 209 | 7: x负方向晃动 210 | 8: 物体上方(预抓取位置) 211 | 212 | 9: 盒子上方 213 | 10: 张开抓取器 214 | """ 215 | PandaSim.__init__(self, bullet_client, offset) 216 | self.state_t = 0 217 | self.cur_state = 0 218 | self.states=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 219 | self.state_durations=[0.5, 0.5, 1, 1, 1, 0.5, 0.1, 0.1, 0.1, 0.5, 0.5] 220 | 221 | def update_state(self): 222 | self.state_t += self.control_dt 223 | if self.state_t > self.state_durations[self.cur_state]: 224 | self.cur_state += 1 225 | if self.cur_state >= len(self.states): 226 | self.cur_state = 0 227 | self.state_t = 0 228 | self.state=self.states[self.cur_state] 229 | #print("self.state=",self.state) 230 | -------------------------------------------------------------------------------- /franka_panda/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- /simEnv.py: -------------------------------------------------------------------------------- 1 | """ 2 | 虚拟环境文件 3 | 初始化虚拟环境,加载物体,渲染图像,保存图像 4 | 5 | (待写) !! 保存虚拟环境状态,以便离线抓取测试 6 | """ 7 | 8 | import pybullet as p 9 | import pybullet_data 10 | import time 11 | import math 12 | import os 13 | import glob 14 | import random 15 | import cv2 16 | import shutil 17 | import numpy as np 18 | import scipy.io as scio 19 | from mesh import Mesh 20 | import tool 21 | 22 | # 图像尺寸 23 | IMAGEWIDTH = 640 24 | IMAGEHEIGHT = 480 25 | 26 | nearPlane = 0.01 27 | farPlane = 10 28 | 29 | fov = 60 # 垂直视场 图像高tan(30) * 0.7 *2 = 0.8082903m 30 | aspect = IMAGEWIDTH / IMAGEHEIGHT 31 | 32 | size=(0.8, 0.8) # 桌面深度图实际尺寸 m 33 | unit=0.0002 # 每个像素的长度 0.1mm 34 | 35 | 36 | def get_urdf_xyz(filename): 37 | """ 38 | 获取urdfs_xyz 39 | filename: urdf文件名 40 | """ 41 | with open(filename) as f: 42 | line = f.readlines()[15][32:-5] 43 | strs = line.split(" ") 44 | return [float(strs[0]), float(strs[1]), float(strs[2])] 45 | 46 | def get_urdf_scale(filename): 47 | """ 48 | 获取urdfs_scale 49 | filename: urdf文件名 50 | """ 51 | with open(filename) as f: 52 | line = f.readlines()[17] 53 | idx = line.find('scale') + 7 54 | strs = line[idx:-5].split(" ") 55 | return float(strs[0]) 56 | 57 | 58 | 59 | class SimEnv(object): 60 | """ 61 | 虚拟环境类 62 | """ 63 | def __init__(self, bullet_client, path): 64 | """ 65 | path: 模型路径 66 | """ 67 | self.p = bullet_client 68 | self.p.configureDebugVisualizer(p.COV_ENABLE_GUI, 0) 69 | self.p.setPhysicsEngineParameter(maxNumCmdPer1ms=1000) 70 | self.p.resetDebugVisualizerCamera(cameraDistance=1.3, cameraYaw=38, cameraPitch=-22, cameraTargetPosition=[0, 0, 0]) 71 | self.p.setAdditionalSearchPath(pybullet_data.getDataPath()) # 添加路径 72 | self.p.loadURDF("plane.urdf", [0, 0, 0]) # 加载地面 73 | self.p.loadURDF('myModel/tray/tray.urdf', [0, 0, 0]) # 加载托盘 74 | self.p.setGravity(0, 0, -9.8) # 设置重力 75 | 76 | self.flags = self.p.URDF_ENABLE_CACHED_GRAPHICS_SHAPES 77 | self.p.setPhysicsEngineParameter(solverResidualThreshold=0) 78 | 79 | # 加载相机 80 | self.viewMatrix = self.p.computeViewMatrix([0, 0, 0.7], [0, 0, 0], [0, 1, 0]) 81 | self.projectionMatrix = self.p.computeProjectionMatrixFOV(fov, aspect, nearPlane, farPlane) 82 | 83 | # 获取urdf物体列表 84 | if isinstance(path, str): 85 | self.urdfs_list = glob.glob(os.path.join(path, '*.urdf')) 86 | self.urdfs_list.sort() 87 | elif isinstance(path, list): 88 | self.urdfs_list = [] 89 | for pth in path: 90 | self.urdfs_list.extend(glob.glob(os.path.join(pth, '*.urdf'))) 91 | random.shuffle(self.urdfs_list) # 随机排序 92 | 93 | self.num_urdf = 0 94 | self.urdfs_id = [] 95 | 96 | self.EulerRPList = [[0, 0], [math.pi/2, 0], [-1*math.pi/2, 0], [math.pi, 0], [0, math.pi/2], [0, -1*math.pi/2]] 97 | 98 | # 获取obj物体列表 99 | # self.objs_list = glob.glob(os.path.join(path, '*.obj')) 100 | # self.objs_list.sort() 101 | # self.num_obj = 0 102 | # self.objs_id = [] 103 | 104 | def _urdf_nums(self): 105 | return len(self.urdfs_list) 106 | 107 | 108 | def init_single_mesh(self, urdfname, quaternion): 109 | """ 110 | 初始化mesh 111 | """ 112 | # 获取obj当前位姿 113 | offset = [0, 0, 0] 114 | # quaternion = [0, 0, 0, 1] 115 | 116 | # 计算从obj坐标系到URDF坐标系的变换矩阵 117 | # 平移:self.xyz [-0.019, 0.019, -0.019] 旋转: 欧拉角[1.570796, 0, 0] 118 | # (1) 欧拉角->四元数 119 | orn = self.p.getQuaternionFromEuler([1.570796, 0, 0]) 120 | # (2) 四元数->旋转矩阵 121 | rot = tool.quaternion_to_rotation_matrix(orn) 122 | # (3) 计算变换矩阵 123 | urdf_xyz = get_urdf_xyz(urdfname) 124 | mat = tool.getTransfMat(urdf_xyz, rot) 125 | 126 | # 获取obj文件路径 127 | objURDF_name = urdfname.replace('.urdf', '.obj') # 单物体时使用 128 | 129 | # 读取obj文件,并根据scale缩放 130 | urdf_scale = get_urdf_scale(urdfname) 131 | mesh = Mesh(objURDF_name, urdf_scale) 132 | 133 | # 计算物体的变换矩阵(从URDF坐标系到物体坐标系) 134 | rotate_mat = tool.quaternion_to_rotation_matrix(quaternion) # 四元数转旋转矩阵 135 | transMat = tool.getTransfMat(offset, rotate_mat) 136 | 137 | transMat = np.matmul(transMat, mat) # !!!! 注意乘的顺序, 使用 138 | 139 | # 根据旋转矩阵调整mesh顶点坐标 140 | mesh.transform(transMat) 141 | 142 | return mesh 143 | 144 | 145 | # 加载单物体 146 | def loadObjInURDF(self, idx, num, render_n): 147 | """ 148 | 以URDF的格式加载单个obj物体 149 | 150 | idx: 物体id 151 | render_n: 当前物体的渲染次数,根据此获取物体的朝向 152 | """ 153 | # 获取物体文件 154 | self.urdfs_filename = [self.urdfs_list[idx]] 155 | self.num_urdf = 1 156 | 157 | print('urdf filename = ', os.path.basename(self.urdfs_filename[0])) 158 | 159 | self.urdfs_id = [] 160 | self.urdfs_xyz = [] 161 | self.urdfs_scale = [] 162 | 163 | # 随机方向 164 | # baseEuler = [self.EulerRPList[render_n][0], self.EulerRPList[render_n][1], random.uniform(0, 2*math.pi)] 165 | baseEuler = [random.uniform(0, 2*math.pi), random.uniform(0, 2*math.pi), random.uniform(0, 2*math.pi)] 166 | baseOrientation = self.p.getQuaternionFromEuler(baseEuler) 167 | # baseOrientation = [0, 0, 0, 1] # 固定方向 168 | 169 | # 初始化mesh 170 | mesh = self.init_single_mesh(self.urdfs_filename[0], baseOrientation) 171 | min_z = mesh.min_z() 172 | 173 | # 随机位置 174 | pos = 0.1 175 | # basePosition = [random.uniform(-1 * pos, pos), random.uniform(-1 * pos, pos), random.uniform(0.1, 0.4)] 176 | basePosition = [random.uniform(-1 * pos, pos), random.uniform(-1 * pos, pos), -1*min_z] 177 | # basePosition = [0.05, 0.05, 0.1] # 固定位置 178 | 179 | # 加载物体 180 | urdf_id = self.p.loadURDF(self.urdfs_filename[0], basePosition, baseOrientation) 181 | 182 | # 获取xyz和scale信息 183 | inf = self.p.getVisualShapeData(urdf_id)[0] 184 | 185 | self.urdfs_id.append(urdf_id) 186 | self.urdfs_xyz.append(inf[5]) 187 | self.urdfs_scale.append(inf[3][0]) 188 | 189 | """ 190 | 原始加载函数 191 | """ 192 | def loadObjsInURDF(self, idx, num): 193 | """ 194 | 以URDF的格式加载多个obj物体 195 | 196 | num: 加载物体的个数 197 | idx: 开始的id 198 | idx为负数时,随机加载num个物体 199 | idx为非负数时,从id开始加载num个物体 200 | """ 201 | assert idx >= 0 202 | self.num_urdf = num 203 | 204 | # 获取物体文件 205 | if (idx + self.num_urdf) >= (len(self.urdfs_list) - 1): # 这段代码主要针对加载多物体的情况 206 | self.num_urdf = len(self.urdfs_list) - 1 - idx 207 | assert self.num_urdf >= 0 208 | if self.num_urdf == 0: 209 | self.urdfs_filename = [self.urdfs_list[idx]] 210 | self.num_urdf = 1 211 | else: 212 | self.urdfs_filename = self.urdfs_list[idx:idx+self.num_urdf] 213 | 214 | print('self.urdfs_filename = ', self.urdfs_filename) 215 | 216 | self.urdfs_id = [] 217 | self.urdfs_xyz = [] 218 | self.urdfs_scale = [] 219 | for i in range(self.num_urdf): 220 | # 随机位置 221 | pos = 0.05 222 | basePosition = [random.uniform(-1 * pos, pos), random.uniform(-1 * pos, pos), random.uniform(0.1, 0.4)] 223 | # basePosition = [0, 0, 0.1] # 固定位置 224 | 225 | # 随机方向 226 | baseEuler = [random.uniform(0, 2*math.pi), random.uniform(0, 2*math.pi), random.uniform(0, 2*math.pi)] 227 | baseOrientation = self.p.getQuaternionFromEuler(baseEuler) 228 | # baseOrientation = [0, 0, 0, 1] # 固定方向 229 | 230 | # 加载物体 231 | urdf_id = self.p.loadURDF(self.urdfs_filename[i], basePosition, baseOrientation) 232 | 233 | # 获取xyz和scale信息 234 | inf = self.p.getVisualShapeData(urdf_id)[0] 235 | 236 | self.urdfs_id.append(urdf_id) 237 | self.urdfs_xyz.append(inf[5]) 238 | self.urdfs_scale.append(inf[3][0]) 239 | 240 | 241 | def removeObjsInURDF(self): 242 | """ 243 | 移除objs 244 | """ 245 | for i in range(self.num_urdf): 246 | self.p.removeBody(self.urdfs_id[i]) 247 | 248 | 249 | def renderURDFImage(self, save_path): 250 | """ 251 | 渲染图像 252 | """ 253 | if not os.path.exists(save_path): 254 | os.mkdir(save_path) 255 | 256 | # ======================== 渲染相机深度图 ======================== 257 | print('>> 渲染相机深度图...') 258 | # 渲染图像 259 | img_camera = self.p.getCameraImage(IMAGEWIDTH, IMAGEHEIGHT, self.viewMatrix, self.projectionMatrix, renderer=p.ER_BULLET_HARDWARE_OPENGL) 260 | w = img_camera[0] # width of the image, in pixels 261 | h = img_camera[1] # height of the image, in pixels 262 | rgba = img_camera[2] # color data RGB 263 | dep = img_camera[3] # depth data 264 | mask = img_camera[4] # mask data 265 | 266 | # 获取彩色图像 267 | im_rgb = np.reshape(rgba, (h, w, 4))[:, :, [2, 1, 0]] 268 | im_rgb = im_rgb.astype(np.uint8) 269 | 270 | # 获取深度图像 271 | depth = np.reshape(dep, (h, w)) # [40:440, 120:520] 272 | A = np.ones((IMAGEHEIGHT, IMAGEWIDTH), dtype=np.float64) * farPlane * nearPlane 273 | B = np.ones((IMAGEHEIGHT, IMAGEWIDTH), dtype=np.float64) * farPlane 274 | C = np.ones((IMAGEHEIGHT, IMAGEWIDTH), dtype=np.float64) * (farPlane - nearPlane) 275 | # im_depthCamera = A / (B - C * depth) # 单位 m 276 | im_depthCamera = np.divide(A, (np.subtract(B, np.multiply(C, depth)))) # 单位 m 277 | im_depthCamera_rev = np.ones((IMAGEHEIGHT, IMAGEWIDTH), dtype=np.float) * im_depthCamera.max() - im_depthCamera # 反转深度 278 | 279 | # 获取分割图像 280 | im_mask = np.reshape(mask, (h, w)) 281 | 282 | # 保存图像 283 | # print('>> 保存相机深度图') 284 | scio.savemat(save_path + '/camera_rgb.mat', {'A':im_rgb}) 285 | scio.savemat(save_path + '/camera_depth.mat', {'A':im_depthCamera}) 286 | scio.savemat(save_path + '/camera_depth_rev.mat', {'A':im_depthCamera_rev}) 287 | scio.savemat(save_path + '/camera_mask.mat', {'A':im_mask}) 288 | 289 | cv2.imwrite(save_path + '/camera_rgb.png', im_rgb) 290 | # cv2.imwrite(save_path + '/camera_mask.png', im_mask*20) 291 | cv2.imwrite(save_path + '/camera_depth.png', tool.depth2Gray(im_depthCamera)) 292 | cv2.imwrite(save_path + '/camera_depth_rev.png', tool.depth2Gray(im_depthCamera_rev)) 293 | 294 | print('>> 渲染结束') 295 | 296 | 297 | 298 | -------------------------------------------------------------------------------- /franka_panda/panda.urdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | -------------------------------------------------------------------------------- /franka_panda/panda_1.urdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /franka_panda/meshes/collision/link0.obj: -------------------------------------------------------------------------------- 1 | # File produced by Open Asset Import Library (http://www.assimp.sf.net) 2 | # (assimp v3.1.187496374) 3 | 4 | mtllib link0.obj.mtl 5 | 6 | # 102 vertex positions 7 | v -0.00122674 -0.0946137 -3.24928e-05 8 | v 0.0710809 0.00844602 0.00133993 9 | v 0.071567 -0.00127396 0.0013494 10 | v -0.00051723 0.0946704 -6.42576e-06 11 | v 0.0706646 -0.0115626 0.00133336 12 | v -0.135131 -0.0658707 0.00751985 13 | v -0.136305 -0.0659457 3.26395e-07 14 | v -0.131625 -0.0687992 -5.27309e-07 15 | v 0.0543353 -0.0469489 0.00104792 16 | v 0.0619449 -0.0359785 0.00118116 17 | v 0.0673593 -0.0245271 0.00127621 18 | v 0.0526517 -0.0163561 0.14 19 | v 0.0548547 0.00447165 0.14 20 | v -0.0549666 0.00345713 0.14 21 | v 0.0391015 0.0387489 0.14 22 | v 0.00777804 -0.0910717 0.00846191 23 | v 0.0395665 -0.0384696 0.140003 24 | v -0.029337 -0.0466451 0.140001 25 | v 0.000349224 -0.0550819 0.14 26 | v 0.0686186 0.0208178 0.00129774 27 | v 0.0635871 0.0329931 0.00120988 28 | v 0.0525783 0.048771 0.00101755 29 | v 0.05859 0.0412413 0.00112268 30 | v 0.0509475 0.0207886 0.14 31 | v -0.0218528 0.0506849 0.14 32 | v -0.0317059 0.0450099 0.14 33 | v 0.0317161 0.0450507 0.14 34 | v -0.0400853 0.0378337 0.14 35 | v -0.0477037 0.0275963 0.14 36 | v 0.00485769 0.0549582 0.14 37 | v 0.0474762 -0.0279259 0.14 38 | v -0.00886536 0.0543586 0.140002 39 | v 0.0276805 -0.0476799 0.14 40 | v -0.054766 -0.0054659 0.14 41 | v -0.0528838 -0.015585 0.14 42 | v -0.122615 0.00563594 0.0611487 43 | v -0.122711 -0.00614431 0.060957 44 | v 0.0143701 -0.0532489 0.139999 45 | v -0.071675 -0.0756205 0.0575204 46 | v -0.111235 -0.0474773 0.0590551 47 | v -0.137824 -0.0624363 0.00755269 48 | v -0.133699 0.0669321 0.00741502 49 | v -0.13583 0.0663151 8.33834e-07 50 | v -0.136293 0.0646171 0.00756638 51 | v -0.131612 0.0688472 7.4968e-07 52 | v 0.0031716 0.0933497 0.00863144 53 | v 0.00408648 0.0939818 0.000170711 54 | v 0.0462474 0.0300326 0.14 55 | v 0.0548768 -0.00456585 0.14 56 | v -0.129159 0.0686836 0.00744486 57 | v -0.0528609 0.0157105 0.14 58 | v 0.0200202 0.0514462 0.139999 59 | v 0.00648893 0.0735192 0.08108 60 | v 0.00826788 -0.0918247 0.00024289 61 | v -0.0464371 -0.0299037 0.14 62 | v -0.140043 0.0607227 -1.6486e-07 63 | v 0.00769447 0.0922715 0.000234291 64 | v -0.00159938 0.0936322 0.00849181 65 | v 0.00734398 0.0914466 0.00831775 66 | v -0.148808 -0.0420547 -7.21858e-08 67 | v -0.149244 -0.0371861 0.00781712 68 | v -0.152578 -0.0248176 1.68373e-07 69 | v 0.00907648 0.0737151 0.0784549 70 | v -0.121673 -0.0147367 0.0614178 71 | v 0.00678171 -0.0735316 0.0809757 72 | v -0.130951 -0.0681401 0.00766805 73 | v -0.0189172 -0.051755 0.14 74 | v -0.00908423 -0.0542971 0.14 75 | v -0.0658985 -0.0765477 0.0589793 76 | v -0.0376956 -0.0401377 0.14 77 | v -0.143472 -0.0548617 -4.38612e-08 78 | v -0.145452 -0.0485961 0.00768247 79 | v -0.1203 -0.0235449 0.0615099 80 | v -0.118609 -0.03105 0.06134 81 | v -0.114761 -0.0419663 0.0601784 82 | v -0.154079 -0.00554168 -3.75503e-07 83 | v -0.152725 -0.0137992 0.00819143 84 | v -0.153166 -0.00203576 0.00835078 85 | v -0.142117 0.0555469 0.00762839 86 | v 0.0535544 0.0128185 0.14 87 | v -0.109983 0.0486112 0.0588796 88 | v 0.00366946 -0.0932492 0.00847566 89 | v 0.00349566 -0.0942157 0.000177738 90 | v 0.00906588 -0.073708 0.0785962 91 | v -0.117004 -0.0366378 0.0608364 92 | v -0.151587 -0.0248333 0.00804774 93 | v -0.15241 0.0258275 -1.09161e-08 94 | v -0.153841 0.0105757 0 95 | v -0.15202 0.0217804 0.00810954 96 | v -0.121149 0.0181378 0.0615703 97 | v -0.113238 0.0447149 0.0596848 98 | v -0.000866581 -0.0937369 0.00817823 99 | v -0.141842 -0.0559592 0.00761703 100 | v -0.149634 0.0355816 0.00786878 101 | v -0.14929 0.0402499 3.01802e-07 102 | v -0.152949 0.0100689 0.00821985 103 | v -0.145377 0.0508924 -1.27878e-07 104 | v -0.11571 0.0395945 0.0607111 105 | v -0.0231112 -0.0759725 0.0689683 106 | v -0.117233 0.035881 0.060957 107 | v -0.146172 0.0467529 0.00770437 108 | v -0.119414 0.0287903 0.0611397 109 | 110 | # 0 UV coordinates 111 | 112 | # 200 vertex normals 113 | vn 0.0190098 -2.30831e-05 -0.999819 114 | vn 0.0188816 6.69136e-05 -0.999822 115 | vn 0.0191344 -0.000120273 -0.999817 116 | vn -0.518479 -0.850405 0.0893954 117 | vn 0.0222843 -0.00331509 -0.999746 118 | vn 0.0205047 -0.00139704 -0.999789 119 | vn 7.25974e-07 -5.81537e-06 1 120 | vn 9.85433e-07 -5.68784e-06 1 121 | vn 0.991829 0.0497189 0.11749 122 | vn 0.692904 -0.711464 0.11706 123 | vn 4.45103e-05 3.61862e-05 1 124 | vn 0.0193277 0.000437566 -0.999813 125 | vn 0.0199677 0.0010368 -0.9998 126 | vn 0.0232843 0.0046319 -0.999718 127 | vn 0.0210964 0.0022106 -0.999775 128 | vn 0.0197075 -0.000616531 -0.999806 129 | vn 6.42989e-05 2.18738e-05 1 130 | vn 0.91755 0.380023 0.116978 131 | vn 3.35708e-05 -1.87847e-05 1 132 | vn -7.63878e-06 1.53928e-05 1 133 | vn -8.50133e-06 1.24836e-05 1 134 | vn 8.62742e-06 2.71648e-06 1 135 | vn 4.31916e-06 1.10982e-05 1 136 | vn 0.000248513 -0.00151077 0.999999 137 | vn -0.000100683 -0.000160507 1 138 | vn 0.000441559 2.26903e-05 1 139 | vn -0.759017 -0.00436697 0.651056 140 | vn -0.758153 -0.0170388 0.651854 141 | vn -4.08147e-05 -6.51499e-05 1 142 | vn 3.63574e-05 2.96612e-05 1 143 | vn -0.488489 -0.714003 0.501575 144 | vn -0.779928 -0.612675 0.127831 145 | vn -0.6563 0.74377 0.126791 146 | vn -0.51319 0.854867 0.0764032 147 | vn 0.143998 0.98555 0.0891981 148 | vn 6.6605e-05 0.00021454 1 149 | vn 0.794096 -0.595678 0.120749 150 | vn 0.815277 -0.566949 0.117862 151 | vn 0.897326 -0.425249 0.118194 152 | vn 0.906239 -0.40539 0.119958 153 | vn 0.848855 0.515505 0.117047 154 | vn 0.992823 0.00242477 0.11957 155 | vn 0.000137166 -1.78568e-05 1 156 | vn -0.256878 0.90791 0.331229 157 | vn -4.88056e-05 2.05051e-05 1 158 | vn 1.50367e-05 -7.30032e-06 1 159 | vn -3.22116e-05 6.85885e-05 1 160 | vn -0.0415945 0.953296 0.29916 161 | vn 0.0339572 -0.0169327 -0.99928 162 | vn -9.01903e-05 -3.23136e-05 1 163 | vn -0.795774 0.599474 0.0858742 164 | vn 0.423964 0.898605 0.112979 165 | vn 0.047941 0.0640793 -0.996793 166 | vn 0.0548988 0.990257 0.12797 167 | vn 0.0494285 0.963916 0.261577 168 | vn 0.0344071 0.0175091 -0.999255 169 | vn 0.691328 0.715168 0.102958 170 | vn 0.691451 0.712649 0.118438 171 | vn -0.973898 -0.213048 0.0783147 172 | vn 7.42399e-05 3.32698e-05 1 173 | vn 0.884937 0.449942 0.120157 174 | vn 0.989315 -0.0869511 0.117026 175 | vn 0.962281 -0.245852 0.116503 176 | vn -0.192564 0.977601 0.0849446 177 | vn -0.191831 0.976828 0.0949088 178 | vn -0.123193 0.952732 0.277713 179 | vn -0.441485 0.766549 0.466362 180 | vn 0.467327 0.85467 0.22615 181 | vn 0.692847 -0.713157 0.106629 182 | vn -0.756883 -0.0565346 0.651101 183 | vn 0.123333 -0.943265 0.308285 184 | vn -0.493923 -0.720807 0.48629 185 | vn -0.477017 -0.8711 0.116787 186 | vn -0.44611 -0.794944 0.411157 187 | vn -6.11448e-05 -0.000331755 1 188 | vn -1.43156e-05 -8.03482e-05 1 189 | vn -0.228986 -0.885719 0.403816 190 | vn -0.608389 -0.519659 0.599848 191 | vn -0.920452 -0.383492 0.0755124 192 | vn -0.736949 -0.180808 0.651318 193 | vn -0.611742 -0.514007 0.601306 194 | vn 0.419302 0.901141 0.110141 195 | vn -0.991437 -0.0387918 0.124694 196 | vn -0.993276 -0.0773118 0.0861707 197 | vn -0.833082 0.535892 0.137092 198 | vn 8.17296e-05 2.2162e-05 1 199 | vn 0.943552 0.308615 0.120276 200 | vn 0.981039 0.152834 0.119183 201 | vn 0.973953 0.194242 0.116982 202 | vn 0.767761 0.629431 0.119836 203 | vn 0.775121 0.620511 0.118969 204 | vn 0.975511 -0.184098 0.120356 205 | vn -0.334118 0.859344 0.38716 206 | vn -0.186878 0.944088 0.271613 207 | vn -0.461627 0.746886 0.478605 208 | vn 0.418676 0.882839 0.21285 209 | vn 0.516842 0.832916 0.197804 210 | vn 0.465813 -0.878241 0.10822 211 | vn 0.444917 -0.890581 0.0944139 212 | vn 0.0505572 -0.0737673 -0.995993 213 | vn 0.458814 -0.864421 0.205587 214 | vn 0.516064 -0.83361 0.196908 215 | vn -0.387155 -0.789577 0.476109 216 | vn -0.244693 -0.878338 0.410666 217 | vn -0.208468 -0.972704 0.101918 218 | vn -0.193464 -0.977355 0.0857284 219 | vn -0.182203 -0.978184 0.0997879 220 | vn -0.519874 -0.667682 0.532852 221 | vn -0.000155222 -6.31553e-05 1 222 | vn -4.55781e-05 -2.14887e-05 1 223 | vn -0.773654 -0.387569 0.501247 224 | vn -0.836842 -0.541097 0.0831258 225 | vn -0.938711 -0.313668 0.142944 226 | vn 0.642112 0.752523 0.146293 227 | vn -0.975003 -0.187197 0.119691 228 | vn -0.98721 -0.103388 0.121358 229 | vn -0.991212 0.0930191 0.0940533 230 | vn -0.745994 0.128207 0.653495 231 | vn -0.357321 0.923722 0.138052 232 | vn -2.44058e-05 1.82076e-05 1 233 | vn -0.562279 0.66248 0.494937 234 | vn -0.609088 0.612822 0.50345 235 | vn 0.183429 0.950262 0.251704 236 | vn 0.21534 0.929691 0.298837 237 | vn 0.229004 0.927667 0.294942 238 | vn 0.604019 -0.779541 0.165763 239 | vn 0.230026 -0.929068 0.289689 240 | vn 0.372231 -0.889715 0.264293 241 | vn -0.171199 -0.978844 0.112047 242 | vn 0.0790207 -0.991596 0.102437 243 | vn -0.774998 -0.384377 0.501629 244 | vn -0.890148 -0.437507 0.127373 245 | vn -0.67661 -0.535887 0.505 246 | vn -0.844574 -0.525041 0.105012 247 | vn -0.695542 -0.313148 0.646653 248 | vn -0.714122 -0.263551 0.648514 249 | vn -0.974069 0.210719 0.082385 250 | vn -0.866667 0.0208868 0.498449 251 | vn -0.993956 0.0146296 0.108802 252 | vn -0.994723 0.0188777 0.100843 253 | vn -0.990466 0.0795982 0.112429 254 | vn -0.875827 0.475205 0.0843008 255 | vn -0.648594 0.437886 0.622561 256 | vn -0.631999 0.470323 0.615934 257 | vn -0.542549 0.633495 0.551656 258 | vn -0.569254 0.593159 0.569309 259 | vn -0.854631 -0.127937 0.503228 260 | vn 0.187376 -0.949866 0.250288 261 | vn -0.0299751 -0.962324 0.270247 262 | vn -0.733474 -0.46004 0.500378 263 | vn -0.819413 -0.278244 0.501142 264 | vn -0.818885 -0.280329 0.500842 265 | vn -0.840131 -0.200724 0.503876 266 | vn -0.865477 -0.0010483 0.500948 267 | vn -0.861767 -0.077237 0.501391 268 | vn -0.734892 0.455474 0.502471 269 | vn -0.789187 0.35685 0.499842 270 | vn -0.899886 0.416094 0.130652 271 | vn -0.934904 0.343772 0.0881805 272 | vn -0.750321 -0.110129 0.651836 273 | vn -0.744296 -0.138475 0.653336 274 | vn -0.0486186 -0.96337 0.263731 275 | vn -0.0569915 -0.952558 0.298973 276 | vn -0.0786935 -0.945844 0.314939 277 | vn 0.0865387 -0.962264 0.257989 278 | vn 0.0988769 -0.988653 0.113084 279 | vn -0.040165 -0.954927 0.294112 280 | vn -0.679455 -0.364641 0.636692 281 | vn -0.676925 -0.535527 0.504959 282 | vn -0.860556 -0.0952615 0.500368 283 | vn -0.866101 -0.0391639 0.498333 284 | vn -0.848661 -0.170347 0.500757 285 | vn -0.976331 0.171097 0.132301 286 | vn -0.784297 0.365988 0.500931 287 | vn -0.743675 0.147478 0.652072 288 | vn -0.75636 0.0667582 0.650741 289 | vn -0.726694 0.470061 0.500957 290 | vn -0.946042 0.295169 0.133715 291 | vn -0.699993 0.303725 0.646344 292 | vn -0.690574 0.326044 0.645603 293 | vn -0.722223 0.238827 0.64912 294 | vn -0.862635 0.0731211 0.500513 295 | vn -0.860436 0.0839585 0.502594 296 | vn -0.823144 0.266065 0.501641 297 | vn -0.850508 0.155797 0.502359 298 | vn -0.850275 0.158766 0.501823 299 | vn -0.824425 0.262885 0.501214 300 | vn -0.000104827 0.000138107 -1 301 | vn -6.4345e-05 4.8788e-05 -1 302 | vn -0.000255153 -5.05889e-05 -1 303 | vn 8.56579e-06 1.35717e-06 -1 304 | vn 3.45225e-06 -5.63502e-06 -1 305 | vn 0.000304041 -4.54974e-06 -1 306 | vn 0.0004587 -0.000166978 -1 307 | vn -4.30629e-05 3.84989e-05 -1 308 | vn -0.000206776 -3.99625e-05 -1 309 | vn -7.87823e-05 -3.27836e-06 -1 310 | vn -0.000409956 0.000110369 -1 311 | vn 6.31049e-05 7.3988e-06 -1 312 | vn -0.0003035 2.77655e-05 -1 313 | 314 | # Mesh '' with 200 faces 315 | g 316 | usemtl DefaultMaterial 317 | f 1//1 2//1 3//1 318 | f 4//2 2//2 1//2 319 | f 3//3 5//3 1//3 320 | f 6//4 7//4 8//4 321 | f 9//5 1//5 10//5 322 | f 1//6 11//6 10//6 323 | f 12//7 13//7 14//7 324 | f 13//7 15//8 14//7 325 | f 2//9 13//9 3//9 326 | f 16//10 9//10 17//10 327 | f 14//11 18//11 19//11 328 | f 20//12 2//12 4//12 329 | f 21//13 20//13 4//13 330 | f 22//14 23//14 4//14 331 | f 23//15 21//15 4//15 332 | f 1//16 5//16 11//16 333 | f 13//17 24//17 15//17 334 | f 20//18 21//18 24//18 335 | f 25//19 26//19 14//19 336 | f 15//20 27//20 14//20 337 | f 28//21 29//21 14//20 338 | f 14//22 30//22 25//22 339 | f 14//22 31//23 12//23 340 | f 32//24 25//24 30//24 341 | f 33//25 17//25 14//25 342 | f 34//26 35//26 14//26 343 | f 36//27 37//27 14//27 344 | f 14//28 37//28 34//28 345 | f 38//29 33//29 14//29 346 | f 19//30 38//30 14//30 347 | f 39//31 18//31 40//31 348 | f 7//32 6//32 41//32 349 | f 42//33 43//33 44//33 350 | f 45//34 43//34 42//34 351 | f 4//35 46//35 47//35 352 | f 17//36 31//36 14//36 353 | f 9//37 31//37 17//37 354 | f 10//38 31//38 9//38 355 | f 11//39 31//39 10//39 356 | f 12//40 31//40 11//40 357 | f 21//41 23//41 48//41 358 | f 13//42 49//42 3//42 359 | f 12//43 49//43 13//43 360 | f 25//44 32//44 50//44 361 | f 14//45 29//45 51//45 362 | f 52//46 30//46 14//46 363 | f 27//47 52//47 14//47 364 | f 53//48 32//48 30//48 365 | f 9//49 54//49 1//49 366 | f 35//50 55//50 14//50 367 | f 56//51 44//51 43//51 368 | f 57//52 47//52 46//52 369 | f 4//53 47//53 57//53 370 | f 58//54 46//54 4//54 371 | f 53//55 46//55 58//55 372 | f 57//56 22//56 4//56 373 | f 57//57 59//57 22//57 374 | f 59//58 15//58 22//58 375 | f 60//59 61//59 62//59 376 | f 24//60 48//60 15//60 377 | f 24//61 21//61 48//61 378 | f 49//62 5//62 3//62 379 | f 5//63 12//63 11//63 380 | f 50//64 4//64 45//64 381 | f 4//65 50//65 58//65 382 | f 32//66 53//66 58//66 383 | f 42//67 26//67 25//67 384 | f 52//68 27//68 63//68 385 | f 9//69 16//69 54//69 386 | f 37//70 64//70 34//70 387 | f 38//71 19//71 65//71 388 | f 40//72 6//72 39//72 389 | f 8//73 66//73 6//73 390 | f 6//74 66//74 39//74 391 | f 18//75 67//75 19//75 392 | f 68//76 19//76 67//76 393 | f 67//77 69//77 68//77 394 | f 40//78 70//78 55//78 395 | f 71//79 72//79 60//79 396 | f 73//80 74//80 35//80 397 | f 55//81 75//81 40//81 398 | f 57//82 46//82 59//82 399 | f 76//83 77//83 78//83 400 | f 62//84 77//84 76//84 401 | f 79//85 44//85 56//85 402 | f 80//86 24//86 13//86 403 | f 24//87 80//87 20//87 404 | f 2//88 80//88 13//88 405 | f 20//89 80//89 2//89 406 | f 15//90 48//90 22//90 407 | f 22//91 48//91 23//91 408 | f 49//92 12//92 5//92 409 | f 25//93 50//93 42//93 410 | f 58//94 50//94 32//94 411 | f 42//95 81//95 26//95 412 | f 59//96 46//96 63//96 413 | f 59//97 63//97 27//97 414 | f 82//98 54//98 16//98 415 | f 82//99 83//99 54//99 416 | f 54//100 83//100 1//100 417 | f 16//101 84//101 82//101 418 | f 33//102 84//102 16//102 419 | f 39//103 67//103 18//103 420 | f 69//104 67//104 39//104 421 | f 8//105 39//105 66//105 422 | f 1//106 39//106 8//106 423 | f 69//107 39//107 1//107 424 | f 40//108 18//108 70//108 425 | f 70//109 18//109 14//109 426 | f 55//110 70//110 14//110 427 | f 72//111 75//111 85//111 428 | f 7//112 41//112 71//112 429 | f 60//113 72//113 61//113 430 | f 59//114 27//114 15//114 431 | f 62//115 61//115 86//115 432 | f 86//116 77//116 62//116 433 | f 87//117 88//117 89//117 434 | f 51//118 90//118 14//118 435 | f 42//119 50//119 45//119 436 | f 14//120 26//120 28//120 437 | f 42//121 44//121 81//121 438 | f 44//122 91//122 81//122 439 | f 53//123 63//123 46//123 440 | f 52//124 53//124 30//124 441 | f 63//125 53//125 52//125 442 | f 33//126 16//126 17//126 443 | f 65//127 84//127 38//127 444 | f 33//128 38//128 84//128 445 | f 69//129 1//129 92//129 446 | f 83//130 92//130 1//130 447 | f 75//131 72//131 93//131 448 | f 93//132 72//132 71//132 449 | f 6//133 40//133 75//133 450 | f 41//134 93//134 71//134 451 | f 85//135 55//135 35//135 452 | f 74//136 85//136 35//136 453 | f 87//137 94//137 95//137 454 | f 36//138 96//138 78//138 455 | f 76//139 96//139 88//139 456 | f 78//140 96//140 76//140 457 | f 88//141 96//141 89//141 458 | f 97//142 79//142 56//142 459 | f 29//143 91//143 98//143 460 | f 28//144 91//144 29//144 461 | f 26//145 81//145 28//145 462 | f 91//146 28//146 81//146 463 | f 73//147 64//147 86//147 464 | f 65//148 82//148 84//148 465 | f 92//149 65//149 99//149 466 | f 93//150 41//150 75//150 467 | f 72//151 85//151 61//151 468 | f 61//152 85//152 74//152 469 | f 61//153 74//153 73//153 470 | f 36//154 78//154 37//154 471 | f 37//155 77//155 64//155 472 | f 98//156 91//156 79//156 473 | f 79//157 100//157 98//157 474 | f 97//158 101//158 79//158 475 | f 95//159 101//159 97//159 476 | f 64//160 73//160 34//160 477 | f 73//161 35//161 34//161 478 | f 69//162 92//162 99//162 479 | f 19//163 69//163 99//163 480 | f 68//164 69//164 19//164 481 | f 92//165 82//165 65//165 482 | f 92//166 83//166 82//166 483 | f 99//167 65//167 19//167 484 | f 85//168 75//168 55//168 485 | f 41//169 6//169 75//169 486 | f 64//170 77//170 86//170 487 | f 77//171 37//171 78//171 488 | f 86//172 61//172 73//172 489 | f 87//173 89//173 94//173 490 | f 79//174 101//174 100//174 491 | f 102//175 90//175 51//175 492 | f 36//176 14//176 90//176 493 | f 91//177 44//177 79//177 494 | f 95//178 94//178 101//178 495 | f 29//179 98//179 51//179 496 | f 100//180 51//180 98//180 497 | f 102//181 51//181 100//181 498 | f 89//182 96//182 36//182 499 | f 36//183 90//183 89//183 500 | f 101//184 102//184 100//184 501 | f 94//185 89//185 102//185 502 | f 90//186 102//186 89//186 503 | f 101//187 94//187 102//187 504 | f 4//188 1//188 87//188 505 | f 4//189 87//189 45//189 506 | f 1//190 8//190 87//190 507 | f 60//191 87//191 71//191 508 | f 56//192 87//191 97//192 509 | f 76//193 87//193 62//193 510 | f 56//194 43//194 87//194 511 | f 45//195 87//195 43//195 512 | f 8//196 7//196 87//196 513 | f 62//197 87//197 60//197 514 | f 97//198 87//198 95//198 515 | f 71//199 87//199 7//199 516 | f 88//200 87//200 76//200 517 | 518 | -------------------------------------------------------------------------------- /franka_panda/meshes/collision/hand.obj: -------------------------------------------------------------------------------- 1 | # File produced by Open Asset Import Library (http://www.assimp.sf.net) 2 | # (assimp v3.1.187496374) 3 | 4 | mtllib hand.obj.mtl 5 | 6 | # 102 vertex positions 7 | v 0.0167349 0.0901289 0.0644319 8 | v 0.0171343 -0.0892712 0.0636144 9 | v 0.0315898 -0.000558518 0.00621423 10 | v -0.0170537 -0.0955248 0.0221212 11 | v -0.0175104 -0.0979076 0.0516662 12 | v -0.0315975 -0.0019865 0.00115293 13 | v -0.025981 0.0757697 -0.00508223 14 | v -0.0316359 -0.000578733 0.00597307 15 | v 0.0170332 -0.0968023 0.030322 16 | v 0.0316158 -0.00186086 0.00117971 17 | v 0.0175851 -0.0974071 0.0519846 18 | v 0.0185559 0.0946019 0.0566173 19 | v -0.0168042 -0.0919061 0.00629548 20 | v -0.0168122 -0.0875329 -0.00120645 21 | v 0.0162301 -0.0995375 0.0515841 22 | v -4.10844e-05 -0.10399 0.00569088 23 | v -1.72733e-05 -0.103743 -0.0091993 24 | v -0.00361677 -0.101158 -0.0126103 25 | v -0.00342956 -0.102598 -0.0089643 26 | v -0.0252704 0.0820651 0.00519704 27 | v -0.0280109 0.0417843 -0.0063964 28 | v -0.000112569 0.0928085 0.0659622 29 | v -0.0125667 0.0937125 0.0651685 30 | v -0.014422 0.0912765 0.0656897 31 | v -0.0172547 -0.0907003 0.063082 32 | v -0.0154717 -0.0907063 0.0651901 33 | v -0.0167672 0.0902522 0.0643322 34 | v 0.0169555 -0.0916029 0.00556283 35 | v 0.0176072 -0.0938476 0.0584485 36 | v 0.0125057 -0.100188 0.0568941 37 | v 0.0155509 0.1002 0.0546726 38 | v 0.0192688 0.0984936 0.0449417 39 | v 0.0162184 0.100285 0.0458698 40 | v 0.00191744 -0.0455199 -0.0256594 41 | v 0.0280151 0.0420423 -0.0063496 42 | v 0.00381034 -0.0829662 -0.0244493 43 | v 0.0206709 0.0936918 0.0433083 44 | v 0.0254479 0.0811805 0.0035006 45 | v -0.00363682 -0.0835859 -0.0246063 46 | v -0.0165327 -0.0822363 -0.00511811 47 | v -0.0140171 -0.100091 0.0560269 48 | v -0.0160131 -0.0996286 0.0493014 49 | v -0.00321509 -0.087766 -0.0238844 50 | v -0.0129879 -0.0924958 0.0657119 51 | v -0.000505639 -0.0929453 0.0659531 52 | v 0.0135396 0.0926721 0.0656879 53 | v 0.0134248 -0.091927 0.0657313 54 | v -0.0192292 0.0972606 0.0505884 55 | v 0.0165582 -0.0851322 -0.00387274 56 | v 0.00349477 -0.102716 -0.00802934 57 | v 0.0238692 0.0904014 0.00436824 58 | v 0.0227078 0.0937356 0.01434 59 | v 0.0260343 0.0752976 -0.00503085 60 | v 0.0248167 0.0743775 -0.0071557 61 | v -0.00150015 -0.0458698 -0.0259248 62 | v -0.000833771 0.08026 -0.00732172 63 | v 0.0229591 0.0779014 -0.00739904 64 | v -0.0227611 0.0801744 -0.00690954 65 | v 3.18097e-05 -0.0994514 -0.0171612 66 | v -0.0166321 -0.098554 0.0547339 67 | v 0.00360213 -0.101195 -0.0126276 68 | v -0.00161673 0.0974711 0.0623073 69 | v 0.0157184 -0.0917796 0.0649125 70 | v -0.0184487 0.0920155 0.0583932 71 | v -0.000626994 -0.0879747 -0.0249616 72 | v 0.003076 -0.0879729 -0.0239787 73 | v 0.019802 0.0970111 0.020914 74 | v 0.00994155 0.100035 0.0583408 75 | v 0.0171295 0.0990672 0.0543052 76 | v -0.000314131 0.0946153 0.00757466 77 | v -1.59471e-05 0.0984961 0.0270818 78 | v -0.000337323 0.0865616 -0.00416328 79 | v 0.0223143 0.08825 -0.0019332 80 | v 0.022377 0.0833552 -0.00552611 81 | v -0.021325 0.0909269 0.000979802 82 | v -0.0227328 0.0854345 -0.00412033 83 | v -0.0244953 0.0858923 -0.00183273 84 | v 0.00184279 -0.0840023 -0.0255249 85 | v -0.0246502 0.076668 -0.00693213 86 | v 0.0131387 -0.0940629 0.0646832 87 | v -0.00932387 -0.0999826 0.0584892 88 | v -0.0190668 0.0976971 0.0246275 89 | v -0.00449439 0.100426 0.0581191 90 | v -0.0146231 0.100168 0.0557349 91 | v 0.0158049 -0.0994163 0.0549703 92 | v 0.0213426 0.0943331 0.00894201 93 | v -0.000173406 0.090995 0.000576784 94 | v 0.0214829 0.0917947 0.00268413 95 | v 0.0245152 0.0817026 -0.00505142 96 | v 0.0247294 0.0857401 -0.00123169 97 | v -0.0206576 0.0946679 0.00953798 98 | v 0.00119059 -0.100301 0.0586231 99 | v 0.000469602 -0.0966559 0.0630784 100 | v 0.0153969 0.0929056 0.0645563 101 | v -0.000867829 -0.0825485 -0.0258702 102 | v -0.0235558 0.0911663 0.00460792 103 | v -0.014617 -0.0934417 0.0645 104 | v -0.0230261 0.0928969 0.00987686 105 | v -0.0218221 0.0954417 0.0217564 106 | v -0.0181926 0.0995179 0.0438142 107 | v -0.0160455 0.0932093 0.0636169 108 | v -0.0169948 0.0993629 0.0541148 109 | 110 | # 0 UV coordinates 111 | 112 | # 200 vertex normals 113 | vn 0.96934 0.00103808 0.245721 114 | vn -0.986759 -0.159734 -0.0281361 115 | vn -0.997162 0.0697563 -0.0283202 116 | vn 0.986571 -0.160626 -0.0296212 117 | vn 0.99137 -0.125585 0.0376046 118 | vn 0.972565 0.0101093 0.232413 119 | vn -0.981257 -0.166939 -0.096261 120 | vn -0.991092 -0.129756 0.0299978 121 | vn -0.984842 -0.16507 -0.0532708 122 | vn 0.303856 -0.952595 -0.0153173 123 | vn -0.745916 -0.631674 -0.211181 124 | vn -0.996795 0.0769815 0.0217643 125 | vn -0.992516 0.0633187 -0.104418 126 | vn -0.044276 0.241169 0.969473 127 | vn -0.763533 -0.00240486 0.645764 128 | vn 0.98594 -0.162885 -0.0372967 129 | vn 0.986849 -0.0650596 0.147976 130 | vn 0.991549 -0.115042 0.0599665 131 | vn 0.203398 -0.97883 0.0228453 132 | vn 0.516573 0.854926 0.0474658 133 | vn 0.587131 0.00352045 -0.809484 134 | vn 0.99247 0.0777169 0.094674 135 | vn -0.832137 -0.113798 -0.542768 136 | vn -0.990867 -0.10289 0.0871544 137 | vn -0.24667 -0.969077 0.00656585 138 | vn -0.796752 -0.375025 -0.473859 139 | vn -0.0190316 -2.76701e-05 0.999819 140 | vn -0.0193168 -7.80837e-06 0.999813 141 | vn 0.0200855 -9.11851e-05 0.999798 142 | vn 0.0159035 0.000225346 0.999874 143 | vn -0.991348 0.0773534 0.106043 144 | vn 0.846324 -0.531423 -0.0364002 145 | vn 0.838336 -0.119317 -0.531936 146 | vn 0.713391 -0.685355 -0.146159 147 | vn 0.752915 -0.0507794 -0.656156 148 | vn 0.962439 0.234445 0.136915 149 | vn 0.98673 0.0540529 0.153111 150 | vn 0.984464 0.162241 0.0671482 151 | vn 0.963684 0.258201 0.0681518 152 | vn 0.988283 0.13579 0.0696969 153 | vn 0.992401 0.0632947 -0.105521 154 | vn 0.997132 0.0735636 0.0178061 155 | vn 0.997125 0.0744552 -0.0141125 156 | vn 0.525671 0.0308018 -0.85013 157 | vn 0.0112429 0.145846 -0.989244 158 | vn -0.0191625 0.145985 -0.989101 159 | vn 0.295801 0.090268 -0.950975 160 | vn -0.753521 -0.0512984 -0.655419 161 | vn -0.557064 -0.525003 -0.643468 162 | vn -0.826525 -0.175737 -0.534765 163 | vn -0.815256 -0.315571 -0.485564 164 | vn -0.947514 -0.156066 -0.279037 165 | vn -0.93384 -0.292644 0.205677 166 | vn 0.168928 -0.868066 -0.466825 167 | vn -0.713161 -0.698683 0.0569532 168 | vn -0.304509 -0.95237 -0.0162868 169 | vn 0.0219418 0.621147 0.783387 170 | vn -0.00551132 0.61581 0.787876 171 | vn 0.36612 0.000413018 0.930568 172 | vn 0.336199 1.25396e-05 0.941791 173 | vn -0.969753 -7.34049e-05 0.244089 174 | vn -0.962126 0.000708185 0.272604 175 | vn -0.988229 0.0614231 0.14011 176 | vn -0.360462 -0.538401 -0.761703 177 | vn 0.829279 -0.171621 -0.53183 178 | vn 0.677571 -0.00184298 0.735455 179 | vn 0.496348 0.867083 -0.0424839 180 | vn 0.0755333 0.722595 0.687133 181 | vn 0.904977 0.383975 0.183246 182 | vn 0.0127058 0.980664 -0.195286 183 | vn 0.851811 0.0713165 -0.518972 184 | vn 0.0351954 0.591653 -0.805424 185 | vn -0.538898 0.643215 -0.543933 186 | vn 0.0777842 -0.00363624 -0.996964 187 | vn -0.19873 0.11334 -0.973479 188 | vn -0.793118 -0.605993 -0.0611343 189 | vn 0.283571 -0.958905 -0.00945907 190 | vn -0.178475 -0.865689 -0.467685 191 | vn -0.987868 0.153186 -0.0255232 192 | vn -0.206645 -0.00149425 0.978415 193 | vn -0.501132 0.000514844 0.865371 194 | vn 0.0467749 -0.445101 0.894258 195 | vn -0.0152497 -0.997215 0.0730019 196 | vn -0.0160242 0.980702 -0.194854 197 | vn -0.10472 0.777309 0.620342 198 | vn -0.0162484 0.999109 -0.0389505 199 | vn 0.812943 -0.46373 -0.352249 200 | vn 0.734943 -0.648754 -0.197427 201 | vn 0.355505 -0.889833 -0.28603 202 | vn 0.77975 -0.493229 0.385637 203 | vn 0.264343 -0.962054 0.0676396 204 | vn 0.542077 -0.664141 0.514848 205 | vn 0.470493 -0.711825 0.52148 206 | vn 0.584351 -0.807368 -0.0817933 207 | vn 0.826668 -0.548978 0.123462 208 | vn 0.873315 -0.427986 0.232701 209 | vn 0.0134981 0.821385 0.570215 210 | vn 0.481279 -0.00399798 -0.876558 211 | vn 0.0262961 0.976262 -0.21499 212 | vn 0.035393 0.991525 -0.125004 213 | vn -0.0252692 0.468427 -0.883141 214 | vn 0.029533 0.795427 -0.605329 215 | vn 0.0095104 0.447459 -0.894254 216 | vn 0.0293922 0.327461 -0.944407 217 | vn 0.0628955 0.135567 -0.98877 218 | vn -0.512379 0.0361849 -0.857997 219 | vn -0.82575 0.0709576 -0.559555 220 | vn 0.671124 0.490386 -0.555981 221 | vn -0.583104 0.00463288 -0.812385 222 | vn -0.0162994 0.980639 -0.195146 223 | vn -0.157039 0.79873 0.580834 224 | vn 0.973711 -0.16665 -0.155286 225 | vn 0.0757908 -0.76565 0.638776 226 | vn -0.0242742 0.999674 0.00785851 227 | vn 0.0265568 0.999088 0.0334344 228 | vn 0.763663 0.633795 -0.122975 229 | vn 0.59401 0.799769 0.086723 230 | vn 0.277533 0.743174 0.608825 231 | vn 0.344643 0.752738 0.560898 232 | vn 0.784743 0.463667 0.411327 233 | vn -0.0358679 0.684935 -0.72772 234 | vn 0.932801 0.220325 -0.285201 235 | vn 0.624229 0.728724 -0.281602 236 | vn -0.0116186 0.888023 -0.459652 237 | vn 0.0118944 0.888215 -0.459274 238 | vn 0.12674 0.000708284 -0.991936 239 | vn -0.412606 -0.00846907 -0.91087 240 | vn -0.798626 -0.520306 -0.302452 241 | vn -0.541514 -0.834316 0.103337 242 | vn -0.319295 -0.94743 -0.0206758 243 | vn -0.723656 -0.67023 -0.164661 244 | vn 0.024012 -0.608318 0.79333 245 | vn -0.0315557 -0.776033 0.629902 246 | vn 0.0205919 -0.997403 0.0690183 247 | vn -0.0311286 -0.997047 0.0701972 248 | vn -0.982775 0.184638 -0.00783846 249 | vn 0.216124 -0.540324 -0.813229 250 | vn 0.246085 -0.284389 -0.926588 251 | vn 0.556314 -0.528433 -0.641306 252 | vn 0.792539 -0.37877 -0.477928 253 | vn 0.880372 -0.312129 0.3571 254 | vn 0.325605 -0.451322 0.830837 255 | vn 0.101105 -0.786037 0.609856 256 | vn 0.53596 -0.156588 -0.829594 257 | vn 0.580736 0.650676 0.489251 258 | vn 0.491562 0.198884 0.847828 259 | vn 0.828341 0.380744 0.410957 260 | vn 0.035746 0.926351 -0.374962 261 | vn 0.656777 0.749488 -0.083134 262 | vn 0.720531 0.692906 -0.0267625 263 | vn 0.572813 0.248018 -0.781263 264 | vn 0.990951 0.132224 -0.0230681 265 | vn 0.985773 0.167665 0.011866 266 | vn -0.0153618 0.730516 -0.682723 267 | vn 0.0128537 0.730055 -0.683268 268 | vn -0.0185446 0.449169 -0.893255 269 | vn -0.619205 -0.779582 -0.0940023 270 | vn -0.320427 -0.88655 -0.333701 271 | vn -0.0989435 -0.715546 0.691523 272 | vn -0.0841099 -0.712852 0.696252 273 | vn -0.60803 -0.644894 0.463045 274 | vn -0.423761 -0.343804 0.837989 275 | vn -0.605208 0.788757 -0.107633 276 | vn -0.0174541 0.996656 -0.0798282 277 | vn -0.0193589 0.998627 -0.0486783 278 | vn -0.634294 0.640925 -0.432304 279 | vn 0.0379495 -0.163387 -0.985832 280 | vn 0.538782 0.502971 -0.675821 281 | vn 0.813644 0.191216 -0.549017 282 | vn 0.652479 0.653287 -0.384041 283 | vn 0.717815 0.58535 -0.37697 284 | vn -0.286085 -0.763532 0.578942 285 | vn -0.0374327 -0.618147 0.785171 286 | vn -0.709079 -0.37258 0.598657 287 | vn -0.878489 0.351219 0.323886 288 | vn -0.890816 0.299973 0.341268 289 | vn -0.868133 0.372523 0.327981 290 | vn -0.605163 0.772391 -0.192849 291 | vn -0.984555 0.156402 0.0786764 292 | vn -0.982298 0.176886 0.06166 293 | vn -0.981595 0.187328 0.0371542 294 | vn -0.44589 0.832394 -0.329094 295 | vn -0.363723 0.729882 0.578773 296 | vn -0.575721 0.322294 0.751446 297 | vn 0.442358 0.333164 -0.832659 298 | vn -0.70625 0.351573 -0.614497 299 | vn -0.654528 0.356931 -0.666478 300 | vn -0.838844 0.274101 -0.47033 301 | vn -0.354702 0.933343 0.0552966 302 | vn -0.561743 0.820557 -0.105505 303 | vn -0.851741 0.52214 0.0436597 304 | vn -0.759618 0.642942 0.0980105 305 | vn -0.0360333 0.916716 -0.39791 306 | vn -0.560808 0.66826 0.488798 307 | vn -0.414234 0.480837 0.772791 308 | vn -0.390321 -0.168871 -0.905059 309 | vn -0.752648 -0.506645 0.420514 310 | vn -0.029743 0.995213 -0.0930902 311 | vn -0.346496 -0.193469 -0.917884 312 | vn -0.602128 0.796943 -0.0481963 313 | 314 | # Mesh '' with 200 faces 315 | g 316 | usemtl DefaultMaterial 317 | f 1//1 2//1 3//1 318 | f 4//2 5//2 6//2 319 | f 7//3 6//3 8//3 320 | f 9//4 10//4 11//4 321 | f 10//5 3//5 11//5 322 | f 12//6 1//6 3//6 323 | f 13//7 6//7 14//7 324 | f 8//8 6//8 5//8 325 | f 4//9 6//9 13//9 326 | f 15//10 16//10 17//10 327 | f 18//11 19//11 13//11 328 | f 20//12 7//12 8//12 329 | f 21//13 6//13 7//13 330 | f 22//14 23//14 24//14 331 | f 25//15 26//15 27//15 332 | f 28//16 10//16 9//16 333 | f 2//17 29//17 3//17 334 | f 29//18 11//18 3//18 335 | f 30//19 16//19 15//19 336 | f 31//20 32//20 33//20 337 | f 34//21 35//21 36//21 338 | f 37//22 3//22 38//22 339 | f 6//23 39//23 40//23 340 | f 25//24 8//24 5//24 341 | f 41//25 42//25 16//25 342 | f 18//26 14//26 43//26 343 | f 22//27 24//27 44//27 344 | f 44//28 45//28 22//28 345 | f 46//29 22//29 45//29 346 | f 45//30 47//30 46//30 347 | f 20//31 8//31 48//31 348 | f 9//32 11//32 15//32 349 | f 36//33 10//33 49//33 350 | f 50//34 28//34 9//34 351 | f 10//35 36//35 35//35 352 | f 12//36 37//36 32//36 353 | f 37//37 12//37 3//37 354 | f 37//38 38//38 51//38 355 | f 37//39 52//39 32//39 356 | f 52//40 37//40 51//40 357 | f 10//41 35//41 53//41 358 | f 10//42 53//42 38//42 359 | f 10//43 38//43 3//43 360 | f 54//44 35//44 34//44 361 | f 55//45 56//45 57//45 362 | f 56//46 55//46 58//46 363 | f 57//47 54//47 34//47 364 | f 39//48 6//48 21//48 365 | f 59//49 18//49 43//49 366 | f 40//50 39//50 43//50 367 | f 14//51 40//51 43//51 368 | f 14//52 6//52 40//52 369 | f 60//53 25//53 5//53 370 | f 59//54 61//54 17//54 371 | f 42//55 60//55 5//55 372 | f 16//56 42//56 17//56 373 | f 62//57 22//57 46//57 374 | f 22//58 62//58 23//58 375 | f 1//59 46//59 63//59 376 | f 47//60 63//60 46//60 377 | f 25//61 64//61 8//61 378 | f 64//62 25//62 27//62 379 | f 64//63 48//63 8//63 380 | f 65//64 59//64 43//64 381 | f 66//65 36//65 49//65 382 | f 63//66 2//66 1//66 383 | f 33//67 32//67 67//67 384 | f 68//68 62//68 46//68 385 | f 32//69 69//69 12//69 386 | f 70//70 71//70 67//70 387 | f 53//71 35//71 54//71 388 | f 72//72 73//72 74//72 389 | f 75//73 76//73 77//73 390 | f 78//74 55//74 34//74 391 | f 55//75 79//75 58//75 392 | f 4//76 42//76 5//76 393 | f 50//77 15//77 17//77 394 | f 59//78 17//78 18//78 395 | f 7//79 20//79 77//79 396 | f 24//80 26//80 44//80 397 | f 27//81 26//81 24//81 398 | f 45//82 80//82 47//82 399 | f 41//83 16//83 81//83 400 | f 82//84 71//84 70//84 401 | f 62//85 83//85 23//85 402 | f 33//86 84//86 83//86 403 | f 49//87 28//87 61//87 404 | f 61//88 28//88 50//88 405 | f 61//89 50//89 17//89 406 | f 63//90 85//90 29//90 407 | f 85//91 30//91 15//91 408 | f 80//92 85//92 63//92 409 | f 85//93 80//93 30//93 410 | f 9//94 15//94 50//94 411 | f 85//95 15//95 11//95 412 | f 11//96 29//96 85//96 413 | f 83//97 62//97 68//97 414 | f 34//98 36//98 78//98 415 | f 70//99 67//99 86//99 416 | f 71//100 33//100 67//100 417 | f 58//101 76//101 72//101 418 | f 73//102 87//102 88//102 419 | f 72//103 74//103 56//103 420 | f 56//104 74//104 57//104 421 | f 34//105 55//105 57//105 422 | f 21//106 79//106 55//106 423 | f 21//107 7//107 79//107 424 | f 89//108 73//108 90//108 425 | f 39//109 21//109 55//109 426 | f 91//110 82//110 70//110 427 | f 84//111 23//111 83//111 428 | f 28//112 49//112 10//112 429 | f 92//113 80//113 93//113 430 | f 31//114 33//114 68//114 431 | f 68//115 33//115 83//115 432 | f 51//116 86//116 52//116 433 | f 69//117 32//117 31//117 434 | f 46//118 94//118 68//118 435 | f 94//119 31//119 68//119 436 | f 94//120 12//120 69//120 437 | f 76//121 75//121 72//121 438 | f 90//122 53//122 89//122 439 | f 86//123 51//123 88//123 440 | f 75//124 70//124 87//124 441 | f 87//125 70//125 88//125 442 | f 95//126 55//126 78//126 443 | f 39//127 55//127 95//127 444 | f 14//128 18//128 13//128 445 | f 42//129 41//129 60//129 446 | f 19//130 17//130 42//130 447 | f 19//131 4//131 13//131 448 | f 45//132 93//132 80//132 449 | f 92//133 93//133 81//133 450 | f 16//134 30//134 92//134 451 | f 92//135 81//135 16//135 452 | f 96//136 77//136 20//136 453 | f 66//137 59//137 65//137 454 | f 65//138 78//138 66//138 455 | f 59//139 66//139 61//139 456 | f 49//140 61//140 66//140 457 | f 2//141 63//141 29//141 458 | f 80//142 63//142 47//142 459 | f 80//143 92//143 30//143 460 | f 78//144 36//144 66//144 461 | f 94//145 69//145 31//145 462 | f 94//146 46//146 1//146 463 | f 12//147 94//147 1//147 464 | f 70//148 86//148 88//148 465 | f 67//149 52//149 86//149 466 | f 52//150 67//150 32//150 467 | f 57//151 89//151 54//151 468 | f 53//152 90//152 38//152 469 | f 90//153 51//153 38//153 470 | f 75//154 87//154 72//154 471 | f 72//155 87//155 73//155 472 | f 56//156 58//156 72//156 473 | f 42//157 4//157 19//157 474 | f 19//158 18//158 17//158 475 | f 97//159 81//159 44//159 476 | f 81//160 93//160 44//160 477 | f 41//161 97//161 60//161 478 | f 26//162 97//162 44//162 479 | f 98//163 99//163 91//163 480 | f 100//164 33//164 71//164 481 | f 84//165 33//165 100//165 482 | f 96//166 75//166 77//166 483 | f 95//167 78//167 65//167 484 | f 73//168 89//168 74//168 485 | f 53//169 54//169 89//169 486 | f 73//170 88//170 51//170 487 | f 90//171 73//171 51//171 488 | f 41//172 81//172 97//172 489 | f 44//173 93//173 45//173 490 | f 25//174 97//174 26//174 491 | f 101//175 48//175 64//175 492 | f 64//176 27//176 101//176 493 | f 102//177 48//177 101//177 494 | f 96//178 98//178 91//178 495 | f 48//179 99//179 20//179 496 | f 99//180 98//180 20//180 497 | f 98//181 96//181 20//181 498 | f 96//182 91//182 75//182 499 | f 84//183 101//183 23//183 500 | f 27//184 24//184 101//184 501 | f 89//185 57//185 74//185 502 | f 77//186 76//186 79//186 503 | f 79//187 76//187 58//187 504 | f 79//188 7//188 77//188 505 | f 102//189 84//189 100//189 506 | f 91//190 99//190 82//190 507 | f 48//191 100//191 99//191 508 | f 100//192 48//192 102//192 509 | f 75//193 91//193 70//193 510 | f 84//194 102//194 101//194 511 | f 24//195 23//195 101//195 512 | f 43//196 95//196 65//196 513 | f 25//197 60//197 97//197 514 | f 82//198 100//198 71//198 515 | f 43//199 39//199 95//199 516 | f 100//200 82//200 99//200 517 | 518 | -------------------------------------------------------------------------------- /grasp.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | """=============================================== 3 | @Author : wangdx 4 | @Date : 2020/9/1 21:37 5 | ===============================================""" 6 | import numpy as np 7 | import cv2 8 | import math 9 | import scipy.io as scio 10 | 11 | 12 | HEIGHT = 480 13 | WIDTH = 640 14 | GRASP_WIDTH_MAX = 0.08 # m 15 | RADIO = 612.0 16 | 17 | 18 | 19 | def calcAngle2(angle): 20 | """ 21 | 根据给定的angle计算与之反向的angle 22 | :param angle: 弧度 23 | :return: 弧度 24 | """ 25 | return angle + math.pi - round((angle + math.pi) // (2 * math.pi)) * 2 * math.pi 26 | 27 | def drawGrasps(img, grasps, mode='line'): 28 | """ 29 | 绘制grasp 30 | file: img路径 31 | grasps: list() 元素是 [row, col, angle, width] 32 | angle: 弧度 33 | width: 单位 像素 34 | mode: 显示模式 'line' or 'region' 35 | """ 36 | 37 | num = len(grasps) 38 | for i, grasp in enumerate(grasps): 39 | row, col, angle, width = grasp 40 | 41 | if mode == 'line': 42 | width = width / 2 43 | angle2 = calcAngle2(angle) 44 | k = math.tan(angle) 45 | if k == 0: 46 | dx = width 47 | dy = 0 48 | else: 49 | dx = k / abs(k) * width / pow(k ** 2 + 1, 0.5) 50 | dy = k * dx 51 | if angle < math.pi: 52 | cv2.line(img, (col, row), (round(col + dx), round(row - dy)), (0, 0, 255), 1) 53 | else: 54 | cv2.line(img, (col, row), (round(col - dx), round(row + dy)), (0, 0, 255), 1) 55 | 56 | if angle2 < math.pi: 57 | cv2.line(img, (col, row), (round(col + dx), round(row - dy)), (0, 0, 255), 1) 58 | else: 59 | cv2.line(img, (col, row), (round(col - dx), round(row + dy)), (0, 0, 255), 1) 60 | 61 | color_b = 255 / num * i 62 | color_r = 0 63 | color_g = -255 / num * i + 255 64 | 65 | if mode == 'line': 66 | cv2.circle(img, (col, row), 2, (color_b, color_g, color_r), -1) 67 | else: 68 | img[row, col] = [color_b, color_g, color_r] 69 | 70 | 71 | return img 72 | 73 | 74 | def imrotate(img, 75 | angle, 76 | center=None, 77 | scale=1.0, 78 | flag=cv2.INTER_NEAREST, 79 | border_value=0, 80 | auto_bound=False): 81 | """Rotate an image. 82 | 83 | Args: 84 | img (ndarray): Image to be rotated. 85 | angle (float): Rotation angle in degrees, positive values mean 86 | clockwise rotation. 87 | center (tuple[float], optional): Center point (w, h) of the rotation in 88 | the source image. If not specified, the center of the image will be 89 | used. 90 | scale (float): Isotropic scale factor. 91 | border_value (int): Border value. 92 | auto_bound (bool): Whether to adjust the image size to cover the whole 93 | rotated image. 94 | 95 | Returns: 96 | ndarray: The rotated image. 97 | """ 98 | if center is not None and auto_bound: 99 | raise ValueError('`auto_bound` conflicts with `center`') 100 | h, w = img.shape[:2] 101 | if center is None: 102 | center = ((w - 1) * 0.5, (h - 1) * 0.5) 103 | assert isinstance(center, tuple) 104 | 105 | matrix = cv2.getRotationMatrix2D(center, -angle, scale) 106 | if auto_bound: 107 | cos = np.abs(matrix[0, 0]) 108 | sin = np.abs(matrix[0, 1]) 109 | new_w = h * sin + w * cos 110 | new_h = h * cos + w * sin 111 | matrix[0, 2] += (new_w - w) * 0.5 112 | matrix[1, 2] += (new_h - h) * 0.5 113 | w = int(np.round(new_w)) 114 | h = int(np.round(new_h)) 115 | rotated = cv2.warpAffine(img, matrix, (w, h), flags=flag, borderValue=border_value) 116 | return rotated 117 | 118 | 119 | def calcEndPoints(pt, angle, width): 120 | """ 121 | 计算抓取端点(不分次序) 122 | 123 | params: 124 | pt: (x, y) / (col, row) 125 | angle: 弧度 126 | width: 宽度 127 | """ 128 | x, y = pt[0], pt[1]*-1 129 | dx = math.cos(angle) * width / 2. 130 | dy = math.sin(angle) * width / 2. 131 | 132 | pt1_x = int(x + dx) 133 | pt1_y = int(y + dy) * -1 134 | pt2_x = int(x - dx) 135 | pt2_y = int(y - dy) * -1 136 | 137 | return (pt1_x, pt1_y), (pt2_x, pt2_y) 138 | 139 | 140 | def isPtInSquare(pt, center, size): 141 | """判断pt是否在正方形内,正方形的中心点是center, 边长是size 142 | 143 | params: 144 | pt: (x, y) 145 | center: (x, y) 146 | size: int 147 | """ 148 | crop_t = int(center[1] - size/2) 149 | crop_b = int(center[1] + size/2) 150 | crop_l = int(center[0] - size/2) 151 | crop_r = int(center[0] + size/2) 152 | 153 | if crop_l <= pt[0] <= crop_r and crop_t <= pt[1] <= crop_b: 154 | return True 155 | return False 156 | 157 | 158 | 159 | class GraspMat: 160 | def __init__(self, path): 161 | """ 162 | file: *grasp.txt文件 163 | """ 164 | # 读取抓取标签mat 165 | self.grasp_point_map = scio.loadmat(path + '/grasp_18/grasp_point_map.mat')['A'] # (h, w) 166 | self.grasp_angle_map = scio.loadmat(path + '/grasp_18/grasp_angle_map.mat')['A'].transpose((2, 0, 1)) # (h, w, bins) 167 | self.grasp_width_map = scio.loadmat(path + '/grasp_18/grasp_width_map.mat')['A'].transpose((2, 0, 1)) # (h, w, bins) 168 | self.grasp_depth_map = scio.loadmat(path + '/grasp_18/grasp_depth_map.mat')['A'].transpose((2, 0, 1)) # (h, w, bins) 169 | 170 | self.angle_k = self.grasp_angle_map.shape[0] 171 | self.height = self.grasp_angle_map.shape[1] 172 | self.width = self.grasp_angle_map.shape[2] 173 | 174 | 175 | def rotate(self, angle, center): 176 | """ 177 | 最近邻插值旋转, 每次旋转新建变量,不要修改原始标签变量 178 | 179 | angle: 逆时针旋转 角度 180 | center: 旋转中心 (x, y) 181 | """ 182 | assert angle % (180. / self.angle_k) == 0 183 | 184 | # imrotate 是顺时针旋转 185 | rota_r = -1 * angle 186 | self.grasp_point_map_rot = imrotate(self.grasp_point_map, rota_r, center) 187 | self.grasp_angle_map_rot = np.stack([imrotate(grasp_angle_map, rota_r, center) for grasp_angle_map in self.grasp_angle_map]) 188 | self.grasp_width_map_rot = np.stack([imrotate(grasp_width_map, rota_r, center) for grasp_width_map in self.grasp_width_map]) 189 | self.grasp_depth_map_rot = np.stack([imrotate(grasp_depth_map, rota_r, center) for grasp_depth_map in self.grasp_depth_map]) 190 | 191 | # 逆时针旋转rota 192 | # 根据rota对grasp_angle_map进行平移 193 | # !!! 同时要对 grasp_width_map 和 grasp_depth_map 进行平移 194 | offset = int(angle / (180. / self.angle_k)) 195 | 196 | # offset 为正数时,列表下移;offset为负数时,列表上移 197 | self.grasp_angle_map_new = np.zeros_like(self.grasp_angle_map_rot) 198 | self.grasp_width_map_new = np.zeros_like(self.grasp_width_map_rot) 199 | self.grasp_depth_map_new = np.zeros_like(self.grasp_depth_map_rot) 200 | if offset != 0: # 下移 201 | self.grasp_angle_map_new[:offset, :, :] = self.grasp_angle_map_rot[-1*offset:, :, :] # 平移抓取角 202 | self.grasp_angle_map_new[offset:, :, :] = self.grasp_angle_map_rot[:-1*offset, :, :] 203 | 204 | self.grasp_width_map_new[:offset, :, :] = self.grasp_width_map_rot[-1*offset:, :, :] # 抓取宽度 205 | self.grasp_width_map_new[offset:, :, :] = self.grasp_width_map_rot[:-1*offset, :, :] 206 | 207 | self.grasp_depth_map_new[:offset, :, :] = self.grasp_depth_map_rot[-1*offset:, :, :] # 抓取深度 208 | self.grasp_depth_map_new[offset:, :, :] = self.grasp_depth_map_rot[:-1*offset, :, :] 209 | else: 210 | self.grasp_angle_map_new[:, :, :] = self.grasp_angle_map_rot[:, :, :] 211 | self.grasp_width_map_new[:, :, :] = self.grasp_width_map_rot[:, :, :] 212 | self.grasp_depth_map_new[:, :, :] = self.grasp_depth_map_rot[:, :, :] 213 | 214 | self.grasp_angle_map_rot[:, :, :] = self.grasp_angle_map_new[:, :, :] 215 | self.grasp_width_map_rot[:, :, :] = self.grasp_width_map_new[:, :, :] 216 | self.grasp_depth_map_rot[:, :, :] = self.grasp_depth_map_new[:, :, :] 217 | 218 | 219 | def getCorrectGrasp(self, pt, size): 220 | """ 221 | 搜索最接近pt的抓取标签, 满足抓取线全部在正方形内 222 | 相似度: 抓取点偏差+抓取角(弧度)偏差 dx+dy+dr 偏差最小且抓取线全部位于图像块内 223 | 224 | param: 225 | pt: 待修正的抓取点 (row, col) 226 | size: 正方形边长 int 227 | return: 228 | 抓取修正(除了抓取宽度和深度) 229 | [drow, dcol, dangle_bin, width, depth] 注意:dangle_bin 230 | """ 231 | pt_row, pt_col = pt 232 | # 检索抓取点在正方形内的抓取配置 233 | crop_t = int(pt_row - size/2) 234 | crop_b = int(pt_row + size/2) 235 | crop_l = int(pt_col - size/2) 236 | crop_r = int(pt_col + size/2) 237 | segmask = np.zeros((self.height, self.width), dtype=np.uint8) 238 | segmask[crop_t:crop_b, crop_l:crop_r] = np.ones((size, size), dtype=np.uint8) 239 | 240 | grasp_candidate_pts = np.where(self.grasp_point_map_rot > 0) 241 | if grasp_candidate_pts[0].shape[0] == 0: 242 | return None 243 | grasp_candidate_pts = np.c_[grasp_candidate_pts[0], grasp_candidate_pts[1]] # shape=(n,2) row, col 244 | grasp_candidate_pts = np.array( [p for p in grasp_candidate_pts if np.any(segmask[p[0], p[1]] > 0)] ) 245 | if grasp_candidate_pts.shape[0] == 0: 246 | return None 247 | 248 | min_metric = 1000 249 | grasp_correction = None # 存储抓取修正 250 | for grasp_pt in grasp_candidate_pts: 251 | grasp_row, grasp_col = grasp_pt 252 | 253 | grasp_angle_bins = np.where(self.grasp_angle_map_rot[:, grasp_row, grasp_col] > 0)[0] 254 | for grasp_angle_bin in grasp_angle_bins: 255 | grasp_angle = grasp_angle_bin / self.angle_k * math.pi # 抓取角 弧度 256 | grasp_width = self.grasp_width_map_rot[grasp_angle_bin, grasp_row, grasp_col] # 抓取宽度 米 257 | grasp_depth = self.grasp_depth_map_rot[grasp_angle_bin, grasp_row, grasp_col] # 抓取深度 米 258 | # 1 根据抓取线筛选 259 | # 计算两个抓取端点坐标 260 | pt1, pt2 = calcEndPoints((grasp_col, grasp_row), grasp_angle, grasp_width * RADIO) 261 | # 判断两个抓取端点是否在正方形内 262 | if (not isPtInSquare(pt1, (pt_col, pt_row), size)) or (not isPtInSquare(pt2, (pt_col, pt_row), size)): 263 | continue 264 | 265 | # 2 计算相似度最小的抓取标签 266 | metric = abs(grasp_row - pt_row) + abs(grasp_col - pt_col) + abs(grasp_angle_bin) 267 | if metric < min_metric: 268 | min_metric = metric 269 | grasp_correction = [grasp_row - pt_row, grasp_col - pt_col, grasp_angle_bin, grasp_width, grasp_depth] 270 | 271 | return grasp_correction 272 | 273 | def getCorrectGrasp(self, pt, size): 274 | """ 275 | 搜索最接近pt的抓取标签, 满足抓取线全部在正方形内 276 | 相似度: 抓取点偏差+抓取角(弧度)偏差 dx+dy+dr 偏差最小且抓取线全部位于图像块内 277 | 278 | param: 279 | pt: 待修正的抓取点 (row, col) 280 | size: 正方形边长 int 281 | return: 282 | 抓取修正(除了抓取宽度和深度) 283 | [drow, dcol, dangle_bin, width, depth] 注意:dangle_bin 284 | """ 285 | pt_row, pt_col = pt 286 | # 检索抓取点在正方形内的抓取配置 287 | crop_t = int(pt_row - size/2) 288 | crop_b = int(pt_row + size/2) 289 | crop_l = int(pt_col - size/2) 290 | crop_r = int(pt_col + size/2) 291 | segmask = np.zeros((self.height, self.width), dtype=np.uint8) 292 | segmask[crop_t:crop_b, crop_l:crop_r] = np.ones((size, size), dtype=np.uint8) 293 | 294 | grasp_candidate_pts = np.where(self.grasp_point_map_rot > 0) 295 | if grasp_candidate_pts[0].shape[0] == 0: 296 | return None 297 | grasp_candidate_pts = np.c_[grasp_candidate_pts[0], grasp_candidate_pts[1]] # shape=(n,2) row, col 298 | grasp_candidate_pts = np.array( [p for p in grasp_candidate_pts if np.any(segmask[p[0], p[1]] > 0)] ) 299 | if grasp_candidate_pts.shape[0] == 0: 300 | return None 301 | 302 | min_metric = 1000 303 | grasp_correction = None # 存储抓取修正 304 | for grasp_pt in grasp_candidate_pts: 305 | grasp_row, grasp_col = grasp_pt 306 | 307 | grasp_angle_bins = np.where(self.grasp_angle_map_rot[:, grasp_row, grasp_col] > 0)[0] 308 | for grasp_angle_bin in grasp_angle_bins: 309 | grasp_angle = grasp_angle_bin / self.angle_k * math.pi # 抓取角 弧度 310 | grasp_width = self.grasp_width_map_rot[grasp_angle_bin, grasp_row, grasp_col] # 抓取宽度 米 311 | grasp_depth = self.grasp_depth_map_rot[grasp_angle_bin, grasp_row, grasp_col] # 抓取深度 米 312 | # 1 根据抓取线筛选 313 | # 计算两个抓取端点坐标 314 | pt1, pt2 = calcEndPoints((grasp_col, grasp_row), grasp_angle, grasp_width * RADIO) 315 | # 判断两个抓取端点是否在正方形内 316 | if (not isPtInSquare(pt1, (pt_col, pt_row), size)) or (not isPtInSquare(pt2, (pt_col, pt_row), size)): 317 | continue 318 | 319 | # 2 计算相似度最小的抓取标签 320 | metric = abs(grasp_row - pt_row) + abs(grasp_col - pt_col) + abs(grasp_angle_bin) 321 | if metric < min_metric: 322 | min_metric = metric 323 | grasp_correction = [grasp_row - pt_row, grasp_col - pt_col, grasp_angle_bin, grasp_width, grasp_depth] 324 | 325 | return grasp_correction 326 | 327 | 328 | def getCorrectGrasp_1(self, pt, size): 329 | """ 330 | 搜索最接近pt的抓取标签, 满足抓取线全部在正方形内 331 | 相似度: 抓取角(弧度)偏差 dx+dy+dr 偏差最小且抓取线全部位于图像块内 332 | 333 | param: 334 | pt: 待修正的抓取点 (row, col) 335 | size: 正方形边长 int 336 | return: 337 | 抓取修正(除了抓取宽度和深度) 338 | [success, dangle_bin, width, depth] 注意:dangle_bin 339 | """ 340 | pt_row, pt_col = pt 341 | # 检索抓取点在正方形内的抓取配置 342 | crop_t = pt_row - 2 343 | crop_b = pt_row + 3 344 | crop_l = pt_col - 2 345 | crop_r = pt_col + 3 346 | segmask = np.zeros((self.height, self.width), dtype=np.uint8) 347 | segmask[crop_t:crop_b, crop_l:crop_r] = np.ones((5, 5), dtype=np.uint8) 348 | grasp_point_map_rot = self.grasp_point_map_rot * segmask 349 | 350 | grasp_candidate_pts = np.where(grasp_point_map_rot > 0) 351 | if grasp_candidate_pts[0].shape[0] == 0: 352 | return None 353 | 354 | grasp_candidate_pts = np.c_[grasp_candidate_pts[0], grasp_candidate_pts[1]] 355 | 356 | min_angle = 18 357 | grasp_correction = None # 存储抓取修正 358 | for grasp_pt in grasp_candidate_pts: 359 | grasp_row, grasp_col = grasp_pt 360 | 361 | grasp_angle_bins = np.where(self.grasp_angle_map_rot[:, grasp_row, grasp_col] > 0)[0] 362 | for grasp_angle_bin in grasp_angle_bins: 363 | grasp_angle = grasp_angle_bin / self.angle_k * math.pi # 抓取角 弧度 364 | grasp_width = self.grasp_width_map_rot[grasp_angle_bin, grasp_row, grasp_col] # 抓取宽度 米 365 | grasp_depth = self.grasp_depth_map_rot[grasp_angle_bin, grasp_row, grasp_col] # 抓取深度 米 366 | # 1 根据抓取线筛选 367 | # 计算两个抓取端点坐标 368 | pt1, pt2 = calcEndPoints((grasp_col, grasp_row), grasp_angle, grasp_width * RADIO) 369 | # 判断两个抓取端点是否在正方形内 370 | if (not isPtInSquare(pt1, (pt_col, pt_row), size)) or (not isPtInSquare(pt2, (pt_col, pt_row), size)): 371 | continue 372 | 373 | # 2 计算相似度最小的抓取标签 374 | if grasp_angle_bin < min_angle: 375 | min_angle = grasp_angle_bin 376 | grasp_correction = [grasp_angle_bin, grasp_width, grasp_depth] 377 | 378 | if grasp_correction is None: 379 | return None 380 | 381 | return grasp_correction 382 | 383 | 384 | def drawGrasps(self, img, interval=2): 385 | """ 386 | 绘制抓取配置 387 | """ 388 | grasps = [] 389 | rows, cols = np.where(self.grasp_point_map > 0) # 抓取点 390 | for i in range(rows.shape[0]): 391 | if i % interval != 0: 392 | continue 393 | row, col = rows[i], cols[i] 394 | angle_bins = np.where(self.grasp_angle_map[:, row, col] > 0)[0] 395 | for angle_bin in angle_bins: 396 | angle = (angle_bin / self.angle_k) * math.pi 397 | width = self.grasp_width_map[angle_bin, row, col] * RADIO 398 | 399 | grasps.append([row, col, angle, width]) 400 | 401 | # 绘制抓取 402 | img = drawGrasps(img, grasps, mode='line') 403 | 404 | return img 405 | 406 | def drawGraspsRot(self, img, interval=2): 407 | """ 408 | 绘制抓取配置 409 | """ 410 | grasps = [] 411 | rows, cols = np.where(self.grasp_point_map_rot > 0) # 抓取点 412 | for i in range(rows.shape[0]): 413 | if i % interval != 0: 414 | continue 415 | row, col = rows[i], cols[i] 416 | angle_bins = np.where(self.grasp_angle_map_rot[:, row, col] > 0)[0] 417 | for angle_bin in angle_bins: 418 | angle = (angle_bin / self.angle_k) * math.pi 419 | width = self.grasp_width_map_rot[angle_bin, row, col] * RADIO 420 | 421 | grasps.append([row, col, angle, width]) 422 | 423 | # 绘制抓取 424 | img = drawGrasps(img, grasps, mode='line') 425 | 426 | return img 427 | 428 | 429 | 430 | 431 | if __name__ == "__main__": 432 | pt = (10, 10) 433 | angle = math.pi / 4 434 | width = 10 435 | pt1, pt2 = calcEndPoints(pt, angle, width) 436 | print(pt1, pt2) 437 | -------------------------------------------------------------------------------- /franka_panda/meshes/collision/link2.obj: -------------------------------------------------------------------------------- 1 | # File produced by Open Asset Import Library (http://www.assimp.sf.net) 2 | # (assimp v3.1.187496374) 3 | 4 | mtllib link2.obj.mtl 5 | 6 | # 152 vertex positions 7 | v 0.0547799 0.00875545 0.000695036 8 | v 0.0549849 0.00179704 0.0600771 9 | v 0.0549358 -0.194003 -0.0050002 10 | v 0.0541351 0.00944441 0.0628215 11 | v 0.031051 -0.126082 -0.0455013 12 | v 0.047601 0.0280333 0.000489744 13 | v 0.0502436 0.0226741 0.0632384 14 | v 0.0212053 -0.126588 -0.0508097 15 | v 0.0399461 -0.124494 -0.0379263 16 | v 0.0484134 -0.123261 -0.026532 17 | v -0.0518832 -0.194 -0.0183946 18 | v -0.0500141 -0.121697 -0.0232611 19 | v -0.0466703 -0.194 -0.0294255 20 | v -0.0439629 0.0332954 0.000489695 21 | v -0.036151 0.0416476 0.0644805 22 | v -0.0320994 0.0449999 0.000508252 23 | v -0.0152371 -0.0171926 0.125084 24 | v -0.0237602 -0.194 0.0497122 25 | v -0.010578 -0.194 0.054149 26 | v -0.0254664 -0.0161975 0.121439 27 | v 0.0307019 -0.0160908 0.118495 28 | v 0.0218367 -0.194 0.0506868 29 | v 0.0369534 -0.194 0.041087 30 | v 0.016094 0.0527631 0.0641438 31 | v 0.0285992 0.047274 0.000499651 32 | v 0.013564 0.053444 0.000497281 33 | v 0.0287201 0.0470227 0.0647734 34 | v 0.00351193 -0.12558 -0.054882 35 | v 0.0114522 -0.126129 -0.0537865 36 | v -0.0138711 -0.126413 -0.0533398 37 | v 0.0390762 0.0387882 0.000497352 38 | v -0.0439361 -0.0117967 0.108632 39 | v -0.0462278 -0.00365254 0.107627 40 | v -0.0487421 -0.193999 0.0259655 41 | v -0.0548289 0.00642324 0.000591963 42 | v -0.0534466 -0.118112 -0.0131661 43 | v -0.0551534 -0.19401 0.00510135 44 | v -0.0545204 -0.194 -0.00818656 45 | v -0.0358292 -0.125777 -0.0418274 46 | v -0.0511798 0.0205574 0.000498796 47 | v -0.00343009 -0.125759 -0.0548761 48 | v -0.0179118 0.0521237 0.000504139 49 | v -0.0214171 0.0509056 0.0645642 50 | v -0.00776943 0.0545048 0.0645032 51 | v -0.00246019 0.05522 0.000492765 52 | v -0.0512272 0.0203715 0.0627504 53 | v 0.053404 -0.118713 -0.0135225 54 | v 0.000751583 -0.00741707 0.129075 55 | v -0.00348431 -0.0167312 0.127099 56 | v 0.00626452 -0.0182407 0.126383 57 | v 0.00559829 -0.194 0.0549029 58 | v 0.0379164 -0.0147356 0.113617 59 | v 0.0462819 -0.00300058 0.107483 60 | v 0.0477805 -0.194 0.0274755 61 | v 0.0534314 -0.194 0.013614 62 | v 0.0446073 -0.0117334 0.107859 63 | v -0.0100452 -0.00110755 0.128719 64 | v -0.00688605 0.00774291 0.128603 65 | v -0.0150385 0.0113995 0.126577 66 | v -0.0366572 -0.01521 0.114621 67 | v 0.0445974 0.0322464 0.0639897 68 | v 0.0517857 0.00163012 0.0815724 69 | v 0.0494481 0.017366 0.0790175 70 | v 0.0282936 -0.194 -0.0472499 71 | v 0.0458178 -0.194 -0.0305876 72 | v 0.0373247 -0.194 -0.0405746 73 | v -0.0517812 0.00221134 0.0817068 74 | v -0.054916 0.00463229 0.0610593 75 | v -0.0374301 -0.194 0.0406659 76 | v -0.0276795 -0.126212 -0.0476675 77 | v -0.0452128 0.0314492 0.0634568 78 | v -0.0395945 0.0333466 0.0831425 79 | v -0.00855073 0.0509026 0.0845959 80 | v -0.0197877 0.0474677 0.0851107 81 | v -0.0130229 0.0448056 0.107063 82 | v -0.025218 0.0448655 0.0847447 83 | v -0.0313187 0.0409526 0.0839825 84 | v 0.00337921 0.0550079 0.0644398 85 | v 0.0517594 -0.194 -0.0190919 86 | v 0.0190505 -0.0172288 0.123856 87 | v -0.014125 -0.0095805 0.127168 88 | v 0.0298218 -0.00866372 0.120929 89 | v 0.0240752 -0.00408641 0.1245 90 | v 0.00397345 0.000518457 0.129489 91 | v -0.0208855 -0.000462331 0.12582 92 | v -0.0129757 -0.194 -0.0535885 93 | v -4.27424e-05 -0.194 -0.0550966 94 | v 0.0364876 0.0411348 0.0655198 95 | v -0.0430603 -0.123826 -0.0343229 96 | v 0.00901678 0.0126839 0.127561 97 | v 0.00261172 0.00856949 0.128877 98 | v 0.0118591 -0.00831063 0.127792 99 | v 0.0137665 0.0204527 0.124378 100 | v 0.0176171 0.00425055 0.126807 101 | v 0.0260309 0.00970153 0.122739 102 | v 0.0459354 0.00673847 0.107678 103 | v 0.0392982 -0.00592915 0.114605 104 | v 0.0363838 0.0032781 0.117268 105 | v -0.0255566 0.00795001 0.123264 106 | v -0.0236907 0.0215258 0.120405 107 | v -0.0323034 0.015809 0.1176 108 | v -0.00434828 0.0171063 0.126883 109 | v -0.0144221 0.0199306 0.124302 110 | v 0.0486098 0.0101519 0.0933213 111 | v -0.0462521 0.00699219 0.106752 112 | v -0.0427638 0.00539408 0.111331 113 | v -0.0267486 -0.194 -0.0482902 114 | v 0.016019 -0.194 -0.0528808 115 | v -0.0514251 0.0132731 0.0747568 116 | v -0.0465312 0.023048 0.0822049 117 | v -0.0374757 0.0275452 0.107331 118 | v -0.0425322 0.018274 0.107673 119 | v -0.0266734 0.0324841 0.112352 120 | v -0.0311617 0.0343971 0.107352 121 | v 0.00196963 0.0512017 0.0866911 122 | v -0.0440648 0.0154429 0.10713 123 | v 0.000309921 0.0235193 0.124821 124 | v 0.0331091 0.0137207 0.117691 125 | v -0.0302799 0.00225558 0.121284 126 | v -0.0362039 0.00731356 0.116785 127 | v -0.0313528 -0.00896166 0.119999 128 | v -0.0381205 -0.194 -0.0397839 129 | v 0.0438507 0.0239595 0.0918484 130 | v 0.0399564 0.0325702 0.084039 131 | v -0.017877 0.0426078 0.107975 132 | v -0.00582199 0.0430587 0.110978 133 | v -0.00952703 0.0376232 0.115319 134 | v -0.0171561 0.0323609 0.117111 135 | v -0.0244552 0.0394989 0.107471 136 | v -0.0387607 0.0166246 0.112248 137 | v -0.032079 0.0257153 0.113308 138 | v 0.0169924 0.0287418 0.119516 139 | v 0.00312588 0.0325689 0.119968 140 | v -0.00276387 0.046319 0.107409 141 | v 0.0114487 0.0500631 0.0856468 142 | v 0.0424678 0.0187545 0.107658 143 | v 0.0365812 0.0285008 0.107512 144 | v 0.0341516 0.0224739 0.113524 145 | v -0.0374517 -0.00313331 0.116357 146 | v 0.00294327 0.0404966 0.113812 147 | v -0.0117918 0.0286979 0.120959 148 | v 0.01203 0.0394531 0.11315 149 | v 0.0204365 0.0372159 0.111937 150 | v 0.00874197 0.0456755 0.107309 151 | v 0.0277535 0.0252894 0.116309 152 | v 0.0242468 0.019117 0.120984 153 | v 0.0393956 0.0156438 0.11198 154 | v 0.0200004 0.0467444 0.0881052 155 | v 0.026041 0.038696 0.106945 156 | v 0.0196621 0.0420999 0.107295 157 | v 0.0249062 0.0313688 0.114376 158 | v 0.0317282 0.0340296 0.107127 159 | 160 | # 0 UV coordinates 161 | 162 | # 298 vertex normals 163 | vn 0.999994 0.000863099 -0.00335135 164 | vn 0.994196 0.1072 0.00912929 165 | vn 0.531767 0.189234 -0.825478 166 | vn 0.937121 0.348871 -0.00966981 167 | vn 0.455706 0.209252 -0.865185 168 | vn 0.795259 0.0854375 -0.600219 169 | vn -0.904114 -0.00538631 -0.427258 170 | vn -0.702299 0.711846 -0.00717604 171 | vn -0.297328 -0.362249 0.883386 172 | vn -0.344298 -0.354079 0.869533 173 | vn 0.50623 -0.329053 0.797155 174 | vn 0.379639 0.92512 -0.00519485 175 | vn 0.413766 0.910379 0.00278169 176 | vn 0.150207 0.281818 -0.947637 177 | vn 0.118088 0.287398 -0.950504 178 | vn -0.25926 0.264253 -0.928953 179 | vn 0.314677 0.250075 -0.915664 180 | vn 0.29327 0.254232 -0.921607 181 | vn 0.219778 0.271602 -0.936979 182 | vn 0.959393 0.281989 0.00682976 183 | vn 0.624884 0.152369 -0.765704 184 | vn -0.866797 -0.186891 0.462315 185 | vn -0.943599 0.0259913 -0.33007 186 | vn -0.998867 0.00054697 -0.0475853 187 | vn -0.623931 0.156035 -0.765744 188 | vn -0.156925 0.280761 -0.946862 189 | vn -0.142678 0.283609 -0.948266 190 | vn -0.448711 0.893645 -0.00756096 191 | vn -0.25498 0.966936 0.00443328 192 | vn -0.196484 0.980492 -0.00534121 193 | vn -0.968252 0.249977 8.6395e-06 194 | vn 0.990526 0.00461689 -0.137249 195 | vn 0.0369453 -0.223424 0.974021 196 | vn 0.009697 -0.376742 0.926267 197 | vn -0.0430879 -0.378729 0.924504 198 | vn 0.571795 -0.310337 0.759435 199 | vn 0.915645 -0.14918 0.373283 200 | vn 0.90661 -0.156962 0.391691 201 | vn 0.694927 -0.272904 0.665282 202 | vn -0.204033 0.0855425 0.975219 203 | vn -0.512723 -0.325422 0.79449 204 | vn 0.0328199 0.293682 -0.95534 205 | vn 0.861547 0.507629 0.00707201 206 | vn 0.987442 0.0568267 0.147407 207 | vn 0.951023 0.275313 0.140563 208 | vn 0.474434 0.00340186 -0.880284 209 | vn 0.76178 -0.00404598 -0.647823 210 | vn 0.802386 0.0047729 -0.596787 211 | vn 0.647875 0.00459 -0.761732 212 | vn -0.978746 -0.0597654 0.196172 213 | vn -0.988569 -0.0397853 0.145426 214 | vn -0.968207 -0.00271314 -0.250134 215 | vn -0.684587 -0.276094 0.67462 216 | vn -0.946467 0.00274025 -0.322788 217 | vn -0.989865 0.00469307 -0.141931 218 | vn -0.999998 0.00158798 -0.00139374 219 | vn -0.567546 0.173276 -0.804902 220 | vn -0.746469 0.648161 0.15057 221 | vn -0.059283 0.292332 -0.954478 222 | vn -0.00833902 0.292587 -0.956203 223 | vn -0.279998 0.942977 0.179987 224 | vn -0.278063 0.93959 0.199629 225 | vn -0.526534 0.836596 0.151228 226 | vn -0.547007 0.820748 0.164792 227 | vn -0.53205 0.846645 0.0106701 228 | vn 0.110161 0.993891 -0.00676278 229 | vn 0.173941 0.984749 0.00361981 230 | vn 0.975511 -0.00504341 -0.219893 231 | vn 0.929545 0.0309468 -0.367409 232 | vn 0.233598 -0.368724 0.899708 233 | vn 0.208231 -0.369148 0.905743 234 | vn -0.102318 -0.161682 0.981524 235 | vn 0.399687 -0.19669 0.895301 236 | vn 0.420176 -0.341391 0.840776 237 | vn 0.757259 -0.252465 0.602346 238 | vn 0.996386 -0.0270171 0.080536 239 | vn 0.988252 -0.0426667 0.146755 240 | vn -0.0512336 -0.0313597 0.998194 241 | vn -0.107676 -0.128634 0.985829 242 | vn -0.949783 -0.11269 0.291913 243 | vn -0.254295 0.0637289 0.965025 244 | vn -0.522082 -0.324077 0.788926 245 | vn -0.115824 -0.00253905 -0.993267 246 | vn 0.978533 -0.060234 0.197091 247 | vn 0.783664 0.621171 -0.00414522 248 | vn 0.739147 0.673525 0.00512004 249 | vn 0.629394 0.77708 -0.00298668 250 | vn -0.767806 -0.247805 0.590819 251 | vn -0.6978 0.125969 -0.705129 252 | vn -0.747757 0.663956 0.00462416 253 | vn -0.0450397 0.998958 0.00742623 254 | vn 0.932906 0.0062564 -0.360066 255 | vn 0.139193 0.0985125 0.985353 256 | vn -0.142669 -0.371777 0.917294 257 | vn 0.0971861 -0.19331 0.976313 258 | vn -0.154903 -0.239709 0.958407 259 | vn 0.31021 0.212658 0.926578 260 | vn 0.425097 -0.235974 0.873847 261 | vn 0.711656 0.0112243 0.702439 262 | vn 0.705103 0.018177 0.708871 263 | vn -0.442238 0.242649 0.863451 264 | vn -0.260852 -0.0508872 0.964037 265 | vn -0.168845 0.265372 0.949247 266 | vn 0.286162 0.208247 0.935278 267 | vn -0.329188 0.102325 0.938704 268 | vn -0.000929673 0.00318577 -0.999995 269 | vn 0.976601 0.0304743 0.212892 270 | vn 0.975681 0.0851268 0.201991 271 | vn 0.594393 -0.00342816 -0.804167 272 | vn 0.888339 -0.00627229 -0.459145 273 | vn -0.786216 0.0488445 0.616018 274 | vn -0.976984 0.0152622 0.212768 275 | vn -0.366464 0.234435 -0.900413 276 | vn -0.401575 0.226884 -0.887278 277 | vn 2.34947e-05 -1 -5.69195e-05 278 | vn 3.61495e-05 -1 -1.824e-05 279 | vn -5.85523e-07 -1 1.49966e-06 280 | vn 3.03192e-06 -1 2.42667e-06 281 | vn -4.71086e-07 -1 2.77471e-06 282 | vn -1.48549e-06 -1 8.9384e-06 283 | vn 3.51975e-06 -1 -4.53679e-06 284 | vn 4.04839e-05 -1 -4.58034e-05 285 | vn -9.82561e-05 -1 -1.11942e-06 286 | vn 2.84184e-05 -1 9.31264e-06 287 | vn -2.01463e-05 -1 2.9116e-05 288 | vn -7.02999e-05 -1 4.29144e-05 289 | vn 4.18487e-06 -1 -1.60743e-05 290 | vn -0.00105549 -0.999999 4.71011e-05 291 | vn -0.927549 0.328182 0.178744 292 | vn -0.878846 0.477105 0.000755021 293 | vn -0.870057 0.492942 -0.00281789 294 | vn -0.823025 0.537695 0.183067 295 | vn -0.85243 0.473119 0.222535 296 | vn -0.873196 0.464722 0.146839 297 | vn -0.379932 0.00327956 -0.925008 298 | vn -0.434877 0.881895 0.182049 299 | vn -0.542201 0.49762 0.677047 300 | vn -0.250985 0.954448 0.161354 301 | vn -0.062547 0.982799 0.173763 302 | vn -0.950623 0.237106 0.200242 303 | vn -0.970154 0.215406 0.111366 304 | vn -0.973732 0.227636 0.0053393 305 | vn 0.0549176 0.269324 0.961482 306 | vn 0.106643 -0.0950194 0.989747 307 | vn 0.169683 0.0853083 0.981799 308 | vn 0.403024 0.0594556 0.913256 309 | vn 0.525421 0.130692 0.840745 310 | vn 0.309201 -0.164124 0.936727 311 | vn 0.68757 -0.186612 0.701729 312 | vn -0.058787 0.0339928 0.997692 313 | vn -0.0347986 0.0699661 0.996942 314 | vn -0.528972 0.148128 0.835612 315 | vn -0.511188 0.15351 0.845649 316 | vn -0.14308 0.216216 0.965804 317 | vn 0.104308 0.32179 0.941048 318 | vn 0.0273576 0.265676 0.963674 319 | vn -0.126123 0.385563 0.914021 320 | vn -0.384405 -0.150357 0.910838 321 | vn 0.136665 -0.00399225 -0.990609 322 | vn 0.13639 -0.0040438 -0.990647 323 | vn -0.145676 0.00171098 -0.989331 324 | vn -0.838539 0.069106 -0.540441 325 | vn -0.719662 0.00337278 -0.694316 326 | vn 0.895452 0.406326 0.181834 327 | vn 0.742708 0.649867 0.161426 328 | vn 0.960091 0.223039 0.168755 329 | vn 0.976886 0.124038 0.174094 330 | vn 0.416955 -0.00415406 -0.908917 331 | vn 0.292217 0.00689914 -0.956327 332 | vn -0.755259 0.167188 0.633745 333 | vn -0.971282 0.14821 0.186131 334 | vn -1.53238e-05 -1 2.11839e-06 335 | vn -9.43751e-05 -1 -4.17948e-05 336 | vn -6.76337e-05 -1 -3.86085e-05 337 | vn 0.00343091 -0.999994 -0.00056314 338 | vn -0.000102877 -1 3.39915e-05 339 | vn -0.598978 -0.00386878 -0.800756 340 | vn -0.928173 0.320251 0.189565 341 | vn -0.367104 0.903141 0.222646 342 | vn -0.194938 0.710847 0.675793 343 | vn -0.198998 0.690831 0.695092 344 | vn -0.34802 0.610139 0.711767 345 | vn -0.341961 0.607215 0.717184 346 | vn -0.643954 0.375783 0.666416 347 | vn -0.625549 0.380285 0.681228 348 | vn -0.38876 0.47454 0.789732 349 | vn -0.431779 0.454863 0.778889 350 | vn -0.544307 0.526906 0.652763 351 | vn -0.820962 0.534748 0.200163 352 | vn -0.0435197 0.985204 0.16577 353 | vn -0.977211 0.134589 0.164147 354 | vn -0.264308 0.631408 0.729016 355 | vn 0.1541 0.454601 0.877264 356 | vn -0.136379 0.78679 0.601965 357 | vn 0.136436 0.974993 0.175423 358 | vn 0.175233 0.971466 0.159838 359 | vn -0.0702394 0.974396 0.213587 360 | vn 0.640947 0.396988 0.656954 361 | vn 0.487217 0.042278 0.872257 362 | vn 0.206759 -0.250703 0.945727 363 | vn 0.573957 -0.17969 0.798927 364 | vn 0.582319 -0.190013 0.790442 365 | vn -0.575564 0.336043 0.745521 366 | vn -0.334494 0.265346 0.904271 367 | vn -0.704479 -0.0206901 0.709423 368 | vn -0.608945 0.206044 0.765984 369 | vn -0.0449612 0.192288 0.980308 370 | vn -0.0570372 0.646519 0.760763 371 | vn -0.0456084 0.612006 0.789537 372 | vn -0.0688257 0.487991 0.870131 373 | vn -0.126278 0.386235 0.913716 374 | vn -0.518988 -0.260184 0.814221 375 | vn -0.771213 -0.00475059 -0.63656 376 | vn -0.846044 0.00632099 -0.533076 377 | vn 0.603962 0.79701 0.00198059 378 | vn -0.609696 -0.151946 0.777935 379 | vn -0.582506 -0.000532993 -0.812826 380 | vn -0.546305 0.810879 0.209823 381 | vn -0.433541 0.873649 0.220861 382 | vn -0.430493 0.874883 0.221938 383 | vn -0.592933 0.774279 0.221183 384 | vn -0.674545 0.712683 0.192542 385 | vn -0.196288 0.558895 0.805672 386 | vn 0.276421 -0.0514573 0.959658 387 | vn 0.196341 -0.0131192 0.980448 388 | vn 0.265625 0.580477 0.769733 389 | vn 0.181753 0.563216 0.806073 390 | vn 0.13212 0.714636 0.686906 391 | vn 0.139644 0.966955 0.2133 392 | vn 0.497395 0.326283 0.803827 393 | vn 0.494051 0.32504 0.806389 394 | vn 0.465971 0.246662 0.849722 395 | vn 0.326294 0.232587 0.916207 396 | vn 0.638437 0.333373 0.69373 397 | vn 0.732082 -0.111401 0.672046 398 | vn 0.565801 -0.0587605 0.822445 399 | vn 0.515701 -0.0207842 0.856517 400 | vn -0.87513 0.431818 0.218357 401 | vn -0.646555 0.0460771 0.761474 402 | vn -0.362237 0.239517 0.900786 403 | vn -0.304864 0.440552 0.844377 404 | vn -0.0868798 0.547816 0.832075 405 | vn -0.384864 -0.131303 0.913586 406 | vn -0.346098 -0.200322 0.916563 407 | vn 0.503112 0.841219 0.198061 408 | vn 0.823456 0.53742 0.181934 409 | vn 0.854693 0.490881 0.168927 410 | vn -0.66898 -0.148703 0.728253 411 | vn -0.697792 -0.109036 0.707953 412 | vn -0.359042 -0.00132172 -0.933321 413 | vn -0.467735 0.599727 0.64927 414 | vn -0.673614 0.710425 0.203813 415 | vn -0.717482 0.660503 0.22126 416 | vn -0.00182421 0.739045 0.673654 417 | vn -0.149619 0.961356 0.231102 418 | vn 0.239458 0.728761 0.641534 419 | vn 0.279376 0.684365 0.673494 420 | vn 0.468902 0.856539 0.215576 421 | vn 0.829645 0.504676 0.238727 422 | vn 0.312865 0.559373 0.767605 423 | vn 0.803861 0.555776 0.211944 424 | vn 0.528926 0.482947 0.697853 425 | vn -0.656801 0.216914 0.722191 426 | vn -0.290729 0.415762 0.861753 427 | vn -0.584387 0.0366406 0.810648 428 | vn -0.542911 -0.044139 0.838629 429 | vn -0.447889 -0.0593559 0.892116 430 | vn -0.425426 0.0383972 0.904178 431 | vn 0.128926 0.437161 0.890095 432 | vn 0.926929 0.310385 0.210866 433 | vn 0.90493 0.374345 0.202403 434 | vn 0.0481549 0.759987 0.648152 435 | vn 0.0562881 0.968845 0.241186 436 | vn 0.933093 0.269674 0.237935 437 | vn 0.51793 0.469893 0.714807 438 | vn 0.328419 0.379525 0.864929 439 | vn 0.726008 0.652385 0.217498 440 | vn 0.719844 0.208843 0.661974 441 | vn 0.594619 0.286757 0.751132 442 | vn -0.718715 0.201884 0.665351 443 | vn -0.659221 0.175302 0.73123 444 | vn -0.494093 0.355034 0.793614 445 | vn 0.127052 0.610153 0.78203 446 | vn 0.617571 0.760526 0.200515 447 | vn 0.580874 0.790772 0.193041 448 | vn 0.401827 0.901464 0.160927 449 | vn 0.525761 0.508862 0.681641 450 | vn 0.390316 0.666012 0.635674 451 | vn 0.309209 0.933033 0.183955 452 | vn 0.303165 0.92496 0.229214 453 | vn 0.382883 0.437987 0.813368 454 | vn 0.379105 0.412169 0.82849 455 | vn 0.681299 0.704644 0.198262 456 | vn 0.674255 0.145379 0.724048 457 | vn 0.634115 0.168265 0.754709 458 | vn 0.432342 0.6082 0.665713 459 | vn 0.465852 0.593485 0.656321 460 | vn 0.295628 0.928431 0.224987 461 | 462 | # Mesh '' with 300 faces 463 | g 464 | usemtl DefaultMaterial 465 | f 1//1 2//1 3//1 466 | f 1//2 4//2 2//2 467 | f 5//3 6//3 1//3 468 | f 6//4 7//4 1//4 469 | f 5//5 8//5 6//5 470 | f 9//6 1//6 10//6 471 | f 11//7 12//7 13//7 472 | f 14//8 15//8 16//8 473 | f 17//9 18//9 19//9 474 | f 20//10 18//10 17//10 475 | f 21//11 22//11 23//11 476 | f 24//12 25//12 26//12 477 | f 25//13 24//13 27//13 478 | f 28//14 25//14 29//14 479 | f 28//15 26//15 25//15 480 | f 16//16 30//16 14//16 481 | f 8//17 31//17 6//17 482 | f 29//18 31//18 8//18 483 | f 29//19 25//19 31//19 484 | f 7//20 4//20 1//20 485 | f 5//21 1//21 9//21 486 | f 32//22 33//22 34//22 487 | f 35//23 12//23 36//23 488 | f 37//24 35//24 38//24 489 | f 39//25 35//25 40//25 490 | f 16//26 41//26 30//26 491 | f 42//27 41//27 16//27 492 | f 16//28 43//28 42//28 493 | f 44//29 42//29 43//29 494 | f 44//30 45//30 42//30 495 | f 46//31 40//31 35//31 496 | f 3//32 47//32 1//32 497 | f 48//33 49//33 50//33 498 | f 49//34 51//34 50//34 499 | f 49//35 19//35 51//35 500 | f 52//36 21//36 23//36 501 | f 53//37 54//37 55//37 502 | f 53//38 56//38 54//38 503 | f 52//39 23//39 56//39 504 | f 57//40 58//40 59//40 505 | f 18//41 20//41 60//41 506 | f 28//42 45//42 26//42 507 | f 7//43 6//43 61//43 508 | f 2//44 4//44 62//44 509 | f 4//45 7//45 63//45 510 | f 8//46 5//46 64//46 511 | f 9//47 65//47 66//47 512 | f 10//48 65//48 9//48 513 | f 66//49 5//49 9//49 514 | f 33//50 67//50 37//50 515 | f 67//51 68//51 37//51 516 | f 36//52 11//52 38//52 517 | f 32//53 69//53 60//53 518 | f 36//54 12//54 11//54 519 | f 38//55 35//55 36//55 520 | f 68//56 35//56 37//56 521 | f 70//57 39//57 40//57 522 | f 15//58 71//58 72//58 523 | f 41//59 42//59 45//59 524 | f 41//60 45//60 28//60 525 | f 73//61 43//61 74//61 526 | f 73//62 74//62 75//62 527 | f 76//63 43//63 15//63 528 | f 15//64 77//64 76//64 529 | f 43//65 16//65 15//65 530 | f 78//66 26//66 45//66 531 | f 78//67 24//67 26//67 532 | f 79//68 47//68 3//68 533 | f 1//69 47//69 10//69 534 | f 80//70 51//70 22//70 535 | f 80//71 50//71 51//71 536 | f 81//72 49//72 48//72 537 | f 82//73 83//73 80//73 538 | f 21//74 80//74 22//74 539 | f 56//75 23//75 54//75 540 | f 55//76 3//76 2//76 541 | f 2//77 62//77 55//77 542 | f 84//78 57//78 48//78 543 | f 57//79 81//79 48//79 544 | f 33//80 37//80 34//80 545 | f 85//81 57//81 59//81 546 | f 69//82 18//82 60//82 547 | f 86//83 41//83 87//83 548 | f 53//84 55//84 62//84 549 | f 31//85 61//85 6//85 550 | f 61//86 31//86 88//86 551 | f 31//87 25//87 88//87 552 | f 32//88 34//88 69//88 553 | f 35//89 39//89 89//89 554 | f 14//90 71//90 15//90 555 | f 44//91 78//91 45//91 556 | f 79//92 10//92 47//92 557 | f 90//93 91//93 84//93 558 | f 49//94 17//94 19//94 559 | f 92//95 48//95 50//95 560 | f 49//96 81//96 17//96 561 | f 93//97 94//97 95//97 562 | f 80//98 21//98 82//98 563 | f 96//99 97//99 53//99 564 | f 96//100 98//100 97//100 565 | f 99//101 100//101 101//101 566 | f 81//102 57//102 85//102 567 | f 102//103 103//103 59//103 568 | f 90//104 94//104 93//104 569 | f 85//105 59//105 99//105 570 | f 41//106 28//106 87//106 571 | f 62//107 96//107 53//107 572 | f 62//108 104//108 96//108 573 | f 5//109 66//109 64//109 574 | f 65//110 10//110 79//110 575 | f 105//111 33//111 106//111 576 | f 67//112 33//112 105//112 577 | f 30//113 70//113 14//113 578 | f 70//114 40//114 14//114 579 | f 79//115 107//115 86//115 580 | f 66//116 65//116 79//116 581 | f 79//117 19//117 18//117 582 | f 23//118 22//118 79//117 583 | f 79//117 22//118 51//119 584 | f 79//117 51//119 19//117 585 | f 79//117 38//120 107//120 586 | f 38//121 79//117 18//117 587 | f 18//117 69//121 38//121 588 | f 79//122 108//122 64//122 589 | f 79//123 55//123 54//123 590 | f 79//124 54//124 23//124 591 | f 79//125 86//125 87//125 592 | f 79//126 64//126 66//126 593 | f 87//127 108//127 79//127 594 | f 79//128 3//128 55//128 595 | f 109//129 110//129 46//129 596 | f 71//130 40//130 46//130 597 | f 40//131 71//131 14//131 598 | f 110//132 72//132 71//132 599 | f 111//133 110//133 112//133 600 | f 110//134 71//134 46//134 601 | f 107//135 70//135 30//135 602 | f 76//136 74//136 43//136 603 | f 111//137 113//137 114//137 604 | f 43//138 73//138 44//138 605 | f 115//139 44//139 73//139 606 | f 116//140 109//140 105//140 607 | f 68//141 109//141 46//141 608 | f 68//142 46//142 35//142 609 | f 102//143 91//143 117//143 610 | f 48//144 92//144 84//144 611 | f 94//145 90//145 84//145 612 | f 94//146 83//146 95//146 613 | f 95//147 98//147 118//147 614 | f 80//148 83//148 92//148 615 | f 97//149 52//149 56//149 616 | f 84//150 58//150 57//150 617 | f 84//151 91//151 58//151 618 | f 119//152 99//152 101//152 619 | f 120//153 119//153 101//153 620 | f 58//154 102//154 59//154 621 | f 117//155 90//155 93//155 622 | f 91//156 90//156 117//156 623 | f 117//157 103//157 102//157 624 | f 85//158 121//158 81//158 625 | f 28//159 108//159 87//159 626 | f 108//160 28//160 29//160 627 | f 41//161 86//161 30//161 628 | f 89//162 12//162 35//162 629 | f 39//163 122//163 89//163 630 | f 7//164 123//164 63//164 631 | f 88//165 124//165 61//165 632 | f 4//166 63//166 104//166 633 | f 104//167 62//167 4//167 634 | f 64//168 108//168 8//168 635 | f 108//169 29//169 8//169 636 | f 116//170 105//170 106//170 637 | f 105//171 109//171 67//171 638 | f 38//172 122//172 107//172 639 | f 38//173 13//173 122//173 640 | f 38//174 11//174 13//174 641 | f 38//175 34//175 37//175 642 | f 38//176 69//176 34//176 643 | f 122//177 39//177 107//177 644 | f 110//178 109//178 116//178 645 | f 75//179 74//179 125//179 646 | f 126//180 75//180 125//180 647 | f 127//181 126//181 125//181 648 | f 113//182 128//182 125//182 649 | f 113//183 125//183 129//183 650 | f 111//184 112//184 130//184 651 | f 131//185 111//185 130//185 652 | f 100//186 128//186 113//186 653 | f 113//187 131//187 100//187 654 | f 113//188 111//188 131//188 655 | f 111//189 72//189 110//189 656 | f 44//190 115//190 78//190 657 | f 68//191 67//191 109//191 658 | f 125//192 128//192 127//192 659 | f 132//193 133//193 93//193 660 | f 126//194 134//194 75//194 661 | f 135//195 78//195 115//195 662 | f 135//196 24//196 78//196 663 | f 134//197 115//197 73//197 664 | f 136//198 137//198 138//198 665 | f 95//199 83//199 98//199 666 | f 92//200 50//200 80//200 667 | f 21//201 52//201 97//201 668 | f 97//202 82//202 21//202 669 | f 101//203 131//203 130//203 670 | f 103//204 100//204 59//204 671 | f 106//205 33//205 139//205 672 | f 120//206 101//206 130//206 673 | f 58//207 91//207 102//207 674 | f 126//208 127//208 140//208 675 | f 140//209 127//209 133//209 676 | f 141//210 117//210 133//210 677 | f 117//211 141//211 103//211 678 | f 121//212 60//212 20//212 679 | f 89//213 122//213 13//213 680 | f 89//214 13//214 12//214 681 | f 27//215 88//215 25//215 682 | f 121//216 139//216 60//216 683 | f 39//217 70//217 107//217 684 | f 77//218 129//218 76//218 685 | f 74//219 76//219 129//219 686 | f 74//220 129//220 125//220 687 | f 114//221 129//221 77//221 688 | f 77//222 15//222 72//222 689 | f 127//223 128//223 141//223 690 | f 94//224 92//224 83//224 691 | f 94//225 84//225 92//225 692 | f 142//226 132//226 143//226 693 | f 142//227 133//227 132//227 694 | f 144//228 140//228 142//228 695 | f 135//229 115//229 144//229 696 | f 145//230 146//230 118//230 697 | f 118//231 138//231 145//231 698 | f 95//232 118//232 146//232 699 | f 93//233 95//233 146//233 700 | f 136//234 138//234 147//234 701 | f 53//235 97//235 56//235 702 | f 97//236 98//236 82//236 703 | f 82//237 98//237 83//237 704 | f 112//238 110//238 116//238 705 | f 106//239 139//239 120//239 706 | f 99//240 59//240 100//240 707 | f 100//241 141//241 128//241 708 | f 141//242 133//242 127//242 709 | f 20//243 81//243 121//243 710 | f 20//244 17//244 81//244 711 | f 148//245 149//245 27//245 712 | f 124//246 123//246 61//246 713 | f 7//247 61//247 123//247 714 | f 60//248 139//248 32//248 715 | f 139//249 33//249 32//249 716 | f 107//250 30//250 86//250 717 | f 129//251 114//251 113//251 718 | f 72//252 114//252 77//252 719 | f 72//253 111//253 114//253 720 | f 140//254 134//254 126//254 721 | f 134//255 73//255 75//255 722 | f 150//256 144//256 142//256 723 | f 150//257 142//257 143//257 724 | f 150//258 149//258 148//258 725 | f 136//259 123//259 137//259 726 | f 151//260 143//260 132//260 727 | f 124//261 137//261 123//261 728 | f 151//262 138//262 137//262 729 | f 106//263 112//263 116//263 730 | f 141//264 100//264 103//264 731 | f 120//265 139//265 119//265 732 | f 121//266 119//266 139//266 733 | f 119//267 121//267 85//267 734 | f 99//268 119//268 85//268 735 | f 117//269 93//269 133//269 736 | f 63//270 136//270 104//270 737 | f 123//271 136//271 63//271 738 | f 134//272 140//272 144//272 739 | f 115//273 134//273 144//273 740 | f 136//274 96//274 104//274 741 | f 145//275 138//275 151//275 742 | f 132//276 93//276 146//276 743 | f 152//277 137//277 124//277 744 | f 96//278 136//278 147//278 745 | f 147//279 138//279 118//279 746 | f 106//280 130//280 112//280 747 | f 130//281 106//281 120//281 748 | f 101//282 100//282 131//282 749 | f 142//283 140//283 133//283 750 | f 88//284 149//284 152//284 751 | f 88//285 27//285 149//285 752 | f 24//286 148//286 27//286 753 | f 152//287 151//287 137//287 754 | f 150//288 143//288 149//288 755 | f 148//289 24//289 135//289 756 | f 144//290 150//290 148//290 757 | f 132//291 145//291 151//291 758 | f 132//292 146//292 145//292 759 | f 152//293 124//293 88//293 760 | f 98//294 96//294 147//294 761 | f 98//295 147//295 118//295 762 | f 143//296 151//296 149//296 763 | f 151//297 152//297 149//297 764 | f 148//298 135//298 144//298 765 | 766 | -------------------------------------------------------------------------------- /franka_panda/meshes/collision/link3.obj: -------------------------------------------------------------------------------- 1 | # File produced by Open Asset Import Library (http://www.assimp.sf.net) 2 | # (assimp v3.1.187496374) 3 | 4 | mtllib link3.obj.mtl 5 | 6 | # 152 vertex positions 7 | v 0.046301 -0.030187 -0.120999 8 | v 0.0549176 -0.00783486 -0.120998 9 | v 0.129196 0.00077646 -0.0296128 10 | v 0.124788 0.0913032 -0.0198981 11 | v 0.11444 0.101004 -0.0191103 12 | v 0.128178 0.0930173 -0.00466271 13 | v -0.0166753 0.0527578 -0.121001 14 | v 0.0780204 0.101031 -0.0368324 15 | v 0.00950641 0.0549678 -0.120998 16 | v 0.0986483 0.10107 -0.0330431 17 | v 0.133141 0.0661252 -0.0142478 18 | v 0.130133 0.0867177 -0.00825564 19 | v 0.135174 0.065815 -0.00126348 20 | v 0.112032 0.000600964 0.046705 21 | v 0.102467 0.000564429 0.0514689 22 | v 0.00508165 -0.0449144 -0.0383387 23 | v -0.00606089 -0.0433475 -0.0347164 24 | v 0.0821892 0.000567656 0.0551564 25 | v 0.091923 0.000611165 0.0545111 26 | v 0.113908 0.0915453 -0.0344387 27 | v 0.0511922 0.000884556 0.0454642 28 | v -0.0348435 -0.0139181 -0.0261534 29 | v -0.0301869 -0.0231463 -0.026645 30 | v -0.0284693 -0.0295749 -0.0301705 31 | v -0.022609 -0.0338033 -0.0297221 32 | v -0.0496153 0.0246669 -0.120993 33 | v -0.0511328 0.0166096 -0.0899536 34 | v -0.0480287 0.0259029 -0.101594 35 | v -0.0397191 0.0379172 -0.106977 36 | v -0.0370867 0.0410233 -0.121018 37 | v 0.137561 0.000591337 -0.00519874 38 | v 0.13498 0.000581954 -0.0173093 39 | v 0.0971327 0.0663088 0.0504643 40 | v 0.106453 0.0656105 0.0468808 41 | v 0.104194 0.0864487 0.043301 42 | v 0.115961 0.0665443 0.0405958 43 | v 0.0351182 0.04301 -0.120998 44 | v 0.0747424 0.109198 -0.013768 45 | v 0.0822207 0.107566 -0.020426 46 | v 0.0498812 0.0237866 -0.121 47 | v 0.00193477 -0.0545336 -0.101876 48 | v -0.00713005 -0.0546677 -0.120995 49 | v 0.00573527 -0.0549172 -0.120998 50 | v 0.130017 0.0653507 -0.0227708 51 | v 0.120542 0.000546333 0.040058 52 | v 0.127308 0.000507279 0.0322474 53 | v 0.132378 0.00060846 0.0238331 54 | v 0.125852 0.0659154 0.0300172 55 | v 0.133242 0.0661993 0.014384 56 | v 0.136889 0.000544185 0.0102117 57 | v 0.114547 0.0938091 0.0321403 58 | v 0.122662 0.0937473 0.0214215 59 | v 0.106871 0.101004 0.0279086 60 | v 0.124558 0.0658138 -0.0315813 61 | v 0.0544008 0.00896836 -0.121 62 | v 0.121106 0.0849743 -0.0298338 63 | v 0.0111526 -0.0509587 -0.0756272 64 | v 0.0412783 0.089486 0.0228934 65 | v -0.0397562 0.0209145 -0.0371295 66 | v -0.0386009 0.012569 -0.0295647 67 | v 0.0471173 0.10087 0.0104199 68 | v -0.0368179 0.0272153 -0.0403916 69 | v 0.0902313 0.0922979 0.0457067 70 | v 0.104702 0.0934888 0.0399991 71 | v 0.116054 0.0861657 0.0347882 72 | v 0.130388 0.0868524 0.00529165 73 | v 0.0925838 0.108213 -0.015935 74 | v 0.032959 -0.0443749 -0.120999 75 | v 0.0188416 -0.0517891 -0.121005 76 | v -0.00830475 -0.053734 -0.0988514 77 | v -0.0188009 -0.0515509 -0.107901 78 | v -0.0256919 -0.0489995 -0.120998 79 | v -0.00388374 -0.0496752 -0.0600692 80 | v 0.00727984 -0.0477786 -0.0522291 81 | v -0.00414224 -0.0527519 -0.0821236 82 | v 0.00460455 -0.0522447 -0.0788562 83 | v 0.052254 0.0900893 0.036272 84 | v 0.0531341 0.100909 0.0224573 85 | v 0.0637555 0.106924 -0.0125485 86 | v 0.0454456 0.100871 -0.00246525 87 | v -0.0484019 0.0114506 -0.0598289 88 | v -0.0515318 0.000953113 -0.0708783 89 | v -0.0461536 0.00280875 -0.0416407 90 | v 0.119397 0.100939 0.000437513 91 | v 0.0990713 0.108666 -0.00573552 92 | v 0.101588 0.107713 0.00665414 93 | v 0.116384 0.100933 0.0142785 94 | v 0.124245 0.0866282 0.024384 95 | v 0.126814 0.0927576 0.0127863 96 | v 0.0829492 0.111203 -0.00159605 97 | v 0.0866565 0.109898 -0.0119636 98 | v 0.0911955 0.109398 0.0126026 99 | v 0.0927552 0.110336 0.000886934 100 | v 0.0761002 0.110146 0.00945723 101 | v 0.0758486 0.0923713 0.0455534 102 | v 0.0700872 0.101035 0.0350396 103 | v 0.0854362 0.0659795 0.0526127 104 | v 0.0777768 0.0858052 0.0483968 105 | v 0.0714852 0.00056804 0.0541915 106 | v -0.0158556 -0.0383801 -0.0309711 107 | v 0.0592789 0.000605683 0.0501099 108 | v -0.0520083 -0.0167704 -0.102348 109 | v -0.0516073 -0.0193948 -0.121 110 | v -0.0467535 -0.0295402 -0.120958 111 | v -0.0131622 -0.0506731 -0.0776653 112 | v -0.0444125 -0.00870769 -0.0385018 113 | v -0.0477326 -0.00744948 -0.0519108 114 | v -0.0454068 -0.0182906 -0.0554967 115 | v -0.0405674 -0.0190017 -0.0368285 116 | v -0.00406568 -0.0457879 -0.0410492 117 | v -0.0289264 -0.045977 -0.0980788 118 | v -0.0211533 -0.0487489 -0.0844592 119 | v -0.0275328 -0.0440257 -0.0742818 120 | v -0.0155338 -0.0470138 -0.0585453 121 | v 0.0636723 0.0905693 0.0431581 122 | v 0.0638159 0.108261 0.000703591 123 | v -0.0449756 0.0250288 -0.0705705 124 | v -0.0403664 0.0350953 -0.0866694 125 | v 0.0694307 0.065546 0.0510132 126 | v 0.0511026 0.067234 0.0420125 127 | v -0.0378626 0.0027259 -0.0265011 128 | v -0.0527756 0.0082402 -0.0874129 129 | v -0.0546154 0.00891474 -0.120971 130 | v -0.0544221 0.00201045 -0.099662 131 | v 0.090021 0.100948 0.0361328 132 | v 0.0138294 -0.0527659 -0.101191 133 | v -0.0451381 -0.0295895 -0.0923903 134 | v -0.0480663 -0.0215763 -0.0803416 135 | v -0.0378698 -0.0403423 -0.120938 136 | v -0.0367766 -0.038714 -0.0867505 137 | v -0.0546458 -0.00760578 -0.120996 138 | v -0.0540518 -0.00520843 -0.0978562 139 | v -0.0413705 -0.0267523 -0.0569502 140 | v -0.0432959 0.0127464 -0.0380932 141 | v -0.0432738 0.00142168 -0.0336173 142 | v -0.0195257 -0.0423117 -0.0436162 143 | v -0.0131537 -0.043029 -0.0376573 144 | v -0.0459187 0.0182666 -0.058169 145 | v -0.0377853 0.0332669 -0.0634652 146 | v -0.0393173 -0.00421665 -0.0281163 147 | v -0.0252429 -0.0370233 -0.0369862 148 | v 0.0725801 0.110435 5.75046e-05 149 | v 0.0853425 0.108684 0.017137 150 | v 0.0763018 0.108275 0.0175586 151 | v 0.0593476 0.0661948 0.0471891 152 | v -0.05097 -0.0116425 -0.0766108 153 | v -0.038922 -0.0333926 -0.0698881 154 | v -0.0294214 -0.0396236 -0.0574832 155 | v -0.0337176 -0.0309051 -0.0397628 156 | v 0.0666353 0.10791 0.0113815 157 | v -0.0360201 -0.0229382 -0.0326487 158 | v -0.0396291 -0.0112274 -0.0303964 159 | 160 | # 0 UV coordinates 161 | 162 | # 300 vertex normals 163 | vn 0.755605 -0.29125 -0.586715 164 | vn 0.656821 0.719056 -0.227034 165 | vn -0.0758833 0.899412 -0.430465 166 | vn 0.0971358 0.837647 -0.537506 167 | vn 0.971592 0.184928 -0.147686 168 | vn 0.156122 -0.939062 0.306248 169 | vn 0.0124793 -0.903183 0.429075 170 | vn 0.0316437 -0.908811 0.416007 171 | vn 0.597628 0.672883 -0.435969 172 | vn -0.570419 -0.327953 0.75304 173 | vn -0.476985 -0.517166 0.710651 174 | vn -0.452596 -0.553117 0.699442 175 | vn -0.925875 0.37425 0.0518834 176 | vn -0.793799 0.608011 -0.0143223 177 | vn 0.977343 0.0371424 -0.208376 178 | vn 0.364655 0.195923 0.910297 179 | vn 0.547825 0.0447506 0.835396 180 | vn 0.879101 0.410748 -0.2418 181 | vn 0.315525 0.675802 -0.666135 182 | vn -0.103627 0.932843 -0.345058 183 | vn 0.543285 0.41729 -0.728499 184 | vn -0.0193847 -0.999681 0.0162004 185 | vn 0.908735 0.222211 -0.353302 186 | vn 0.100051 -0.927172 0.361029 187 | vn 0.196358 -0.945659 0.259178 188 | vn 0.855754 0.0366366 0.516085 189 | vn 0.991486 0.0473777 0.121288 190 | vn 0.510889 0.76994 0.382341 191 | vn 0.774937 0.036168 -0.631003 192 | vn 0.774681 0.0237721 -0.631905 193 | vn 0.85868 0.224041 -0.460949 194 | vn 0.729449 0.421435 -0.538792 195 | vn 0.276256 -0.948494 0.155056 196 | vn -0.738561 0.393793 0.547224 197 | vn -0.720077 0.646233 0.252728 198 | vn 0.26184 0.240626 0.934633 199 | vn 0.402295 0.743439 0.534281 200 | vn 0.557642 0.319139 0.766281 201 | vn 0.57305 0.366813 0.732845 202 | vn 0.973468 0.227892 -0.0206 203 | vn 0.975712 0.185859 0.115938 204 | vn 0.261137 0.920197 -0.291624 205 | vn 0.669562 -0.629634 -0.394016 206 | vn 0.463639 -0.882757 -0.0760219 207 | vn 0.487017 -0.86728 -0.103149 208 | vn 0.936806 0.0424927 -0.34726 209 | vn 0.915643 0.229764 -0.329858 210 | vn 0.445442 0.0358049 0.894595 211 | vn 0.731034 0.0451957 0.680843 212 | vn 0.233512 -0.950062 0.207013 213 | vn 0.673814 0.251075 -0.694936 214 | vn 0.695875 0.212218 -0.686092 215 | vn 0.710236 0.189787 -0.677898 216 | vn 0.430822 0.761223 -0.484697 217 | vn -0.0664893 -0.997044 0.0385153 218 | vn -0.291894 -0.955894 -0.032635 219 | vn 0.0658414 -0.987228 0.145074 220 | vn 0.312772 -0.943663 0.108044 221 | vn 0.00584728 -0.990401 0.138098 222 | vn -0.729091 0.360313 0.581894 223 | vn -0.650474 0.687457 0.322935 224 | vn -0.389733 0.906279 -0.163606 225 | vn -0.49631 0.86343 -0.0903602 226 | vn -0.978785 0.109641 0.173088 227 | vn 0.36136 0.043554 0.931409 228 | vn 0.61172 0.776228 -0.152542 229 | vn 0.355409 0.934711 -0.000297491 230 | vn 0.505882 0.78885 0.348997 231 | vn 0.722391 0.193125 0.663969 232 | vn 0.729036 0.347887 0.589475 233 | vn 0.951401 0.307238 -0.0209737 234 | vn 0.893006 0.443514 0.0763905 235 | vn 0.688893 0.72198 0.0645832 236 | vn 0.93599 0.241914 0.255735 237 | vn -0.0372388 0.989744 -0.137914 238 | vn 0.0688418 0.92062 -0.384344 239 | vn 0.095551 0.930167 -0.354483 240 | vn 0.340499 0.645652 -0.683516 241 | vn 0.837924 0.197375 -0.508848 242 | vn 0.850234 0.0447615 -0.524498 243 | vn 0.219382 -0.94809 0.23021 244 | vn 0.987113 0.0453862 -0.15345 245 | vn 0.0655441 0.993935 0.088302 246 | vn 0.21837 0.970012 0.106735 247 | vn 0.273566 0.961677 0.0184036 248 | vn 0.0260446 0.993459 0.111183 249 | vn -0.00285285 0.770965 0.636872 250 | vn 0.170168 0.220984 0.960317 251 | vn -0.00777008 0.395442 0.918458 252 | vn -0.0425883 -0.880527 0.472078 253 | vn -0.191748 -0.803264 0.563915 254 | vn -0.19091 -0.803742 0.563517 255 | vn -0.901377 -0.431063 0.0412731 256 | vn -0.266737 -0.960638 0.077632 257 | vn -0.940168 -0.270299 0.207418 258 | vn -0.923721 -0.308024 0.227728 259 | vn -0.227435 -0.973362 0.0289783 260 | vn -0.0159845 -0.934676 0.355142 261 | vn 0.0256441 -0.979376 0.200412 262 | vn 0.0321195 -0.977874 0.206717 263 | vn 0.103158 -0.97817 0.180393 264 | vn -0.484507 -0.869094 0.0996396 265 | vn -0.199867 -0.966637 0.160208 266 | vn -0.604597 0.645338 0.466907 267 | vn -0.389391 0.701599 0.59677 268 | vn -0.410574 0.73038 0.54587 269 | vn -0.237034 0.681993 0.691881 270 | vn -0.380105 0.923626 0.0493417 271 | vn -0.225004 0.928095 -0.296669 272 | vn -0.159846 0.923156 -0.349618 273 | vn -0.81576 0.577616 0.0299207 274 | vn -0.83662 0.539033 0.0975193 275 | vn -0.102539 0.168845 0.980294 276 | vn -0.100555 0.0454355 0.993894 277 | vn -0.0896979 0.0431475 0.995034 278 | vn -0.627541 0.0396046 0.777576 279 | vn -0.987242 0.148635 0.0571127 280 | vn -0.976184 0.209125 0.0577224 281 | vn 0.311023 0.38507 0.868899 282 | vn 0.198203 0.729433 0.654709 283 | vn 0.52672 0.199082 0.826397 284 | vn 0.571041 0.230517 0.787892 285 | vn 0.621506 0.754071 0.212383 286 | vn 0.623186 0.770163 0.135974 287 | vn 0.379448 0.921484 0.082979 288 | vn 0.860201 0.346861 0.37382 289 | vn 0.734037 0.393552 0.55345 290 | vn -0.0178407 0.966274 -0.256896 291 | vn 0.1441 -0.988376 0.0484652 292 | vn 0.626754 -0.716641 -0.305949 293 | vn 0.904694 0.033499 -0.424742 294 | vn 0.361994 -0.931061 0.0456714 295 | vn 0.179201 0.0463223 0.982721 296 | vn 0.277165 0.0371607 0.960103 297 | vn 0.615279 0.0362916 0.787474 298 | vn 0.755391 0.0391094 0.654106 299 | vn 0.902631 0.0497054 0.427535 300 | vn 0.998472 0.0339109 0.043638 301 | vn 0.280071 0.933251 0.224951 302 | vn 0.31357 0.925123 0.21406 303 | vn -0.684748 0.209793 0.697931 304 | vn -0.900233 -0.430173 0.0673164 305 | vn -0.579127 -0.814831 0.0257249 306 | vn -0.175665 -0.979235 0.101199 307 | vn -0.43901 -0.896717 0.0562968 308 | vn -0.593905 -0.798266 0.100238 309 | vn -0.771694 -0.63457 0.0425427 310 | vn -0.999952 0.00182509 0.00966131 311 | vn -0.968253 -0.249563 0.0142978 312 | vn -0.994748 -0.0262751 0.0989231 313 | vn -0.86847 -0.449997 0.207997 314 | vn -0.858971 0.18675 0.476753 315 | vn -0.831433 0.305556 0.464063 316 | vn -0.43428 -0.885924 0.16291 317 | vn -0.421 -0.894373 0.15118 318 | vn -0.302637 -0.929282 0.211766 319 | vn -0.194179 -0.961461 0.194648 320 | vn -0.21287 -0.955021 0.206448 321 | vn -0.157033 -0.977868 0.13826 322 | vn -0.357941 0.929189 -0.0921217 323 | vn -0.979499 0.146518 0.138254 324 | vn -0.965424 0.227908 0.12655 325 | vn -0.93498 0.291376 0.202268 326 | vn -0.859946 0.472739 0.192382 327 | vn -0.904463 0.366138 0.218838 328 | vn -0.745379 0.545784 0.382792 329 | vn -0.919801 0.369653 0.131619 330 | vn -0.940918 0.309133 0.138239 331 | vn -0.952637 0.30243 0.0319315 332 | vn -0.685479 0.715906 0.132656 333 | vn -0.809391 0.584647 0.0554433 334 | vn -0.899049 0.426162 0.100483 335 | vn -0.801263 0.582871 0.135053 336 | vn -0.812625 0.554457 0.179493 337 | vn -0.798111 0.0271841 0.601897 338 | vn -0.800706 0.12246 0.586408 339 | vn -0.676367 0.172172 0.71616 340 | vn -0.169519 -0.936355 0.307414 341 | vn -0.405108 -0.852406 0.330593 342 | vn 0.0846594 0.238439 0.967461 343 | vn 0.912961 0.240773 0.329438 344 | vn 0.150111 0.983105 -0.104743 345 | vn 0.109259 0.990321 -0.0856007 346 | vn -0.213968 0.969419 -0.120186 347 | vn 0.173592 0.972766 -0.153594 348 | vn 0.277036 0.935861 -0.217751 349 | vn 0.378314 0.921007 -0.0928686 350 | vn 0.232143 -0.972622 0.0107747 351 | vn 0.391938 -0.919881 0.0142741 352 | vn 0.948825 0.0327552 0.314098 353 | vn 0.161761 0.927234 0.337744 354 | vn 0.156134 0.924706 0.347191 355 | vn 0.262345 0.797744 0.542937 356 | vn -0.0168424 0.924567 0.380647 357 | vn -0.0335358 0.741207 0.670438 358 | vn -0.0243553 0.92665 0.375135 359 | vn -0.334696 0.211256 0.918341 360 | vn -0.269018 0.231564 0.934884 361 | vn -0.351934 0.0420098 0.935081 362 | vn -0.228949 0.329427 0.916002 363 | vn -0.413335 -0.601802 0.683366 364 | vn -0.895926 -0.441392 0.0499009 365 | vn -0.432859 -0.899184 0.0640383 366 | vn -0.339696 -0.930654 0.135978 367 | vn -0.632442 -0.772506 0.0570166 368 | vn -0.988782 -0.0961308 0.11432 369 | vn -0.980604 -0.190778 0.0449353 370 | vn -0.992859 0.0619128 0.101973 371 | vn -0.818837 -0.558696 0.131777 372 | vn -0.851157 -0.508257 0.131175 373 | vn -0.950813 -0.259783 0.168724 374 | vn -0.881386 -0.446785 0.15343 375 | vn -0.0563581 -0.995776 0.0724821 376 | vn 0.021684 -0.995103 0.096433 377 | vn -0.475957 -0.86239 0.172477 378 | vn -0.633981 0.77161 0.0518335 379 | vn -0.657524 0.748586 0.085328 380 | vn -0.847134 0.495041 0.193126 381 | vn 0.065954 0.0355046 0.997191 382 | vn -0.239675 -0.839829 0.487075 383 | vn -0.424632 -0.760583 0.491123 384 | vn -0.385842 -0.82322 0.416456 385 | vn -0.617472 -0.754725 0.221626 386 | vn 0.887396 0.183832 0.422769 387 | vn -0.0897502 0.99066 -0.102657 388 | vn 0.0701662 0.951668 -0.299006 389 | vn -0.34204 0.93186 0.121021 390 | vn -0.341756 0.924674 0.16787 391 | vn -0.0650266 0.996365 0.0550291 392 | vn -0.0334513 0.973643 0.22561 393 | vn -0.233156 0.967937 0.0934625 394 | vn -0.207773 0.972225 0.107745 395 | vn -0.496739 0.0391305 0.867018 396 | vn -0.527294 0.0434334 0.848572 397 | vn -0.509316 0.233686 0.828244 398 | vn -0.497226 0.226721 0.837475 399 | vn -0.316815 0.0363428 0.947791 400 | vn -0.299821 -0.950334 0.0835028 401 | vn -0.668209 -0.729656 0.145252 402 | vn -0.621964 -0.771785 0.13232 403 | vn -0.982644 -0.0317279 0.18277 404 | vn -0.934161 -0.326853 0.143219 405 | vn -0.774959 -0.530592 0.34338 406 | vn -0.621034 -0.129994 0.772929 407 | vn -0.860911 -0.122315 0.493834 408 | vn -0.871071 -0.130413 0.473527 409 | vn -0.942765 -0.0527834 0.329252 410 | vn -0.924231 0.138785 0.355718 411 | vn -0.71287 0.670441 0.20573 412 | vn -0.656421 0.749785 0.0832662 413 | vn -0.628388 -0.0489681 0.776358 414 | vn -0.668632 -0.593394 0.448123 415 | vn -0.631414 -0.495718 0.596305 416 | vn -0.691027 -0.700761 0.177242 417 | vn 0.260873 -0.949876 0.172278 418 | vn -0.246265 0.964418 -0.0961829 419 | vn 0.0129747 0.985028 0.171905 420 | vn -0.752925 -0.655778 0.0553095 421 | vn -0.764361 -0.636413 0.103593 422 | vn -0.975804 -0.203518 0.0799156 423 | vn -0.998591 -0.0436733 0.0301563 424 | vn -0.944154 -0.31377 0.100606 425 | vn -0.969115 -0.0832359 0.232138 426 | vn -0.982785 -0.111038 0.147664 427 | vn -0.816025 -0.527714 0.23584 428 | vn -0.708886 -0.18943 0.679409 429 | vn -0.778972 -0.341238 0.526078 430 | vn -0.671854 -0.373108 0.639846 431 | vn -0.956587 0.199092 0.212845 432 | vn 0.317957 -0.942823 0.0999454 433 | vn 0.141915 -0.986507 0.0816334 434 | vn -0.520526 -0.827345 0.211076 435 | vn -0.231354 0.924665 0.302441 436 | vn -0.228143 0.925533 0.302224 437 | vn -0.532463 -0.685293 0.496847 438 | vn -0.752665 -0.632672 0.182268 439 | vn 0.151273 -0.984791 0.0854585 440 | vn -0.616907 -0.659817 0.429032 441 | vn -0.865565 -0.253073 0.432147 442 | vn -0.723623 -0.338666 0.601395 443 | vn -0.180329 0.957405 0.225514 444 | vn 0.760732 0.224639 0.608953 445 | vn -0.342905 -0.682197 0.645774 446 | vn 5.79237e-05 2.76056e-05 -1 447 | vn -3.81102e-06 -3.2864e-05 -1 448 | vn -3.4974e-05 -8.3553e-05 -1 449 | vn 7.16203e-05 0.000138931 -1 450 | vn 1.58313e-05 -6.20828e-06 -1 451 | vn -0.000495227 -0.000126386 -1 452 | vn 7.36886e-05 0.000153226 -1 453 | vn 0.00124776 -0.00174906 -0.999998 454 | vn 0.00110945 -0.000927281 -0.999999 455 | vn 0.000195874 -3.95433e-05 -1 456 | vn 0.00430625 -0.00209649 -0.999989 457 | vn 0.0030331 -0.00384581 -0.999988 458 | vn -0.000280376 -8.16428e-05 -1 459 | vn 0.000322017 0.0001511 -1 460 | vn -0.000512111 0.000237019 -1 461 | vn -0.00247326 0.00147071 -0.999996 462 | vn -0.00469458 0.000393563 -0.999989 463 | 464 | # Mesh '' with 300 faces 465 | g 466 | usemtl DefaultMaterial 467 | f 1//1 2//1 3//1 468 | f 4//2 5//2 6//2 469 | f 7//3 8//3 9//3 470 | f 9//4 8//4 10//4 471 | f 11//5 12//5 13//5 472 | f 14//6 15//6 16//6 473 | f 17//7 16//7 18//7 474 | f 16//8 19//8 18//8 475 | f 20//9 5//9 4//9 476 | f 21//10 22//10 23//10 477 | f 23//11 24//11 21//11 478 | f 25//12 21//12 24//12 479 | f 26//13 27//13 28//13 480 | f 26//14 29//14 30//14 481 | f 11//15 31//15 32//15 482 | f 33//16 34//16 35//16 483 | f 36//17 34//17 14//17 484 | f 12//18 4//18 6//18 485 | f 37//19 9//19 20//19 486 | f 38//20 39//20 8//20 487 | f 37//21 20//21 40//21 488 | f 41//22 42//22 43//22 489 | f 11//23 44//23 4//23 490 | f 19//24 16//24 15//24 491 | f 14//25 16//25 45//25 492 | f 46//26 47//26 48//26 493 | f 13//27 49//27 50//27 494 | f 51//28 52//28 53//28 495 | f 54//29 3//29 55//29 496 | f 55//30 3//30 2//30 497 | f 44//31 56//31 4//31 498 | f 56//32 20//32 4//32 499 | f 47//33 46//33 57//33 500 | f 58//34 59//34 60//34 501 | f 58//35 61//35 62//35 502 | f 35//36 63//36 33//36 503 | f 51//37 53//37 64//37 504 | f 64//38 35//38 65//38 505 | f 64//39 65//39 51//39 506 | f 66//40 13//40 12//40 507 | f 66//41 49//41 13//41 508 | f 10//42 67//42 5//42 509 | f 1//43 3//43 68//43 510 | f 31//44 69//44 68//44 511 | f 31//45 68//45 32//45 512 | f 11//46 32//46 44//46 513 | f 12//47 11//47 4//47 514 | f 14//48 34//48 15//48 515 | f 45//49 48//49 36//49 516 | f 16//50 46//50 45//50 517 | f 40//51 20//51 56//51 518 | f 56//52 55//52 40//52 519 | f 54//53 55//53 56//53 520 | f 10//54 5//54 20//54 521 | f 41//55 70//55 42//55 522 | f 71//56 72//56 42//56 523 | f 73//57 57//57 74//57 524 | f 50//58 47//58 57//58 525 | f 75//59 76//59 73//59 526 | f 77//60 58//60 60//60 527 | f 61//61 58//61 78//61 528 | f 79//62 7//62 80//62 529 | f 7//63 30//63 80//63 530 | f 81//64 82//64 83//64 531 | f 33//65 15//65 34//65 532 | f 84//66 6//66 5//66 533 | f 85//67 86//67 84//67 534 | f 53//68 52//68 87//68 535 | f 48//69 65//69 36//69 536 | f 65//70 88//70 51//70 537 | f 12//71 6//71 66//71 538 | f 89//72 66//72 6//72 539 | f 6//73 84//73 89//73 540 | f 89//74 49//74 66//74 541 | f 38//75 90//75 91//75 542 | f 8//76 39//76 10//76 543 | f 39//77 67//77 10//77 544 | f 20//78 9//78 10//78 545 | f 54//79 56//79 44//79 546 | f 3//80 54//80 44//80 547 | f 74//81 46//81 16//81 548 | f 13//82 31//82 11//82 549 | f 90//83 92//83 93//83 550 | f 93//84 92//84 86//84 551 | f 86//85 85//85 93//85 552 | f 90//86 94//86 92//86 553 | f 95//87 63//87 96//87 554 | f 63//88 97//88 33//88 555 | f 63//89 95//89 98//89 556 | f 99//90 17//90 18//90 557 | f 100//91 17//91 101//91 558 | f 101//92 17//92 99//92 559 | f 102//93 103//93 104//93 560 | f 70//94 105//94 71//94 561 | f 106//95 107//95 108//95 562 | f 108//96 109//96 106//96 563 | f 70//97 71//97 42//97 564 | f 110//98 16//98 17//98 565 | f 74//99 110//99 73//99 566 | f 16//100 110//100 74//100 567 | f 76//101 57//101 73//101 568 | f 111//102 112//102 113//102 569 | f 105//103 73//103 114//103 570 | f 77//104 78//104 58//104 571 | f 96//105 77//105 115//105 572 | f 96//106 78//106 77//106 573 | f 95//107 96//107 115//107 574 | f 116//108 80//108 61//108 575 | f 7//109 79//109 38//109 576 | f 8//110 7//110 38//110 577 | f 28//111 29//111 26//111 578 | f 28//112 117//112 118//112 579 | f 97//113 98//113 119//113 580 | f 97//114 119//114 99//114 581 | f 97//115 99//115 18//115 582 | f 120//116 121//116 21//116 583 | f 122//117 123//117 124//117 584 | f 123//118 122//118 27//118 585 | f 63//119 35//119 64//119 586 | f 64//120 125//120 63//120 587 | f 36//121 35//121 34//121 588 | f 36//122 65//122 35//122 589 | f 52//123 89//123 87//123 590 | f 89//124 84//124 87//124 591 | f 84//125 86//125 87//125 592 | f 88//126 89//126 52//126 593 | f 51//127 88//127 52//127 594 | f 91//128 39//128 38//128 595 | f 43//129 126//129 41//129 596 | f 3//130 32//130 68//130 597 | f 44//131 32//131 3//131 598 | f 50//132 126//132 69//132 599 | f 33//133 97//133 19//133 600 | f 19//134 15//134 33//134 601 | f 45//135 36//135 14//135 602 | f 45//136 46//136 48//136 603 | f 49//137 48//137 47//137 604 | f 50//138 31//138 13//138 605 | f 86//139 92//139 53//139 606 | f 53//140 87//140 86//140 607 | f 60//141 120//141 77//141 608 | f 127//142 128//142 102//142 609 | f 129//143 72//143 111//143 610 | f 105//144 70//144 75//144 611 | f 111//145 72//145 71//145 612 | f 130//146 111//146 113//146 613 | f 129//147 127//147 104//147 614 | f 131//148 124//148 123//148 615 | f 131//149 103//149 102//149 616 | f 132//150 82//150 124//150 617 | f 133//151 109//151 108//151 618 | f 134//152 135//152 60//152 619 | f 134//153 60//153 59//153 620 | f 113//154 114//154 136//154 621 | f 113//155 112//155 114//155 622 | f 136//156 114//156 137//156 623 | f 114//157 73//157 110//157 624 | f 137//158 114//158 110//158 625 | f 105//159 75//159 73//159 626 | f 80//160 116//160 79//160 627 | f 81//161 122//161 82//161 628 | f 81//162 27//162 122//162 629 | f 134//163 138//163 81//163 630 | f 59//164 117//164 138//164 631 | f 59//165 138//165 134//165 632 | f 58//166 62//166 59//166 633 | f 117//167 27//167 138//167 634 | f 27//168 81//168 138//168 635 | f 26//169 123//169 27//169 636 | f 61//170 118//170 139//170 637 | f 29//171 28//171 118//171 638 | f 27//172 117//172 28//172 639 | f 117//173 139//173 118//173 640 | f 139//174 117//174 62//174 641 | f 140//175 121//175 135//175 642 | f 60//176 135//176 121//176 643 | f 121//177 120//177 60//177 644 | f 110//178 17//178 137//178 645 | f 136//179 137//179 141//179 646 | f 63//180 98//180 97//180 647 | f 89//181 88//181 49//181 648 | f 93//182 85//182 91//182 649 | f 93//183 91//183 90//183 650 | f 79//184 142//184 38//184 651 | f 91//185 85//185 67//185 652 | f 5//186 67//186 85//186 653 | f 85//187 84//187 5//187 654 | f 126//188 43//188 69//188 655 | f 69//189 31//189 50//189 656 | f 49//190 47//190 50//190 657 | f 53//191 143//191 125//191 658 | f 53//192 92//192 143//192 659 | f 53//193 125//193 64//193 660 | f 125//194 143//194 96//194 661 | f 96//195 63//195 125//195 662 | f 96//196 143//196 144//196 663 | f 115//197 145//197 119//197 664 | f 115//198 119//198 98//198 665 | f 145//199 101//199 119//199 666 | f 95//200 115//200 98//200 667 | f 101//201 21//201 25//201 668 | f 104//202 127//202 102//202 669 | f 112//203 111//203 71//203 670 | f 112//204 105//204 114//204 671 | f 130//205 129//205 111//205 672 | f 132//206 146//206 82//206 673 | f 102//207 132//207 131//207 674 | f 122//208 124//208 82//208 675 | f 127//209 147//209 133//209 676 | f 127//210 133//210 128//210 677 | f 108//211 107//211 146//211 678 | f 133//212 108//212 128//212 679 | f 75//213 70//213 41//213 680 | f 41//214 76//214 75//214 681 | f 113//215 136//215 148//215 682 | f 30//216 29//216 80//216 683 | f 118//217 61//217 80//217 684 | f 117//218 59//218 62//218 685 | f 97//219 18//219 19//219 686 | f 137//220 17//220 100//220 687 | f 141//221 100//221 25//221 688 | f 137//222 100//222 141//222 689 | f 149//223 148//223 141//223 690 | f 88//224 48//224 49//224 691 | f 142//225 90//225 38//225 692 | f 91//226 67//226 39//226 693 | f 150//227 116//227 61//227 694 | f 150//228 61//228 78//228 695 | f 94//229 90//229 142//229 696 | f 143//230 94//230 144//230 697 | f 116//231 150//231 142//231 698 | f 142//232 150//232 94//232 699 | f 145//233 21//233 101//233 700 | f 21//234 145//234 120//234 701 | f 115//235 77//235 120//235 702 | f 120//236 145//236 115//236 703 | f 99//237 119//237 101//237 704 | f 71//238 105//238 112//238 705 | f 148//239 147//239 130//239 706 | f 148//240 130//240 113//240 707 | f 83//241 82//241 107//241 708 | f 108//242 146//242 128//242 709 | f 149//243 151//243 109//243 710 | f 22//244 21//244 140//244 711 | f 135//245 152//245 140//245 712 | f 135//246 106//246 152//246 713 | f 135//247 83//247 106//247 714 | f 83//248 135//248 134//248 715 | f 62//249 61//249 139//249 716 | f 80//250 29//250 118//250 717 | f 121//251 140//251 21//251 718 | f 151//252 149//252 24//252 719 | f 151//253 24//253 23//253 720 | f 147//254 148//254 149//254 721 | f 46//255 74//255 57//255 722 | f 79//256 116//256 142//256 723 | f 92//257 94//257 143//257 724 | f 130//258 127//258 129//258 725 | f 130//259 147//259 127//259 726 | f 132//260 102//260 146//260 727 | f 124//261 131//261 132//261 728 | f 146//262 102//262 128//262 729 | f 106//263 83//263 107//263 730 | f 146//264 107//264 82//264 731 | f 149//265 109//265 133//265 732 | f 140//266 152//266 22//266 733 | f 152//267 109//267 151//267 734 | f 22//268 151//268 23//268 735 | f 134//269 81//269 83//269 736 | f 57//270 126//270 50//270 737 | f 126//271 76//271 41//271 738 | f 141//272 148//272 136//272 739 | f 96//273 150//273 78//273 740 | f 150//274 96//274 144//274 741 | f 141//275 25//275 24//275 742 | f 133//276 147//276 149//276 743 | f 126//277 57//277 76//277 744 | f 149//278 141//278 24//278 745 | f 152//279 106//279 109//279 746 | f 151//280 22//280 152//280 747 | f 144//281 94//281 150//281 748 | f 65//282 48//282 88//282 749 | f 25//283 100//283 101//283 750 | f 7//284 2//284 1//284 751 | f 7//285 40//285 55//285 752 | f 7//286 55//286 2//286 753 | f 7//287 37//287 40//287 754 | f 7//288 1//288 68//288 755 | f 7//289 69//289 43//289 756 | f 7//290 9//290 37//290 757 | f 7//291 123//291 26//291 758 | f 129//292 104//292 7//292 759 | f 42//293 72//293 7//293 760 | f 104//294 103//294 7//294 761 | f 7//295 26//295 30//295 762 | f 7//296 43//296 42//296 763 | f 7//297 68//297 69//297 764 | f 103//298 131//298 7//298 765 | f 131//299 123//299 7//299 766 | f 72//300 129//300 7//300 767 | 768 | --------------------------------------------------------------------------------