# Software Overview

## Purpose

Neuromechanic is a simulated physical environment for testing the stability and control of musculoskeletal systems. Rigid body dynamic equations of motion, holonomic constraints, frictional contact, phenomenological muscle models, and multilayer perceptron neural networks are incorporated.

## Scope

Neuromechanic is a library of routines for simulating biomechanics and the neural control of movement. There is an application programming interface (API) for those who wish to use the various routines of Neuromechanic programmatically. There is also a graphical user interface to assist in working with Neuromechanic with less overhead. This document is intended to explain the theory of Neuromechanic to a technical audience.

## Technical Overview

Neuromechanic was specifically developed to answer questions involving neural control of biomechanical systems. Toward this goal the software has two major functions:

- Given a musculoskeletal system and environment, the software calculates the muscle forces that would balance all external forces applied to the body thereby putting the body in equilibrium. The software linearizes the equations of motion for a given body and posture at the equilibrium point and evaluates the Lyapunov stability of the system.
- The software numerically integrates dynamic equations of motion along with muscle, and neural state equations for forward dynamic simulation of the musculoskeletal system.

## Capabilities

- Run and visualize dynamic simulations. Given a system of body segments, muscles, neural inputs, and feedback controllers, the software calculates the resulting motion as well as internal variables. Simulations can be run through a graphical user interface, or in batch mode through a command line interface.
- Find equilibrium conditions for a musculoskeletal model. For a given body and posture, the software generates muscle activation patterns that balance the internal and external forces acting on the model thereby putting the body in equilibrium. Muscle activation patterns can be found using a user-defined quadratic programming cost function.
- Get linearized state equations. For a given model state the software linearizes the equations of motion and evaluates the Lyapunov stability of the system.
- Build models and analyze simulation results in Matlab. Model parameters can be constructed in matlab and exported to Neuromechanic . In addition, the results of Neuromechanic simulation, equilibration, and linearization can be read into a matlab (*.mat) file format for post-hoc analysis.
- Prototype muscle models and neural controllers. Muscle or neural control models can be implemented in Python and integrated with the neuromechanic environment.