Skip to content
LIBRARY
PlanarMechanics.examples.SlipBasedWheelTest.md

PlanarMechanics.examples.SlipBasedWheelTest

A slip-based wheel.

Usage

MultibodyComponents.PlanarMechanics.examples.SlipBasedWheelTest()

Behavior

[connect(prismatic+framea,revolute+frameb)connect(revolute+framea,world+frameb)connect(constanttorque+y,engineTorque+tau)connect(engineTorque+spline,inertia+splinea)connect(body+framea,prismatic+frameb,slipBasedWheelJoint+framea)connect(constantload+y,slipBasedWheelJoint+dynamicLoad)connect(engineTorque+support,fixed+spline)connect(inertia+splineb,slipBasedWheelJoint+flangea)slipBasedWheelJoint.e0(t)=arrayliteral([22],cos(slipBasedWheelJoint.framea.phi(t)),sin(slipBasedWheelJoint.framea.phi(t)),sin(slipBasedWheelJoint.framea.phi(t)),cos(slipBasedWheelJoint.framea.phi(t)))slipBasedWheelJoint.radjoint(slipBasedWheelJoint.r)slipBasedWheelJoint.rslipBasedWheelJoint.vvec(t)=arrayliteral([2],dslipBasedWheelJoint.framea.x(t)dt,dslipBasedWheelJoint.framea.y(t)dt)slipBasedWheelJoint.phiroll(t)=slipBasedWheelJoint.flangea.phi(t)slipBasedWheelJoint.wroll(t)=dslipBasedWheelJoint.phiroll(t)dtslipBasedWheelJoint.vlong(t)=dot(slipBasedWheelJoint.vvec(t),slipBasedWheelJoint.e0(t))slipBasedWheelJoint.vlat(t)=slipBasedWheelJoint.e01(t)slipBasedWheelJoint.vvec_2(t)slipBasedWheelJoint.e02(t)slipBasedWheelJoint.vvec_1(t)slipBasedWheelJoint.vslip_lat(t)=slipBasedWheelJoint.vlat(t)slipBasedWheelJoint.vslip_long(t)=slipBasedWheelJoint.vlong(t)slipBasedWheelJoint.radiusslipBasedWheelJoint.wroll(t)slipBasedWheelJoint.vslip(t)=0.0001+(slipBasedWheelJoint.vslip_lat(t))2+(slipBasedWheelJoint.vslip_long(t))20=slipBasedWheelJoint.flangea.tau(t)+slipBasedWheelJoint.radiusslipBasedWheelJoint.flong(t)slipBasedWheelJoint.framea.tau(t)=0slipBasedWheelJoint.vAdhesion(t)=max(slipBasedWheelJoint.vAdhesionmin,slipBasedWheelJoint.sAdhesion|slipBasedWheelJoint.radiusslipBasedWheelJoint.wroll(t)|)slipBasedWheelJoint.vSlide(t)=max(slipBasedWheelJoint.vSlidemin,slipBasedWheelJoint.sSlide|slipBasedWheelJoint.radiusslipBasedWheelJoint.wroll(t)|)slipBasedWheelJoint.fN(t)=max(0,slipBasedWheelJoint.N+slipBasedWheelJoint.dynamicLoad(t))slipBasedWheelJoint.f(t)=limitS_triple(slipBasedWheelJoint.vAdhesion(t),slipBasedWheelJoint.vSlide(t),slipBasedWheelJoint.muA,slipBasedWheelJoint.muS,slipBasedWheelJoint.vslip(t))slipBasedWheelJoint.fN(t)slipBasedWheelJoint.flong(t)=slipBasedWheelJoint.f(t)slipBasedWheelJoint.vslip_long(t)slipBasedWheelJoint.vslip(t)slipBasedWheelJoint.flat(t)=slipBasedWheelJoint.f(t)slipBasedWheelJoint.vslip_lat(t)slipBasedWheelJoint.vslip(t)slipBasedWheelJoint.flong(t)=slipBasedWheelJoint.e01(t)slipBasedWheelJoint.framea.fx(t)+slipBasedWheelJoint.e02(t)slipBasedWheelJoint.framea.fy(t)slipBasedWheelJoint.flat(t)=slipBasedWheelJoint.e01(t)slipBasedWheelJoint.framea.fy(t)slipBasedWheelJoint.e02(t)slipBasedWheelJoint.framea.fx(t)slipBasedWheelJoint.tireshape.r(t)=arrayliteral([3],slipBasedWheelJoint.framea.x(t),slipBasedWheelJoint.framea.y(t),slipBasedWheelJoint.zposition)slipBasedWheelJoint.tireshape.R(t)=arrayliteral([33],1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0)slipBasedWheelJoint.tireshape.r_shape(t)=arrayliteral([3],0.03slipBasedWheelJoint.e02(t),0.03slipBasedWheelJoint.e01(t),0.0)slipBasedWheelJoint.tireshape.length_direction(t)=arrayliteral([3],slipBasedWheelJoint.e02(t),slipBasedWheelJoint.e01(t),0)slipBasedWheelJoint.tireshape.width_direction(t)=[001]slipBasedWheelJoint.tireshape.length(t)=slipBasedWheelJoint.wheelwidthslipBasedWheelJoint.tireshape.width(t)=2slipBasedWheelJoint.radiusslipBasedWheelJoint.tireshape.height(t)=2slipBasedWheelJoint.radiusslipBasedWheelJoint.rim1shape.r(t)=arrayliteral([3],slipBasedWheelJoint.framea.x(t),slipBasedWheelJoint.framea.y(t),slipBasedWheelJoint.zposition)slipBasedWheelJoint.rim1shape.R(t)=arrayliteral([33],slipBasedWheelJoint.e02(t)2+(1slipBasedWheelJoint.e02(t)2)cos(slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)slipBasedWheelJoint.e02(t)+slipBasedWheelJoint.e01(t)slipBasedWheelJoint.e02(t)cos(slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)sin(slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)slipBasedWheelJoint.e02(t)+slipBasedWheelJoint.e01(t)slipBasedWheelJoint.e02(t)cos(slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)2+(1slipBasedWheelJoint.e01(t)2)cos(slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e02(t)sin(slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)sin(slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e02(t)sin(slipBasedWheelJoint.phiroll(t)),cos(slipBasedWheelJoint.phiroll(t)))slipBasedWheelJoint.rim1shape.r_shape(t)=arrayliteral([3],0,0,slipBasedWheelJoint.radius)slipBasedWheelJoint.rim1shape.length_direction(t)=[001]slipBasedWheelJoint.rim1shape.width_direction(t)=[100]slipBasedWheelJoint.rim1shape.length(t)=2slipBasedWheelJoint.radiusslipBasedWheelJoint.rim1shape.width(t)=slipBasedWheelJoint.rimdiameterslipBasedWheelJoint.rim1shape.height(t)=slipBasedWheelJoint.rimdiameterslipBasedWheelJoint.rim2shape.r(t)=arrayliteral([3],slipBasedWheelJoint.framea.x(t),slipBasedWheelJoint.framea.y(t),slipBasedWheelJoint.zposition)slipBasedWheelJoint.rim2shape.R(t)=arrayliteral([33],slipBasedWheelJoint.e02(t)2+(1slipBasedWheelJoint.e02(t)2)cos(1.570796326794895slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)slipBasedWheelJoint.e02(t)+slipBasedWheelJoint.e01(t)slipBasedWheelJoint.e02(t)cos(1.570796326794895slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)sin(1.570796326794895slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)slipBasedWheelJoint.e02(t)+slipBasedWheelJoint.e01(t)slipBasedWheelJoint.e02(t)cos(1.570796326794895slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)2+(1slipBasedWheelJoint.e01(t)2)cos(1.570796326794895slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e02(t)sin(1.570796326794895slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e01(t)sin(1.570796326794895slipBasedWheelJoint.phiroll(t)),slipBasedWheelJoint.e02(t)sin(1.570796326794895slipBasedWheelJoint.phiroll(t)),cos(1.570796326794895slipBasedWheelJoint.phiroll(t)))slipBasedWheelJoint.rim2shape.r_shape(t)=arrayliteral([3],0,0,slipBasedWheelJoint.radius)slipBasedWheelJoint.rim2shape.length_direction(t)=[001]slipBasedWheelJoint.rim2shape.width_direction(t)=[100]slipBasedWheelJoint.rim2shape.length(t)=2slipBasedWheelJoint.radiusslipBasedWheelJoint.rim2shape.width(t)=slipBasedWheelJoint.rimdiameterslipBasedWheelJoint.rim2shape.height(t)=slipBasedWheelJoint.rimdiameterprismatic.e0(t)=arrayliteral([22],cos(prismatic.framea.phi(t)),sin(prismatic.framea.phi(t)),sin(prismatic.framea.phi(t)),cos(prismatic.framea.phi(t)))prismatic.rprismatic.rprismatic.r0(t)=prismatic.s(t)prismatic.e0(t)prismatic.v(t)=dprismatic.s(t)dtprismatic.a(t)=dprismatic.v(t)dtprismatic.r01(t)+prismatic.framea.x(t)=prismatic.frameb.x(t)prismatic.r02(t)+prismatic.framea.y(t)=prismatic.frameb.y(t)prismatic.framea.phi(t)=prismatic.frameb.phi(t)prismatic.framea.fx(t)+prismatic.frameb.fx(t)=0prismatic.framea.fy(t)+prismatic.frameb.fy(t)=0prismatic.frameb.tau(t)+prismatic.framea.tau(t)+prismatic.r01(t)prismatic.frameb.fy(t)prismatic.r02(t)prismatic.frameb.fx(t)=0prismatic.framea.fx(t)prismatic.e01(t)+prismatic.e02(t)prismatic.framea.fy(t)=prismatic.f(t)prismatic.f(t)=0prismatic.shape.r(t)=[000]prismatic.shape.R(t)=arrayliteral([33],1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0)prismatic.shape.rshape(t)=arrayliteral([3],prismatic.framea.x(t),prismatic.framea.y(t),prismatic.zposition)prismatic.shape.lengthdirection(t)=arrayliteral([3],prismatic.e01(t),prismatic.e02(t),0)prismatic.shape.widthdirection(t)=[001]prismatic.shape.length(t)=prismatic.s(t)prismatic.shape.width(t)=prismatic.boxwidthprismatic.shape.height(t)=prismatic.boxheightrevolute.w(t)=drevolute.phi(t)dtrevolute.alpha(t)=drevolute.w(t)dtrevolute.framea.x(t)=revolute.frameb.x(t)revolute.framea.y(t)=revolute.frameb.y(t)revolute.framea.phi(t)+revolute.phi(t)=revolute.frameb.phi(t)revolute.frameb.fx(t)+revolute.framea.fx(t)=0revolute.framea.fy(t)+revolute.frameb.fy(t)=0revolute.frameb.tau(t)+revolute.framea.tau(t)=0revolute.framea.tau(t)=revolute.tau(t)revolute.flangea.phi(t)=revolute.phi(t)revolute.flangea.tau(t)=revolute.tau(t)revolute.shape.r(t)=arrayliteral([3],revolute.framea.x(t),revolute.framea.y(t),revolute.zposition)revolute.shape.R(t)=arrayliteral([33],cos(revolute.framea.phi(t)),sin(revolute.framea.phi(t)),0,sin(revolute.framea.phi(t)),cos(revolute.framea.phi(t)),0,0,0,1)revolute.shape.rshape(t)=arrayliteral([3],0,0,12revolute.cylinderlength)revolute.shape.lengthdirection(t)=[001]revolute.shape.widthdirection(t)=[100]revolute.shape.length(t)=revolute.cylinderlengthrevolute.shape.width(t)=2revolute.radiusrevolute.shape.height(t)=2revolute.radiusworld.frameb.x(t)=0world.frameb.y(t)=0world.frameb.phi(t)=0connect(frameb,framevis+frame_a)world.framevis.phi(t)=world.framevis.frame_a.phi(t)world.framevis.x_shape.r(t)=arrayliteral([3],world.framevis.frame_a.x(t),world.framevis.frame_a.y(t),world.framevis.z_position)world.framevis.x_shape.R(t)=arrayliteral([33],cos(world.framevis.phi(t)),sin(world.framevis.phi(t)),0,sin(world.framevis.phi(t)),cos(world.framevis.phi(t)),0,0,0,1)world.framevis.x_shape.r_shape(t)=[000]world.framevis.x_shape.length_direction(t)=[100]world.framevis.x_shape.width_direction(t)=[001]world.framevis.x_shape.length(t)=world.framevis.axis_lengthworld.framevis.x_shape.width(t)=2world.framevis.axis_radiusworld.framevis.x_shape.height(t)=2world.framevis.axis_radiusworld.framevis.y_shape.r(t)=arrayliteral([3],world.framevis.frame_a.x(t),world.framevis.frame_a.y(t),world.framevis.z_position)world.framevis.y_shape.R(t)=arrayliteral([33],cos(world.framevis.phi(t)),sin(world.framevis.phi(t)),0,sin(world.framevis.phi(t)),cos(world.framevis.phi(t)),0,0,0,1)world.framevis.y_shape.r_shape(t)=[000]world.framevis.y_shape.length_direction(t)=[010]world.framevis.y_shape.width_direction(t)=[001]world.framevis.y_shape.length(t)=world.framevis.axis_lengthworld.framevis.y_shape.width(t)=2world.framevis.axis_radiusworld.framevis.y_shape.height(t)=2world.framevis.axis_radiusworld.framevis.z_shape.r(t)=arrayliteral([3],world.framevis.frame_a.x(t),world.framevis.frame_a.y(t),world.framevis.z_position)world.framevis.z_shape.R(t)=arrayliteral([33],cos(world.framevis.phi(t)),sin(world.framevis.phi(t)),0,sin(world.framevis.phi(t)),cos(world.framevis.phi(t)),0,0,0,1)world.framevis.z_shape.r_shape(t)=[000]world.framevis.z_shape.length_direction(t)=[001]world.framevis.z_shape.width_direction(t)=[100]world.framevis.z_shape.length(t)=world.framevis.axis_lengthworld.framevis.z_shape.width(t)=2world.framevis.axis_radiusworld.framevis.z_shape.height(t)=2world.framevis.axis_radiusbody.r(t)=arrayliteral([2],body.framea.x(t),body.framea.y(t))body.v(t)=dbody.r(t)dtbody.phi(t)=body.framea.phi(t)body.w(t)=dbody.phi(t)dtbody.a(t)=dbody.v(t)dtbody.alpha(t)=dbody.w(t)dtbody.f(t)=arrayliteral([2],body.framea.fx(t),body.framea.fy(t))body.f(t)+arrayliteral([2],body.mgn2d1,body.mgn2d2)=body.mbody.a(t)body.Ibody.alpha(t)=body.framea.tau(t)body.shape.r(t)=arrayliteral([3],body.framea.x(t),body.framea.y(t),body.zposition)body.shape.R(t)=arrayliteral([33],cos(body.phi(t)),sin(body.phi(t)),0,sin(body.phi(t)),cos(body.phi(t)),0,0,0,1)body.shape.rshape(t)=[000]body.shape.lengthdirection(t)=[001]body.shape.widthdirection(t)=[100]body.shape.length(t)=2body.radiusbody.shape.width(t)=2body.radiusbody.shape.height(t)=2body.radiusinertia.phi(t)=inertia.splinea.phi(t)inertia.phi(t)=inertia.splineb.phi(t)dinertia.phi(t)dt=inertia.w(t)dinertia.w(t)dt=inertia.a(t)inertia.Jinertia.a(t)=inertia.splinea.tau(t)+inertia.splineb.tau(t)engineTorque.support.phi(t)=engineTorque.phisupport(t)engineTorque.support.tau(t)=engineTorque.spline.tau(t)engineTorque.phi(t)=engineTorque.phisupport(t)+engineTorque.spline.phi(t)engineTorque.spline.tau(t)=engineTorque.tau(t)fixed.spline.phi(t)=fixed.phi0constanttorque.y(t)=constanttorque.kconstantload.y(t)=constantload.k]

Source

dyad
"A slip-based wheel."
example component SlipBasedWheelTest
  slipBasedWheelJoint = MultibodyComponents.PlanarMechanics.SlipBasedWheelJoint(radius = 0.3, r = [1, 0], mu_A = 0.8, mu_S = 0.4, N = 100, sAdhesion = 0.04, sSlide = 0.12, vAdhesion_min = 0.05, vSlide_min = 0.15) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 940, "y1": 590, "x2": 740, "y2": 790, "rot": 90}
      },
      "tags": []
    }
  }
  prismatic = MultibodyComponents.PlanarMechanics.Prismatic(r = [0, 1]) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 550, "y1": 50, "x2": 750, "y2": 250, "rot": 0}
      },
      "tags": []
    }
  }
  revolute = MultibodyComponents.PlanarMechanics.Revolute() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 290, "y1": 50, "x2": 490, "y2": 250, "rot": 0}
      },
      "tags": []
    }
  }
  world = MultibodyComponents.PlanarMechanics.World(g = 0) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 50, "x2": 220, "y2": 250, "rot": 0}
      },
      "tags": []
    }
  }
  body = MultibodyComponents.PlanarMechanics.Body(m = 10, I = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 810, "y1": 50, "x2": 1010, "y2": 250, "rot": 0}
      },
      "tags": []
    }
  }
  inertia = RotationalComponents.Components.Inertia(J = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 550, "y1": 360, "x2": 750, "y2": 560, "rot": 0}
      },
      "tags": []
    }
  }
  engineTorque = RotationalComponents.Sources.TorqueSource() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 290, "y1": 360, "x2": 490, "y2": 560, "rot": 0}
      },
      "tags": []
    }
  }
  fixed = RotationalComponents.Components.Fixed()
  constant_torque = BlockComponents.Sources.Constant(k = 2) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 360, "x2": 220, "y2": 560, "rot": 0}
      },
      "tags": []
    }
  }
  constant_load = BlockComponents.Sources.Constant(k = 0) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 1430, "y1": 800, "x2": 1230, "y2": 1000, "rot": 0}
      },
      "tags": []
    }
  }
