First commit
This commit is contained in:
201
simulator/protos/robot/VacuumSucker.proto
Normal file
201
simulator/protos/robot/VacuumSucker.proto
Normal file
@@ -0,0 +1,201 @@
|
||||
#VRML_SIM R2023b utf8
|
||||
# template language: javascript
|
||||
|
||||
PROTO VacuumSucker [
|
||||
field SFString name ""
|
||||
field SFVec3f translation 0 0 0
|
||||
field SFRotation rotation 0 0 1 0
|
||||
field SFFloat max_height 0.35
|
||||
field SFFloat forward_reach 0.12
|
||||
] {
|
||||
Pose {
|
||||
translation IS translation
|
||||
rotation IS rotation
|
||||
children [
|
||||
Pose {
|
||||
translation 0 0 %<= fields.max_height.value / 4 >%
|
||||
children [
|
||||
DEF BASE Solid {
|
||||
children [
|
||||
Shape {
|
||||
appearance PBRAppearance {
|
||||
baseColor 0.7 0.7 0.7
|
||||
roughness 1
|
||||
metalness 0
|
||||
}
|
||||
geometry DEF BASE_GEO Box {
|
||||
size 0.06 0.06 %<= fields.max_height.value / 2 >%
|
||||
}
|
||||
}
|
||||
]
|
||||
name "Tower Base"
|
||||
boundingObject USE BASE_GEO
|
||||
physics Physics {
|
||||
density 500 # Hollow Aluminium
|
||||
}
|
||||
}
|
||||
SliderJoint {
|
||||
jointParameters JointParameters {
|
||||
axis 0 0 1
|
||||
minStop 0
|
||||
maxStop IS max_height
|
||||
position 0.01
|
||||
}
|
||||
device [
|
||||
LinearMotor {
|
||||
name %<= "\"" + fields.name.value + " motor::main\"" >%
|
||||
minPosition 0
|
||||
maxPosition IS max_height
|
||||
maxVelocity 2
|
||||
sound ""
|
||||
}
|
||||
PositionSensor {
|
||||
name %<= "\"" + fields.name.value + " position sensor\"" >%
|
||||
}
|
||||
]
|
||||
endPoint Solid {
|
||||
translation %<= (fields.forward_reach.value + 0.055) - 0.05 >% 0 %<= fields.max_height.value / 4 - 0.05 >%
|
||||
children [
|
||||
Solid {
|
||||
children [
|
||||
Pose {
|
||||
translation %<= 0.025 - (fields.forward_reach.value + 0.055) / 2 >% 0 0.08
|
||||
children [
|
||||
Shape { # Horizontal arm
|
||||
appearance PBRAppearance {
|
||||
baseColor 0.7 0.7 0.7
|
||||
roughness 1
|
||||
metalness 0
|
||||
}
|
||||
geometry Box {
|
||||
size %<= fields.forward_reach.value + 0.055 >% 0.05 0.02
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Pose {
|
||||
translation %<= 0.05 - (fields.forward_reach.value + 0.055) >% 0 %<= 0.06 - (fields.max_height.value / 4) >%
|
||||
children [
|
||||
Shape { # Column
|
||||
appearance PBRAppearance {
|
||||
baseColor 0.7 0.7 0.7
|
||||
roughness 1
|
||||
metalness 0
|
||||
}
|
||||
geometry DEF COLUMN_GEO Box {
|
||||
size 0.05 0.05 %<= fields.max_height.value / 2 + 0.02 >%
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Pose {
|
||||
translation 0 0 0.045
|
||||
children [
|
||||
Shape {
|
||||
appearance PBRAppearance {
|
||||
baseColor 0.7 0.7 0.7
|
||||
roughness 1
|
||||
metalness 0
|
||||
}
|
||||
geometry Box {
|
||||
size 0.05 0.05 0.05
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
name "Armature"
|
||||
boundingObject Pose {
|
||||
translation %<= 0.05 - (fields.forward_reach.value + 0.055) >% 0 %<= 0.06 - (fields.max_height.value / 4) >%
|
||||
children [USE COLUMN_GEO]
|
||||
}
|
||||
physics Physics {
|
||||
density 200 # Hollow Aluminium
|
||||
}
|
||||
}
|
||||
DEF SUCKER Shape {
|
||||
appearance PBRAppearance {
|
||||
baseColor 0 0 0
|
||||
roughness 1
|
||||
metalness 1
|
||||
}
|
||||
geometry DEF hook_geo Box {
|
||||
size 0.05 0.05 0.04
|
||||
}
|
||||
castShadows FALSE
|
||||
}
|
||||
Connector {
|
||||
# Shift origin to near the lower face of the hook shape
|
||||
translation 0 0 -0.01
|
||||
rotation 0 1 0 3.1416
|
||||
type "active"
|
||||
distanceTolerance 0.094 # (0.14 / 2) * sqrt(2)
|
||||
axisTolerance 3.1415
|
||||
rotationTolerance 0
|
||||
numberOfRotations 0
|
||||
tensileStrength 35
|
||||
shearStrength 20
|
||||
snap FALSE
|
||||
autoLock TRUE
|
||||
name IS name
|
||||
unilateralUnlock TRUE
|
||||
unilateralLock TRUE
|
||||
}
|
||||
]
|
||||
boundingObject Pose {
|
||||
translation 0 0 0.005
|
||||
children [
|
||||
Box {
|
||||
size 0.05 0.05 0.03
|
||||
}
|
||||
]
|
||||
}
|
||||
physics Physics {
|
||||
density 1500 # rubber
|
||||
}
|
||||
}
|
||||
}
|
||||
# Secondary slider joint for telescoping column
|
||||
SliderJoint {
|
||||
jointParameters JointParameters {
|
||||
axis 0 0 1
|
||||
minStop 0
|
||||
maxStop %<= fields.max_height.value / 2 >%
|
||||
position 0.005
|
||||
}
|
||||
device [
|
||||
LinearMotor {
|
||||
name %<= "\"" + fields.name.value + " motor::extension\"" >%
|
||||
minPosition 0
|
||||
maxPosition %<= fields.max_height.value / 2 >%
|
||||
maxVelocity 1
|
||||
sound ""
|
||||
multiplier 0.5
|
||||
}
|
||||
]
|
||||
endPoint Solid {
|
||||
translation 0 0 0.005
|
||||
children [
|
||||
Shape {
|
||||
appearance PBRAppearance {
|
||||
baseColor 0.7 0.7 0.7
|
||||
roughness 1
|
||||
metalness 0
|
||||
}
|
||||
geometry DEF COLUMN_GEO Box {
|
||||
size 0.055 0.055 %<= fields.max_height.value / 2 + 0.01 >%
|
||||
}
|
||||
}
|
||||
]
|
||||
name "Extension"
|
||||
boundingObject USE COLUMN_GEO
|
||||
physics Physics {
|
||||
density 200 # Hollow Aluminium
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user