mirror of
https://github.com/wassname/pyrobolearn.git
synced 2026-09-09 11:31:38 +08:00
add few worlds
This commit is contained in:
@@ -136,9 +136,6 @@ implemented_robots = list(implemented_robots)
|
||||
# TODO: fix problem with icub
|
||||
implemented_robots.remove('icub')
|
||||
|
||||
print(len(implemented_robots), implemented_robots)
|
||||
|
||||
|
||||
# create dictionary that maps robot names to robot classes
|
||||
robot_names_to_classes = {}
|
||||
for robot_name in implemented_robots:
|
||||
@@ -162,5 +159,3 @@ for robot_name in implemented_robots:
|
||||
robot_names_to_classes[name] = cls
|
||||
|
||||
implemented_robots = set(list(robot_names_to_classes.keys()))
|
||||
|
||||
print(len(implemented_robots), implemented_robots)
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
Brian Delhaisse:
|
||||
- For the bottles, I split them into different OBJ files, and centered them.
|
||||
- For the ikea glass, I rescaled it and converted it into an OBJ file.
|
||||
@@ -0,0 +1,17 @@
|
||||
This file is under the Creative Commons Attribution 4.0 International license:
|
||||
|
||||
http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
Your are free to:
|
||||
|
||||
Share - copy and redistribute the material in any medium or format
|
||||
|
||||
Adapt - remix, transform, and build upon the material for any purpose, even commercially.
|
||||
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution: If you want distribute this work, or derivates, you must attribute it to
|
||||
zacko <https://sketchfab.com/zacko> (for the bottles)
|
||||
jiri kuba <https://sketchfab.com/kuba.jirka>
|
||||
@@ -0,0 +1,12 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl glass.001
|
||||
Ns 96.078431
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.640000 0.640000 0.640000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl glass
|
||||
Ns 96.078431
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.640000 0.640000 0.640000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl glass.002
|
||||
Ns 96.078431
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.640000 0.640000 0.640000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl None
|
||||
Ns 0
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.8 0.8 0.8
|
||||
Ks 0.8 0.8 0.8
|
||||
d 1
|
||||
illum 2
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl IkeaGlassMaterial
|
||||
Ns 92.156863
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.366454 0.568019 0.640002
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
@@ -0,0 +1,349 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib ikea_glass.mtl
|
||||
o IkeaGlass_Cylinder.001
|
||||
v -0.014142 0.014142 0.012480
|
||||
v 0.000000 0.020000 0.012480
|
||||
v 0.000000 0.020000 0.005280
|
||||
v -0.014142 0.014142 0.005280
|
||||
v -0.014142 -0.014142 0.012480
|
||||
v -0.016122 -0.016122 0.063420
|
||||
v -0.019460 -0.008062 0.063420
|
||||
v -0.022800 0.000000 0.063420
|
||||
v -0.020000 0.000000 0.012480
|
||||
v 0.000000 -0.020000 0.012480
|
||||
v 0.000000 -0.022800 0.063420
|
||||
v -0.008062 -0.019462 0.063420
|
||||
v 0.014142 -0.014142 0.012480
|
||||
v 0.016122 -0.016122 0.063420
|
||||
v 0.008062 -0.019462 0.063420
|
||||
v 0.020000 0.000000 0.012480
|
||||
v 0.022800 0.000000 0.063420
|
||||
v 0.019460 -0.008062 0.063420
|
||||
v 0.014142 0.014142 0.012480
|
||||
v 0.016122 0.016122 0.063420
|
||||
v 0.019460 0.008062 0.063420
|
||||
v 0.000000 0.022800 0.063420
|
||||
v 0.008062 0.019460 0.063420
|
||||
v -0.016122 0.016122 0.063420
|
||||
v -0.008062 0.019460 0.063420
|
||||
v -0.019460 0.008062 0.063420
|
||||
v -0.016970 -0.016970 0.066030
|
||||
v -0.017734 -0.017734 0.088680
|
||||
v -0.023548 -0.009754 0.088680
|
||||
v -0.022534 -0.009334 0.066030
|
||||
v -0.009334 -0.022534 0.066030
|
||||
v -0.009754 -0.023548 0.088680
|
||||
v 0.000000 -0.024000 0.066030
|
||||
v 0.000000 -0.025080 0.088680
|
||||
v 0.009334 -0.022534 0.066030
|
||||
v 0.009754 -0.023548 0.088680
|
||||
v 0.016970 -0.016970 0.066030
|
||||
v 0.017734 -0.017734 0.088680
|
||||
v 0.022534 -0.009334 0.066030
|
||||
v 0.023548 -0.009754 0.088680
|
||||
v 0.024000 0.000000 0.066030
|
||||
v 0.025080 0.000000 0.088680
|
||||
v 0.022534 0.009334 0.066030
|
||||
v 0.023548 0.009754 0.088680
|
||||
v 0.016970 0.016970 0.066030
|
||||
v 0.017734 0.017734 0.088680
|
||||
v 0.009334 0.022534 0.066030
|
||||
v 0.009754 0.023548 0.088680
|
||||
v 0.000000 0.024000 0.066030
|
||||
v 0.000000 0.025080 0.088680
|
||||
v -0.009334 0.022534 0.066030
|
||||
v -0.009754 0.023548 0.088680
|
||||
v -0.016970 0.016970 0.066030
|
||||
v -0.017734 0.017734 0.088680
|
||||
v -0.022534 0.009334 0.066030
|
||||
v -0.023548 0.009754 0.088680
|
||||
v -0.024000 0.000000 0.066030
|
||||
v -0.025080 0.000000 0.088680
|
||||
v -0.020000 0.000000 0.005280
|
||||
v 0.014142 0.014142 0.005280
|
||||
v 0.020000 0.000000 0.005280
|
||||
v 0.014142 -0.014142 0.005280
|
||||
v 0.000000 -0.020000 0.005280
|
||||
v -0.014142 -0.014142 0.005280
|
||||
v -0.012728 0.012728 0.012524
|
||||
v -0.012392 0.012392 0.012394
|
||||
v 0.000000 0.017524 0.012394
|
||||
v 0.000000 0.018000 0.012524
|
||||
v -0.012728 -0.012728 0.012524
|
||||
v -0.018000 0.000000 0.012524
|
||||
v -0.020948 0.000000 0.064098
|
||||
v -0.017726 -0.007342 0.064040
|
||||
v -0.014812 -0.014812 0.064098
|
||||
v 0.000000 -0.018000 0.012524
|
||||
v -0.007342 -0.017726 0.064040
|
||||
v 0.000000 -0.020948 0.064098
|
||||
v 0.012728 -0.012728 0.012524
|
||||
v 0.007342 -0.017726 0.064040
|
||||
v 0.014812 -0.014812 0.064098
|
||||
v 0.018000 0.000000 0.012524
|
||||
v 0.017726 -0.007342 0.064040
|
||||
v 0.020948 0.000000 0.064098
|
||||
v 0.012728 0.012728 0.012524
|
||||
v 0.017726 0.007342 0.064040
|
||||
v 0.014812 0.014812 0.064098
|
||||
v 0.007342 0.017726 0.064040
|
||||
v 0.000000 0.020948 0.064098
|
||||
v -0.007342 0.017726 0.064040
|
||||
v -0.014812 0.014812 0.064098
|
||||
v -0.017726 0.007342 0.064040
|
||||
v -0.015632 -0.015632 0.066610
|
||||
v -0.020776 -0.008606 0.066584
|
||||
v -0.021616 -0.008954 0.088680
|
||||
v -0.016256 -0.016256 0.088680
|
||||
v -0.008606 -0.020776 0.066584
|
||||
v -0.008954 -0.021616 0.088680
|
||||
v 0.000000 -0.022106 0.066610
|
||||
v 0.000000 -0.022990 0.088680
|
||||
v 0.008606 -0.020776 0.066584
|
||||
v 0.008954 -0.021616 0.088680
|
||||
v 0.015632 -0.015632 0.066610
|
||||
v 0.016256 -0.016256 0.088680
|
||||
v 0.020776 -0.008606 0.066584
|
||||
v 0.021616 -0.008954 0.088680
|
||||
v 0.022106 0.000000 0.066610
|
||||
v 0.022990 0.000000 0.088680
|
||||
v 0.020776 0.008606 0.066584
|
||||
v 0.021616 0.008954 0.088680
|
||||
v 0.015632 0.015632 0.066610
|
||||
v 0.016256 0.016256 0.088680
|
||||
v 0.008606 0.020776 0.066584
|
||||
v 0.008954 0.021616 0.088680
|
||||
v 0.000000 0.022106 0.066610
|
||||
v 0.000000 0.022990 0.088680
|
||||
v -0.008606 0.020776 0.066584
|
||||
v -0.008954 0.021616 0.088680
|
||||
v -0.015632 0.015632 0.066610
|
||||
v -0.016256 0.016256 0.088680
|
||||
v -0.020776 0.008606 0.066584
|
||||
v -0.021616 0.008954 0.088680
|
||||
v -0.022106 0.000000 0.066610
|
||||
v -0.022990 0.000000 0.088680
|
||||
v -0.017524 0.000000 0.012394
|
||||
v -0.012392 -0.012392 0.012394
|
||||
v 0.000000 -0.017524 0.012394
|
||||
v 0.012392 -0.012392 0.012394
|
||||
v 0.017524 0.000000 0.012394
|
||||
v 0.012392 0.012392 0.012394
|
||||
vn -0.382700 0.923900 0.000000
|
||||
vn -0.922700 -0.382200 -0.050700
|
||||
vn -0.382200 -0.922700 -0.050700
|
||||
vn 0.382200 -0.922700 -0.050700
|
||||
vn 0.922700 -0.382200 -0.050700
|
||||
vn 0.922700 0.382200 -0.050700
|
||||
vn 0.382200 0.922700 -0.050700
|
||||
vn -0.382200 0.922700 -0.050700
|
||||
vn -0.922700 0.382200 -0.050700
|
||||
vn -0.807300 -0.588200 -0.047100
|
||||
vn -0.588200 -0.807300 -0.047100
|
||||
vn -0.155000 -0.986800 -0.047100
|
||||
vn 0.155000 -0.986800 -0.047100
|
||||
vn 0.588200 -0.807300 -0.047100
|
||||
vn 0.807300 -0.588200 -0.047100
|
||||
vn 0.986800 -0.155000 -0.047100
|
||||
vn 0.986800 0.155000 -0.047100
|
||||
vn 0.807300 0.588200 -0.047100
|
||||
vn 0.588200 0.807300 -0.047100
|
||||
vn 0.155000 0.986800 -0.047100
|
||||
vn -0.155000 0.986800 -0.047100
|
||||
vn -0.588200 0.807300 -0.047100
|
||||
vn -0.807300 0.588200 -0.047100
|
||||
vn -0.732900 0.202500 -0.649500
|
||||
vn -0.986800 -0.155000 -0.047100
|
||||
vn -0.732900 -0.202500 -0.649500
|
||||
vn -0.986800 0.155000 -0.047100
|
||||
vn -0.661500 0.375200 -0.649400
|
||||
vn -0.375200 0.661500 -0.649400
|
||||
vn -0.202500 0.732900 -0.649500
|
||||
vn 0.202500 0.732900 -0.649500
|
||||
vn 0.375200 0.661500 -0.649400
|
||||
vn 0.661500 0.375200 -0.649400
|
||||
vn 0.732900 0.202500 -0.649500
|
||||
vn 0.732900 -0.202500 -0.649500
|
||||
vn 0.661500 -0.375200 -0.649400
|
||||
vn 0.374800 -0.661400 -0.649700
|
||||
vn 0.202400 -0.733100 -0.649300
|
||||
vn -0.202400 -0.733100 -0.649300
|
||||
vn -0.374800 -0.661400 -0.649600
|
||||
vn -0.374900 -0.661500 -0.649500
|
||||
vn -0.374800 -0.661400 -0.649700
|
||||
vn -0.374900 -0.661400 -0.649600
|
||||
vn -0.661500 -0.375200 -0.649400
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.923900 -0.382700 0.000000
|
||||
vn -0.923900 -0.382700 0.000000
|
||||
vn 0.382700 0.923900 0.000000
|
||||
vn 0.382700 -0.923900 0.000000
|
||||
vn -0.923900 0.382700 0.000000
|
||||
vn 0.923900 0.382700 0.000000
|
||||
vn -0.382700 -0.923900 0.000000
|
||||
vn 0.108900 -0.262900 0.958700
|
||||
vn 0.922700 0.382200 0.051000
|
||||
vn 0.382200 0.922700 0.051000
|
||||
vn -0.382200 0.922700 0.051000
|
||||
vn -0.922700 0.382200 0.051000
|
||||
vn -0.922700 -0.382200 0.051000
|
||||
vn -0.382200 -0.922700 0.051000
|
||||
vn 0.382200 -0.922700 0.051000
|
||||
vn 0.922700 -0.382200 0.051000
|
||||
vn 0.805800 0.590800 0.039700
|
||||
vn 0.590800 0.805800 0.039700
|
||||
vn 0.152000 0.987600 0.039700
|
||||
vn -0.152000 0.987600 0.039700
|
||||
vn -0.590800 0.805800 0.039700
|
||||
vn -0.805800 0.590800 0.039700
|
||||
vn -0.987600 0.152000 0.039700
|
||||
vn -0.987600 -0.152000 0.039700
|
||||
vn -0.805800 -0.590800 0.039700
|
||||
vn -0.590800 -0.805800 0.039700
|
||||
vn -0.152000 -0.987600 0.039700
|
||||
vn 0.152000 -0.987600 0.039700
|
||||
vn 0.590800 -0.805800 0.039700
|
||||
vn 0.805800 -0.590800 0.039700
|
||||
vn 0.726800 -0.204000 0.655900
|
||||
vn 0.987600 0.152000 0.039700
|
||||
vn 0.726800 0.204000 0.655900
|
||||
vn 0.987600 -0.152000 0.039700
|
||||
vn 0.658000 -0.369600 0.656000
|
||||
vn 0.369600 -0.658000 0.656000
|
||||
vn 0.204000 -0.726800 0.655900
|
||||
vn -0.204000 -0.726800 0.655900
|
||||
vn -0.369600 -0.658000 0.656000
|
||||
vn -0.658000 -0.369600 0.656000
|
||||
vn -0.726800 -0.204000 0.655900
|
||||
vn -0.726800 0.204000 0.655900
|
||||
vn -0.658000 0.369600 0.656000
|
||||
vn -0.369600 0.658000 0.656000
|
||||
vn -0.204000 0.726800 0.655900
|
||||
vn 0.204000 0.726800 0.655900
|
||||
vn 0.369600 0.658000 0.656000
|
||||
vn 0.658000 0.369600 0.656000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn -0.262900 0.108900 0.958700
|
||||
vn 0.262900 0.108900 0.958700
|
||||
vn -0.108900 -0.262900 0.958700
|
||||
vn -0.108900 0.262900 0.958700
|
||||
vn 0.262900 -0.108900 0.958700
|
||||
vn -0.262900 -0.108900 0.958700
|
||||
vn 0.108900 0.262900 0.958700
|
||||
usemtl IkeaGlassMaterial
|
||||
s 1
|
||||
f 1//1 2//1 3//1 4//1
|
||||
f 5//2 6//2 7//2 8//2 9//2
|
||||
f 10//3 11//3 12//3 6//3 5//3
|
||||
f 13//4 14//4 15//4 11//4 10//4
|
||||
f 16//5 17//5 18//5 14//5 13//5
|
||||
f 19//6 20//6 21//6 17//6 16//6
|
||||
f 2//7 22//7 23//7 20//7 19//7
|
||||
f 1//8 24//8 25//8 22//8 2//8
|
||||
f 9//9 8//9 26//9 24//9 1//9
|
||||
f 27//10 28//10 29//10 30//10
|
||||
f 31//11 32//11 28//11 27//11
|
||||
f 33//12 34//12 32//12 31//12
|
||||
f 35//13 36//13 34//13 33//13
|
||||
f 37//14 38//14 36//14 35//14
|
||||
f 39//15 40//15 38//15 37//15
|
||||
f 41//16 42//16 40//16 39//16
|
||||
f 43//17 44//17 42//17 41//17
|
||||
f 45//18 46//18 44//18 43//18
|
||||
f 47//19 48//19 46//19 45//19
|
||||
f 49//20 50//20 48//20 47//20
|
||||
f 51//21 52//21 50//21 49//21
|
||||
f 53//22 54//22 52//22 51//22
|
||||
f 55//23 56//23 54//23 53//23
|
||||
f 57//24 55//24 26//24 8//24
|
||||
f 30//25 29//25 58//25 57//25
|
||||
f 7//26 30//26 57//26 8//26
|
||||
f 58//27 56//27 55//27 57//27
|
||||
f 26//28 55//28 53//28 24//28
|
||||
f 24//29 53//29 51//29 25//29
|
||||
f 25//30 51//30 49//30 22//30
|
||||
f 22//31 49//31 47//31 23//31
|
||||
f 23//32 47//32 45//32 20//32
|
||||
f 20//33 45//33 43//33 21//33
|
||||
f 21//34 43//34 41//34 17//34
|
||||
f 17//35 41//35 39//35 18//35
|
||||
f 18//36 39//36 37//36 14//36
|
||||
f 14//37 37//37 35//37 15//37
|
||||
f 15//38 35//38 33//38 11//38
|
||||
f 11//39 33//39 31//39 12//39
|
||||
f 12//40 31//41 27//42 6//43
|
||||
f 6//44 27//44 30//44 7//44
|
||||
f 59//45 4//45 3//45 60//45 61//45 62//45 63//45 64//45
|
||||
f 16//46 13//46 62//46 61//46
|
||||
f 5//47 9//47 59//47 64//47
|
||||
f 2//48 19//48 60//48 3//48
|
||||
f 13//49 10//49 63//49 62//49
|
||||
f 9//50 1//50 4//50 59//50
|
||||
f 19//51 16//51 61//51 60//51
|
||||
f 10//52 5//52 64//52 63//52
|
||||
f 65//53 66//53 67//53 68//53
|
||||
f 69//54 70//54 71//54 72//54 73//54
|
||||
f 74//55 69//55 73//55 75//55 76//55
|
||||
f 77//56 74//56 76//56 78//56 79//56
|
||||
f 80//57 77//57 79//57 81//57 82//57
|
||||
f 83//58 80//58 82//58 84//58 85//58
|
||||
f 68//59 83//59 85//59 86//59 87//59
|
||||
f 65//60 68//60 87//60 88//60 89//60
|
||||
f 70//61 65//61 89//61 90//61 71//61
|
||||
f 91//62 92//62 93//62 94//62
|
||||
f 95//63 91//63 94//63 96//63
|
||||
f 97//64 95//64 96//64 98//64
|
||||
f 99//65 97//65 98//65 100//65
|
||||
f 101//66 99//66 100//66 102//66
|
||||
f 103//67 101//67 102//67 104//67
|
||||
f 105//68 103//68 104//68 106//68
|
||||
f 107//69 105//69 106//69 108//69
|
||||
f 109//70 107//70 108//70 110//70
|
||||
f 111//71 109//71 110//71 112//71
|
||||
f 113//72 111//72 112//72 114//72
|
||||
f 115//73 113//73 114//73 116//73
|
||||
f 117//74 115//74 116//74 118//74
|
||||
f 119//75 117//75 118//75 120//75
|
||||
f 121//76 71//76 90//76 119//76
|
||||
f 92//77 121//77 122//77 93//77
|
||||
f 72//78 71//78 121//78 92//78
|
||||
f 122//79 121//79 119//79 120//79
|
||||
f 90//80 89//80 117//80 119//80
|
||||
f 89//81 88//81 115//81 117//81
|
||||
f 88//82 87//82 113//82 115//82
|
||||
f 87//83 86//83 111//83 113//83
|
||||
f 86//84 85//84 109//84 111//84
|
||||
f 85//85 84//85 107//85 109//85
|
||||
f 84//86 82//86 105//86 107//86
|
||||
f 82//87 81//87 103//87 105//87
|
||||
f 81//88 79//88 101//88 103//88
|
||||
f 79//89 78//89 99//89 101//89
|
||||
f 78//90 76//90 97//90 99//90
|
||||
f 76//91 75//91 95//91 97//91
|
||||
f 75//92 73//92 91//92 95//92
|
||||
f 73//93 72//93 92//93 91//93
|
||||
f 123//94 124//94 125//94 126//94 127//94 128//94 67//94 66//94
|
||||
f 80//95 127//95 126//95 77//95
|
||||
f 69//96 124//96 123//96 70//96
|
||||
f 68//97 67//97 128//97 83//97
|
||||
f 77//98 126//98 125//98 74//98
|
||||
f 70//99 123//99 66//99 65//99
|
||||
f 83//100 128//100 127//100 80//100
|
||||
f 74//101 125//101 124//101 69//101
|
||||
f 56//94 58//94 122//94 120//94
|
||||
f 52//94 54//94 118//94 116//94
|
||||
f 48//94 50//94 114//94 112//94
|
||||
f 44//94 46//94 110//94 108//94
|
||||
f 40//94 42//94 106//94 104//94
|
||||
f 36//94 38//94 102//94 100//94
|
||||
f 32//94 34//94 98//94 96//94
|
||||
f 29//94 28//94 94//94 93//94
|
||||
f 54//94 56//94 120//94 118//94
|
||||
f 50//94 52//94 116//94 114//94
|
||||
f 46//94 48//94 112//94 110//94
|
||||
f 42//94 44//94 108//94 106//94
|
||||
f 38//94 40//94 104//94 102//94
|
||||
f 34//94 36//94 100//94 98//94
|
||||
f 28//94 32//94 96//94 94//94
|
||||
f 58//94 29//94 93//94 122//94
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
Brian Delhaisse: Compared to the original, I kept one pancake and scaled/translated/rotated it. I also converted it from FBX to OBJ.
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
Pancake: Soidev <https://sketchfab.com/soidev>
|
||||
Pan: Toomy <http://www.sweethome3d.com/freeModels.jsp>
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
- The license for the pancake is the `LICENSE.TXT` file.
|
||||
- The license for the pan is the `BLENDSWAP_LICENSE.txt` file.
|
||||
@@ -0,0 +1,16 @@
|
||||
This file is under the Creative Commons Attribution 4.0 International license:
|
||||
|
||||
http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
Your are free to:
|
||||
|
||||
Share - copy and redistribute the material in any medium or format
|
||||
|
||||
Adapt - remix, transform, and build upon the material for any purpose, even commercially.
|
||||
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution: If you want distribute this work, or derivates, you must attribute it to
|
||||
Soidev <https://sketchfab.com/soidev>
|
||||
@@ -0,0 +1,115 @@
|
||||
Free Art License 1.3 (FAL 1.3)
|
||||
|
||||
Preamble
|
||||
|
||||
The Free Art License grants the right to freely copy, distribute, and transform creative works without infringing the author’s rights.
|
||||
|
||||
The Free Art License recognizes and protects these rights. Their implementation has been reformulated in order to allow everyone to use creations of the human mind in a creative manner, regardless of their types and ways of expression.
|
||||
|
||||
While the public’s access to creations of the human mind usually is restricted by the implementation of copyright law, it is favoured by the Free Art License. This license intends to allow the use of a work’s resources; to establish new conditions for creating in order to increase creation opportunities. The Free Art License grants the right to use a work, and acknowledges the right holder’s and the user’s rights and responsibility.
|
||||
|
||||
The invention and development of digital technologies, Internet and Free Software have changed creation methods: creations of the human mind can obviously be distributed, exchanged, and transformed. They allow to produce common works to which everyone can contribute to the benefit of all.
|
||||
|
||||
The main rationale for this Free Art License is to promote and protect these creations of the human mind according to the principles of copyleft: freedom to use, copy, distribute, transform, and prohibition of exclusive appropriation.
|
||||
|
||||
Definitions
|
||||
|
||||
« work » either means the initial work, the subsequent works or the common work as defined hereafter:
|
||||
|
||||
« common work » means a work composed of the initial work and all subsequent contributions to it (originals and copies). The initial author is the one who, by choosing this license, defines the conditions under which contributions are made.
|
||||
|
||||
« Initial work » means the work created by the initiator of the common work (as defined above), the copies of which can be modified by whoever wants to
|
||||
|
||||
« Subsequent works » means the contributions made by authors who participate in the evolution of the common work by exercising the rights to reproduce, distribute, and modify that are granted by the license.
|
||||
|
||||
« Originals » (sources or resources of the work) means all copies of either the initial work or any subsequent work mentioning a date and used by their author(s) as references for any subsequent updates, interpretations, copies or reproductions.
|
||||
|
||||
« Copy » means any reproduction of an original as defined by this license.
|
||||
|
||||
1. OBJECT
|
||||
The aim of this license is to define the conditions under which one can use this work freely.
|
||||
|
||||
2. SCOPE
|
||||
This work is subject to copyright law. Through this license its author specifies the extent to which you can copy, distribute, and modify it.
|
||||
|
||||
2.1 FREEDOM TO COPY (OR TO MAKE REPRODUCTIONS)
|
||||
You have the right to copy this work for yourself, your friends or any other person, whatever the technique used.
|
||||
|
||||
2.2 FREEDOM TO DISTRIBUTE, TO PERFORM IN PUBLIC
|
||||
You have the right to distribute copies of this work; whether modified or not, whatever the medium and the place, with or without any charge, provided that you:
|
||||
attach this license without any modification to the copies of this work or indicate precisely where the license can be found,
|
||||
specify to the recipient the names of the author(s) of the originals, including yours if you have modified the work,
|
||||
specify to the recipient where to access the originals (either initial or subsequent).
|
||||
The authors of the originals may, if they wish to, give you the right to distribute the originals under the same conditions as the copies.
|
||||
|
||||
2.3 FREEDOM TO MODIFY
|
||||
You have the right to modify copies of the originals (whether initial or subsequent) provided you comply with the following conditions:
|
||||
all conditions in article 2.2 above, if you distribute modified copies;
|
||||
indicate that the work has been modified and, if it is possible, what kind of modifications have been made;
|
||||
distribute the subsequent work under the same license or any compatible license.
|
||||
The author(s) of the original work may give you the right to modify it under the same conditions as the copies.
|
||||
|
||||
3. RELATED RIGHTS
|
||||
Activities giving rise to author’s rights and related rights shall not challenge the rights granted by this license.
|
||||
For example, this is the reason why performances must be subject to the same license or a compatible license. Similarly, integrating the work in a database, a compilation or an anthology shall not prevent anyone from using the work under the same conditions as those defined in this license.
|
||||
|
||||
4. INCORPORATION OF THE WORK
|
||||
Incorporating this work into a larger work that is not subject to the Free Art License shall not challenge the rights granted by this license.
|
||||
If the work can no longer be accessed apart from the larger work in which it is incorporated, then incorporation shall only be allowed under the condition that the larger work is subject either to the Free Art License or a compatible license.
|
||||
|
||||
5. COMPATIBILITY
|
||||
A license is compatible with the Free Art License provided:
|
||||
it gives the right to copy, distribute, and modify copies of the work including for commercial purposes and without any other restrictions than those required by the respect of the other compatibility criteria;
|
||||
it ensures proper attribution of the work to its authors and access to previous versions of the work when possible;
|
||||
it recognizes the Free Art License as compatible (reciprocity);
|
||||
it requires that changes made to the work be subject to the same license or to a license which also meets these compatibility criteria.
|
||||
|
||||
6. YOUR INTELLECTUAL RIGHTS
|
||||
This license does not aim at denying your author’s rights in your contribution or any related right. By choosing to contribute to the development of this common work, you only agree to grant others the same rights with regard to your contribution as those you were granted by this license. Conferring these rights does not mean you have to give up your intellectual rights.
|
||||
|
||||
7. YOUR RESPONSIBILITIES
|
||||
The freedom to use the work as defined by the Free Art License (right to copy, distribute, modify) implies that everyone is responsible for their own actions.
|
||||
|
||||
8. DURATION OF THE LICENSE
|
||||
This license takes effect as of your acceptance of its terms. The act of copying, distributing, or modifying the work constitutes a tacit agreement. This license will remain in effect for as long as the copyright which is attached to the work. If you do not respect the terms of this license, you automatically lose the rights that it confers.
|
||||
If the legal status or legislation to which you are subject makes it impossible for you to respect the terms of this license, you may not make use of the rights which it confers.
|
||||
|
||||
9. VARIOUS VERSIONS OF THE LICENSE
|
||||
This license may undergo periodic modifications to incorporate improvements by its authors (instigators of the « Copyleft Attitude » movement) by way of new, numbered versions.
|
||||
You will always have the choice of accepting the terms contained in the version under which the copy of the work was distributed to you, or alternatively, to use the provisions of one of the subsequent versions.
|
||||
|
||||
10. SUB-LICENSING
|
||||
Sub-licenses are not authorized by this license. Any person wishing to make use of the rights that it confers will be directly bound to the authors of the common work.
|
||||
|
||||
11. LEGAL FRAMEWORK
|
||||
This license is written with respect to both French law and the Berne Convention for the Protection of Literary and Artistic Works.
|
||||
|
||||
USER GUIDE
|
||||
|
||||
– How to use the Free Art License?
|
||||
To benefit from the Free Art License, you only need to mention the following elements on your work:
|
||||
[Name of the author, title, date of the work. When applicable, names of authors of the common work and, if possible, where to find the originals].
|
||||
Copyleft: This is a free work, you can copy, distribute, and modify it under the terms of the Free Art License http://artlibre.org/licence/lal/en/
|
||||
|
||||
– Why to use the Free Art License?
|
||||
1.To give the greatest number of people access to your work.
|
||||
2.To allow it to be distributed freely.
|
||||
3.To allow it to evolve by allowing its copy, distribution, and transformation by others.
|
||||
4.So that you benefit from the resources of a work when it is under the Free Art License: to be able to copy, distribute or transform it freely.
|
||||
5.But also, because the Free Art License offers a legal framework to disallow any misappropriation. It is forbidden to take hold of your work and bypass the creative process for one’s exclusive possession.
|
||||
|
||||
– When to use the Free Art License?
|
||||
Any time you want to benefit and make others benefit from the right to copy, distribute and transform creative works without any exclusive appropriation, you should use the Free Art License. You can for example use it for scientific, artistic or educational projects.
|
||||
|
||||
– What kinds of works can be subject to the Free Art License?
|
||||
The Free Art License can be applied to digital as well as physical works.
|
||||
You can choose to apply the Free Art License on any text, picture, sound, gesture, or whatever sort of stuff on which you have sufficient author’s rights.
|
||||
|
||||
– Historical background of this license:
|
||||
It is the result of observing, using and creating digital technologies, free software, the Internet and art. It arose from the « Copyleft Attitude » meetings which took place in Paris in 2000. For the first time, these meetings brought together members of the Free Software community, artists, and members of the art world. The goal was to adapt the principles of Copyleft and free software to all sorts of creations. http://www.artlibre.org
|
||||
|
||||
Copyleft Attitude, 2007.
|
||||
You can make reproductions and distribute this license verbatim (without any changes).
|
||||
|
||||
Translation : Jonathan Clarke, Benjamin Jean, Griselda Jung, Fanny Mourguet, Antoine Pitrou.
|
||||
Thanks to framalang.org
|
||||
@@ -0,0 +1,32 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 3
|
||||
|
||||
newmtl black
|
||||
Ns 96.078431
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.250000 0.250000 0.250000
|
||||
Ks 0.000000 0.000000 0.000000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
|
||||
newmtl gris_acier
|
||||
Ns 101.960784
|
||||
Ka 0.686270 0.686270 0.686270
|
||||
Kd 1.000000 1.000000 1.000000
|
||||
Ks 0.200000 0.200000 0.200000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
|
||||
newmtl manche
|
||||
Ns 96.078431
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.300000 0.300000 0.300000
|
||||
Ks 0.000000 0.000000 0.000000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl pancake
|
||||
Ns 94.117647
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.800000 0.800000 0.800000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd pancake.png
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 5.9 MiB |
@@ -0,0 +1,2 @@
|
||||
|
||||
Brian Delhaisse: Compared to the original, I rescaled/translated/rotated the shinai and change the dimensions of the tsuba.
|
||||
@@ -0,0 +1,16 @@
|
||||
This file is under the Creative Commons Attribution 4.0 International license:
|
||||
|
||||
http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
Your are free to:
|
||||
|
||||
Share - copy and redistribute the material in any medium or format
|
||||
|
||||
Adapt - remix, transform, and build upon the material for any purpose, even commercially.
|
||||
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution: If you want distribute this work, or derivates, you must attribute it to
|
||||
Flightt <https://sketchfab.com/Flightt>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 229 KiB |
@@ -0,0 +1,33 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 3
|
||||
|
||||
newmtl lambert2SG
|
||||
Ns 96.078431
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 1.000000 0.000000 0.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 0.000000
|
||||
illum 6
|
||||
|
||||
newmtl lambert3SG
|
||||
Ns 96.078431
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 1.000000 1.000000 1.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 0.000000
|
||||
illum 6
|
||||
|
||||
newmtl lambert4SG
|
||||
Ns 96.078431
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.000000 0.000000 0.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd shinai.jpg
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
|
||||
Brian Delhaisse: Compared to the originals, I rescaled/translated/rotated the boxes. For the arrow_box, I also made the box more rectangular (one of the corner was weird, it didn't have a right angle).
|
||||
@@ -0,0 +1,17 @@
|
||||
This file is under the Creative Commons Attribution 4.0 International license:
|
||||
|
||||
http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
Your are free to:
|
||||
|
||||
Share - copy and redistribute the material in any medium or format
|
||||
|
||||
Adapt - remix, transform, and build upon the material for any purpose, even commercially.
|
||||
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution: If you want distribute this work, or derivates, you must attribute it to
|
||||
NikR <https://sketchfab.com/NikR> (for the amazon box)
|
||||
Shabbba <https://sketchfab.com/dan2004> (for the arrow box)
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 452 KiB |
@@ -0,0 +1,13 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl crate_texture
|
||||
Ns 96.078431
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.640000 0.640000 0.640000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd amazon_box.jpg
|
||||
@@ -0,0 +1,50 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib amazon_box.mtl
|
||||
o Crate01
|
||||
v -0.181159 0.183694 -0.000000
|
||||
v 0.183591 0.183694 0.000000
|
||||
v 0.183591 -0.181055 0.000000
|
||||
v -0.181159 -0.181055 -0.000000
|
||||
v -0.181159 0.183694 0.364750
|
||||
v -0.181159 -0.181055 0.364750
|
||||
v 0.183591 -0.181055 0.364750
|
||||
v 0.183591 0.183694 0.364750
|
||||
vt 0.323500 0.998000
|
||||
vt 0.002000 0.998000
|
||||
vt 0.002000 0.676500
|
||||
vt 0.323500 0.676500
|
||||
vt 0.323500 0.002000
|
||||
vt 0.323500 0.323500
|
||||
vt 0.002000 0.323500
|
||||
vt 0.002000 0.002000
|
||||
vt 0.339300 0.339200
|
||||
vt 0.660700 0.339300
|
||||
vt 0.660700 0.660700
|
||||
vt 0.339300 0.660700
|
||||
vt 0.660800 0.323500
|
||||
vt 0.339300 0.323500
|
||||
vt 0.339300 0.002000
|
||||
vt 0.660800 0.002000
|
||||
vt 0.339300 0.676500
|
||||
vt 0.660700 0.676500
|
||||
vt 0.660700 0.998000
|
||||
vt 0.339300 0.998000
|
||||
vt 0.002000 0.339300
|
||||
vt 0.323500 0.339300
|
||||
vt 0.323500 0.660700
|
||||
vt 0.002000 0.660700
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn -1.000000 0.000000 -0.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
usemtl crate_texture
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 5/5/2 6/6/2 7/7/2 8/8/2
|
||||
f 1/9/3 4/10/3 6/11/3 5/12/3
|
||||
f 4/13/4 3/14/4 7/15/4 6/16/4
|
||||
f 3/17/5 2/18/5 8/19/5 7/20/5
|
||||
f 2/21/6 1/22/6 5/23/6 8/24/6
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 370 KiB |
@@ -0,0 +1,13 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl box
|
||||
Ns 94.117647
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.800000 0.800000 0.800000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd arrow_box.jpg
|
||||
@@ -0,0 +1,50 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib arrow_box.mtl
|
||||
o Cube.003_Cube.008
|
||||
v -0.100000 0.100000 -0.100000
|
||||
v -0.100000 0.100000 0.095785
|
||||
v 0.100000 0.100000 -0.100000
|
||||
v 0.100000 0.100000 0.100000
|
||||
v -0.100000 -0.100000 -0.100000
|
||||
v -0.100000 -0.100000 0.100000
|
||||
v 0.100000 -0.100000 -0.100000
|
||||
v 0.099303 -0.100051 0.102703
|
||||
vt 0.497917 0.638342
|
||||
vt 0.248735 0.638342
|
||||
vt 0.248735 0.389159
|
||||
vt 0.497917 0.389159
|
||||
vt 0.749382 0.642088
|
||||
vt 0.749382 0.891272
|
||||
vt 0.500199 0.891272
|
||||
vt 0.500199 0.642088
|
||||
vt 0.500576 0.639318
|
||||
vt 0.251393 0.639318
|
||||
vt 0.251393 0.390135
|
||||
vt 0.500576 0.390135
|
||||
vt 0.500199 0.390899
|
||||
vt 0.500199 0.141716
|
||||
vt 0.749382 0.141716
|
||||
vt 0.749382 0.390899
|
||||
vt 0.749382 0.639318
|
||||
vt 0.500199 0.639318
|
||||
vt 0.500199 0.390135
|
||||
vt 0.749382 0.390135
|
||||
vt 0.249382 0.639318
|
||||
vt 0.000199 0.639318
|
||||
vt 0.000199 0.390135
|
||||
vt 0.249382 0.390135
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn 1.000000 -0.001700 0.001700
|
||||
vn -0.000100 -1.000000 -0.000100
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn -0.000000 0.000000 -1.000000
|
||||
vn -0.017300 0.017300 0.999700
|
||||
usemtl box
|
||||
s 1
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||
f 7/9/3 8/10/3 6/11/3 5/12/3
|
||||
f 5/13/4 6/14/4 2/15/4 1/16/4
|
||||
f 3/17/5 7/18/5 5/19/5 1/20/5
|
||||
f 8/21/6 4/22/6 2/23/6 6/24/6
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
Brian Delhaisse: Compared to the original, I rescaled/translated/rotated the conveyor, and split it into 2 parts (the conveyor and the belt).
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.6 MiB |
@@ -0,0 +1,16 @@
|
||||
This file is under the Creative Commons Attribution 4.0 International license:
|
||||
|
||||
http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
Your are free to:
|
||||
|
||||
Share - copy and redistribute the material in any medium or format
|
||||
|
||||
Adapt - remix, transform, and build upon the material for any purpose, even commercially.
|
||||
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution: If you want distribute this work, or derivates, you must attribute it to
|
||||
Scailman <https://sketchfab.com/scailman>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 474 KiB |
@@ -0,0 +1,13 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl Belt
|
||||
Ns 90.196078
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.589840 0.589840 0.589840
|
||||
Ks 0.175000 0.175000 0.175000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd RubberBelt.png
|
||||
@@ -0,0 +1,229 @@
|
||||
# Blender v2.76 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib belt.mtl
|
||||
o Conveyor01Belt_Untitled.003
|
||||
v -0.946100 0.325000 0.180008
|
||||
v -0.930100 0.325000 0.178108
|
||||
v -0.930100 -0.325000 0.178108
|
||||
v -0.946100 -0.325000 0.180008
|
||||
v -0.960800 0.325000 0.185308
|
||||
v -0.960800 -0.325000 0.185308
|
||||
v -0.973800 0.325000 0.193508
|
||||
v -0.973800 -0.325000 0.193508
|
||||
v -0.984700 0.325000 0.204408
|
||||
v -0.984700 -0.325000 0.204408
|
||||
v -0.992900 0.325000 0.217408
|
||||
v -0.992900 -0.325000 0.217408
|
||||
v -0.998200 0.325000 0.232108
|
||||
v -0.998200 -0.325000 0.232108
|
||||
v -1.000100 0.325000 0.248108
|
||||
v -1.000100 -0.325000 0.248108
|
||||
v -0.998200 0.325000 0.264208
|
||||
v -0.998200 -0.325000 0.264208
|
||||
v -0.992900 0.325000 0.278908
|
||||
v -0.992900 -0.325000 0.278908
|
||||
v -0.984700 0.325000 0.291908
|
||||
v -0.984700 -0.325000 0.291908
|
||||
v -0.973800 0.325000 0.302708
|
||||
v -0.973800 -0.325000 0.302708
|
||||
v -0.960800 0.325000 0.311008
|
||||
v -0.960800 -0.325000 0.311008
|
||||
v -0.946100 0.325000 0.316308
|
||||
v -0.946100 -0.325000 0.316308
|
||||
v -0.930100 0.325000 0.318108
|
||||
v -0.930100 -0.325000 0.318108
|
||||
v 0.930300 0.325000 0.318108
|
||||
v 0.930300 -0.325000 0.318108
|
||||
v 0.946400 0.325000 0.316308
|
||||
v 0.946400 -0.325000 0.316308
|
||||
v 0.961100 0.325000 0.311008
|
||||
v 0.961100 -0.325000 0.311008
|
||||
v 0.974100 0.325000 0.302708
|
||||
v 0.974100 -0.325000 0.302708
|
||||
v 0.985000 0.325000 0.291908
|
||||
v 0.985000 -0.325000 0.291908
|
||||
v 0.993200 0.325000 0.278908
|
||||
v 0.993200 -0.325000 0.278908
|
||||
v 0.998500 0.325000 0.264208
|
||||
v 0.998500 -0.325000 0.264208
|
||||
v 1.000300 0.325000 0.248108
|
||||
v 1.000300 -0.325000 0.248108
|
||||
v 0.998500 0.325000 0.232108
|
||||
v 0.998500 -0.325000 0.232108
|
||||
v 0.993200 0.325000 0.217408
|
||||
v 0.993200 -0.325000 0.217408
|
||||
v 0.985000 0.325000 0.204408
|
||||
v 0.985000 -0.325000 0.204408
|
||||
v 0.974100 0.325000 0.193508
|
||||
v 0.974100 -0.325000 0.193508
|
||||
v 0.961100 0.325000 0.185308
|
||||
v 0.961100 -0.325000 0.185308
|
||||
v 0.946400 0.325000 0.180008
|
||||
v 0.946400 -0.325000 0.180008
|
||||
v 0.930300 0.325000 0.178108
|
||||
v 0.930300 -0.325000 0.178108
|
||||
vt 0.293700 0.991400
|
||||
vt 0.293700 0.998500
|
||||
vt 0.007200 0.998500
|
||||
vt 0.007200 0.991400
|
||||
vt 0.007200 0.984900
|
||||
vt 0.293700 0.984900
|
||||
vt 0.007200 0.979200
|
||||
vt 0.293700 0.979200
|
||||
vt 0.007200 0.974400
|
||||
vt 0.293700 0.974400
|
||||
vt 0.007200 0.968700
|
||||
vt 0.293700 0.968700
|
||||
vt 0.007200 0.962200
|
||||
vt 0.293700 0.962200
|
||||
vt 0.007200 0.955100
|
||||
vt 0.293700 0.955100
|
||||
vt 0.007200 0.948000
|
||||
vt 0.293700 0.948000
|
||||
vt 0.007200 0.941500
|
||||
vt 0.293700 0.941500
|
||||
vt 0.007200 0.935800
|
||||
vt 0.293700 0.935800
|
||||
vt 0.293700 0.931000
|
||||
vt 0.007200 0.931000
|
||||
vt 0.293700 0.925300
|
||||
vt 0.007200 0.925300
|
||||
vt 0.007200 0.918800
|
||||
vt 0.293700 0.918800
|
||||
vt 0.007200 0.911700
|
||||
vt 0.293700 0.911700
|
||||
vt 0.007200 0.091900
|
||||
vt 0.293700 0.091900
|
||||
vt 0.293700 0.084900
|
||||
vt 0.007200 0.084900
|
||||
vt 0.007200 0.078400
|
||||
vt 0.293700 0.078400
|
||||
vt 0.293700 0.072700
|
||||
vt 0.007200 0.072700
|
||||
vt 0.007200 0.067900
|
||||
vt 0.293700 0.067900
|
||||
vt 0.007200 0.062100
|
||||
vt 0.293700 0.062100
|
||||
vt 0.007200 0.055700
|
||||
vt 0.293700 0.055700
|
||||
vt 0.007200 0.048600
|
||||
vt 0.293700 0.048600
|
||||
vt 0.007200 0.041500
|
||||
vt 0.293700 0.041500
|
||||
vt 0.007200 0.035000
|
||||
vt 0.293700 0.035000
|
||||
vt 0.007200 0.029300
|
||||
vt 0.293700 0.029300
|
||||
vt 0.007200 0.024500
|
||||
vt 0.293700 0.024500
|
||||
vt 0.007200 0.018800
|
||||
vt 0.293700 0.018800
|
||||
vt 0.293700 0.012300
|
||||
vt 0.007200 0.012300
|
||||
vt 0.007200 0.005200
|
||||
vt 0.293700 0.005200
|
||||
vt 0.293800 0.100100
|
||||
vt 0.577400 0.100100
|
||||
vt 0.577400 0.911700
|
||||
vt 0.293800 0.911700
|
||||
vn -0.227200 0.000000 -0.973900
|
||||
vn -0.057400 0.000000 -0.998300
|
||||
vn -0.057400 -0.000000 -0.998400
|
||||
vn -0.439400 0.000000 -0.898300
|
||||
vn -0.625700 0.000000 -0.780100
|
||||
vn -0.780000 0.000000 -0.625700
|
||||
vn -0.898300 -0.000000 -0.439400
|
||||
vn -0.973800 0.000000 -0.227200
|
||||
vn -1.000000 0.000000 -0.000000
|
||||
vn -1.000000 0.000000 0.000100
|
||||
vn -0.973800 -0.000000 0.227200
|
||||
vn -0.898300 0.000000 0.439400
|
||||
vn -0.779800 0.000000 0.626000
|
||||
vn -0.780200 0.000000 0.625600
|
||||
vn -0.625700 0.000000 0.780100
|
||||
vn -0.439600 0.000000 0.898200
|
||||
vn -0.227000 0.000000 0.973900
|
||||
vn -0.057400 -0.000000 0.998300
|
||||
vn -0.057400 0.000000 0.998400
|
||||
vn 0.057400 0.000000 0.998400
|
||||
vn 0.227400 0.000000 0.973800
|
||||
vn 0.227300 0.000000 0.973800
|
||||
vn 0.439600 -0.000000 0.898200
|
||||
vn 0.625700 0.000000 0.780100
|
||||
vn 0.780100 0.000000 0.625700
|
||||
vn 0.898300 -0.000000 0.439400
|
||||
vn 0.973800 0.000000 0.227300
|
||||
vn 0.973900 0.000000 0.227000
|
||||
vn 1.000000 0.000000 0.000200
|
||||
vn 1.000000 0.000000 -0.000300
|
||||
vn 0.973800 0.000000 -0.227500
|
||||
vn 0.973900 0.000000 -0.227000
|
||||
vn 0.898400 0.000000 -0.439200
|
||||
vn 0.898300 0.000000 -0.439400
|
||||
vn 0.780100 0.000000 -0.625700
|
||||
vn 0.625700 -0.000000 -0.780100
|
||||
vn 0.439400 0.000000 -0.898300
|
||||
vn 0.227200 0.000000 -0.973900
|
||||
vn 0.057400 0.000000 -0.998300
|
||||
usemtl Belt
|
||||
s 1
|
||||
f 1/1/1 2/2/2 3/3/3
|
||||
f 3/3/3 4/4/1 1/1/1
|
||||
f 4/4/1 6/5/4 5/6/4
|
||||
f 5/6/4 1/1/1 4/4/1
|
||||
f 8/7/5 7/8/5 5/6/4
|
||||
f 5/6/4 6/5/4 8/7/5
|
||||
f 10/9/6 9/10/6 7/8/5
|
||||
f 7/8/5 8/7/5 10/9/6
|
||||
f 12/11/7 11/12/7 9/10/6
|
||||
f 9/10/6 10/9/6 12/11/7
|
||||
f 14/13/8 13/14/8 11/12/7
|
||||
f 11/12/7 12/11/7 14/13/8
|
||||
f 14/13/8 16/15/9 15/16/10
|
||||
f 15/16/10 13/14/8 14/13/8
|
||||
f 16/15/9 18/17/11 17/18/11
|
||||
f 17/18/11 15/16/10 16/15/9
|
||||
f 18/17/11 20/19/12 19/20/12
|
||||
f 19/20/12 17/18/11 18/17/11
|
||||
f 22/21/13 21/22/14 19/20/12
|
||||
f 19/20/12 20/19/12 22/21/13
|
||||
f 23/23/15 21/22/14 22/21/13
|
||||
f 22/21/13 24/24/15 23/23/15
|
||||
f 25/25/16 23/23/15 24/24/15
|
||||
f 24/24/15 26/26/16 25/25/16
|
||||
f 28/27/17 27/28/17 25/25/16
|
||||
f 25/25/16 26/26/16 28/27/17
|
||||
f 27/28/17 28/27/17 30/29/18
|
||||
f 30/29/18 29/30/19 27/28/17
|
||||
f 32/31/20 31/32/20 29/30/19
|
||||
f 29/30/19 30/29/18 32/31/20
|
||||
f 33/33/21 31/32/20 32/31/20
|
||||
f 32/31/20 34/34/22 33/33/21
|
||||
f 36/35/23 35/36/23 33/33/21
|
||||
f 33/33/21 34/34/22 36/35/23
|
||||
f 37/37/24 35/36/23 36/35/23
|
||||
f 36/35/23 38/38/24 37/37/24
|
||||
f 38/38/24 40/39/25 39/40/25
|
||||
f 39/40/25 37/37/24 38/38/24
|
||||
f 42/41/26 41/42/26 39/40/25
|
||||
f 39/40/25 40/39/25 42/41/26
|
||||
f 44/43/27 43/44/28 41/42/26
|
||||
f 41/42/26 42/41/26 44/43/27
|
||||
f 46/45/29 45/46/30 43/44/28
|
||||
f 43/44/28 44/43/27 46/45/29
|
||||
f 48/47/31 47/48/32 45/46/30
|
||||
f 45/46/30 46/45/29 48/47/31
|
||||
f 48/47/31 50/49/33 49/50/34
|
||||
f 49/50/34 47/48/32 48/47/31
|
||||
f 50/49/33 52/51/35 51/52/35
|
||||
f 51/52/35 49/50/34 50/49/33
|
||||
f 52/51/35 54/53/36 53/54/36
|
||||
f 53/54/36 51/52/35 52/51/35
|
||||
f 56/55/37 55/56/37 53/54/36
|
||||
f 53/54/36 54/53/36 56/55/37
|
||||
f 57/57/38 55/56/37 56/55/37
|
||||
f 56/55/37 58/58/38 57/57/38
|
||||
f 60/59/39 59/60/39 57/57/38
|
||||
f 57/57/38 58/58/38 60/59/39
|
||||
f 3/61/3 2/62/2 59/63/39
|
||||
f 59/63/39 60/64/39 3/61/3
|
||||
@@ -0,0 +1,13 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl Conveyor
|
||||
Ns 90.196078
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Kd 0.589840 0.589840 0.589840
|
||||
Ks 0.175000 0.175000 0.175000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd Conveyor_diffuse.png
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python
|
||||
r"""Provide the flip pancake world.
|
||||
"""
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
from pyrobolearn.worlds import BasicWorld
|
||||
|
||||
|
||||
__author__ = "Brian Delhaisse"
|
||||
__copyright__ = "Copyright 2019, PyRoboLearn"
|
||||
__credits__ = ["Brian Delhaisse"]
|
||||
__license__ = "GNU GPLv3"
|
||||
__version__ = "1.0.0"
|
||||
__maintainer__ = "Brian Delhaisse"
|
||||
__email__ = "briandelhaisse@gmail.com"
|
||||
__status__ = "Development"
|
||||
|
||||
|
||||
# TODO: finish to implement the world, create corresponding environment (in `envs` folder) with state and reward.
|
||||
|
||||
class FlipPancakeWorld(BasicWorld):
|
||||
r"""Flip pancake world
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, simulator, position=(0., 0., 0.), scale=(.75, .75, .75)):
|
||||
"""
|
||||
Initialize the world.
|
||||
|
||||
Args:
|
||||
simulator (Simulator): the simulator instance.
|
||||
position (tuple/list of 3 float, np.array[3]): position of the pan.
|
||||
scale (tuple/list of 3 float): scaling factors in the (x,y,z) directions.
|
||||
"""
|
||||
super(FlipPancakeWorld, self).__init__(simulator)
|
||||
|
||||
mesh_path = os.path.dirname(os.path.abspath(__file__)) + '/../../meshes/manipulation/pancake/'
|
||||
position = np.asarray(position)
|
||||
|
||||
# load the pan
|
||||
self.pan = self.load_mesh(mesh_path + 'pan.obj', position=position, scale=scale, mass=0.120, flags=1)
|
||||
|
||||
# load the pancake
|
||||
self.pancake = self.load_mesh(mesh_path + 'pancake.obj', position=position + np.array([0., 0., 0.1]),
|
||||
scale=scale, mass=0.080, flags=0)
|
||||
|
||||
def reset(self, world_state=None):
|
||||
super(FlipPancakeWorld, self).reset(world_state)
|
||||
|
||||
def step(self, sleep_dt=None):
|
||||
super(FlipPancakeWorld, self).step(sleep_dt)
|
||||
|
||||
|
||||
# Test
|
||||
if __name__ == '__main__':
|
||||
from itertools import count
|
||||
import pyrobolearn as prl
|
||||
|
||||
# create simulator
|
||||
sim = prl.simulators.Bullet()
|
||||
|
||||
# create world
|
||||
world = FlipPancakeWorld(sim, position=(0.5, 0., 0.))
|
||||
|
||||
# # create manipulator
|
||||
# robot = world.load_robot('kuka_iiwa')
|
||||
#
|
||||
# # attach first shinai to robot end effector
|
||||
# world.attach(body1=robot, body2=world.pan, link1=robot.end_effectors[0], link2=-1, joint_axis=[0., 0., 0.],
|
||||
# parent_frame_position=[0., 0., 0.2], child_frame_position=[-0.05, 0., 0.],
|
||||
# parent_frame_orientation=[0, -0.707, 0., .707])
|
||||
|
||||
# run simulation
|
||||
for t in count():
|
||||
world.step(sim.dt)
|
||||
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python
|
||||
r"""Provide the pouring world.
|
||||
"""
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
from pyrobolearn.worlds import BasicWorld
|
||||
|
||||
|
||||
__author__ = "Brian Delhaisse"
|
||||
__copyright__ = "Copyright 2019, PyRoboLearn"
|
||||
__credits__ = ["Brian Delhaisse"]
|
||||
__license__ = "GNU GPLv3"
|
||||
__version__ = "1.0.0"
|
||||
__maintainer__ = "Brian Delhaisse"
|
||||
__email__ = "briandelhaisse@gmail.com"
|
||||
__status__ = "Development"
|
||||
|
||||
|
||||
# TODO: finish to implement the world, create corresponding environment (in `envs` folder) with state and reward.
|
||||
|
||||
class PouringWorld(BasicWorld):
|
||||
r"""Pouring world
|
||||
|
||||
This loads a table, a bottle, and a glass in basic world. The liquid might be simulated based on the simulator.
|
||||
"""
|
||||
|
||||
def __init__(self, simulator, table_position=(0.8, 0., 0.), bottle_position=(0.6, -0.2, .6),
|
||||
glass_position=(0.6, 0.2, .6), scale=(1., 1., 1.)):
|
||||
"""
|
||||
Initialize the world.
|
||||
|
||||
Args:
|
||||
simulator (Simulator): the simulator instance.
|
||||
table_position (tuple/list of 3 float, np.array[3]): position of the table.
|
||||
bottle_position (tuple/list of 3 float, np.array[3]): position of the bottle.
|
||||
glass_position (tuple/list of 3 float, np.array[3]): position of the glass.
|
||||
scale (tuple/list of 3 float): scale of the object.
|
||||
"""
|
||||
super(PouringWorld, self).__init__(simulator)
|
||||
|
||||
mesh_path = os.path.dirname(os.path.abspath(__file__)) + '/../../meshes/manipulation/glasses/'
|
||||
|
||||
# load table
|
||||
self.table = self.load_table(position=table_position, orientation=(0., 0., 0.707, 0.707))
|
||||
|
||||
# load bottle
|
||||
self.bottle = self.load_mesh(mesh_path + 'bottle1.obj', position=bottle_position, scale=scale, mass=0.500,
|
||||
color=(0, 0.416, 0.306, 0.5))
|
||||
|
||||
# load glass
|
||||
self.glass = self.load_mesh(mesh_path + 'ikea_glass.obj', position=glass_position, scale=scale, mass=0.250,
|
||||
color=(0.84705882, 0.89411765, 0.91372549, 0.5))
|
||||
|
||||
# load water (this depends on the simulator)
|
||||
# TODO
|
||||
|
||||
def reset(self, world_state=None):
|
||||
super(PouringWorld, self).reset(world_state)
|
||||
|
||||
def step(self, sleep_dt=None):
|
||||
super(PouringWorld, self).step(sleep_dt)
|
||||
|
||||
|
||||
# Test
|
||||
if __name__ == '__main__':
|
||||
from itertools import count
|
||||
import pyrobolearn as prl
|
||||
|
||||
# create simulator
|
||||
sim = prl.simulators.Bullet()
|
||||
|
||||
# create world
|
||||
world = PouringWorld(sim)
|
||||
|
||||
# create manipulator
|
||||
robot = world.load_robot('kuka_iiwa', position=(0., 0., 0.2))
|
||||
|
||||
# attach bottle to manipulator end-effector
|
||||
world.attach(body1=robot, body2=world.bottle, link1=robot.end_effectors[0], link2=-1, joint_axis=[0., 0., 0.],
|
||||
parent_frame_position=[0., 0., 0.05], child_frame_position=[0., 0., 0.1],
|
||||
parent_frame_orientation=[0, -0.707, 0., .707])
|
||||
|
||||
# reset the joint position
|
||||
robot.reset_joint_states(q=[-0.07892626, 0.25348269, -0.23774851, -1.89899545, 0.08092009, -0.57060496, 0.04279614])
|
||||
|
||||
# run simulation
|
||||
for t in count():
|
||||
world.step(sim.dt)
|
||||
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env python
|
||||
r"""Provide the kendo world.
|
||||
"""
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
from pyrobolearn.worlds import BasicWorld
|
||||
|
||||
|
||||
__author__ = "Brian Delhaisse"
|
||||
__copyright__ = "Copyright 2019, PyRoboLearn"
|
||||
__credits__ = ["Brian Delhaisse"]
|
||||
__license__ = "GNU GPLv3"
|
||||
__version__ = "1.0.0"
|
||||
__maintainer__ = "Brian Delhaisse"
|
||||
__email__ = "briandelhaisse@gmail.com"
|
||||
__status__ = "Development"
|
||||
|
||||
|
||||
# TODO: finish to implement the world, create corresponding environment (in `envs` folder) with state and reward.
|
||||
|
||||
class KendoWorld(BasicWorld):
|
||||
r"""Kendo world
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, simulator, position=(0., 0., 1.), scale=(1., 1., 1.), num_shinai=1):
|
||||
"""
|
||||
Initialize the kendo world.
|
||||
|
||||
Args:
|
||||
simulator (Simulator): the simulator instance.
|
||||
position (tuple/list of 3 float, np.array[3]): position of the shinai (i.e. kendo stick).
|
||||
scale (tuple/list of 3 float): scaling factors in the (x,y,z) directions.
|
||||
num_shinai (int): the number of shinai (i.e. kendo stick).
|
||||
"""
|
||||
super(KendoWorld, self).__init__(simulator)
|
||||
|
||||
mesh_path = os.path.dirname(os.path.abspath(__file__)) + '/../../meshes/sports/kendo/'
|
||||
position = np.asarray(position)
|
||||
|
||||
# load the shinai
|
||||
self.shinai = []
|
||||
for i in range(num_shinai):
|
||||
shinai = self.load_mesh(mesh_path + 'shinai.obj', position=position, scale=scale, mass=0.480, flags=0)
|
||||
position += np.array([1., 0., 0.])
|
||||
self.shinai.append(shinai)
|
||||
|
||||
def reset(self, world_state=None):
|
||||
super(KendoWorld, self).reset(world_state)
|
||||
|
||||
def step(self, sleep_dt=None):
|
||||
super(KendoWorld, self).step(sleep_dt)
|
||||
|
||||
|
||||
# Test
|
||||
if __name__ == '__main__':
|
||||
from itertools import count
|
||||
import pyrobolearn as prl
|
||||
|
||||
# create simulator
|
||||
sim = prl.simulators.Bullet()
|
||||
|
||||
# create world
|
||||
world = KendoWorld(sim, position=(0., 0., 1.5), num_shinai=2)
|
||||
|
||||
# create manipulators
|
||||
robot1 = world.load_robot('kuka_iiwa')
|
||||
robot2 = world.load_robot('kuka_iiwa', position=(1., 0.), orientation=(0., 0., 1., 0.))
|
||||
|
||||
# attach shinai to robot end effectors
|
||||
world.attach(body1=robot1, body2=world.shinai[0], link1=robot1.end_effectors[0], link2=-1, joint_axis=[0., 0., 0.],
|
||||
parent_frame_position=[0., 0., 0.02], child_frame_position=[0., 0., 0.15],
|
||||
parent_frame_orientation=[0, -0.707, 0., .707])
|
||||
world.attach(body1=robot2, body2=world.shinai[1], link1=robot2.end_effectors[0], link2=-1, joint_axis=[0., 0., 0.],
|
||||
parent_frame_position=[0., 0., 0.02], child_frame_position=[0., 0., 0.15],
|
||||
parent_frame_orientation=[0, -0.707, 0., .707])
|
||||
|
||||
# run simulation
|
||||
for t in count():
|
||||
world.step(sim.dt)
|
||||
@@ -0,0 +1,16 @@
|
||||
Warehouse Worlds
|
||||
================
|
||||
|
||||
This folder contains worlds where robots have to move objects from one place to another.
|
||||
This can be carried out by transporting them from one place to another, or picking them up from one place and dropping
|
||||
them on another place.
|
||||
|
||||
An example of the former is to move a box from one room to another room using a wheeled robot. An example of the latter
|
||||
is to pick up a box from one belt conveyor using a robot manipulator and drop it on another conveyor (which is close to
|
||||
the first one).
|
||||
|
||||
Other worlds consist:
|
||||
|
||||
- to pick up an object on a belt conveyor and rotate it to a desired rotation before dropping it on the same conveyor
|
||||
- to pick up scattered objects and regroup them on a belt conveyor, or put them in a specific order / pattern
|
||||
- to assemble objects together (see the peg-in-hole assembly problem)
|
||||
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env python
|
||||
r"""Provide the conveyor world.
|
||||
|
||||
This is used by other worlds in the `warehouse` folder.
|
||||
"""
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
from pyrobolearn.worlds import BasicWorld
|
||||
|
||||
|
||||
__author__ = "Brian Delhaisse"
|
||||
__copyright__ = "Copyright 2019, PyRoboLearn"
|
||||
__credits__ = ["Brian Delhaisse"]
|
||||
__license__ = "GNU GPLv3"
|
||||
__version__ = "1.0.0"
|
||||
__maintainer__ = "Brian Delhaisse"
|
||||
__email__ = "briandelhaisse@gmail.com"
|
||||
__status__ = "Development"
|
||||
|
||||
|
||||
# TODO: finish to implement the world, create corresponding environment (in `envs` folder) with state and reward.
|
||||
|
||||
class ConveyorWorld(BasicWorld):
|
||||
r"""Conveyor world
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, simulator, position=(0., -1., 0.5), scale=(1.5, 1., 1.)):
|
||||
"""
|
||||
Initialize the world.
|
||||
|
||||
Args:
|
||||
simulator (Simulator): the simulator instance.
|
||||
position (tuple/list of 3 float, np.array[3]): position of the conveyor.
|
||||
scale (tuple/list of 3 float): scaling factors in the (x,y,z) directions.
|
||||
"""
|
||||
super(ConveyorWorld, self).__init__(simulator)
|
||||
|
||||
mesh_path = os.path.dirname(os.path.abspath(__file__)) + '/../../meshes/warehouse/conveyor/'
|
||||
self.conveyor_position = np.asarray(position)
|
||||
self.belt_length = 2 * scale[0] # rough approximation of the length
|
||||
self.belt_width = 0.6 * scale[1] # rough approximation of the width
|
||||
|
||||
# load the conveyor
|
||||
self.conveyor = self.load_mesh(mesh_path + 'conveyor_without_belt.obj', position=position, scale=scale,
|
||||
mass=0., flags=0)
|
||||
self.belt = self.load_mesh(mesh_path + 'belt.obj', position=position, scale=scale, mass=0., flags=0)
|
||||
|
||||
def reset(self, world_state=None):
|
||||
super(ConveyorWorld, self).reset(world_state)
|
||||
|
||||
def step(self, sleep_dt=None):
|
||||
super(ConveyorWorld, self).step(sleep_dt)
|
||||
|
||||
|
||||
# Test
|
||||
if __name__ == '__main__':
|
||||
from itertools import count
|
||||
import pyrobolearn as prl
|
||||
|
||||
# create simulator
|
||||
sim = prl.simulators.Bullet()
|
||||
|
||||
# create world
|
||||
world = ConveyorWorld(sim)
|
||||
|
||||
# run simulation
|
||||
for t in count():
|
||||
world.step(sim.dt)
|
||||
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env python
|
||||
r"""Move boxes from one conveyor belt to another one.
|
||||
"""
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
from pyrobolearn.worlds.samples.warehouse.conveyor import ConveyorWorld
|
||||
|
||||
|
||||
__author__ = "Brian Delhaisse"
|
||||
__copyright__ = "Copyright 2019, PyRoboLearn"
|
||||
__credits__ = ["Brian Delhaisse"]
|
||||
__license__ = "GNU GPLv3"
|
||||
__version__ = "1.0.0"
|
||||
__maintainer__ = "Brian Delhaisse"
|
||||
__email__ = "briandelhaisse@gmail.com"
|
||||
__status__ = "Development"
|
||||
|
||||
|
||||
# TODO: finish to implement the world, create corresponding environment (in `envs` folder) with state and reward.
|
||||
|
||||
class MoveBoxesOnConveyorWorld(ConveyorWorld):
|
||||
r"""Move boxes on conveyor belt world
|
||||
|
||||
This provides a world where one box has to be moved from one conveyor to another.
|
||||
"""
|
||||
|
||||
def __init__(self, simulator, position=(0., -1., 0.5), scale=(1.5, 1., 1.), num_boxes=1):
|
||||
"""
|
||||
Initialize the world.
|
||||
|
||||
Args:
|
||||
simulator (Simulator): the simulator instance.
|
||||
position (tuple/list of 3 float, np.array[3]): position of the conveyor.
|
||||
scale (tuple/list of 3 float): scaling factors in the (x,y,z) directions.
|
||||
num_boxes (int): the number of boxes to load
|
||||
"""
|
||||
super(MoveBoxesOnConveyorWorld, self).__init__(simulator, position=position, scale=scale)
|
||||
|
||||
# load 2 other conveyors
|
||||
mesh_path = os.path.dirname(os.path.abspath(__file__)) + '/../../meshes/warehouse/conveyor/'
|
||||
position, orientation = (0.8, 0.5, 0.5), (0., 0., 0.707, 0.707)
|
||||
self.conveyor1 = self.load_mesh(mesh_path + 'conveyor_without_belt.obj', position=position,
|
||||
orientation=orientation, scale=(1., 1., 1.), mass=0., flags=0)
|
||||
self.belt1 = self.load_mesh(mesh_path + 'belt.obj', position=position, orientation=orientation,
|
||||
scale=(1., 1., 1.), mass=0., flags=0)
|
||||
|
||||
position, orientation = (-0.8, 0.5, 0.5), (0., 0., 0.707, 0.707)
|
||||
self.conveyor2 = self.load_mesh(mesh_path + 'conveyor_without_belt.obj', position=position,
|
||||
orientation=orientation, scale=(1., 1., 1.), mass=0., flags=0)
|
||||
self.belt2 = self.load_mesh(mesh_path + 'belt.obj', position=position, orientation=orientation,
|
||||
scale=(1., 1., 1.), mass=0., flags=0)
|
||||
|
||||
# load boxes
|
||||
# TODO: randomize the dimensions, color, and mass
|
||||
# TODO: make the position dependent of the conveyor position and scale
|
||||
self.box = self.load_box(position=self.conveyor_position + np.array([-1.4, 0., 0.5]), mass=1.,
|
||||
dimensions=(0.2, 0.2, 0.2), return_body=True)
|
||||
|
||||
self.cnt = 0
|
||||
|
||||
def reset(self, world_state=None):
|
||||
super(MoveBoxesOnConveyorWorld, self).reset(world_state)
|
||||
|
||||
def step(self, sleep_dt=None):
|
||||
# move boxes (which have not been picked up)
|
||||
if self.box.position[0] < 1.4:
|
||||
self.apply_force(self.box, force=[2.5, 0., 0.])
|
||||
else:
|
||||
self.box.position = [-1.4, -1., 1.]
|
||||
super(MoveBoxesOnConveyorWorld, self).step(sleep_dt)
|
||||
|
||||
|
||||
# Test
|
||||
if __name__ == '__main__':
|
||||
from itertools import count
|
||||
import pyrobolearn as prl
|
||||
|
||||
# create simulator
|
||||
sim = prl.simulators.Bullet()
|
||||
|
||||
# create world
|
||||
world = MoveBoxesOnConveyorWorld(sim)
|
||||
|
||||
# create manipulator
|
||||
robot = world.load_robot('kuka_iiwa', position=(0., -0.3, 0.5))
|
||||
|
||||
# run simulation
|
||||
for t in count():
|
||||
world.step(sim.dt)
|
||||
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python
|
||||
r"""Regroup small boxes that are on a conveyor.
|
||||
"""
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
from pyrobolearn.worlds.samples.warehouse.conveyor import ConveyorWorld
|
||||
|
||||
|
||||
__author__ = "Brian Delhaisse"
|
||||
__copyright__ = "Copyright 2019, PyRoboLearn"
|
||||
__credits__ = ["Brian Delhaisse"]
|
||||
__license__ = "GNU GPLv3"
|
||||
__version__ = "1.0.0"
|
||||
__maintainer__ = "Brian Delhaisse"
|
||||
__email__ = "briandelhaisse@gmail.com"
|
||||
__status__ = "Development"
|
||||
|
||||
|
||||
# TODO: finish to implement the world, create corresponding environment (in `envs` folder) with state and reward.
|
||||
|
||||
class RegroupBoxesOnConveyorWorld(ConveyorWorld):
|
||||
r"""Regroup boxes on conveyor belt world
|
||||
|
||||
This provides a world where small boxes that are randomly distributed on the conveyor belt has to be regroup to
|
||||
form a certain pattern (like 16 boxes regrouped in a 4x4 grid).
|
||||
"""
|
||||
|
||||
def __init__(self, simulator, position=(0., -1., 0.5), scale=(1.5, 1., 1.), num_boxes=1, pattern='3x3grid'):
|
||||
"""
|
||||
Initialize the world.
|
||||
|
||||
Args:
|
||||
simulator (Simulator): the simulator instance.
|
||||
position (tuple/list of 3 float, np.array[3]): position of the conveyor.
|
||||
scale (tuple/list of 3 float): scaling factors in the (x,y,z) directions.
|
||||
pattern (str): the pattern that has to be formed when grouping the boxes.
|
||||
"""
|
||||
super(RegroupBoxesOnConveyorWorld, self).__init__(simulator, position=position, scale=scale)
|
||||
|
||||
# load boxes
|
||||
# TODO: randomize the dimensions, color, and mass
|
||||
# TODO: make the position dependent of the conveyor position and scale
|
||||
self.boxes = []
|
||||
self.init_box_position = self.conveyor_position + np.array([-1.2, 0., 0.5])
|
||||
for i in range(num_boxes):
|
||||
noise_x = np.random.uniform(low=-0.2, high=0.2, size=1)
|
||||
noise_y = np.random.uniform(low=-0.3, high=0.3, size=1)
|
||||
noise = np.concatenate((noise_x, noise_y, np.array([0.])))
|
||||
box = self.load_box(position=self.init_box_position + noise, mass=1.,
|
||||
dimensions=(0.05, 0.05, 0.05), return_body=True)
|
||||
self.boxes.append(box)
|
||||
|
||||
self.cnt = 0
|
||||
|
||||
def reset(self, world_state=None):
|
||||
super(RegroupBoxesOnConveyorWorld, self).reset(world_state)
|
||||
|
||||
def step(self, sleep_dt=None):
|
||||
# move boxes (which have not been picked up)
|
||||
for box in self.boxes:
|
||||
if box.position[0] < 1.4:
|
||||
self.apply_force(box, force=[2.5, 0., 0.])
|
||||
else:
|
||||
# TODO: randomize x and y position
|
||||
noise_x = np.random.uniform(low=-0.2, high=0.2, size=1)
|
||||
noise_y = np.random.uniform(low=-0.3, high=0.3, size=1)
|
||||
noise = np.concatenate((noise_x, noise_y, np.array([0.])))
|
||||
box.position = self.init_box_position + noise
|
||||
super(RegroupBoxesOnConveyorWorld, self).step(sleep_dt)
|
||||
|
||||
|
||||
# Test
|
||||
if __name__ == '__main__':
|
||||
from itertools import count
|
||||
import pyrobolearn as prl
|
||||
|
||||
# create simulator
|
||||
sim = prl.simulators.Bullet()
|
||||
|
||||
# create world
|
||||
world = RegroupBoxesOnConveyorWorld(sim, num_boxes=3)
|
||||
|
||||
# create manipulator
|
||||
robot = world.load_robot('kuka_iiwa', position=(0., -0.3, 0.5))
|
||||
|
||||
# run simulation
|
||||
for t in count():
|
||||
world.step(sim.dt)
|
||||
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env python
|
||||
r"""Regroup small boxes that are on a conveyor.
|
||||
"""
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
from pyrobolearn.worlds.samples.warehouse.conveyor import ConveyorWorld
|
||||
|
||||
|
||||
__author__ = "Brian Delhaisse"
|
||||
__copyright__ = "Copyright 2019, PyRoboLearn"
|
||||
__credits__ = ["Brian Delhaisse"]
|
||||
__license__ = "GNU GPLv3"
|
||||
__version__ = "1.0.0"
|
||||
__maintainer__ = "Brian Delhaisse"
|
||||
__email__ = "briandelhaisse@gmail.com"
|
||||
__status__ = "Development"
|
||||
|
||||
|
||||
# TODO: finish to implement the world, create corresponding environment (in `envs` folder) with state and reward.
|
||||
|
||||
class RotateBoxesOnConveyorWorld(ConveyorWorld):
|
||||
r"""Rotate boxes on conveyor belt world
|
||||
|
||||
This provides a world where boxes have to be rotated in the correct orientation and put back on the conveyor belt.
|
||||
"""
|
||||
|
||||
def __init__(self, simulator, position=(0., -1., 0.5), scale=(1.5, 1., 1.), num_boxes=1):
|
||||
"""
|
||||
Initialize the world.
|
||||
|
||||
Args:
|
||||
simulator (Simulator): the simulator instance.
|
||||
position (tuple/list of 3 float, np.array[3]): position of the conveyor.
|
||||
scale (tuple/list of 3 float): scaling factors in the (x,y,z) directions.
|
||||
|
||||
"""
|
||||
super(RotateBoxesOnConveyorWorld, self).__init__(simulator, position=position, scale=scale)
|
||||
|
||||
mesh_path = os.path.dirname(os.path.abspath(__file__)) + '/../../meshes/warehouse/boxes/'
|
||||
|
||||
# load boxes
|
||||
# TODO: randomize the dimensions and mass
|
||||
# TODO: make the position dependent of the conveyor position and scale
|
||||
# self.box = self.load_box(position=self.conveyor_position + np.array([-1.4, 0., 0.5]), mass=1.,
|
||||
# dimensions=(0.2, 0.2, 0.2), return_body=True)
|
||||
self.box = self.load_mesh(mesh_path + 'arrow_box.obj',
|
||||
position=self.conveyor_position + np.array([-1.4, 0., 0.5]),
|
||||
orientation=(0., 1., 0., 0.), scale=(1., 1., 1.), mass=1., return_body=True)
|
||||
|
||||
self.cnt = 0
|
||||
|
||||
def reset(self, world_state=None):
|
||||
super(RotateBoxesOnConveyorWorld, self).reset(world_state)
|
||||
|
||||
def step(self, sleep_dt=None):
|
||||
# move boxes (which have not been picked up)
|
||||
if self.box.position[0] < 1.4:
|
||||
self.apply_force(self.box, force=[2.5, 0., 0.])
|
||||
else:
|
||||
self.box.position = [-1.4, -1., 1.]
|
||||
idx = np.random.randint(low=0, high=4)
|
||||
orientation = [(0., 0., 0., 1.), (0., 0.707, 0., 0.707), (0., 1., 0., 0.), (0., -0.707, 0., 0.707)][idx]
|
||||
self.box.orientation = orientation
|
||||
super(RotateBoxesOnConveyorWorld, self).step(sleep_dt)
|
||||
|
||||
|
||||
# Test
|
||||
if __name__ == '__main__':
|
||||
from itertools import count
|
||||
import pyrobolearn as prl
|
||||
|
||||
# create simulator
|
||||
sim = prl.simulators.Bullet()
|
||||
|
||||
# create world
|
||||
world = RotateBoxesOnConveyorWorld(sim)
|
||||
|
||||
# create manipulator
|
||||
robot = world.load_robot('kuka_iiwa', position=(0., -0.3, 0.5))
|
||||
|
||||
# run simulation
|
||||
for t in count():
|
||||
world.step(sim.dt)
|
||||
Reference in New Issue
Block a user