relations
  initial prismatic.s = 1.0
  initial prismatic.v = 0.0
  initial body.phi = 0.0
  initial body.w = 0.0
  initial inertia.phi = 0.0
  initial inertia.w = 1e-10
  connect(prismatic.frame_a, revolute.frame_b) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(revolute.frame_a, world.frame_b) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(constant_torque.y, engineTorque.tau) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(engineTorque.spline, inertia.spline_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(body.frame_a, prismatic.frame_b, slipBasedWheelJoint.frame_a) {
    "Dyad": {
      "edges": [
        {"S": 1, "M": [], "E": -1},
        {"S": -1, "M": [], "E": 2},
        {"S": 3, "M": [{"x": 952, "y": 400}, {"x": 780, "y": 400}], "E": -1}
      ],
      "junctions": [{"x": 780, "y": 150}],
      "renderStyle": "standard"
    }
  }
  connect(constant_load.y, slipBasedWheelJoint.dynamicLoad) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 1120, "y": 900}, {"x": 1120, "y": 800}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(engineTorque.support, fixed.spline)
  connect(inertia.spline_b, slipBasedWheelJoint.flange_a) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 840, "y": 460}], "E": 2}],
      "renderStyle": "standard"
    }
  }
metadata {"Dyad": {"tests": {"case1": {"stop": 20}}}}
end
Flattened Source
dyad
"A slip-based wheel."
example component SlipBasedWheelTest
  slipBasedWheelJoint = MultibodyComponents.PlanarMechanics.SlipBasedWheelJoint(radius = 0.3, r = [1, 0], mu_A = 0.8, mu_S = 0.4, N = 100, sAdhesion = 0.04, sSlide = 0.12, vAdhesion_min = 0.05, vSlide_min = 0.15) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 940, "y1": 590, "x2": 740, "y2": 790, "rot": 90}
      },
      "tags": []
    }
  }
  prismatic = MultibodyComponents.PlanarMechanics.Prismatic(r = [0, 1]) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 550, "y1": 50, "x2": 750, "y2": 250, "rot": 0}
      },
      "tags": []
    }
  }
  revolute = MultibodyComponents.PlanarMechanics.Revolute() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 290, "y1": 50, "x2": 490, "y2": 250, "rot": 0}
      },
      "tags": []
    }
  }
  world = MultibodyComponents.PlanarMechanics.World(g = 0) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 50, "x2": 220, "y2": 250, "rot": 0}
      },
      "tags": []
    }
  }
  body = MultibodyComponents.PlanarMechanics.Body(m = 10, I = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 810, "y1": 50, "x2": 1010, "y2": 250, "rot": 0}
      },
      "tags": []
    }
  }
  inertia = RotationalComponents.Components.Inertia(J = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 550, "y1": 360, "x2": 750, "y2": 560, "rot": 0}
      },
      "tags": []
    }
  }
  engineTorque = RotationalComponents.Sources.TorqueSource() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 290, "y1": 360, "x2": 490, "y2": 560, "rot": 0}
      },
      "tags": []
    }
  }
  fixed = RotationalComponents.Components.Fixed()
  constant_torque = BlockComponents.Sources.Constant(k = 2) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 360, "x2": 220, "y2": 560, "rot": 0}
      },
      "tags": []
    }
  }
  constant_load = BlockComponents.Sources.Constant(k = 0) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 1430, "y1": 800, "x2": 1230, "y2": 1000, "rot": 0}
      },
      "tags": []
    }
  }
