Skip to content

RibleTrajOpt

RibleTrajOpt 提供了轨迹优化工具,用于机器人和多体系统的最优控制问题求解。

概述

轨迹优化是寻找满足系统动力学约束和边界条件的最优轨迹的过程。该包实现了多种轨迹优化算法,包括直接法和间接法。

主要特性

  • 直接法:直接配置法(Direct Collocation)

  • 梯度计算:自动微分和伴随方法

  • 约束处理:等式和不等式约束

  • 多种求解器:支持NLopt、Ipopt等

优化方法

直接配置法

将连续时间最优控制问题转化为非线性规划(NLP):

  • 时间离散化

  • 配置点约束

  • 稀疏雅可比矩阵

迭代LQR (iLQR)

基于局部二次近似的迭代方法:

  • 前向传播

  • 后向传播

  • 线搜索

成本函数

支持的成本类型

  • 跟踪成本:轨迹跟踪

  • 能量成本:最小化控制输入

  • 时间成本:最短时间

  • 自定义成本:用户定义

约束类型

动力学约束

  • 显式动力学

  • 隐式动力学

  • DAE系统

路径约束

  • 状态约束

  • 控制约束

  • 混合约束

边界条件

  • 初始状态

  • 终端状态

  • 周期性约束

梯度计算

自动微分

  • ForwardDiff.jl

  • Zygote.jl

  • 有限差分

伴随方法

  • 离散伴随

  • 连续伴随

  • 高效梯度计算

使用示例

julia
using Rible
using RibleTrajOpt

# 定义优化问题
prob = TrajectoryOptimizationProblem(
    robot,
    cost_function,
    constraints,
    tspan=(0.0, 2.0),
    N=50  # 配置点数量
)

# 求解
result = solve(prob, iLQR())

应用场景

  • 机器人运动规划:最优路径生成

  • 姿态控制:卫星姿态机动

  • 步态优化:双足/四足机器人

  • 操作任务:抓取和放置

相关包

  • 核心Rible包 - 动力学求解器

  • RibleLux - 神经网络控制