TinyMPC 使用教程(一)

简介: TinyMPC 使用教程(一)

系列文章目录


前言

欢迎访问 TinyMPC 文档!

       TinyMPC 是为凸模型预测控制量身定制的开源求解器,能以较小的内存占用进行高速计算。TinyMPC 使用 C++ 实现,依赖性极小,特别适合资源受限平台上的嵌入式控制和机器人应用。TinyMPC 可以处理状态和输入边界以及二阶锥约束。提供 Python、Julia 和 MATLAB 接口,帮助生成嵌入式系统的代码。

🏆 TinyMPC 已入围 IEEE ICRA 2024 最佳会议论文奖、最佳学生论文奖和自动化最佳论文奖!感谢所有使用过 TinyMPC 并提供反馈意见的人!

 


 

一、机器人演示

       TinyMPC 有助于缩小计算密集型凸模型预测控制与资源有限的处理平台之间的差距。将 TinyMPC 集成到计算能力不足的机器人中,可使它们执行敏捷的机动动作并表现出安全的行为。

1.1 动态避障

       TinyMPC 的运行速度足够快,可以在每个时间步重新线性化约束条件,使其能够推理移动的障碍物。左图中,以摇杆末端为中心的虚拟球体在每个时间步被线性化为一组新的超平面约束。此外,该算法还能处理任意数量的线性约束。例如,在右图中,它避开了棍子的末端,同时保持在 yz 平面上。

 

1.2 极端姿态恢复

       TinyMPC 可以从极端初始条件下恢复姿势。在这个例子中,它与 Crazyflie 2.1 的三个现有控制器进行了比较。只有 TinyMPC 能够推理出控制极限,从而实现干净利落的恢复操作。

 

1.3 图 8 跟踪

       我们将相同的控制器与不可行的快速 "8 "字形跟踪任务进行了比较(完成一个 "8 "字形所需的时间只有在无人机的功率大得多的情况下才能达到)。TinyMPC 和 PID 都能保持直立,但 TinyMPC 的轨迹更接近 "8 "字形。

二、微控制器基准

       在微控制器基准测试中,TinyMPC 在速度和内存占用方面都优于最先进的求解器。

       在这里,我们解决了随机生成的基于 QP 的 MPC 问题,并与 OSQP 比较了迭代时间和内存占用。与 OSQP 相比,TinyMPC 的最大速度提高了 8 倍,而内存占用却少得多。

       TinyMPC 现在还能处理圆锥约束!在(b)中,我们在火箭柔性着陆问题上对 TinyMPC 与现有的两个嵌入式圆锥求解器 SCS 和 ECOS 进行了基准测试。TinyMPC 的平均速度是 SCS 的 13 倍,是 ECOS 的 137 倍。

       实时控制要求求解器在严格的时间窗口内返回解。我们比较了 TinyMPC 与 SCS 和 ECOS 在火箭柔性着陆问题上的轨迹跟踪性能,同时人为地改变了每次求解的可用时间。在所有控制持续时间内,TinyMPC 比 SCS 和 ECOS 违反约束更少,跟踪误差更低。

三、开发者

四、引用

@inproceedings{tinympc,

     title={TinyMPC: Model-Predictive Control on Resource-Constrained Microcontrollers},

     author={Khai Nguyen and Sam Schoedel and Anoushka Alavilli and Brian Plancher and Zachary Manchester},

     year={2024},

     booktitle={IEEE International Conference on Robotics and Automation (ICRA)},

}

@misc{tinympc-conic-codegen, title={Code Generation for Conic Model-Predictive Control on Microcontrollers with TinyMPC}, author={Sam Schoedel and Khai Nguyen and Elakhya Nedumaran and Brian Plancher and Zachary Manchester}, year={2024}, eprint={2403.18149}, archivePrefix={arXiv}, }

五、如何安装 TinyMPC?

       我们提供用户友好的高级语言界面,以实现低级 C++ 代码生成和验证,使其可在嵌入式硬件上部署。我们还提供各种机器人控制示例,包括 Crazyflie 纳米四旋翼机器人。

       请查看我们的 GitHub 存储库,了解实施细节: C++、Python、MATLAB、Julia

       请访问我们的 GitHub 讨论页面,了解与求解器相关的任何问题!

       要开始使用,只需选择您的语言界面,然后按照下面的简易安装说明进行操作即可(在 Ubuntu 上进行了测试)        

C++

 

克隆 GitHub 仓库

git clone https://github.com/TinyMPC/TinyMPC.git

导航至根目录并运行

cd TinyMPC && mkdir build && cd build

运行 CMake 配置步骤

cmake .

构建 TinyMPC

cmake --build .

运行示例

./examples/quadrotor_hovering

Python

 

克隆 GitHub 仓库

git clone https://github.com/TinyMPC/TinyMPC.git

导航至根目录并运行

cd TinyMPC && mkdir build && cd build

运行 CMake 配置步骤

cmake .

构建 TinyMPC

cmake --build .

运行示例

./examples/quadrotor_hovering

Julia

 

用子模块克隆 GitHub 仓库

git clone --recurse-submodules https://github.com/TinyMPC/tinympc-julia.git

运行 interactive_cartpole_ext.ipynb 示例

MATLAB

 

用子模块克隆 GitHub 仓库

git clone --recurse-submodules https://github.com/TinyMPC/tinympc-matlab.git

运行 interactive_cartpole.mlx 示例


目录
相关文章
|
JavaScript
NATAPP使用教程(内网穿透)
NATAPP使用教程(内网穿透)
785 0
|
域名解析 安全 应用服务中间件
手把手教你安装WordPress详细教程(图文)
如果还有不了解宝塔面板怎么使用的小伙伴,可以看下我总结的系列教程,保证从新手变老鸟:
1302 0
手把手教你安装WordPress详细教程(图文)
|
1月前
|
XML JavaScript 前端开发
PyMJCF 使用教程
PyMJCF 使用教程
17 3
|
1月前
|
存储 Rust 算法
TinyMPC 使用教程(二)
TinyMPC 使用教程(二)
34 3
|
1月前
Crocoddyl 使用教程(二)
Crocoddyl 使用教程(二)
25 1
|
4月前
|
Linux 数据安全/隐私保护 Windows
[使用教程]xftp5中文版怎么使用?
[使用教程]xftp5中文版怎么使用?
|
12月前
|
域名解析 弹性计算 Linux
阿里云服务器怎么使用教程?图文操作教程
阿里云服务器怎么使用教程?图文操作教程,使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程
763 0
|
监控 数据库
CANape的使用教程
CANape的使用教程
CANape的使用教程
|
搜索推荐
StartAllBack使用教程
StartAllBack, Win11开始菜单增强工具,为Windows11恢复经典样式的Windows7主题风格开始菜单和任务栏,功能包括:自定义开始菜单样式和操作,个性化任务栏及资源管理器等
StartAllBack使用教程
|
iOS开发 MacOS
XMind 2022 使用教程
XMind 2022的安装 XMind 2022的使用 XMind 最新版 思维导图的安装使用 思维导图 XMind 2022的下载 XMind 2022 XMind 2022 Win/Mac 强大的思维导图软件
XMind 2022 使用教程