relations
  initial prismatic.s = 1.0
  initial prismatic.v = 0.0
  initial body.phi = 0.0
  initial body.w = 0.0
  initial inertia.phi = 0.0
  initial inertia.w = 1e-10
  connect(prismatic.frame_a, revolute.frame_b) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(revolute.frame_a, world.frame_b) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(constant_torque.y, engineTorque.tau) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(engineTorque.spline, inertia.spline_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(body.frame_a, prismatic.frame_b, slipBasedWheelJoint.frame_a) {
    "Dyad": {
      "edges": [
        {"S": 1, "M": [], "E": -1},
        {"S": -1, "M": [], "E": 2},
        {"S": 3, "M": [{"x": 952, "y": 400}, {"x": 780, "y": 400}], "E": -1}
      ],
      "junctions": [{"x": 780, "y": 150}],
      "renderStyle": "standard"
    }
  }
  connect(constant_load.y, slipBasedWheelJoint.dynamicLoad) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 1120, "y": 900}, {"x": 1120, "y": 800}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(engineTorque.support, fixed.spline)
  connect(inertia.spline_b, slipBasedWheelJoint.flange_a) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 840, "y": 460}], "E": 2}],
      "renderStyle": "standard"
    }
  }
metadata {"Dyad": {"tests": {"case1": {"stop": 20}}}}
end


Test Cases

Test Case case1

  • Examples

  • Experiments

  • Analyses