OCS2工具箱

实时系统优化控制工具箱
参考视频:ETH 最优控制/MPC 实时求解器 OCS2 使用入门
参考文档:OCS2 求解器入门

选择OCS2

OCS2 是一个 MPC 实时求解器 (SLQ/iLQR),依赖 Pinocchio 构建机器人动力学模型,采用 RViz 或者 RaiSim 验证 (Rollout)。

OCS2介绍

(1)最优控制实时系统
(2)C++库:fast MPC 在高维系统
(3)提供了一个统一接口:先进的优化控制求解器
(4)提供了ROS接口,Python接口,通过CppADCodeGen实现自动区分和代码生成,与 Pinocchi等高性能刚体库的接口
(5)缓存友好:运动学和动力学能被快速计算并且重用在cost,约束,dynamics…
(6)在机器人平台上证实可用:球形机器人,固定/移动机械臂,四足机器人

OCS2能求解的问题

实时最优控制问题
定义:时间触发的最优控制序列问题
OCS2工具箱_第1张图片

OCS2求解器和他们的特征
  • DDP微分动态规划:
    (1)连续时间SLQ (2)离散时间iLQR
  • SQP:Multiple shooting 多重动态规划
  • Path INtegral Stochastic OC (PISOC)
    算法拓展:
    处理实时问题
    处理约束:(1)状态输入等式约束(2)状态(only)等式和不等式约束(松弛屏障或增广拉格朗日量)
    包含频域约束,如致动器带宽

如何对于给定的问题建立MPC

优化控制问题接口
OCS2工具箱_第2张图片

定义优化控制问题

(1)定义好优化控制compoents
(2)优化控制问题三步定义:

设置控制compoents为优化控制问题
设置/共享 ReferenceManagerInterface
(可选)设置/共享 SolverSynchronizedModule

对于机器人例子,我们在一个名为RobotInterface的样板类中执行这些操作,检查这些例子:

  • Ballbot接口
  • CartpoleInterface
  • DoubleIntegrator接口
  • MobileManipulator接口
  • LeggedRobot接口

构造最优控制问题
设置如下模块:
Cost,Soft Constraints, Hard Constraints, Dynamics, Pre-computation
OCS2工具箱_第3张图片
OCS2工具箱_第4张图片
OCS2工具箱_第5张图片
OCS2工具箱_第6张图片
OCS2工具箱_第7张图片
OCS2缓存友好:在cost,constraints,dynamics和他们的近似值能够共享计算量。
使用PreComputation::request弥补一般不能弥补的计算量。

同步模块
OCS2工具箱_第8张图片
MPC闭环
OCS2工具箱_第9张图片

如何定义问题

OCS2机器人示例建模工具和界面

常见的机器人
一般:推杆、Double-Integrator
特殊的例子:球形机器人、四旋翼无人机
复杂、拓展的例子:机械臂、腿式机器人
OCS2工具箱_第10张图片
从URDF到最优控制(OCP)问题
OCS2工具箱_第11张图片
OCS2工具箱_第12张图片
OCS2工具箱_第13张图片
OCS2工具箱_第14张图片
OCS2工具箱_第15张图片
OCS2工具箱_第16张图片

你可能感兴趣的:(机器人,OCS2)