This project will explore using Neural Networks to solve systems of ordinary and partial differential equations, with a specific focus on those that represent physical systems. The main goal of the project will be to accurately model balistics with a complex projectile, specifically the note used in the 2024 FIRST Robotics game, CRESCENDO.
The interesting problem in the CRESCENDO game is that the projectile, a foam donut called a 'note' is often launched with spin to increase sability. But this gyroscopic stability will also mean that the angle of the velocity vector relative to the orientatino of the projectile will change over the course of its trajectory, and this will result in a change in drag. Additionally, there may be other forces induced by the motion of the robot launching the projective. So, for this project, we will develop neural networks that can predict trajectories with complex drag functions, based both on simulations, and on data collected from the robots.
We will begin by studying:
Once students are comfortable with the basics, we will move on to:
The physics informed network is very likely to be a combination of the traditional blassitics equations with the addition of a learned function for drag, however, we might discover that the drag function can be learned and predicted through other machine learning techniques.
Start with this basic introduction to neural networks
Be familiar with the ballistics equations and how to solve them in python. See also this more sophisticated solution using scipy.
This video illustrates how a NN can be a universal approximator of continuous functions. . The gist of the video is that for each connection, the weight of the connection is setting the slope of the RELU activation function, and the bias is shifting it. This wikipedia article may also be helpful.
NeuroDiffEq A Python package for solving differential equations with neural networks.
A good introduction to PINNs. And this article actually covers a ballistic simulation
Videos:
Repo with a PINN that solves Navier Stokes, and an associated paper
Lots of examples of physics simulations in Javascript: https://matthias-research.github.io/pages/tenMinutePhysics/index.html
Extensive video lectures on physics and AI.
Here are several resources that can help you understand and implement a physics-informed neural network (PINN) for solving ballistics problems:
Hands-on Introduction to Physics-Informed Neural Networks: This tutorial on nanoHUB offers a comprehensive introduction to PINNs, focusing on how to incorporate differential equations into neural networks. It includes practical examples implemented in PyTorch, making it suitable for users familiar with conventional neural network training and PyTorch basics ("NanoHUB").
https://nanohub.org/resources/handsonpinns
TensorFlow Tutorial for PINNs: This tutorial provides a step-by-step guide to implementing PINNs using TensorFlow. It explains the core concepts of PINNs, including how to incorporate partial differential equations (PDEs) into the loss function, and provides code examples that you can adapt for your ballistics application (George Miloshevich).
https://georgemilosh.github.io/blog/2022/distill/
GitHub Repository by Maziar Raissi: This repository contains extensive resources and examples on using PINNs for solving forward and inverse problems involving nonlinear PDEs. It includes detailed documentation and several example projects that demonstrate the application of PINNs to different types of physical problems, which can be highly relevant for your ballistics project (GitHub).