QP 二次规划求解路径平滑MinimumSnap问题导读

OSQP 库的QP问题定义
m i n i m i z e    1 2 x T ∙ H ∙ x + f T ∙ x s t   .   L B < = A x < = U B minimize\ \ \frac{1}{2} x^T \bullet H \bullet x +f^T \bullet x \\ st \ . \ LB <= Ax <= UB \\ minimize  21xTHx+fTxst . LB<=Ax<=UB
OSQP 安装

git clone https://github.com/osqp/osqp.git
cd osqp
mkdir build
cd build
cmake ..
make

到这一步,osqp库已经编译完成,如果不想安装在系统上使用,想直接使用静态库或动态库的话,只需要将osqp/include的头文件和osqp/build/out下的libosqp.a或者libosqp.so复制到自己的工程中使用即可。
OSQP 等式约束 LB 和 UB 设置成一样的值就可以了
基础使用文章介绍

OSQP eigen 安装

https://github.com/robotology/osqp-eigen/
mkdir bu
cd  bu
cmake ..
make
sudo make install 

OSQP与eigen版本 需要对应 否则有问题

OSQP 链接 Eigen::eigen 3错误
在编译OSQP-eigen 时候 直接链接 Eigen3的库 不要使用默认 的 Public 链接

find_package(Eigen3 REQUIRED)
include_directories(
  ${EIGEN3_INCLUDE_DIRS}
)

add_library(${LIBRARY_TARGET_NAME} ${${LIBRARY_TARGET_NAME}_SRC} ${${LIBRARY_TARGET_NAME}_HDR})
target_include_directories(${LIBRARY_TARGET_NAME} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
  "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
target_link_libraries(${LIBRARY_TARGET_NAME} PUBLIC osqp::osqp ${Eigen3_LIBRARIES})```

测试代码

#include "OsqpEigen/OsqpEigen.h"
#include <Eigen/Dense>

int main()
{
    // 定义Hessian矩阵,梯度向量,线性约束矩阵,以及上下界
    Eigen::SparseMatrix<double> hessian(2, 2);
    Eigen::VectorXd gradient(2);
    Eigen::SparseMatrix<double> linearMatrix(2, 2);
    Eigen::VectorXd lowerBound(2), upperBound(2);

    // 填充矩阵和向量
    hessian.insert(0, 0) = 1.0;
    hessian.insert(1, 1) = 2.0;
    gradient << -2, -2;
    linearMatrix.insert(0, 0) = 1.0;
    linearMatrix.insert(1, 1) = 1.0;
    lowerBound << -OsqpEigen::INFTY, -OsqpEigen::INFTY;
    upperBound << 1.5, 1.5;

    // 创建OSQP求解器实例
    OsqpEigen::Solver solver;

    // 设置求解器参数
    solver.settings()->setVerbosity(false);
    solver.settings()->setWarmStart(true);

    // 设置问题数据
    solver.data()->setNumberOfVariables(2);
    solver.data()->setNumberOfConstraints(2);
    solver.data()->setHessianMatrix(hessian);
    solver.data()->setGradient(gradient);
    solver.data()->setLinearConstraintsMatrix(linearMatrix);
    solver.data()->setLowerBound(lowerBound);
    solver.data()->setUpperBound(upperBound);

    // 初始化求解器
    if (!solver.initSolver())
    {
        return 1;
    }

    // 求解QP问题
    Eigen::VectorXd solution;
    if (!solver.solve())
    {
        return 1;
    }

    // 获取最优解
    solution = solver.getSolution();

    // 输出结果
    std::cout << "Solution: \n"
              << solution << std::endl;

    return 0;
}

机器人全局路径优化器 MInimum Snap 问题
路径规划问题建模
路径平滑基础样条
OSQP建模一维度路径优化问题
OSQP APOLLO 建模问题
minimumsnap 问题 好文章
minimum snap问题求解
minimum snap问题求解2
MinimumSnap问题求解3 带github代码
MinimumSnap问题求解4
MinimumSnap问题与硬约束软约束

DubinPath
https://blog.csdn.net/weixin_50431732/article/details/124460453

相关论文
Minimum snap trajectory generation and control for quadrotors
Polynomial Trajectory Planning for Aggressive Quadrotor Flight in Dense Indoor Environments, Charles Richter, Adam Bry, and Nicholas Roy
Online Safe Trajectory Generation For Quadrotors Using Fast Marching Method and Bernstein Basis Polynomial
基于优化的论文关注 论文推土机
https://www.zhihu.com/column/c_1481210900895567872

Fast-Planner 是一种基于搜索的规划算法,前端采用了 kinodynamic A* 搜出一条动力学可行的路径,后端采用均匀B样条曲线,并进行轨迹优化和时间调整。
EGO-Planner-v1 是基于梯度的规划算法,是对 Fast-Planner 的提升。前端先规划一条无视障碍物的B样条轨迹,然后采用障碍物表面点 p 和外法线向量 v 隐式构建距离梯度场来调整B样条轨迹的控制点;后端采用与 Fast-Planner 类似的方法进行轨迹优化和时间调整。
其他有github的路径优化器
https://www.cnblogs.com/gaowensheng/p/16299486.html

作者:苏飞飞
链接:https://www.zhihu.com/question/590041913/answer/2941538321
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文链接:https://blog.csdn.net/qq_42964860/article/details/127942913
github 链接
https://github.com/HKUST-Aerial-Robotics/grad_traj_optimization
https://github.com/zm0612/Minimum-Snap.git

贝塞尔曲线
带动画演示
https://blog.csdn.net/qq_39312146/article/details/129272054
https://blog.csdn.net/cfan927/article/details/104649623

贝塞尔曲线可以进行QP优化的原理
https://zhuanlan.zhihu.com/p/371032946
https://zhuanlan.zhihu.com/p/380694664
待代码的优化
https://zhuanlan.zhihu.com/p/527657332

图优化
凸优化书籍
https://zhuanlan.zhihu.com/p/56804620

全覆盖分区算法
https://blog.csdn.net/Travis_X/article/details/135655226

专栏
自动驾驶规划入门
https://blog.csdn.net/u013468614/category_11897666.html
https://blog.csdn.net/weixin_44809980/category_10137711.html

https://blog.csdn.net/qq_37746927/category_12555711.html

开源基础Github库 带动画展示的
https://github.com/zhm-real/PathPlanning

OMPL 和NVIDIA 路径规划库
https://www.intermodalics.ai/portfolio

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值