当前位置: 首页 > news >正文

心力建网站网站建设 中企动力福州阀门

心力建网站,网站建设 中企动力福州阀门,做网站需要接口么,做网站的颜色系列文章目录 前言 在本页中#xff0c;我们将为您提供如何定义 MPC 问题的一些提示。在 OCS2 中#xff0c;OptimalControlProblem 结构定义了优化问题的主要组成部分#xff0c;即动力学、成本和约束条件。 除此之外#xff0c;您可能还希望为 MPC 提供一些参考轨迹、预定…系列文章目录 前言 在本页中我们将为您提供如何定义 MPC 问题的一些提示。在 OCS2 中OptimalControlProblem 结构定义了优化问题的主要组成部分即动力学、成本和约束条件。 除此之外您可能还希望为 MPC 提供一些参考轨迹、预定义模式计划用于切换系统和其他外部信息如模型参数的更新如在自适应控制设置中、环境地图如用于避免碰撞的 SDF 地图等。所有这些都可以借助参考管理器ReferenceManager和求解器同步模块SolverSynchronizedModule来实现。 我们从最优控制问题的组成部分开始成本函数、软约束、硬约束、动力学和预计算。一般来说成本和硬/软约束条件是在三个不同的时间实例中定义的 (1) 中间时间间隔(2) 切换预跳跃时间(3) 优化范围的最终时间。 预跳变部分只在切换系统问题中有效根据切换前的状态值预跳变值进行评估。 优化控制问题OptimalControlProblem收集的是一组成本和约束条件而不是单一的成本或约束条件。您可以将这些收集器想象成一个容器在其中您可以使用唯一的名称添加术语之后再以相同的名称将其请求回来。每个术语都可以通过覆盖术语的 isActive 方法来决定是否处于活动状态。这有助于改变 MPC 行为。例如你可以使用外部触发信号在移动机械手的基础跟踪或末端执行器跟踪模式之间进行切换。此外这些收集器还为您的代码引入了一定程度的模块化并为在整个项目中扩展和修改 MPC 提供了方便的工具。例如如果您决定在问题中添加新的约束或成本您可以将新项添加到最优控制问题中而无需修改其他项。 一、Costs - 成本 如前所述成本函数是为三个不同的时间实例定义的中间、预跳和最终。中间成本项可以是时间、状态和输入OptimalControlProblem::costPtr的函数也可以是时间和状态OptimalControlProblem::stateCostPtr的函数。不过预跳跃和最终代价项应该只是时间和状态的函数。成本项应继承自 StateCost 或 StateInputCost 类。派生类应定义代价值及其二次近似值。对于复杂函数可以使用这些类的自动微分版本即 StateCostCppAd 或 StateInputCostCppAd用户只需提供代价值即可。有关这些类的实现细节请参阅 ocs2_core/cost有关简单示例请查看 QuadraticStateCost 和 QuadraticStateInputCost。 注我们的所有最优控制求解器都假设在每个中间时间与输入相关的中间成本项的 Hession黑塞之和为正定值。此外除 PISOC 外其他求解器都要求在每个时间实例中间、预跳和最终中所有与状态有关的项的 Hession黑塞总和也是正半定的。需要注意的是虽然在线性搜索策略和信任区域全局化策略中使用 Hession黑塞修正在一定程度上可以处理非定义性问题但如果能保证这种正半定义性求解器的工作通常会更可靠。避免非定域性的一种方法是对 f 形式的成本函数使用高斯-牛顿近似技术其中 f 的线性近似值将用于形成正定的 Hessian。更多详情请参阅状态输入成本高斯-牛顿近似。 二、Constraints - 约束 与成本类似也为三个不同的时间实例定义了约束条件中间、预跳和最终其中中间约束条件是时间、状态、输入或时间、状态和预跳的函数而最终约束条件仅是时间和状态的函数。 约束条件应继承自 StateConstraint 或 StateInputConstraint 类。派生类应根据约束的顺序ConstraintOrder定义约束值及其线性或二次近似值。对于复杂函数可以使用这些类的自动微分版本即 StateConstraintCppAd 或 StateInputConstraintCppAd其中只需提供约束值。有关这些类的实现细节请参阅 os2_core/constraint有关简单示例请查看 LinearStateConstraint 和 LinearStateInputConstraint。 在 OCS2 中处理约束时可以使用硬约束或软约束方法。软约束由 OptimalControlProblem 单独收集。软约束的处理基于惩罚方法在这种方法中约束被用户定义的惩罚函数包裹关于这些惩罚函数的列表请参阅 ocs2_core/soft_constraint/penalties。要从约束项创建软约束可以使用 StateSoftConstraint 和 StateInputSoftConstraint 类。这些类可以获取约束项实例和选择的惩罚函数并创建软约束收集器可以收集的代价项。在设置约束的同时设置惩罚函数可以灵活地为每个约束使用不同的惩罚函数不同类型和/或不同的超参数。这使得违反约束条件的调整变得更加容易。 硬约束条件简称约束条件根据其类型的不同通过不同的技术以更高的精度进行处理。通过投影法处理状态输入相等约束。纯状态等式和不等式通过松弛壁垒法或增强拉格朗日技术处理此功能暂时禁用将在下一版本中添加。 注意由于状态输入相等约束是通过投影法处理的OCS2 假定约束的雅可比Jacobin相对于输入是全行列的。如果无法保证这一条件则应使用软约束技术。 三、Dynamics - 动力学 动力学由其流动图、跳跃图及其一阶近似值参见 SystemDynamicsBase定义。对于常规系统跳跃映射是一个标识映射但对于切换系统该映射可以是状态的非线性函数。对于复杂函数可以使用自动微分版动力学 SystemDynamicsBaseAD。 四、Pre-computation - 预计算 OCS2 对缓存友好这意味着可以在成本、约束条件、系统动力学及其近似值之间共享计算。为此OCS2 使用了预计算PreComputation。在评估成本、约束条件和系统动力学之前OCS2 求解器会调用 PreComputation::request 在切换时间调用 requestPreJump 或在最终时间调用 requestFinal并发送请求消息说明下一步将进行哪些操作。因此您可以根据表示请求集的输入参数来实现 request() 方法。 注意一般情况下应避免使用缓存仅在以后实施缓存版本以提高性能。有关示例请参阅 ocs2_robotic_examples/ocs2_mobile_manipulator。 五、Changing parameters of the Optimal Control Problem - 改变最优控制参数 一旦您向求解器定义并设置了最优控制问题求解器就会在内部创建一个副本实际上是多个副本。因此如果您决定更改最优控制问题中的任何参数如参考轨迹或模型参数您就不能通过简单修改您可以访问的最优控制问题的参数来实现这一目的。此外无论技术上如何在任何时候都应避免任意更改这些参数。因为当您更改参数时您的 MPC 求解器可能正处于迭代过程中这将导致求解器出现未定义的行为。为了避免这个问题OCS2 引入了参考管理器和求解器同步模块的概念。一般来说这些都是同步概念可确保在正确的时间MPC 每次迭代之前和/或之后更新参数。换句话说它们使参数更新与 MPC 迭代同步。 要访问最优控制组件如成本、约束、动力学......中的更新参数/信息需要采取以下步骤 (1) 创建同步模块的共享指针。(2) 与成本、约束或动力学共享该实例的地址。(3) 通过 SolverBase::setReferenceManager、SolverBase::addSynchronizedModule 或 SolverBase::setSynchronizedModules 将其设置给求解器。 注意在整个 MPC 问题中每个同步模块应该只有一个实例。 六、Reference Manager Interface - 参考管理器接口 ReferenceManagerInterface 创建了一个通用接口用于定义目标轨迹和模式时间表仅用于切换系统。OCS2 的每个求解器在开始新的 MPC 迭代之前都会调用参考管理器的 preSolverRun()。关于该接口的实现请参考 ReferenceManager 类。ReferenceManager 有两个装饰器类ReferenceManagerRos将 ROS 通信添加到 ReferenceManager 中和 LoopshapingReferenceManager将其扩展到环形最优控制问题中。 由于参考管理器是按照 MPC 主循环的顺序运行的因此为了提高效率应避免在 preSolverRun 中进行复杂操作。为此应在不同的线程中处理这些参数并将结果保存在缓冲存储器中。然后在 preSolverRun 中通过地址交换更新活动参数即可。OCS2 为此提供了一个名为 BufferedValue 的辅助类。 七、Solver Synchronized Modules - 求解器同步模块 SolverSynchronizedModules 类似于 ReferenceManagerInterface但适用于通用应用程序。它只有两个纯虚拟方法 preSolverRun 和 postSolverRun顾名思义这两个方法分别在每次 MPC 迭代之前和之后调用。preSolverRun 方法还可以访问最近更新的 ReferenceManagerInterface。相比之下postSolverRun 方法可以访问 MPC 解决方案。 与 ReferenceManagerInterface 类似SolverSynchronizedModules 也是按照 MPC 主循环的顺序运行的。因此为提高效率应避免在 preSolverRun 和 postSolverRun 中进行复杂操作。为此应在不同的线程中保存/计算这些参数并将结果保存在缓冲区中。然后在 preSolverRun 或 postSolverRun 中可以通过地址交换更新活动参数。为此您可以使用 BufferedValue 类。
http://www.pierceye.com/news/968805/

