Merge remote-tracking branch 'bp/master'

This commit is contained in:
Erwin Coumans 2017-02-16 13:41:12 -08:00
commit 08b83c3cd8
21 changed files with 3605 additions and 0 deletions

View File

@ -0,0 +1,21 @@
newmtl porcelain
Ka 0.000000 0.000000 0.000000
Kd 1.000000 1.000000 1.000000
Ks 0.200000 0.200000 0.200000
d 1.000000
illum 2
Ns 0.000000
newmtl solid_color
Ka 0.000000 0.000000 0.000000
Kd 1.000000 1.000000 1.000000
Ks 0.200000 0.200000 0.200000
d 1.000000
illum 2
Ns 0.000000
newmtl pan_tefal
Ka 0.000000 0.000000 0.000000
Kd 0.609804 0.494118 0.486275
Ks 0.330000 0.330000 0.330000
map_Kd pan_tefal.jpg

252
data/dinnerware/generate.py Normal file
View File

@ -0,0 +1,252 @@
from __future__ import print_function
import numpy as np
class Obj:
def __init__(self, fn):
self.ind_v = 0
self.ind_vt = 0
self.ind_vn = 0
self.fn = fn
self.out = open(fn + ".tmp", "w")
self.out.write("mtllib dinnerware.mtl\n")
def __del__(self):
self.out.close()
import shutil
shutil.move(self.fn + ".tmp", self.fn)
def push_v(self, v):
self.out.write("v %f %f %f\n" % (v[0],v[1],v[2]))
self.ind_v += 1
return self.ind_v
def push_vt(self, vt):
self.out.write("vt %f %f\n" % (vt[0],vt[1]))
self.ind_vt += 1
return self.ind_vt
def push_vn(self, vn):
vn /= np.linalg.norm(vn)
self.out.write("vn %f %f %f\n" % (vn[0],vn[1],vn[2]))
self.ind_vn += 1
return self.ind_vn
def convex_hull(points, vind, nind, tind, obj):
"super ineffective"
cnt = len(points)
for a in range(cnt):
for b in range(a+1,cnt):
for c in range(b+1,cnt):
vec1 = points[a] - points[b]
vec2 = points[a] - points[c]
n = np.cross(vec1, vec2)
n /= np.linalg.norm(n)
C = np.dot(n, points[a])
inner = np.inner(n, points)
pos = (inner <= C+0.0001).all()
neg = (inner >= C-0.0001).all()
if not pos and not neg: continue
obj.out.write("f %i//%i %i//%i %i//%i\n" % (
(vind[a], nind[a], vind[b], nind[b], vind[c], nind[c])
if (inner - C).sum() < 0 else
(vind[a], nind[a], vind[c], nind[c], vind[b], nind[b]) ) )
#obj.out.write("f %i/%i/%i %i/%i/%i %i/%i/%i\n" % (
# (vind[a], tind[a], nind[a], vind[b], tind[b], nind[b], vind[c], tind[c], nind[c])
# if (inner - C).sum() < 0 else
# (vind[a], tind[a], nind[a], vind[c], tind[c], nind[c], vind[b], tind[b], nind[b]) ) )
def test_convex_hull():
obj = Obj("convex_test.obj")
vlist = np.random.uniform( low=-0.1, high=+0.1, size=(100,3) )
nlist = vlist.copy()
tlist = np.random.uniform( low=0, high=+1, size=(100,2) )
vind = [obj.push_v(xyz) for xyz in vlist]
nind = [obj.push_vn(xyz) for xyz in nlist]
tind = [obj.push_vt(uv) for uv in tlist]
convex_hull(vlist, vind, nind, tind, obj)
class Contour:
def __init__(self):
self.vprev_vind = None
def f(self, obj, vlist_vind, vlist_tind, vlist_nind):
cnt = len(vlist_vind)
for i1 in range(cnt):
i2 = i1-1
obj.out.write("f %i/%i/%i %i/%i/%i %i/%i/%i\n" % (
vlist_vind[i2], vlist_tind[i2], vlist_nind[i2],
vlist_vind[i1], vlist_tind[i1], vlist_nind[i1],
self.vprev_vind[i1], self.vprev_tind[i1], self.vprev_nind[i1],
) )
obj.out.write("f %i/%i/%i %i/%i/%i %i/%i/%i\n" % (
vlist_vind[i2], vlist_tind[i2], vlist_nind[i2],
self.vprev_vind[i1], self.vprev_tind[i1], self.vprev_nind[i1],
self.vprev_vind[i2], self.vprev_tind[i2], self.vprev_nind[i2],
) )
def belt(self, obj, vlist, nlist, tlist):
vlist_vind = [obj.push_v(xyz) for xyz in vlist]
vlist_tind = [obj.push_vt(xyz) for xyz in tlist]
vlist_nind = [obj.push_vn(xyz) for xyz in nlist]
if self.vprev_vind:
self.f(obj, vlist_vind, vlist_tind, vlist_nind)
else:
self.first_vind = vlist_vind
self.first_tind = vlist_tind
self.first_nind = vlist_nind
self.vprev_vind = vlist_vind
self.vprev_tind = vlist_tind
self.vprev_nind = vlist_nind
def finish(self, obj):
self.f(obj, self.first_vind, self.first_tind, self.first_nind)
def test_contour():
RAD1 = 2.0
RAD2 = 1.5
obj = Obj("torus.obj")
obj.out.write("usemtl porcelain\n")
contour = Contour()
for step in range(100):
angle = step/100.0*2*np.pi
belt_v = []
belt_n = []
belt_t = []
for b in range(50):
beta = b/50.0*2*np.pi
r = RAD2*np.cos(beta) + RAD1
z = RAD2*np.sin(beta)
belt_v.append( np.array( [
np.cos(angle)*r,
np.sin(angle)*r,
z] ) )
belt_n.append( np.array( [
np.cos(angle)*np.cos(beta),
np.sin(angle)*np.cos(beta),
np.sin(beta)] ) )
belt_t.append( (0,0) )
contour.belt(obj, belt_v, belt_n, belt_t)
contour.finish(obj)
#test_convex_hull()
#test_contour()
class RotationFigureParams:
pass
def generate_plate(p, obj, collision_prefix):
contour = Contour()
belt_vlist_3d_prev = None
for step in range(p.N_VIZ+1):
angle = step/float(p.N_VIZ)*2*np.pi
if step % p.COLLISION_EVERY == 0:
vlist_3d = []
for x,y in p.belt_simple:
vlist_3d.append( [
np.cos(angle)*x*1.06,
np.sin(angle)*x*1.06,
y
] )
if belt_vlist_3d_prev:
obj2 = Obj(collision_prefix % (step / p.COLLISION_EVERY))
obj2.out.write("usemtl pan_tefal\n")
vlist = np.array( vlist_3d + belt_vlist_3d_prev )
vlist[len(vlist_3d):] *= 1.01 # break points on one plane
vlist[0,0:2] += 0.01*vlist[len(vlist_3d),0:2]
vlist[len(vlist_3d),0:2] += 0.01*vlist[0,0:2]
nlist = np.random.uniform( low=-1, high=+1, size=vlist.shape )
tlist = np.random.uniform( low=0, high=+1, size=(len(vlist),2) )
vind = [obj2.push_v(xyz) for xyz in vlist]
nind = [obj2.push_vn(xyz) for xyz in nlist]
convex_hull(vlist, vind, nind, None, obj2)
belt_vlist_3d_prev = vlist_3d
if step==p.N_VIZ: break
belt_v = []
belt_n = []
belt_t = []
for x,y,nx,ny in p.belt:
belt_v.append( np.array( [
np.cos(angle)*x,
np.sin(angle)*x,
y
] ) )
belt_n.append( np.array( [
np.cos(angle)*nx,
np.sin(angle)*nx,
ny
] ) )
if ny-nx >= 0:
belt_t.append( (
127.0/512 + np.cos(angle)*x/p.RAD_HIGH*105/512,
(512-135.0)/512 + np.sin(angle)*x/p.RAD_HIGH*105/512) )
else:
belt_t.append( (
382.0/512 + np.cos(angle)*x/p.RAD_HIGH*125/512,
(512-380.0)/512 + np.sin(angle)*x/p.RAD_HIGH*125/512) )
contour.belt(obj, belt_v, belt_n, belt_t)
contour.finish(obj)
def tefal():
p = RotationFigureParams()
p.RAD_LOW = 0.240/2
p.RAD_HIGH = 0.255/2
p.H = 0.075
p.THICK = 0.005
p.N_VIZ = 30
p.COLLISION_EVERY = 5
p.belt = [
(p.RAD_HIGH-p.THICK, p.H, -1,0), # x y norm
(p.RAD_HIGH , p.H, 0,1),
(p.RAD_HIGH+p.THICK, p.H, +1,0),
(p.RAD_LOW+p.THICK, p.THICK, +1,0),
(p.RAD_LOW , 0, 0,-1),
( 0, 0, 0,-1),
( 0, p.THICK, 0,1),
(p.RAD_LOW-p.THICK, p.THICK, 0,1),
(p.RAD_LOW-p.THICK, 3*p.THICK,-1,0),
]
p.belt.reverse()
p.belt_simple = [
(p.RAD_HIGH-p.THICK, p.H),
(p.RAD_HIGH+p.THICK, p.H),
(p.RAD_LOW , 0),
(p.RAD_LOW-p.THICK , 0)
]
obj = Obj("pan_tefal.obj")
obj.out.write("usemtl pan_tefal\n")
generate_plate(p, obj, "pan_tefal-collision%02i.obj")
def plate():
p = RotationFigureParams()
p.RAD_LOW = 0.110/2
p.RAD_HIGH = 0.190/2
p.H = 0.060
p.THICK = 0.003
p.N_VIZ = 30
p.COLLISION_EVERY = 5
p.belt = [
(p.RAD_HIGH-p.THICK, p.H, -0.9,0.5), # x y norm
(p.RAD_HIGH , p.H, 0,1),
(p.RAD_HIGH+p.THICK, p.H, +1,0),
(p.RAD_LOW+p.THICK, p.THICK, +1,0),
(p.RAD_LOW , 0, 0,-1),
( 0, 0, 0,-1),
( 0, p.THICK, 0,1),
(p.RAD_LOW-3*p.THICK, p.THICK, 0,1),
(p.RAD_LOW-p.THICK, 3*p.THICK,-0.5,1.0),
]
p.belt.reverse()
p.belt_simple = [
(p.RAD_HIGH-p.THICK, p.H),
(p.RAD_HIGH+p.THICK, p.H),
(p.RAD_LOW , 0),
(p.RAD_LOW-p.THICK , 0)
]
obj = Obj("plate.obj")
obj.out.write("usemtl solid_color\n")
generate_plate(p, obj, "plate-collision%02i.obj")
plate()

