532 lines
13 KiB
Protocol Buffer
532 lines
13 KiB
Protocol Buffer
#VRML_SIM R2025a utf8
|
|
# Sheep - wheeled base with sheep character on top
|
|
|
|
EXTERNPROTO "https://raw.githubusercontent.com/cyberbotics/webots/R2025a/projects/appearances/protos/TireRubber.proto"
|
|
|
|
PROTO Sheep [
|
|
field SFVec3f translation 0 0 0
|
|
field SFRotation rotation 0 1 0 0
|
|
field SFString name "sheep"
|
|
field SFString controller "sheep"
|
|
field MFString controllerArgs []
|
|
field SFString customData ""
|
|
field SFBool supervisor TRUE
|
|
field SFBool synchronization TRUE
|
|
field SFColor woolColor 0.92 0.90 0.85
|
|
]
|
|
{
|
|
Robot {
|
|
translation IS translation
|
|
rotation IS rotation
|
|
name IS name
|
|
controller IS controller
|
|
controllerArgs IS controllerArgs
|
|
customData IS customData
|
|
supervisor IS supervisor
|
|
synchronization IS synchronization
|
|
children [
|
|
# ========== CHASSIS / BASE ==========
|
|
DEF SHEEP_CHASSIS Transform {
|
|
translation 0 0 0.04
|
|
children [
|
|
Shape {
|
|
appearance DEF SHEEP_CHASSIS_APP PBRAppearance {
|
|
baseColor 0.25 0.25 0.25
|
|
roughness 0.6
|
|
metalness 0.3
|
|
}
|
|
geometry Box {
|
|
size 0.24 0.14 0.05
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
# ========== FLUFFY WOOL BODY ==========
|
|
DEF SHEEP_BODY Transform {
|
|
translation 0 0 0.12
|
|
children [
|
|
Shape {
|
|
appearance DEF WOOL PBRAppearance {
|
|
baseColor IS woolColor
|
|
roughness 0.95
|
|
metalness 0.0
|
|
}
|
|
geometry Box {
|
|
size 0.26 0.16 0.12
|
|
}
|
|
}
|
|
# Fluffy wool bumps — 6 spheres clustered on top of the body box
|
|
Transform {
|
|
translation -0.04 0 0.07
|
|
children [
|
|
Shape {
|
|
appearance USE WOOL
|
|
geometry Sphere {
|
|
radius 0.055
|
|
subdivision 3
|
|
}
|
|
}
|
|
]
|
|
}
|
|
Transform {
|
|
translation 0.04 0.035 0.07
|
|
children [
|
|
Shape {
|
|
appearance USE WOOL
|
|
geometry Sphere {
|
|
radius 0.05
|
|
subdivision 3
|
|
}
|
|
}
|
|
]
|
|
}
|
|
Transform {
|
|
translation 0.04 -0.035 0.07
|
|
children [
|
|
Shape {
|
|
appearance USE WOOL
|
|
geometry Sphere {
|
|
radius 0.05
|
|
subdivision 3
|
|
}
|
|
}
|
|
]
|
|
}
|
|
Transform {
|
|
translation -0.04 0.035 0.07
|
|
children [
|
|
Shape {
|
|
appearance USE WOOL
|
|
geometry Sphere {
|
|
radius 0.05
|
|
subdivision 3
|
|
}
|
|
}
|
|
]
|
|
}
|
|
Transform {
|
|
translation -0.04 -0.035 0.07
|
|
children [
|
|
Shape {
|
|
appearance USE WOOL
|
|
geometry Sphere {
|
|
radius 0.05
|
|
subdivision 3
|
|
}
|
|
}
|
|
]
|
|
}
|
|
Transform {
|
|
translation 0 0 0.07
|
|
children [
|
|
Shape {
|
|
appearance USE WOOL
|
|
geometry Sphere {
|
|
radius 0.06
|
|
subdivision 3
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
|
|
# ========== HEAD ==========
|
|
DEF SHEEP_HEAD Transform {
|
|
translation 0.16 0 0.12
|
|
children [
|
|
Shape {
|
|
appearance DEF SHEEP_DARK PBRAppearance {
|
|
baseColor 0.25 0.22 0.18
|
|
roughness 0.8
|
|
metalness 0.0
|
|
}
|
|
geometry Box {
|
|
size 0.08 0.10 0.08
|
|
}
|
|
}
|
|
# Left eye (white sphere + dark pupil)
|
|
Transform {
|
|
translation 0.04 0.03 0.02
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.95 0.95 0.95
|
|
roughness 0.3
|
|
}
|
|
geometry Sphere {
|
|
radius 0.013
|
|
subdivision 2
|
|
}
|
|
}
|
|
Transform {
|
|
translation 0.008 0 0.003
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.1 0.1 0.1
|
|
roughness 0.2
|
|
}
|
|
geometry Sphere {
|
|
radius 0.007
|
|
subdivision 2
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
# Right eye
|
|
Transform {
|
|
translation 0.04 -0.03 0.02
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.95 0.95 0.95
|
|
roughness 0.3
|
|
}
|
|
geometry Sphere {
|
|
radius 0.013
|
|
subdivision 2
|
|
}
|
|
}
|
|
Transform {
|
|
translation 0.008 0 0.003
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.1 0.1 0.1
|
|
roughness 0.2
|
|
}
|
|
geometry Sphere {
|
|
radius 0.007
|
|
subdivision 2
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
# Left ear
|
|
Transform {
|
|
translation 0 0.055 0.03
|
|
rotation 0 0 -1 0.3
|
|
children [
|
|
Shape {
|
|
appearance USE SHEEP_DARK
|
|
geometry Box {
|
|
size 0.05 0.018 0.03
|
|
}
|
|
}
|
|
]
|
|
}
|
|
# Right ear
|
|
Transform {
|
|
translation 0 -0.055 0.03
|
|
rotation 0 0 1 0.3
|
|
children [
|
|
Shape {
|
|
appearance USE SHEEP_DARK
|
|
geometry Box {
|
|
size 0.05 0.018 0.03
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
|
|
# ========== SHORT TAIL ==========
|
|
Transform {
|
|
translation -0.15 0 0.14
|
|
children [
|
|
Shape {
|
|
appearance USE WOOL
|
|
geometry Sphere {
|
|
radius 0.035
|
|
subdivision 2
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
# ========== RIGHT AXLE ARM ==========
|
|
DEF SHEEP_RIGHT_AXLE Transform {
|
|
translation 0 -0.085 0.031
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.5 0.5 0.5
|
|
roughness 0.3
|
|
metalness 0.8
|
|
}
|
|
geometry Box {
|
|
size 0.02 0.05 0.02
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
# ========== LEFT AXLE ARM ==========
|
|
DEF SHEEP_LEFT_AXLE Transform {
|
|
translation 0 0.085 0.031
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.5 0.5 0.5
|
|
roughness 0.3
|
|
metalness 0.8
|
|
}
|
|
geometry Box {
|
|
size 0.02 0.05 0.02
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
# ========== RIGHT WHEEL ==========
|
|
DEF SHEEP_RIGHT_WHEEL HingeJoint {
|
|
jointParameters HingeJointParameters {
|
|
axis 0 1 0
|
|
anchor 0 -0.10 0.031
|
|
}
|
|
device [
|
|
RotationalMotor {
|
|
name "right wheel motor"
|
|
maxVelocity 25.0
|
|
maxTorque 3.0
|
|
}
|
|
PositionSensor {
|
|
name "right wheel sensor"
|
|
resolution 0.00628
|
|
}
|
|
]
|
|
endPoint Solid {
|
|
translation 0 -0.10 0.031
|
|
rotation 0 -1 0 1.570796
|
|
children [
|
|
DEF SHEEP_WHEEL_VIS Pose {
|
|
rotation 1 0 0 -1.5708
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.15 0.15 0.15
|
|
roughness 0.4
|
|
metalness 0.5
|
|
}
|
|
geometry Cylinder {
|
|
height 0.014
|
|
radius 0.028
|
|
subdivision 24
|
|
}
|
|
}
|
|
Shape {
|
|
appearance TireRubber {
|
|
textureTransform TextureTransform {
|
|
scale 1.2 0.5
|
|
}
|
|
type "bike"
|
|
}
|
|
geometry Cylinder {
|
|
height 0.018
|
|
radius 0.031
|
|
subdivision 24
|
|
}
|
|
}
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.5 0.5 0.5
|
|
metalness 0.6
|
|
}
|
|
geometry Cylinder {
|
|
height 0.016
|
|
radius 0.012
|
|
subdivision 12
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
name "right wheel"
|
|
boundingObject Pose {
|
|
rotation 1 0 0 -1.5708
|
|
children [
|
|
Cylinder {
|
|
height 0.018
|
|
radius 0.031
|
|
}
|
|
]
|
|
}
|
|
physics Physics {
|
|
density -1
|
|
mass 0.04
|
|
centerOfMass [
|
|
0 0 0
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
# ========== LEFT WHEEL ==========
|
|
DEF SHEEP_LEFT_WHEEL HingeJoint {
|
|
jointParameters HingeJointParameters {
|
|
axis 0 1 0
|
|
anchor 0 0.10 0.031
|
|
}
|
|
device [
|
|
RotationalMotor {
|
|
name "left wheel motor"
|
|
maxVelocity 25.0
|
|
maxTorque 3.0
|
|
}
|
|
PositionSensor {
|
|
name "left wheel sensor"
|
|
resolution 0.00628
|
|
}
|
|
]
|
|
endPoint Solid {
|
|
translation 0 0.10 0.031
|
|
rotation 0.707105 0 0.707109 -3.14159
|
|
children [
|
|
USE SHEEP_WHEEL_VIS
|
|
]
|
|
name "left wheel"
|
|
boundingObject Pose {
|
|
rotation 1 0 0 -1.5708
|
|
children [
|
|
Cylinder {
|
|
height 0.018
|
|
radius 0.031
|
|
}
|
|
]
|
|
}
|
|
physics Physics {
|
|
density -1
|
|
mass 0.04
|
|
centerOfMass [
|
|
0 0 0
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
# ========== FRONT CASTER ==========
|
|
BallJoint {
|
|
jointParameters BallJointParameters {
|
|
anchor 0.10 0 0.016
|
|
}
|
|
endPoint Solid {
|
|
translation 0.10 0 0.016
|
|
name "front caster"
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.2 0.2 0.2
|
|
roughness 0.3
|
|
}
|
|
geometry Sphere {
|
|
radius 0.016
|
|
subdivision 2
|
|
}
|
|
}
|
|
]
|
|
boundingObject Sphere {
|
|
radius 0.016
|
|
}
|
|
physics Physics {
|
|
density -1
|
|
mass 0.02
|
|
}
|
|
}
|
|
}
|
|
|
|
# ========== REAR CASTER ==========
|
|
BallJoint {
|
|
jointParameters BallJointParameters {
|
|
anchor -0.10 0 0.016
|
|
}
|
|
endPoint Solid {
|
|
translation -0.10 0 0.016
|
|
name "rear caster"
|
|
children [
|
|
Shape {
|
|
appearance PBRAppearance {
|
|
baseColor 0.2 0.2 0.2
|
|
roughness 0.3
|
|
}
|
|
geometry Sphere {
|
|
radius 0.016
|
|
subdivision 2
|
|
}
|
|
}
|
|
]
|
|
boundingObject Sphere {
|
|
radius 0.016
|
|
}
|
|
physics Physics {
|
|
density -1
|
|
mass 0.02
|
|
}
|
|
}
|
|
}
|
|
|
|
# ========== RECEIVER ==========
|
|
Receiver {
|
|
name "receiver"
|
|
channel 1
|
|
}
|
|
|
|
# ========== EMITTER ==========
|
|
Emitter {
|
|
name "emitter"
|
|
channel 1
|
|
range 30.0
|
|
}
|
|
|
|
# ========== GPS ==========
|
|
GPS {
|
|
translation 0 0 0.15
|
|
name "gps"
|
|
}
|
|
|
|
# ========== COMPASS ==========
|
|
Compass {
|
|
translation 0 0 0.10
|
|
name "compass"
|
|
}
|
|
]
|
|
|
|
boundingObject Group {
|
|
children [
|
|
# Chassis box
|
|
Transform {
|
|
translation 0 0 0.04
|
|
children [
|
|
Box {
|
|
size 0.24 0.14 0.05
|
|
}
|
|
]
|
|
}
|
|
# Body box
|
|
Transform {
|
|
translation 0 0 0.12
|
|
children [
|
|
Box {
|
|
size 0.26 0.16 0.12
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
|
|
physics Physics {
|
|
density -1
|
|
mass 5.0
|
|
centerOfMass [
|
|
0 0 0.02
|
|
]
|
|
}
|
|
}
|
|
}
|