Software para simulación de sistemas mecánicos multicuerpo planares simples utilizando Matter.js

Actualmente, hay pocas opciones de software de simulación de sistemas multicuerpo en dos dimensiones que permitan realizar simulaciones simples con fines didácticos. Las opciones disponibles suelen ser costosas y complejas de parametrizar, lo que las hace poco ideales para tareas educativas. Con esto en mente, para este trabajo de grado se propuso crear una aplicación web que permitiera configurar y simular sistemas mecánicos multicuerpo planares, para que este pudiera ser utilizado por los estudiantes de la materia dinámica de sistemas mecánicos. Este documento presenta el marco teórico, la metodología seguida, y los resultados del proceso de implementación y diseño del software. Adicionalmente, concluye con respecto a los objetivos planteados inicialmente y el trabajo a realizar en el futuro.
Video-tutoriales y demos
A continuación encuentra la lista de algunos video tutoriales y demos del software construido.
| Tutorial péndulo simple | Demo péndulo simple | Demo péndulo doble | Demo mecanismo 4 bárras |
|---|---|---|---|
|
|
|
|
|
| El Tutorial péndulo simple muestra como configurar y correr la simulación de un péndulo simple. El tutorial incluye el funcionamiento básico de todas las herramientas de Simuplandes. | El Demo péndulo simple muestra la simulación de un péndulo simple. | El Demo péndulo doble muestra la simulación de un péndulo doble. | El Demo mecanismo 4 bárras muestra la simulación de un mecanismo 4 bárras. |
En la Lista de reproducción de SimuplAndes puede encontrar los últimos videos y demos.
Abrir Simuplandes en el navegador
Repositorio de código
En este enlace puede acceder al repositorio de código GitHub de Simuplandes
Resultados
Con este proyecto, se logró crear un programa en React, que corre en cualquier navegador moderno y que permite:
- Crear y editar 3 tipos de cuerpos: rectángulos, círculos y polígonos complejos.
- Crear y editar puntos de anclaje en los cuerpos.
- Definir restricciones rotacionales entre dos puntos de anclaje.
- Definir fuerzas en los puntos de anclaje.
- Realizar simulaciones teniendo en cuenta las configuraciones definidas en los puntos anteriores.
En todo caso, por limitaciones del motor de física seleccionado (Matter.js) algunas simulaciones presentan errores o son inestables. La sección Conclusiones ahonda sobre estas limitaciones.
Conclusiones
Los resultados obtenidos logran un avance significativo con respecto a los objetivos planteados inicialmente. La solución construida utiliza lenguajes y frameworks modernos y puede ser ejecutada en cualquier navegador (de escritorio o móvil). Adicionalmente, permite crear cuerpos de diferentes geometrías, definir puntos de anclaje y restricciones rotacionales entre los cuerpos, y aplicar fuerzas puntuales a estos con direcciones fijas o variables. Aunque se pueden hacer mejoras en la interfaz gráfica de usuario en cuanto a experiencia de usuario, la interfaz actual cumple con los mínimos de viabilidad para configurar y correr simulaciones simples.
En todo caso, el componente de simulación aún presenta tres inconvenientes. En primer lugar, el motor de física seleccionado (MatterJs) no tiene un algoritmo de detección continua de colisiones (CDD). Esto hace que, en algunos casos, ocurra el efecto de túnel (tunneling effect) entre los cuerpos. En segundo lugar, las restricciones en motor de física seleccionado no son restricciones duras (hard constraints) si no que son restricciones suaves (soft constraints). Esto causa que se presenten comportamientos inesperados e indeseables en las simulaciones. Finalmente, el motor de física seleccionado no soporta restricciones prismáticas, por lo que no es posible realizar simulaciones con este tipo de restricciones.
Es evidente que los tres inconvenientes, aún por resolver, tienen su origen en el motor de física seleccionado. Así, para el futuro, se deberá considerar un motor de física diferente. PlankJs podría ser una alternativa viable para remplazar el motor de física actual. Este permite definir restricciones rotacionales y prismáticas duras, y tiene detección continua de colisiones.