View File

@ -0,0 +1,36 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v 0.066236 0.112453 0.075000
v 0.070225 0.121633 0.075000
v 0.063600 0.110158 0.000000
v 0.060950 0.105568 0.000000
v 0.131811 0.001125 0.075750
v 0.141855 0.000000 0.075750
v 0.128472 0.000000 0.000000
v 0.123119 0.000000 0.000000
vn 0.166577 -0.705775 0.688573
vn -0.727212 0.200240 0.656556
vn 0.637357 -0.756451 -0.146827
vn -0.340753 -0.711716 0.614286
vn 0.122979 0.860640 0.494141
vn 0.770289 -0.238643 0.591358
vn -0.635571 -0.120420 0.762594
vn -0.070367 0.649517 -0.757084
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 4//4 8//8
f 1//1 5//5 6//6
f 1//1 8//8 5//5
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,36 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v -0.064269 0.113589 0.075000
v -0.070225 0.121633 0.075000
v -0.063600 0.110158 0.000000
v -0.060950 0.105568 0.000000
v 0.064932 0.114714 0.075750
v 0.070927 0.122850 0.075750
v 0.064236 0.111260 0.000000
v 0.061560 0.106624 0.000000
vn -0.693799 -0.019731 0.719898
vn -0.782132 -0.410509 0.468776
vn 0.057085 0.837906 0.542821
vn 0.549444 0.695908 -0.462410
vn -0.488898 0.761278 -0.425951
vn 0.527121 -0.833525 0.165465
vn 0.764499 0.413217 0.494766
vn -0.190845 -0.280421 -0.940714
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 4//4 8//8
f 1//1 5//5 6//6
f 1//1 8//8 5//5
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,36 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v -0.130506 0.001136 0.075000
v -0.140450 0.000000 0.075000
v -0.127200 0.000000 0.000000
v -0.121900 0.000000 0.000000
v -0.066879 0.113589 0.075750
v -0.070927 0.122850 0.075750
v -0.064236 0.111260 0.000000
v -0.061559 0.106624 0.000000
vn -0.005755 -0.840864 -0.541216
vn -0.393829 -0.423425 0.815849
vn 0.855454 0.357218 -0.374959
vn -0.535483 -0.042852 -0.843458
vn 0.593436 -0.341238 0.728966
vn -0.684303 -0.643863 0.342301
vn -0.543719 -0.112982 0.831628
vn -0.432322 -0.733068 0.525080
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 4//4 8//8
f 1//1 5//5 6//6
f 1//1 8//8 5//5
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,36 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v -0.066236 -0.112453 0.075000
v -0.070225 -0.121633 0.075000
v -0.063600 -0.110158 0.000000
v -0.060950 -0.105568 0.000000
v -0.131811 -0.001125 0.075750
v -0.141855 0.000000 0.075750
v -0.128472 0.000000 0.000000
v -0.123119 0.000000 0.000000
vn -0.706733 -0.191066 0.681192
vn 0.444900 -0.691793 0.568758
vn 0.088502 0.609907 0.787515
vn -0.441942 -0.815296 0.374139
vn -0.595750 0.064829 0.800549
vn -0.683770 -0.459760 -0.566639
vn -0.132581 -0.607583 0.783112
vn -0.220415 -0.970551 0.097201
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 4//4 8//8
f 1//1 5//5 6//6
f 1//1 8//8 5//5
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,36 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v 0.064269 -0.113589 0.075000
v 0.070225 -0.121633 0.075000
v 0.063600 -0.110158 0.000000
v 0.060950 -0.105568 0.000000
v -0.064932 -0.114714 0.075750
v -0.070927 -0.122850 0.075750
v -0.064236 -0.111260 0.000000
v -0.061560 -0.106624 0.000000
vn 0.337731 -0.812635 0.474934
vn -0.151863 -0.910103 0.385551
vn -0.786673 0.591186 -0.177887
vn 0.661692 0.712532 0.233371
vn -0.904799 0.159708 -0.394757
vn 0.641963 -0.023667 -0.766370
vn -0.472889 -0.878846 0.063294
vn 0.722857 0.565784 -0.396694
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 4//4 8//8
f 1//1 5//5 6//6
f 1//1 8//8 5//5
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,36 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v 0.130506 -0.001136 0.075000
v 0.140450 -0.000000 0.075000
v 0.127200 -0.000000 0.000000
v 0.121900 -0.000000 0.000000
v 0.066879 -0.113589 0.075750
v 0.070927 -0.122850 0.075750
v 0.064236 -0.111260 0.000000
v 0.061560 -0.106624 0.000000
vn -0.793944 -0.586742 -0.159329
vn 0.466324 0.641735 -0.608867
vn -0.911102 -0.220305 -0.348365
vn -0.616532 -0.769008 0.168863
vn -0.642390 0.561142 0.521973
vn -0.527497 0.482140 0.699491
vn -0.264570 0.491705 0.829596
vn -0.595670 0.662065 0.454804
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 4//4 8//8
f 1//1 5//5 6//6
f 1//1 8//8 5//5
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,84 @@
<?xml version="1.0"?>
<robot name="cube">
<!-- Frying pan model, Copyright (c) 2016 Oleg Klimov -->
<!-- LICENSE: CC-SA -->
<link name="cube">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="pan_tefal.obj"/>
</geometry>
</visual>
<visual> <!-- handle -->
<geometry>
<cylinder radius="0.011" length="0.185"/>
</geometry>
<origin rpy="0 1.4 0" xyz="0.22 0 0.07"/>
<material name="stainless">
<color rgba="0.3 0.3 .3 1"/>
</material>
</visual>
<collision> <!-- handle -->
<geometry>
<cylinder radius="0.011" length="0.185"/>
</geometry>
<origin rpy="0 1.4 0" xyz="0.22 0 0.07"/>
</collision>
<collision> <!-- bottom -->
<geometry>
<cylinder radius="0.12" length="0.01"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.005"/>
</collision>
<collision>
<geometry>
<mesh filename="pan_tefal-collision01.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="pan_tefal-collision02.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="pan_tefal-collision03.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="pan_tefal-collision04.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="pan_tefal-collision05.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="pan_tefal-collision06.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<inertial>
<mass value="2."/> <!-- mr^2 = 0.5*0.12^2 = 0.0072 for Z axis, lighter along other axis -->
<inertia ixx="0.005" iyy="0.005" izz="0.0072"/>
</inertial>
</link>
</robot>

