#usda 1.0 ( doc = """Reusable 6-axis articulated robot asset for the OPC UA - OpenUSD Bindings Robotics example. Modelled on a KUKA KR 16-2: 1611 mm reach, 430 x 370 mm base footprint, KUKA orange structure over dark cast housings, and a true spherical wrist. The link offsets reproduce the published kinematics (A1 at z = 675 mm above the arm's mounting face, A2 + 260 mm, A3 + 680 mm, A4 + 670 mm with a -35 mm lateral offset, A4/A5/A6 coincident, tool flange + 158 mm), so 0.26 + 0.68 + 0.67 = 1.61 m of reach. The arm is carried on an omnidirectional mobile platform (/Robot/MobileBase), in the style of a KUKA KMP. The Robotics example drives each robot's Relative Spatial Location, so the whole asset travels across the cell; mounting it on a platform is what makes that motion physically plausible. Remove /Robot/MobileBase and clear the translate on /Robot/Base to get a floor-mounted arm. The nested Xforms are the kinematic contract declared in Robotics.OpenUsdBinding.json. Each J{i} prim carries the rotate op driven by that Axis' ActualPosition (degrees). The asset contains only static geometry and home-pose defaults; live joint values are authored by live.usda. Every gprim carries both a material binding and a matching primvars:displayColor, so the asset reads correctly on renderers that ignore the material graph. Meshes are doubleSided so face winding cannot cull a surface. """ defaultPrim = "Robot" metersPerUnit = 1 upAxis = "Z" ) def Xform "Robot" ( kind = "component" ) { # Omnidirectional mobile platform carrying the arm. The cell's Relative Spatial # Location bindings move the whole robot, so the arm rides rather than slides. def Xform "MobileBase" { def Mesh "Chassis" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (-0.5500, -0.3600, 0.1600), (0.5500, -0.3600, 0.1600), (0.5500, 0.3600, 0.1600), (-0.5500, 0.3600, 0.1600), (-0.5000, -0.3200, 0.3500), (0.5000, -0.3200, 0.3500), (0.5000, 0.3200, 0.3500), (-0.5000, 0.3200, 0.3500) ] color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = } def Mesh "Skirt" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (-0.5000, -0.3200, 0.0600), (0.5000, -0.3200, 0.0600), (0.5000, 0.3200, 0.0600), (-0.5000, 0.3200, 0.0600), (-0.5500, -0.3600, 0.1600), (0.5500, -0.3600, 0.1600), (0.5500, 0.3600, 0.1600), (-0.5500, 0.3600, 0.1600) ] color3f[] primvars:displayColor = [(0.14, 0.15, 0.16)] rel material:binding = } # Machined deck the arm bolts onto. def Cube "DeckPlate" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { double size = 1 color3f[] primvars:displayColor = [(0.50, 0.51, 0.54)] rel material:binding = double3 xformOp:translate = (0, 0, 0.3575) double3 xformOp:scale = (0.2600, 0.2300, 0.0075) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:scale"] } def Cylinder "WheelFrontLeft" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.09 double radius = 0.1050 color3f[] primvars:displayColor = [(0.07, 0.07, 0.08)] rel material:binding = double3 xformOp:translate = (0.3700, -0.3450, 0.1050) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cylinder "WheelFrontRight" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.09 double radius = 0.1050 color3f[] primvars:displayColor = [(0.07, 0.07, 0.08)] rel material:binding = double3 xformOp:translate = (0.3700, 0.3450, 0.1050) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cylinder "WheelRearLeft" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.09 double radius = 0.1050 color3f[] primvars:displayColor = [(0.07, 0.07, 0.08)] rel material:binding = double3 xformOp:translate = (-0.3700, -0.3450, 0.1050) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cylinder "WheelRearRight" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.09 double radius = 0.1050 color3f[] primvars:displayColor = [(0.07, 0.07, 0.08)] rel material:binding = double3 xformOp:translate = (-0.3700, 0.3450, 0.1050) uniform token[] xformOpOrder = ["xformOp:translate"] } # Diagonally opposed safety laser scanners, as on a real AGV. def Cylinder "ScannerFront" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Z" double height = 0.10 double radius = 0.0550 color3f[] primvars:displayColor = [(0.09, 0.09, 0.10)] rel material:binding = double3 xformOp:translate = (0.5150, -0.3300, 0.2600) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cylinder "ScannerRear" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Z" double height = 0.10 double radius = 0.0550 color3f[] primvars:displayColor = [(0.09, 0.09, 0.10)] rel material:binding = double3 xformOp:translate = (-0.5150, 0.3300, 0.2600) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cube "BumperFront" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { double size = 1 color3f[] primvars:displayColor = [(0.07, 0.07, 0.08)] rel material:binding = double3 xformOp:translate = (0.5650, 0, 0.1300) double3 xformOp:scale = (0.0200, 0.3400, 0.0500) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:scale"] } def Cube "BumperRear" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { double size = 1 color3f[] primvars:displayColor = [(0.07, 0.07, 0.08)] rel material:binding = double3 xformOp:translate = (-0.5650, 0, 0.1300) double3 xformOp:scale = (0.0200, 0.3400, 0.0500) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:scale"] } def Cube "StatusStripLeft" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { double size = 1 color3f[] primvars:displayColor = [(0.10, 0.85, 0.30)] rel material:binding = double3 xformOp:translate = (0, -0.3530, 0.3000) double3 xformOp:scale = (0.4400, 0.0100, 0.0180) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:scale"] } def Cube "StatusStripRight" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { double size = 1 color3f[] primvars:displayColor = [(0.10, 0.85, 0.30)] rel material:binding = double3 xformOp:translate = (0, 0.3530, 0.3000) double3 xformOp:scale = (0.4400, 0.0100, 0.0180) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:scale"] } } def Xform "Base" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { # Sits on the mobile platform's deck. Clear this to floor-mount the arm. double3 xformOp:translate = (0, 0, 0.3650) uniform token[] xformOpOrder = ["xformOp:translate"] color3f[] primvars:displayColor = [(0.16, 0.17, 0.18)] rel material:binding = # Machined mounting plate, 430 x 370 mm, lightly chamfered towards the floor. def Mesh "MountPlate" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (-0.2000, -0.1700, 0.0000), (0.2000, -0.1700, 0.0000), (0.2000, 0.1700, 0.0000), (-0.2000, 0.1700, 0.0000), (-0.2153, -0.1850, 0.0480), (0.2153, -0.1850, 0.0480), (0.2153, 0.1850, 0.0480), (-0.2153, 0.1850, 0.0480) ] color3f[] primvars:displayColor = [(0.13, 0.14, 0.15)] rel material:binding = } # Cast pedestal tapering up to the A1 slewing ring. def Mesh "Pedestal" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (-0.2000, -0.1700, 0.0480), (0.2000, -0.1700, 0.0480), (0.2000, 0.1700, 0.0480), (-0.2000, 0.1700, 0.0480), (-0.1450, -0.1400, 0.2600), (0.1450, -0.1400, 0.2600), (0.1450, 0.1400, 0.2600), (-0.1450, 0.1400, 0.2600) ] color3f[] primvars:displayColor = [(0.16, 0.17, 0.18)] rel material:binding = } # A1 slewing ring the carousel turns on. def Cylinder "SlewRing" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Z" double height = 0.06 double radius = 0.145 color3f[] primvars:displayColor = [(0.55, 0.56, 0.58)] rel material:binding = double3 xformOp:translate = (0, 0, 0.2700) uniform token[] xformOpOrder = ["xformOp:translate"] } # Controller umbilical entering the rear of the base. def Cube "ConnectorBox" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { double size = 1 color3f[] primvars:displayColor = [(0.09, 0.09, 0.10)] rel material:binding = double3 xformOp:translate = (-0.2050, 0, 0.1350) double3 xformOp:scale = (0.0550, 0.1050, 0.0700) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:scale"] } def Cylinder "Umbilical" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "X" double height = 0.14 double radius = 0.0320 color3f[] primvars:displayColor = [(0.06, 0.06, 0.07)] rel material:binding = double3 xformOp:translate = (-0.2900, 0, 0.1350) uniform token[] xformOpOrder = ["xformOp:translate"] } # ---- A1: base rotation about Z. Contract: xformOp:rotateZ ---- def Xform "J1" { double3 xformOp:translate = (0, 0, 0.2900) double xformOp:rotateZ = 0 uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateZ"] # Rotating carousel casting, KUKA orange. def Mesh "Carousel" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (-0.1600, -0.1450, 0.0000), (0.1750, -0.1450, 0.0000), (0.1750, 0.1450, 0.0000), (-0.1600, 0.1450, 0.0000), (-0.1250, -0.1250, 0.2100), (0.2000, -0.1250, 0.2100), (0.2000, 0.1250, 0.2100), (-0.1250, 0.1250, 0.2100) ] color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = } # Shoulder yoke rising to the A2 bearing at z = 0.675 in robot coordinates. def Mesh "ShoulderYoke" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (0.1000, -0.1250, 0.2100), (0.3600, -0.1250, 0.2100), (0.3600, 0.1250, 0.2100), (0.1000, 0.1250, 0.2100), (0.1750, -0.1550, 0.3850), (0.3450, -0.1550, 0.3850), (0.3450, 0.1550, 0.3850), (0.1750, 0.1550, 0.3850) ] color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = } # A2 drive packs either side of the shoulder bearing. def Cylinder "A2MotorLeft" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.11 double radius = 0.0720 color3f[] primvars:displayColor = [(0.11, 0.11, 0.12)] rel material:binding = double3 xformOp:translate = (0.2600, -0.1950, 0.3850) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cylinder "A2MotorRight" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.11 double radius = 0.0720 color3f[] primvars:displayColor = [(0.11, 0.11, 0.12)] rel material:binding = double3 xformOp:translate = (0.2600, 0.1950, 0.3850) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cylinder "CarouselConduit" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Z" double height = 0.22 double radius = 0.0280 color3f[] primvars:displayColor = [(0.06, 0.06, 0.07)] rel material:binding = double3 xformOp:translate = (-0.1050, 0, 0.1400) uniform token[] xformOpOrder = ["xformOp:translate"] } # ---- A2: shoulder about Y. Contract: xformOp:rotateY ---- # Places the A2 bearing at x = 0.26, z = 0.675 in robot coordinates. def Xform "J2" { double3 xformOp:translate = (0.2600, 0, 0.3850) double xformOp:rotateY = -60 uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateY"] def Cylinder "ShoulderHub" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.30 double radius = 0.1150 color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = } # Counterweight cover behind the shoulder, as on the real arm. def Mesh "Counterweight" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (-0.2400, -0.1000, -0.0900), (-0.0300, -0.1300, -0.1150), (-0.0300, 0.1300, -0.1150), (-0.2400, 0.1000, -0.0900), (-0.2400, -0.1000, 0.0900), (-0.0300, -0.1300, 0.1150), (-0.0300, 0.1300, 0.1150), (-0.2400, 0.1000, 0.0900) ] color3f[] primvars:displayColor = [(0.14, 0.15, 0.16)] rel material:binding = } # Tapered upper arm, 680 mm between the A2 and A3 bearings. def Mesh "UpperArm" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (0.0500, -0.1180, -0.1280), (0.6300, -0.0870, -0.0980), (0.6300, 0.0870, -0.0980), (0.0500, 0.1180, -0.1280), (0.0500, -0.1180, 0.1280), (0.6300, -0.0870, 0.0980), (0.6300, 0.0870, 0.0980), (0.0500, 0.1180, 0.1280) ] color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = } # Energy-supply conduit running along the top of the upper arm. def Cylinder "ArmConduit" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "X" double height = 0.52 double radius = 0.0300 color3f[] primvars:displayColor = [(0.06, 0.06, 0.07)] rel material:binding = double3 xformOp:translate = (0.3400, 0.1080, 0.1250) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cylinder "ElbowHub" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.24 double radius = 0.1000 color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = double3 xformOp:translate = (0.6800, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } # ---- A3: elbow about Y. Contract: xformOp:rotateY ---- def Xform "J3" { double3 xformOp:translate = (0.6800, 0, 0) double xformOp:rotateY = 75 uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateY"] def Cylinder "A3Motor" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.10 double radius = 0.0650 color3f[] primvars:displayColor = [(0.11, 0.11, 0.12)] rel material:binding = double3 xformOp:translate = (0.0100, -0.1700, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } # Elbow casting carrying the forearm. def Mesh "ElbowCasting" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (0.0000, -0.1150, -0.1000), (0.1500, -0.0950, -0.1050), (0.1500, 0.0950, -0.1050), (0.0000, 0.1150, -0.1000), (0.0000, -0.1150, 0.1000), (0.1500, -0.0950, 0.1050), (0.1500, 0.0950, 0.1050), (0.0000, 0.1150, 0.1000) ] color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = } # Tapered forearm running out towards the wrist cluster. def Mesh "Forearm" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (0.1500, -0.0950, -0.1050), (0.5100, -0.0620, -0.0680), (0.5100, 0.0620, -0.0680), (0.1500, 0.0950, -0.1050), (0.1500, -0.0950, 0.1050), (0.5100, -0.0620, 0.0620), (0.5100, 0.0620, 0.0620), (0.1500, 0.0950, 0.1050) ] color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = } def Cylinder "ForearmConduit" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "X" double height = 0.34 double radius = 0.0240 color3f[] primvars:displayColor = [(0.06, 0.06, 0.07)] rel material:binding = double3 xformOp:translate = (0.3200, 0, 0.0950) uniform token[] xformOpOrder = ["xformOp:translate"] } # ---- A4: wrist roll about X. Contract: xformOp:rotateX ---- # 670 mm out from A3 with the real -35 mm lateral offset; A4, A5 and # A6 are coincident, which is the KR 16-2 spherical wrist. def Xform "J4" { double3 xformOp:translate = (0.6700, 0, -0.0350) double xformOp:rotateX = 0 uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateX"] # Rotating outer tube, reaching back to meet the forearm. def Cylinder "RollTube" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "X" double height = 0.20 double radius = 0.0590 color3f[] primvars:displayColor = [(0.90, 0.33, 0.05)] rel material:binding = double3 xformOp:translate = (-0.0900, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } def Cylinder "RollCollar" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "X" double height = 0.03 double radius = 0.0680 color3f[] primvars:displayColor = [(0.11, 0.11, 0.12)] rel material:binding = double3 xformOp:translate = (-0.1750, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } # ---- A5: wrist bend about Y. Contract: xformOp:rotateY ---- def Xform "J5" { double3 xformOp:translate = (0, 0, 0) double xformOp:rotateY = 45 uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateY"] def Cylinder "BendHub" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "Y" double height = 0.12 double radius = 0.0540 color3f[] primvars:displayColor = [(0.11, 0.11, 0.12)] rel material:binding = } def Mesh "WristYoke" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 2, 3, 7, 6, 5, 4, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 3, 7, 4, 0] point3f[] points = [ (0.0000, -0.0540, -0.0540), (0.0850, -0.0430, -0.0430), (0.0850, 0.0430, -0.0430), (0.0000, 0.0540, -0.0540), (0.0000, -0.0540, 0.0540), (0.0850, -0.0430, 0.0430), (0.0850, 0.0430, 0.0430), (0.0000, 0.0540, 0.0540) ] color3f[] primvars:displayColor = [(0.14, 0.15, 0.16)] rel material:binding = } # ---- A6: flange roll about X. Contract: xformOp:rotateX ---- def Xform "J6" { double3 xformOp:translate = (0, 0, 0) double xformOp:rotateX = 0 uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateX"] def Cylinder "FlangeBoss" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "X" double height = 0.08 double radius = 0.0420 color3f[] primvars:displayColor = [(0.11, 0.11, 0.12)] rel material:binding = double3 xformOp:translate = (0.1050, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } # DIN ISO 9409-1-A50 tool flange face. def Cylinder "FlangeDisc" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform token axis = "X" double height = 0.016 double radius = 0.0315 color3f[] primvars:displayColor = [(0.55, 0.56, 0.58)] rel material:binding = double3 xformOp:translate = (0.1500, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } # Tool mount point. The connector composes the gripper here. def Xform "Flange" { double3 xformOp:translate = (0.1580, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate"] } } } } } } } } # Emergency-stop warning zone. Driven to "inherited" by the cell safety state; the # whole subtree follows because visibility is inherited. It is a flat ring painted on # the floor around the mobile platform rather than a disc at deck height, so no part # of the arm or the platform can ever pass through it. def Xform "Warning" { token visibility = "invisible" def Mesh "FloorZone" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { uniform bool doubleSided = true int[] faceVertexCounts = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] int[] faceVertexIndices = [0, 1, 25, 24, 1, 2, 26, 25, 2, 3, 27, 26, 3, 4, 28, 27, 4, 5, 29, 28, 5, 6, 30, 29, 6, 7, 31, 30, 7, 8, 32, 31, 8, 9, 33, 32, 9, 10, 34, 33, 10, 11, 35, 34, 11, 12, 36, 35, 12, 13, 37, 36, 13, 14, 38, 37, 14, 15, 39, 38, 15, 16, 40, 39, 16, 17, 41, 40, 17, 18, 42, 41, 18, 19, 43, 42, 19, 20, 44, 43, 20, 21, 45, 44, 21, 22, 46, 45, 22, 23, 47, 46, 23, 0, 24, 47] point3f[] points = [ (0.7200, 0.0000, 0.0060), (0.6955, 0.1863, 0.0060), (0.6235, 0.3600, 0.0060), (0.5091, 0.5091, 0.0060), (0.3600, 0.6235, 0.0060), (0.1863, 0.6955, 0.0060), (0.0000, 0.7200, 0.0060), (-0.1863, 0.6955, 0.0060), (-0.3600, 0.6235, 0.0060), (-0.5091, 0.5091, 0.0060), (-0.6235, 0.3600, 0.0060), (-0.6955, 0.1863, 0.0060), (-0.7200, 0.0000, 0.0060), (-0.6955, -0.1863, 0.0060), (-0.6235, -0.3600, 0.0060), (-0.5091, -0.5091, 0.0060), (-0.3600, -0.6235, 0.0060), (-0.1863, -0.6955, 0.0060), (-0.0000, -0.7200, 0.0060), (0.1863, -0.6955, 0.0060), (0.3600, -0.6235, 0.0060), (0.5091, -0.5091, 0.0060), (0.6235, -0.3600, 0.0060), (0.6955, -0.1863, 0.0060), (0.9500, 0.0000, 0.0060), (0.9176, 0.2459, 0.0060), (0.8227, 0.4750, 0.0060), (0.6718, 0.6718, 0.0060), (0.4750, 0.8227, 0.0060), (0.2459, 0.9176, 0.0060), (0.0000, 0.9500, 0.0060), (-0.2459, 0.9176, 0.0060), (-0.4750, 0.8227, 0.0060), (-0.6718, 0.6718, 0.0060), (-0.8227, 0.4750, 0.0060), (-0.9176, 0.2459, 0.0060), (-0.9500, 0.0000, 0.0060), (-0.9176, -0.2459, 0.0060), (-0.8227, -0.4750, 0.0060), (-0.6718, -0.6718, 0.0060), (-0.4750, -0.8227, 0.0060), (-0.2459, -0.9176, 0.0060), (-0.0000, -0.9500, 0.0060), (0.2459, -0.9176, 0.0060), (0.4750, -0.8227, 0.0060), (0.6718, -0.6718, 0.0060), (0.8227, -0.4750, 0.0060), (0.9176, -0.2459, 0.0060) ] color3f[] primvars:displayColor = [(0.95, 0.06, 0.05)] rel material:binding = } } def Scope "Materials" { def Material "KukaOrange" { token outputs:surface.connect = def Shader "Surface" { uniform token info:id = "UsdPreviewSurface" color3f inputs:diffuseColor = (0.90, 0.33, 0.05) float inputs:roughness = 0.42 float inputs:metallic = 0 token outputs:surface } } def Material "CastGrey" { token outputs:surface.connect = def Shader "Surface" { uniform token info:id = "UsdPreviewSurface" color3f inputs:diffuseColor = (0.16, 0.17, 0.18) float inputs:roughness = 0.65 float inputs:metallic = 0 token outputs:surface } } def Material "DarkGrey" { token outputs:surface.connect = def Shader "Surface" { uniform token info:id = "UsdPreviewSurface" color3f inputs:diffuseColor = (0.11, 0.11, 0.12) float inputs:roughness = 0.55 float inputs:metallic = 0.2 token outputs:surface } } def Material "Steel" { token outputs:surface.connect = def Shader "Surface" { uniform token info:id = "UsdPreviewSurface" color3f inputs:diffuseColor = (0.55, 0.56, 0.58) float inputs:roughness = 0.30 float inputs:metallic = 1 token outputs:surface } } def Material "Conduit" { token outputs:surface.connect = def Shader "Surface" { uniform token info:id = "UsdPreviewSurface" color3f inputs:diffuseColor = (0.06, 0.06, 0.07) float inputs:roughness = 0.85 float inputs:metallic = 0 token outputs:surface } } def Material "WarnRed" { token outputs:surface.connect = def Shader "Surface" { uniform token info:id = "UsdPreviewSurface" color3f inputs:diffuseColor = (0.95, 0.06, 0.05) color3f inputs:emissiveColor = (0.60, 0.03, 0.02) float inputs:roughness = 0.40 token outputs:surface } } def Material "Rubber" { token outputs:surface.connect = def Shader "Surface" { uniform token info:id = "UsdPreviewSurface" color3f inputs:diffuseColor = (0.07, 0.07, 0.08) float inputs:roughness = 0.95 float inputs:metallic = 0 token outputs:surface } } def Material "StatusGreen" { token outputs:surface.connect = def Shader "Surface" { uniform token info:id = "UsdPreviewSurface" color3f inputs:diffuseColor = (0.10, 0.85, 0.30) color3f inputs:emissiveColor = (0.06, 0.55, 0.18) float inputs:roughness = 0.35 token outputs:surface } } } }