相关文章:

  • 免版权费自建网站自考本科官网
  • 使用ai做网站设计长沙建设网站哪家好
  • 建设行业网站价格公共服务标准化建设
  • 电商网站开发发展和前景网站建设案例多少钱
  • 网站建设特效代码做销售用什么网站
  • 如何做中英版网站上海到北京机票
  • 海淀网站建设枣庄微信官网小程序注册
  • 投诉网站制作事件营销的概念
  • 做网站一个程序员够吗企业互联网推广
  • 安徽省建设工程资料上传网站网站内容优化
  • 直接用apk 做登陆网站呢图网站场建设封面
  • 书店网站的建设网络服务器搭建
  • led灯网站模板电商网站开发人员人数
  • 南阳网站建设报价沧州南皮网站建设
  • 网站左侧分类导航菜单用PS做的个人网站图片
  • 返利网 网站开发青岛开发区建网站哪家好
  • 还能电子商务网站建设短网址生成站长工具
  • 有专门做网站的吗网站后台发表文章
  • 秦皇岛汽车网站制作广州网站建设 知名
  • 自己建网站数据怎么做惠州网站制作培训
  • 南山做网站的wordpress自助友链
  • php企业网站源码软件工程师发展前景
  • 如何从建设局网站上更换职称人员哪个网站可以免费做国外网站
  • 情侣博客网站模板下载学校网站建设调查报告
  • 平台网站开发是什么意思全屏的网站
  • 素材图库网站源码网站建设及推广培训班
  • 英国电商网站jsp旅游网站开发系统
  • 机关网站建设引导语开发一个企业网站需要多少钱
  • 徐汇网站推广挣钱最快的小游戏
  • 手机网站开发的目的在线免费看影视网站