Note SimuLINK is commercial software, and SimSNAKE is our project.

Inspiration

Over a million engineers around the world rely on Simulink for simulation and modeling. Simulink is closed-source software maintained by MathWorks Inc. and is exorbitantly expensive. We decided to create an open-source alternative with a Python backend to improve accessibility to such software for students and hobbyist engineers.

What it does

SimSnake is at its core, a block-modeling Python library. On top of this, we run a web application that allows users to intuitively drag and drop blocks to form their simulations.

Simulink runs on MATLAB, a closed-source language, and doesn't expose the underlying code to the users. Our open-source attitude allows users to develop custom blocks in Python, with seamless PyTorch integration for machine learning and gradient calculations.

Right now, SimSnake can simulate almost any discrete-time system if the user is willing to assemble complex models. What it lacks is the vast library of prepackaged blocks that make Simulink so popular with engineers. In the future, we plan to add rigid body physics modules, native 2D and 3D graphing, and an in-browser Python IDE. With the help of the open-source community, the possibilities are limitless.

How we built it

We started by establishing key features that we wanted to recreate, and a rough sketch of the end user interface. We discovered that others have attempted text-based block modeling with Python. We took inspiration from these past attempts to create a library that is conducive to both scripting and graphical interfaces. We developed the front-end GUI and backend library in parallel, before finally integrating the two.

Challenges we ran into

  • draggin
  • merging frontend/backend

In conventional programming, the execution order is obvious. Programs run line-by-line, top to bottom. However, with time-independent block modeling, it is not so straightforward. Converting between a block-based paradigm and conventional lines of code proved to be a huge challenge. There is almost no literature on the topic available online, so it took a lot of iteration.

Accomplishments that we're proud of

What we learned

What's next for SimSnake

As mentioned above, we hope to leverage the power of the open-source community and introduce new features that will make SimSnake a more compelling Simulink alternative. We plan to continue developing the project, and fully polish the cloud collaborative features, as well as publishing SimSnake to PyPi.

Built With

Share this project:

Updates