View File

@ -0,0 +1,34 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v 0.049745 0.084455 0.060000
v 0.051940 0.089963 0.060000
v 0.029150 0.050489 0.000000
v 0.027560 0.047735 0.000000
v 0.098993 0.000845 0.060600
v 0.104919 0.000000 0.060600
v 0.058883 0.000000 0.000000
v 0.055671 0.000000 0.000000
vn -0.962255 -0.069189 0.263208
vn 0.888900 -0.266051 0.372926
vn -0.704117 -0.151605 -0.693711
vn -0.096471 -0.952673 -0.288284
vn 0.353510 0.535276 0.767144
vn 0.049583 0.551162 -0.832924
vn -0.080990 0.081838 -0.993349
vn 0.250326 0.614585 -0.748080
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 5//5 6//6
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,34 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v -0.048268 0.085308 0.060000
v -0.051940 0.089963 0.060000
v -0.029150 0.050489 0.000000
v -0.027560 0.047735 0.000000
v 0.048765 0.086152 0.060600
v 0.052459 0.090862 0.060600
v 0.029442 0.050994 0.000000
v 0.027836 0.048213 0.000000
vn -0.471567 -0.127056 -0.872629
vn 0.616670 0.313448 -0.722127
vn 0.434277 -0.589449 -0.681141
vn -0.696898 0.673938 -0.245235
vn -0.964280 0.142499 -0.223288
vn -0.118273 0.245678 -0.962109
vn 0.333505 0.310546 -0.890133
vn 0.592935 -0.751851 -0.288355
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 5//5 6//6
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,34 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v -0.098012 0.000853 0.060000
v -0.103880 0.000000 0.060000
v -0.058300 0.000000 0.000000
v -0.055120 0.000000 0.000000
v -0.050228 0.085308 0.060600
v -0.052459 0.090862 0.060600
v -0.029441 0.050994 0.000000
v -0.027836 0.048213 0.000000
vn -0.570326 0.565919 -0.595368
vn -0.987481 0.122113 -0.099846
vn 0.256877 0.509622 0.821157
vn -0.149510 -0.272737 0.950401
vn 0.250981 -0.885212 0.391675
vn 0.623883 0.757497 -0.192269
vn 0.116527 -0.876135 -0.467769
vn -0.474452 0.562082 -0.677466
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 5//5 6//6
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,34 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v -0.049745 -0.084455 0.060000
v -0.051940 -0.089963 0.060000
v -0.029150 -0.050489 0.000000
v -0.027560 -0.047735 0.000000
v -0.098993 -0.000845 0.060600
v -0.104919 0.000000 0.060600
v -0.058883 0.000000 0.000000
v -0.055671 0.000000 0.000000
vn -0.454516 0.625342 -0.634321
vn -0.518286 -0.578386 0.629959
vn -0.173259 0.226757 -0.958417
vn -0.247982 -0.510538 -0.823320
vn -0.417030 0.446958 0.791400
vn -0.004783 -0.717725 -0.696310
vn 0.273713 0.103751 0.956199
vn 0.429490 0.309534 -0.848367
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 5//5 6//6
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,34 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v 0.048268 -0.085308 0.060000
v 0.051940 -0.089963 0.060000
v 0.029150 -0.050489 0.000000
v 0.027560 -0.047735 0.000000
v -0.048765 -0.086152 0.060600
v -0.052459 -0.090862 0.060600
v -0.029442 -0.050994 0.000000
v -0.027836 -0.048213 0.000000
vn 0.404852 0.441710 0.800617
vn -0.882548 -0.029017 0.469326
vn 0.182767 0.981935 0.048984
vn -0.768458 0.392626 -0.505290
vn 0.592713 0.805382 -0.007215
vn 0.400028 0.869068 0.291031
vn -0.642772 0.691166 0.330355
vn 0.104670 0.652086 -0.750885
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 5//5 6//6
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

