Jonas-Nicodemus/PINNs-based-MPC
GitHub: Jonas-Nicodemus/PINNs-based-MPC
该项目提出了一种基于物理信息神经网络(PINN)的模型预测控制方法,用于解决多连杆机械臂等复杂多体动力学系统的轨迹跟踪控制问题。
Stars: 154 | Forks: 33
[][arxiv-url]
[][doi-url]
[][license-url]
[][linkedin-url]
# [基于物理信息神经网络的多连杆机械臂模型预测控制][ifac-url]
对在维也纳举行的 [MATMOD 2022](https://www.mathmod.at/) 会议的贡献。
## 关于本项目
我们探讨了通过物理信息机器学习方法实现多体动力学的非线性模型预测控制 (NMPC)。物理信息神经网络 (PINNs) 是逼近(偏)微分方程的一种极具前景的工具。然而,PINNs 在其原始形式下并不适合控制任务,因为它们并未被设计用来处理可变的控制动作或初始值。因此,我们提出了通过将控制动作和初始条件作为额外网络输入来增强 PINNs 的想法。随后,通过采样策略和零阶保持假设来降低高维输入空间的维度。这种策略使得基于 PINN 的控制器设计成为可能,该 PINN 用于逼近底层的系统动力学。另一个额外的好处是,通过自动微分可以轻松计算敏感度,从而实现高效的基于梯度的算法。最后,我们展示了使用基于 PINN 的 MPC 来解决复杂机械系统(多连杆机械臂)跟踪问题的结果。
### 引用
如果您将本项目用于学术研究,请考虑引用我们的
[出版物][ifac-url]:
```
Jonas Nicodemus, Jonas Kneifl, Jörg Fehr, Benjamin Unger,
Physics-informed Neural Networks-based Model Predictive Control for Multi-link Manipulators,
IFAC-PapersOnLine, Volume 55, Issue 20, 2022.
```
### 构建工具
* [TensorFlow](https://www.tensorflow.org/)
* [Python](https://www.python.org/)
## 快速入门
要在本地运行项目,请按照以下简单步骤操作。
### 前置条件
需要配置 Python 环境,我们建议使用虚拟环境。
### 安装说明
1. Clone 仓库
git clone git@github.com:Jonas-Nicodemus/PINNs-based-MPC.git
2. 进入目录
cd PINNs-based-MPC
3. 安装依赖
pip install -r requirements.txt
## 用法
在 `src` 中有两个可执行脚本。
* `train_pinn.py` 可以执行以学习权重并覆盖 `resources/weights` 下已存在的权重。
* `main.py` 会针对给定的参考轨迹,首先在自环预测模式下评估 PINN,随后在与真实系统(由 RK45 模拟)连接的闭环模式下进行评估。
## 许可证
基于 MIT 许可证分发。更多信息请参阅 `LICENSE`。
## 联系方式
Jonas Nicodemus - jonas.nicodemus@icloud.com
Benjamin Unger - benjamin.unger@kit.edu\
Jonas Kneifl - jonas.kneifl@itm.uni-stuttgart.de\
Jörg Fehr - joerg.fehr@itm.uni-stuttgart.de
项目链接:[https://github.com/Jonas-Nicodemus/PINNs-based-MPC](https://github.com/Jonas-Nicodemus/PINNs-based-MPC)
标签:Apex, 多体动力学, 机器人控制, 机器学习, 模型预测控制, 物理信息神经网络, 自动微分, 逆向工具