Skip to content

Additions to Coarse DSL Based on Chat with Chandra

Jasper Tran O'Leary requested to merge chandra-ideas into master

Created by: jhaazpr

Chandra had a lot to say and made me think really deeply about the language. Here are some actionable items that I have come up with. Let's call the coarse DSL sm-coarse.

Language Design

  • Represent DOFs explicitly in the language, either specified or inferred. The motivation for this is that we are working on an assumption that everything attached
  • Add CompoundStages that contribute more than one DoF to added
  • Recharacterize the Axidraw as having one compound stage (which will look ugly, think about how to render)—maybe we have like hbot, totem, corexy as compoundStageType idk.
  • Kinematic "library"—think about this
  • Use name to index and reference blocks. names must therefore be unique.

Visualization

  • Indicate compound stages visually
  • Add some sort of indicator that displays DOF when a component is moused over
  • Same for kinematic path

Not Code

  • Articulate the fundamental abstraction of SM-coarse: that any machine as "root" or fixed stages, subsequent stages add onto the base as children, where each child inherits the cumulative DoFs of all parent nodes, and that one motor per DoF must power each stage.
  • Write grammar of SM-coarse
  • Investigate denotational semantics as a way of describing SM-coarse. In terms of paper contribution, the semantics for SM-coarse are a mathematical way of understanding machine behavior.
  • Denotational semantics give us understanding on theoretical performance, e.g. a LinearStage with driveType of leadscrew attached to a Motor
  • Emphasize some where that we compile .smc to THREE.js and decompile in the reverse direction. Our existing compiler emphasizes the fact that we do have and use the grammar for the translation process. The fact that we are generating cubes and attaching them corresponds to mathematical denotations e.g. a connection means that the position of the baseBlock will be at p_{orig} + ... etc.

Merge request reports