View File

@ -0,0 +1,34 @@
mtllib dinnerware.mtl
usemtl pan_tefal
v 0.098012 -0.000853 0.060000
v 0.103880 -0.000000 0.060000
v 0.058300 -0.000000 0.000000
v 0.055120 -0.000000 0.000000
v 0.050228 -0.085308 0.060600
v 0.052459 -0.090862 0.060600
v 0.029442 -0.050994 0.000000
v 0.027836 -0.048213 0.000000
vn 0.692885 0.707963 -0.136739
vn 0.408978 0.907585 0.095006
vn -0.212286 -0.468709 0.857465
vn 0.297056 -0.618852 0.727172
vn 0.708170 0.492350 -0.506050
vn 0.745762 -0.289343 -0.600100
vn 0.808951 0.000863 -0.587876
vn 0.926527 0.350079 -0.137811
f 1//1 2//2 4//4
f 1//1 5//5 2//2
f 1//1 6//6 2//2
f 1//1 4//4 5//5
f 1//1 5//5 6//6
f 2//2 3//3 4//4
f 2//2 7//7 3//3
f 2//2 5//5 6//6
f 2//2 6//6 7//7
f 3//3 7//7 4//4
f 3//3 8//8 4//4
f 3//3 7//7 8//8
f 4//4 8//8 5//5
f 4//4 7//7 8//8
f 5//5 8//8 6//6
f 6//6 8//8 7//7

