- 博客(18)
- 收藏
- 关注
原创 增广拉格朗日时空联合规划ALTRO-iLQR (一)
利用问题的马尔可夫结构,显式在前向仿真中满足动力学,代表有 DDP 和 iLQR。每次迭代将非线性目标与约束在线性/二次近似后,求解一系列 LQR 子问题,速度快、内存少,适合嵌入式场景。轨迹优化是一种强大的机器人控制框架,其核心价值在于高度的通用性:只要系统动力学满足马尔可夫性质,就可以应用此方法。常用隐式积分,提高数值稳定性,但依赖大型闭源库,计算较慢。(Augmented Lagrangian iLQR,亦称 AL‑iLQR),即原始 ALTRO 算法的核心(参见。,则为 Hessian 矩阵。
2025-05-29 13:41:19
160
原创 CILQR代码分析(二)
向心加加速度公式为(2v(k)a(k)κ(k)+v(k)2dκ(k))2(2v(k) a(k) \kappa(k) + v(k)^2 d\kappa(k))^2(2v(k)a(k)κ(k)+v(k)2dκ(k))2∂L∂U(0)(k)prime+=2dκ(k)v(k)4+4v(k)3a(k)κ(k)\frac{\partial L}{\partial U_{(0)}(k)}_{prime}+=2d\kappa(k) v(k)^4 + 4v(k)^3a(k)\kappa(k)∂U(0)(k)∂Lpr
2025-05-08 14:45:38
746
原创 CILQR代码分析(一)
iLQR 的基本思路是 迭代地做局部线性化+二次近似,然后求解一个 LQR 子问题,不断更新轨迹,直到收敛为止。给定一个车辆的动力学模型:如图所示给出了简单的车辆动力学模型,其中κ\kappaκ为曲率, θ\thetaθ为车辆的航向角, LLL为轴距。这几个变量的关系为:R=Ltan(α)R = \frac{L}{\tan (\alpha)}R=tan(α)LR=1κR = \frac{1}{\kappa}R=κ1轨迹规划的目标是找到一个函数S(t)S(t)S(t), 该函数将时间参
2025-04-30 20:50:51
958
原创 强化学习入门(二)
加噪过程,加入高斯白噪声。去噪过程,需要训练一个神经网络,和时间步t预测加入的噪声。按照αt和1−αt进行加权加噪,加噪之后得到的图片也是符合高斯分布的。t时刻的xt和t−1时刻的xt−1xtαtxt−11−αtεt−1所以从xt−1到xt的概率分布qxt∣xt−1qxt∣xt−1Nxt;αt。
2025-04-22 10:06:30
109
原创 强化学习入门(一)
在图片1中,使用重要性采样估计新策略πθ′πθ′下的期望,并计算优势函数。在图片2中,构建了 TRPO 的优化目标,通过最大化期望优势函数来更新策略,并通过 KL 散度约束确保新旧策略的差异不会太大,从而保证策略更新的稳定性。这就是从图片1的公式推导出图片2 TRPO公式的过程。
2025-04-22 09:40:47
777
原创 cmake教程(一)
这个库将包含我们自己的平方根计算实现,执行文件(executable)可以使用这个库,而不是使用编译器提供的标准平方根函数。定义:这个变量代表 构建目录,即你运行 CMake 生成构建文件的目录。通常它是一个与源代码目录不同的目录,通常用于存放构建生成的文件、库、可执行文件等。定义:这个变量代表 项目的源代码目录,即 CMakeLists.txt 文件所在的目录。用途:它用于指向生成的二进制文件所在的目录,通常用于设置编译器的包含路径、输出路径等。用于将包含目录添加到编译器的搜索路径中,这样头文件。
2025-04-03 10:55:16
942
原创 附加gdb调试遇到问题
具体解决方法有在Linux上以普通用户身份使用GDB附加到进程时,可能会失败,并显示“ptrace:Operation not permitted”(ptrace:操作不允许)。默认情况下,Linux不允许附加到不是由调试器启动的进程(有关更多详细信息,请参阅Yama安全文档)。这将把ptrace级别设置为0,之后仅凭用户权限即可附加到不是由调试器启动的进程。在没有Yama的发行版(例如Raspbian)中,您可以使用为特定可执行文件分配ptrace另外,您可以以超级用户身份启动GDB并附加到进程。
2025-04-02 14:19:31
292
原创 C++学习(一)
万能引用是一种特殊的引用类型,它既可以绑定到左值,也可以绑定到右值。在模板参数推导和范围 for 循环中使用 auto &&,编译器会根据实际传入的值的类别(左值或右值)自动推导出正确的引用类型。
2025-03-17 14:49:30
403
原创 已有代码解读(一)
/计算障碍物的四个顶点和中心点的sl//面积比较的方法进行碰撞检测 carpoint 为局部路径上的点 obses为障碍物上的坐标obs命名空间包含用于障碍物检测和处理的函数和结构。Frenet 坐标转换:将点从笛卡尔坐标系转换为 Frenet 坐标系,便于路径规划和避障。障碍物处理:处理障碍物数据,包括计算其位置、边界及与车辆的重叠。碰撞检测:使用几何特性检测车辆和障碍物之间的重叠。工具函数:辅助函数,用于寻找最近点、比较面积、判断障碍物的有效性等。
2025-01-12 16:26:47
672
原创 Apollo 10.0 Public Road Planner 详解(Planning代码学习)(五)
速度规划的参考系是st坐标系,这里的s是沿着规划好的路径方向的位移,t是时间。动态规划:通过把原问题分解为相对简单的子问题,再根据子问题的解求解原问题的方法。有向权重图,采用递推方法逐步求解:f(P)=min{f(R)+wR→P}f(P)=\min\left\{f(R)+w_{R\to P}\right\}f(P)=min{f(R)+wR→P}Apollo速度规划中,动态规划主要用来进行速度决策的判定,使用采样搜索算法:对st图采样为栅格图,在t的方向以固定间隔进行采样,Apollo中默认设置
2025-01-10 20:10:19
1464
原创 Apollo 10.0 Public Road Planner 详解(Planning代码学习)(四)
Apollo路径规划算力总体可以包含以下几个部分:以上按照顺序执行LANE_FOLLOW_PATH任务LANE_BORROW_PATH任务LANE_CHANGE_PATH任务二次规划的标准型如下minimize12xTPx+qTxsubject tol≤Ax≤ux∈RnP∈S+nq∈Rn\begin{aligned}&\mathrm{minimize}\quad\frac{1}{2}x^TPx+q^Tx\\&\mathrm{subject~to}\quad l\leq Ax\leq u\\&
2025-01-09 16:11:00
1398
原创 Apollo 10.0 Public Road Planner 详解(Planning代码学习)(三)
traffic rules是planning在运行场景之前,根据不同的交通规则,决策车辆是否需要停车,减速或其他操作。因为它是在运行场景之前进行的,所以对所有的场景都会起作用。
2025-01-08 15:59:20
1068
原创 Apollo 10.0 Public Road Planner 详解(Planning代码学习)(二)
APollo规划模块整体上可以分为处理规划模块和参考线生成模块。一个是根据输入环境和车辆信息,进行轨迹规划的主流程;另外一个是根据地图和输入的全局路线,生成参考线信息,这个线程是周期运行的线程,主流程规划都是在它生成的参考线基础上进行的。。
2024-12-31 13:57:12
1562
1
原创 Apollo 10.0 Public Road Planner 详解(Planning代码学习)(一)
其中Proc()为函数的该函数接受一个障碍物的感知信息、底层的CANBUS信息和定位信息。其中RunOnce()为主要的逻辑处理函数该函数的输入包括当前的时间戳、规划的轨迹点以及自车的行驶轨迹其中处理函数函数的输入包括初始规划点和当前在帧的规划轨迹函数也是主要的处理函数,这里是纯虚函数,需要在子类里面进行定义。处理函数输入包括输入的轨迹起始点,当前帧的规划结果。
2024-12-30 15:03:36
1106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人