motiondsl

A DSL (Domain Specific Language) to specify rigid motions - the "MotionsDSL"

This package defines a simple language to represent objects of the kgprim.motions module. That is, it defines a file format to specify rigid motions and sequences of rigid motions.

A generic entry of a document of the MotionDSL has this format:

<frame name 1> -> <frame name 2> : <spec>

which reads: "to go from frame1 to frame2, <spec> steps must be taken. Here is a short sample of a complete document:

Model MotionDSLSample

Convention = currentFrame
// -> all the motion-steps referenced by this model are to be interpreted
// in the current, moving frame

fA -> fB : rotx(0.2) try(3.1)
// A rotation about X followed by a translation along Y.
// Use float literals for constant amounts

// Demonstrate the use of variables
fE -> fF : rotx(q0)
fF -> fG : roty(q1)

Identifiers appearing as the argument of a motion step are interpreted as variables. The corresponding kgprim.motions.MotionStep object created when loading the document will have a kgprim.values.Variable instance as the value of its amount member.

See the file sample/motiondsl/model.motdsl for a slightly larger sample. See also sample/motiondsl/sample.py for an example of how to read the model with Python code.

While this package depends on the kgprim.motions module, the converse is not true.

We use textX to create the parser of the language.