1352
data/dinnerware/plate.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,69 @@
<?xml version="1.0"?>
<robot name="cube">
<!-- Frying pan model, Copyright (c) 2016 Oleg Klimov -->
<!-- LICENSE: CC-SA -->
<link name="cube">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="plate.obj"/>
</geometry>
</visual>
<collision> <!-- bottom -->
<geometry>
<cylinder radius="0.05" length="0.005"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.0025"/>
</collision>
<collision>
<geometry>
<mesh filename="plate-collision01.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="plate-collision02.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="plate-collision03.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="plate-collision04.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="plate-collision05.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<collision>
<geometry>
<mesh filename="plate-collision06.obj"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<inertial>
<mass value="0.5"/> <!-- mr^2 = 0.5*0.12^2 = 0.0072 for Z axis, lighter along other axis -->
<inertia ixx="0.005" iyy="0.005" izz="0.0072"/>
</inertial>
</link>
</robot>

30
data/sphere_1cm.urdf Normal file
View File

@ -0,0 +1,30 @@
<?xml version="0.0" ?>
<robot name="urdf_robot">
<link name="base_link">
<contact>
<rolling_friction value="0.0001"/>
<spinning_friction value="0.0001"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value=".1"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="textured_sphere_smooth.obj" scale="0.005 0.005 0.005"/>
</geometry>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<sphere radius="0.005"/>
</geometry>
</collision>
</link>
</robot>

View File

@ -0,0 +1,25 @@
import pybullet as p
import time
p.connect(p.GUI)
p.loadURDF("plane.urdf",useMaximalCoordinates=True)
p.loadURDF("tray/traybox.urdf",useMaximalCoordinates=True)
gravXid = p.addUserDebugParameter("gravityX",-10,10,0)
gravYid = p.addUserDebugParameter("gravityY",-10,10,0)
gravZid = p.addUserDebugParameter("gravityZ",-10,10,0)
p.setPhysicsEngineParameter(numSolverIterations=10)
for i in range (10):
for j in range (10):
for k in range (5):
ob = p.loadURDF("sphere_1cm.urdf",[0.02*i,0.02*j,0.2+0.02*k],useMaximalCoordinates=True)
p.setGravity(0,0,-10)
p.setRealTimeSimulation(1)
while True:
gravX = p.readUserDebugParameter(gravXid)
gravY = p.readUserDebugParameter(gravYid)
gravZ = p.readUserDebugParameter(gravZid)
p.setGravity(gravX,gravY,gravZ)
time.sleep(1)