# Node KinematicMotorNode Defined in `mime.nodes.actuation._chain.KinematicMotorNode`. Algorithm `MIME-NODE-105`. A kinematic motor: a rotor turned by a prescribed angle, or at a prescribed speed integrated over each step, about an axis of the frame it mounts on. ## Governing equations $$ \phi_{n+1} = a \quad \text{(an angle prescribed)}, \qquad \phi_{n+1} = \phi_{n} + \omega \, \mathrm{d}t \quad \text{(a speed prescribed)}; \quad \mathbf{P}_{s} = \mathbf{M}_{j} \circ \mathbf{O}, \quad \mathbf{P}_{r} = \mathbf{P}_{s} \circ \mathrm{Rot}(\mathbf{e}, \phi_{n+1}); \quad \boldsymbol{\Omega}_{s} = \boldsymbol{\omega}_{j}, \quad \boldsymbol{\Omega}_{r} = \boldsymbol{\omega}_{j} + \dot{\phi} \, R(\mathbf{P}_{s}) \mathbf{e} $$ ## Discretisation A prescribed speed is integrated by the rectangle rule over the step, exact for a speed held through it. ## Assumptions - An ideal source of the prescribed motion: no cogging, imbalance or thermal terms (MIME-ANO-102) - Its motion is prescribed: it takes no load, and its reaction is not applied ## Limitations none declared ## Declared regimes (not evidenced here) none declared ## References [@Sola2017] ## Symbols | Symbol | Kind | Name | Units | Implemented by | |---|---|---|---|---| | $\phi$ | state | `angle` | 1 (units declared, not checked) | `mime.nodes.actuation._chain.KinematicMotorNode.advance` | | $a$ | input | `angle` | 1 | `mime.nodes.actuation._chain.KinematicMotorNode.advance` | | $\omega$ | input | `velocity` | Hz | `mime.nodes.actuation._chain.KinematicMotorNode.advance` | | $\mathbf{P}$ | state | `frame_poses` | m; 1 | `mime.nodes.actuation._chain.KinematicMotorNode.advance` | | $\boldsymbol{\Omega}$ | state | `frame_angular_velocities` | rad/s | `mime.nodes.actuation._chain.KinematicMotorNode.rates` | | $\boldsymbol{\omega}$ | input | `mount_rates` | rad/s | `mime.nodes.actuation._chain.MountedNode.base_rate` | | $\mathbf{M}$ | input | `mount_poses` | m; 1 | `mime.nodes.actuation._chain.MountedNode.base` | | $\mathbf{O}$ | parameter | `placement` | m; 1 | `mime.nodes.actuation._chain.MountedNode.base` | | $\mathbf{e}$ | parameter | `axis` | 1 | `mime.nodes.actuation._chain.KinematicMotorNode.poses` | A row marked *units declared, not checked* has the units its author wrote: the code declares none there, so the node walk cannot compare them with anything. ## Built by - [`motor`](../entries/dynamics/motor.md) 0.2.0, rung `kinematic`