1. Bioptim, a Python Framework for Musculoskeletal Optimal Control in Biomechanics
- Author
-
Mickaël Begon, Eve Charbonneau, François Bailly, Sanchez L, Benjamin Michaud, Ceglia A, Université de Montréal. Faculté de médecine. École de kinésiologie et des sciences de l'activité physique, Université de Montréal. Laboratoire de simulation et modélisation du mouvement, Institut national de recherche en sciences et technologies du numérique, Laboratoire de Simulation et de Modélisation du Mouvement, Faculté de médecine de l'Université Laval [Québec] (ULaval), Université Laval [Québec] (ULaval)-Université Laval [Québec] (ULaval)-Département de Kinésiologie, Université de Montréal, Laval, Québec, Canada, Contrôle Artificiel de Mouvements et de Neuroprothèses Intuitives (CAMIN), Inria Sophia Antipolis - Méditerranée (CRISAM), and Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria)
- Subjects
Optimization ,Computer science ,Automatic differentiation ,Interface (computing) ,[SPI]Engineering Sciences [physics] ,Software ,Match moving ,Control theory ,Biomechanics ,Electrical and Electronic Engineering ,ComputingMethodologies_COMPUTERGRAPHICS ,computer.programming_language ,business.industry ,Python (programming language) ,Optimal control ,Musculoskeletal simulation ,Computer Science Applications ,Human-Computer Interaction ,Nonlinear system ,Model predictive control ,Control and Systems Engineering ,business ,computer - Abstract
Musculoskeletal simulations are useful in biomechanics to investigate the causes of movement disorder, to estimate non-measurable physiological quantities or to study the optimality of human movement. We introduce Bioptim, an easy-to-use Python framework for biomechanical optimal control, handling musculoskeletal models. Relying on algorithmic differentiation and the multiple shooting formulation, Bioptim interfaces nonlinear solvers to quickly provide dynamically consistent optimal solutions. The software is both computationally efficient (C++ core) and easily customizable, thanks to its Python interface. It allows to quickly define a variety of biomechanical problems such as motion tracking/prediction, muscle-driven simulations, parameters optimization, multiphase problems, etc. It is also intended for real-time applications such as moving horizon estimation and model predictive control. Six contrasting examples are presented, comprising various models, dynamics, objective functions and constraints. They include data-driven simulations (i.e., a multiphase muscle driven gait cycle and an upper-limb real-time moving horizon estimation of muscle forces) and predictive simulations (i.e., a muscle-driven pointing task, a twisting somersault with a quaternion-based model, a position controller using external forces, and a multiphase torque-driven maximum-height jump motion).
- Published
- 2023