PI-Q-Robot: Difference between revisions

From BITPlan Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
* http://pi-q-robot.bitplan.com/
* http://pi-q-robot.bitplan.com/
* https://discourse.threejs.org/t/robot-simulation-rotation-issues/9065
* https://discourse.threejs.org/t/robot-simulation-rotation-issues/9065
= Robot loading =
<graphviz>
digraph RobotState {
  RfromJsonObj [ label="Robot.fromJsonObj"]
  PfromJsonObj [ label="Part.fromJsonObj"]
  loadParts [ label="Robot.loadParts(whenIntegrated=robot.addGUI(gui,options)" ]
  pLoad [ label="Part.load" ]
  cLoad [ label="ChildPart.load" ]
  addSTL [ label="ChildPart.addSTL(whenDone=ChildPart.onLoaded(part)" ]
  RNew [ label="Robot.new" ]
  pintegrate [ label="Part.integrate" ]
  rintegratePart [ label="Robot.integratePart" ]
  rFullyLoaded [ label="Robot.fullyLoaded" ]
  pFullyLoaded [ label="Part.fullyLoaded" ]
  cFullyLoaded [ label="ChildPart.fullyLoaded" ]


  RNew -> loadParts -> addGUI
  loadParts->pLoad
  pLoad->cLoad
  cLoad -> addSTL
  RfromJsonObj -> PfromJsonObj
  PfromJsonObj -> PfromJsonObj [ label="subParts" ]
  RfromJsonObj -> RNew
  addSTL -> onCreate [ label="stl==null" ]
  pintegrate -> rintegratePart
  pintegrate -> integrateChild
  rintegratePart -> rFullyLoaded
  rFullyLoaded -> pFullyLoaded
  rFullyLoaded -> addGUI [ label="callback via whenIntegrated" ]
  pFullyLoaded -> cFullyLoaded
  cFullyLoaded -> calcSize
  addSTL -> onLoad
  onLoad -> onCreate [ label="stl!=null" ]
  onCreate -> onLoaded [ label="callback via whenDone" ]
  onLoaded -> pintegrate
}
</graphviz>
= rearrange example =
= rearrange example =
<source lang='python'>
<source lang='python'>

Revision as of 05:36, 17 August 2019

Robot loading

rearrange example

  // rearrange
  rearrange() {
    console.log("rearranging ...");
    for (var partIndex in this.allParts) {
      var part = this.allParts[partIndex];
      // add pivots to the coxas
      if (part.name.match('(coxa|femur|tibia)[0-9]')) {
        console.log("rearranging " + part.name);
        part.pivot = new Pivot(part.name + "-pivot", part.x, part.y, part.z, part.rx, part.ry, part.rz);
      }
      // reparent tibias and femurs
      var limbMatches=part.name.match('(tibia|femur)([0-9])');
      if (limbMatches) {
        var limbName=limbMatches[1];
        var limbIndex=limbMatches[2];
        var newParent='femur';
        if (limbName==='femur')
          newParent='coxa';
        // make this limb a child of the newParent
        part.reparent(newParent+limbIndex);
      }
    }
    this.save();
  }