自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (4)
  • 收藏
  • 关注

原创 Q-Learning算法:从原理到路径搜索代码实现

Q-Learning是一种基于值函数的强化学习算法,旨在学习最优策略。其核心是学习一个Q值表(Q-table),用于评估在给定状态下采取某个动作的期望回报。Q值(状态-动作值函数)表示在状态 s 下执行动作 a 后,智能体的期望累积奖励。

2025-03-18 19:51:36 1143

原创 Bug 算法路径规划:原理、推导与实现

定义参考直线LL为从起点sxsy(s_x,s_y)sx​sy​到目标点gxgy(g_x, g_y)gx​gy​Lygy−sygx−sxx−sxsyLygx​−sx​gy​−sy​​x−sx​sy​这条参考直线为机器人在绕障碍物时提供了一个方向参考。例如,当机器人在绕障碍物时,它可以通过比较自己与参考直线的位置关系,来判断是否应该离开障碍物继续朝着目标点前进。

2025-03-18 19:48:37 1525

原创 人工势场法:机器人路径规划的理论与代码实现

梯度是多元函数在某一点处的方向导数最大的方向,其大小等于该方向导数的最大值。梯度指向函数值增长最快的方向,其模长表示函数值增长的速率。对于一个二元函数fxyf(x, y)fxy,其梯度∇f\nabla f∇f∇f∂f∂x∂f∂y∇f∂x∂f​∂y∂f​对于三元函数 $f(x, y, z) $,其梯度∇f\nabla f∇f∇f∂f∂x∂f∂y∂f∂z∇f∂x∂f​∂y∂f​∂。

2025-02-17 10:32:27 1158

原创 多项式曲线局部路径规划及实现

多项式局部路径规划的优势在于其能够生成精确、平滑且连续的运动轨迹,具有较高的灵活性和计算效率,适用于不同类型的道路和交通场景。多项式曲线路径规划作为一种常用的局部路径规划方法,因其能够生成平滑、连续的路径,并且易于实现和优化,而被广泛应用于实际工程中。二阶导数对应的是加速度,三阶对应的是加加速度,我们可以根据这些边界条件和约束条件,我们可以建立一个关于多项式系数的线性方程组。在局部路径规划中,我们关注的是在移动体前方一定范围内的路径生成,而不是全局路径。,从而确定五次多项式曲线的方程。

2025-02-17 10:28:16 725

原创 平面中的凸壳算法原理推导及实现

凸壳算法的目标是找出一组点的凸包,即包含所有点的最小凸多边形。这个多边形的顶点是原点集中的点,且任意两点之间的连线段都完全位于多边形内部。

2025-02-10 08:58:47 1204

原创 分段加加速度优化算法的推导及实现

在自动驾驶领域,路径规划是一个核心问题,它需要计算出一条既安全又舒适的轨迹。分段加加速度优化算法(Piecewise Jerk Path Optimization Algorithm)是一种在Frenet坐标系下解决路径规划问题的有效方法。该算法通过将路径离散化,并优化每个离散点的位置、速度、加速度和加加速度,来生成一条平滑且符合运动学约束的轨迹。如下图所示:在frenet坐标系下,sss是沿着参考路径的距离,lll是车辆相对于参考路径的横向偏移,给定lll的上下边界,使用优化的思想,定义一个包括包含

2025-02-10 08:56:14 914

原创 计算机图形学:计算点与线段的距离、投影和位置关系

这个方法基于右手定则,即如果你的右手的拇指指向 $\vec{AB} $ 的方向,而食指指向 $\vec{AP} $ 的方向,那么你的中指将指向叉积的方向。在计算机图形学、几何计算和物理模拟等领域,经常需要计算一个点到线段的距离、投影和位置关系。这些计算可以帮助我们确定点是否在线段上、点到线段的最短距离、以及点相对于线段的位置等信息。通过上述的理论推导和代码实现,我们可以有效地计算点到线段的距离、投影和位置关系。点P到线段AB的投影点P’可以通过向量投影的方法计算。

2025-01-13 09:13:06 1433

原创 一阶数字低通滤波器:原理、参数推导与代码实现

在数字信号处理中,滤波器是一种非常重要的工具,它可以帮助我们从信号中去除不需要的频率成分,保留我们感兴趣的部分。一阶数字低通滤波器是最简单的低通滤波器之一,本文将介绍它的基本原理、推导过程,并给出一个简单的示例代码。它可以被看作是一个简单的“滑动平均”过程,其中新的输出值是当前输入值和前一输出值的加权平均。权重由滤波器的参数决定,这个参数也影响了滤波器的截止频率。,我们可以控制滤波器的截止频率,从而实现对信号中不同频率成分的滤除。这个公式告诉我们,新的输出值是当前输入值的一部分(由。是拉普拉斯变换变量。

2025-01-13 09:10:03 2015

原创 计算机图形学:三维图形的平移、缩放和旋转

在计算机图形学中,三维图形的变换是实现复杂视觉效果的基础。本文将详细介绍三维图形的平移、缩放和旋转的原理,并提供相应的代码实现。旋转是指围绕某个轴旋转图形。在三维空间中,旋转可以通过旋转矩阵来实现。平移是指在三维空间中沿着某个方向移动图形。缩放是指改变图形的大小。,我们可以通过乘以一个缩放因子向量。,如果我们想将其平移到新的位置。,我们可以通过添加一个平移向量。,如果我们想将其缩放到新的大小。

2024-12-18 09:07:45 1429

原创 计算机图形学:判断点是否在多边形内部

回转数是指从点P出发,沿着多边形的边界走一圈,回到起点时,点P绕了多少圈。如果回转数为0,则点P在多边形外部;如果回转数不为0,则点P在多边形内部。射线法的基本思想是从待判断的点出发,向任意方向发射一条射线,然后计算这条射线与多边形边界的交点数目。:通过叉乘的符号,我们可以计算出每条边对点P的回转贡献。:遍历多边形的所有边,累加每条边的回转贡献。如果点P在多边形外部,累加的结果将为0。在计算机图形学中,判断点是否在多边形内部是一个常见的问题。:对于多边形的每条边,计算从点P到边的两个端点的向量的叉乘。

2024-12-18 09:06:13 483 2

原创 计算机图形学:线段的交点计算及代码实现

在计算机图形学、几何计算和工程领域中,经常需要计算两条线段的交点。本文将详细介绍线段交点计算的原理、公式推导过程以及代码实现。要计算两条线段的交点,我们首先需要确定这两条线段是否相交。线段可以由两个端点定义,设线段。:如果线段相交,那么存在。区间内,那么线段相交。

2024-11-26 16:55:55 1935 1

原创 计算机图形学:多边形交点及实现

首先,定义了Point结构体来表示二维空间中的点,包含x和y两个坐标成员。Polygon类用于表示多边形,它包含一个vertices向量,存储多边形的顶点。类中还包含getEdge方法,用于获取多边形的某条边,以及方法,返回多边形边的数量。

2024-11-26 16:52:51 1082

原创 自动驾驶合集(更新中)

车辆模型基础合集控制合集规划合集

2024-11-13 10:38:52 588

原创 半挂车铰接角稳定域分析

铰接角是在对铰接式车辆进行运动分析时,关乎车辆稳定性的重要参数,当车辆前进时,铰接角过大会使车辆陷入原地转向的状态,倒车的时候,铰接角过大会导致车辆发生折叠失稳,甚至导致车辆侧翻。为了保证半挂牵引车在整体的工况下保持稳定,我们需要找到不同场景下铰接角的临界值,确定车辆稳定对应铰接角稳定域。

2024-11-13 09:43:35 1336 2

原创 带挂牵引车的Hybrid A*推导和实现

混合A*(Hybrid A*)算法是一种用于路径规划的算法,它结合了传统的A*算法和特定的汽车运动学模型。这种算法特别适用于自动驾驶车辆和其他需要考虑车辆运动限制的场景。在标准的A*算法中,路径规划假设移动可以瞬间在任何方向上完成,但在现实世界中,车辆的转向和运动受到物理限制。车辆运动学:算法考虑了车辆的实际运动学,例如最小转弯半径和转向角度限制。这意味着算法生成的路径将考虑车辆的实际转向能力。多方向扩展。

2024-11-05 08:54:56 1026

原创 计算机图形学:二维图形变换及实现

旋转变换是将图形绕原点或某一点旋转一定角度。平移变换是将图形在二维平面上按照某个向量。对于平面上的任意一点。比例变换是改变图形的大小的操作。对于平面上的任意一点。

2024-11-05 08:52:59 1132

原创 Reeds-Shepp曲线公式推导及代码实现-第二部分(共三部分)

文章目录2. Reeds-Shepp求解2.1 L+S+L+L^+S^+L^+L+S+L+2.2 L+S+R+L^+S^+R^+L+S+R+2.3 L+R−L+L^+R^-L^+L+R−L+2.4 L+R−L−L^+R^-L^-L+R−L−2.5 L+R+L−L^+R^+L^-L+R+L−2.6 L+Rβ+Lβ−R−L^+R_{\beta}^+L_{\beta}^-R^-L+Rβ+​Lβ−​R−2.7 L+Rβ−Lβ−R+L^+R_{\beta}^-L_{\beta}^-R^+L+Rβ−​Lβ−​R+2.8

2024-10-31 16:43:22 620

原创 Reeds-Shepp曲线公式推导及代码实现-第三部分(共三部分)

根据原始起点的坐标和航向,将上一小节计算出来的局部进行整体的平移和旋转(与归一化的步骤刚好相反),最终得到全局路径的轨迹。根据计算出来的路径,选择路径最短的轨迹(也可根据我们实际的需要定制选优规则),作为最终的轨迹输出。Reeds-Shepp曲线公式推导及代码实现-第一部分(共三部分)Reeds-Shepp曲线公式推导及代码实现-第二部分(共三部分)的值进行等步长插值,得到每段轨迹对应的生成一系列插值距离列表。根据上一步生成的插值距离列表的值,计算其对应的局部位姿值。后,我们需要根据字段类型(

2024-10-31 16:42:48 626

原创 Reeds-Shepp曲线公式推导及代码实现-第一部分(共三部分)

Reeds-Shepp曲线是基于Dubins曲线进行改进的一种规划算法,其将后退也加入到了规划中,这样就使得在某些情况下可以得到比Dubins曲线更优的路径。

2024-10-31 16:41:17 572

原创 带挂牵引车倒车运动模型推导及仿真实现

半挂牵引车在倒车时,由于鞍座主销的连接限制,其运动方式与乘用车有显著差异。例如,乘用车在右侧倒车入库时,只需确定泊车起点并将方向盘向右打死。相反,牵引车在倒车时需要先向左转方向盘,当铰接角达到防折叠的临界值时,再将方向盘向右转回,以调整牵引车与挂车至直线状态,完成泊车入库。本研究旨在建立一个基于牵引车带挂车倒车运动学模型,该模型基于以下假设: 道路在车辆行驶过程中保持平坦,无凹凸不平; 车辆以低速行驶,且在运行过程中车身不发生侧倾或俯仰; 行驶过程中,轮胎无变形,无侧向滑动,且不产

2024-10-22 08:48:16 1515

原创 带挂牵引车前向运动模型推导及仿真实现

牵引车-半挂车的车辆结构与普通的车辆相比增加了一个半挂车,它们之间通过鞍座相连接,为了分析半挂牵引车运动过程中的位姿和状态,本文将基于车辆的机械结构建立对应的运动学模型,该模型基于以下假设: 车辆行驶过程中,道路平坦且无凸凹; 车辆低速行驶,且运行过程中车身无侧倾和俯仰运动; 车辆行驶过程中,轮胎无形变,无侧向滑动,且无侧向力; 牵引车和半挂车均满足阿克曼转向几何原理; 牵引车与半挂车不会发现折叠。

2024-10-22 08:43:50 1266 5

原创 基于模糊控制的纯跟踪横向控制在倒车中的应用及实现

Pure Pursuit是一种几何跟踪控制算法,也被称为纯跟踪控制算法。他的思想就是基于当前车辆的后轮中心的位置,在参考路径上寻找一个预瞄点,假设车辆可按照一定转弯半径下行驶到该目标点,然后根据车辆当前位置到预瞄点距离、转弯半径和预瞄点与车头朝向夹角的几何关系来计算车辆的前轮转角,进而得到车辆的横向输入。其中,预瞄点的选取对跟踪效果至关重要,选择合适的预瞄点可以提高车辆的行驶稳定性和路径跟踪精度。

2024-04-23 14:46:03 1516

原创 MPC的横向控制与算法仿真实现

模型预测控制(Model Predictive Control, MPC)作为一种先进的控制策略,因其在处理多变量系统、非线性系统以及约束条件下的优越性能,被广泛应用于车辆横向控制领域。

2024-04-23 14:36:06 2614

原创 LQR的横向控制与算法仿真实现

在现代控制理论的领域中,线性二次型调节器(Linear Quadratic Regulator,简称LQR)被广泛认可为一种高效的优化控制方法。LQR的核心优势在于其能力,通过最小化一个定义良好的二次型代价函数,来设计出能够引导系统达到预定性能指标的控制策略。通过将连续时间模型转换为离散时间模型,我们可以有效地利用LQR算法进行控制设计,实现对车辆横向运动的精确控制。为状态误差,在控制过程中,我们期望状态误差逐渐稳定趋近为0,因此,定义代价函数。即为最终的最优反馈矩阵,否则继续循环。为该系统的控制矩阵,

2024-03-26 15:22:56 1890

原创 LQR求解推导及代码实现

考虑一个离散线性二次型系统的状态空间方程为xk+1=Axk+Buk(1)x_{k+1}=Ax_k+Bu_k \tag{1}xk+1​=Axk​+Buk​(1)其中,uku_kuk​为n×1n \times 1n×1的控制向量,xkx_kxk​为m×1m \times 1m×1的状态向量,状态矩阵A∈Rm×mA\in R^{m\times m}A∈Rm×m ,输入矩阵B∈Rm×nB \in R^{m\times n}B∈Rm×n,离散LQR(Linear Quadratic Regulator)是针对

2024-03-26 15:04:47 1588 6

原创 车辆运动学模型的线性化和离散化及代码实现

车辆运动学模型的线性化和离散化及代码实现

2024-03-12 09:27:57 1479 3

原创 Modern C++中 STL 算法的执行策略

Modern C++中 STL 算法的执行策略

2024-03-12 08:59:59 1125

原创 std::fill与for循环效率的对比分析

在C++标准库中,std::fill是一个非常实用的算法,它可以快速地将一个范围内的所有元素设置为一个特定的值。然而,在C++17及之后的版本中,随着并行执行策略的引入,我们有了更多的选择来提高这类操作的效率。本文将对比分析std::fill、使用C++17并行执行策略的std::fill以及普通的for循环在填充容器时的效率。

2024-02-28 23:57:14 1071

原创 后轮位置反馈控制与算法仿真实现

后轮位置反馈控制与算法仿真实现

2024-02-26 09:37:04 1538 11

原创 frenet坐标与cartesian坐标相互转换与代码实现(第二部分)

frenet坐标与cartesian坐标相互转换与代码实现(第二部分)

2024-02-26 09:27:31 827

原创 frenet坐标与cartesian坐标相互转换与代码实现(第一部分)

frenet坐标与cartesian坐标相互转换与代码实现

2024-02-26 09:25:44 1362

原创 车辆动力学方程推导和代码实现

车辆动力学模型是描述汽车运动规律的微分方程,一般用于分析汽车的平顺性和操纵稳定性。二自由度的车辆动力学模型基于单车模型假设,只考虑轮胎侧偏特性,其应用前提是 忽略轮胎力的纵横向耦合关系。 不考虑载荷的左右转移。 忽略悬架运动、路面坡度和横纵向空气动力学等非线性效应。

2024-01-23 09:32:10 4303 6

原创 Stanley横向控制与算法仿真实现

Stanley横向控制就是我们常说的也叫做**前轮反馈控制**(Front wheel feedback),是一种基于横向跟踪误差的非线性反馈控制算法,其核心思想是根据车辆位姿与给定路径的相对几何关系来控制车辆方向盘转角。具体来说,Stanley横向控制算法将车辆的横向跟踪误差和航向跟踪误差作为反馈信号,通过非线性比例函数计算出前轮转向角,以减小横向跟踪误差并提高车辆的横向跟踪性能。

2024-01-23 09:29:26 2379 3

原创 纯跟踪横向控制和算法仿真实现

Pure Pursuit是一种几何跟踪控制算法,也被称为纯跟踪控制算法。他的思想就是基于当前车辆的后轮中心的位置,在参考路径上寻找一个预瞄点,假设车辆可按照一定转弯半径下行驶到该目标点,然后根据车辆当前位置到预瞄点距离、转弯半径和预瞄点与车头朝向夹角的几何关系来计算车辆的前轮转角,即控制车辆的横向跟踪误差。

2024-01-15 09:18:44 2076

原创 PID横向控制和仿真实现

PID是一种常见的控制算法,全称为Proportional-Integral-Derivative,即比例-积分-微分控制器。PID控制器是一种线性控制器,它将设定值与实际值进行比较,根据误差的大小,控制器会相应地调整系统的比例、积分和微分系数,以减小误差。

2024-01-15 09:11:26 3006 4

原创 Matplotlib for C++不完全手册

matplotlib-cpp是Matplotlib(MPL)为C++提供的一个用于python的matplotlib绘图库的C++包装器。它的构建类似于Matlab和matplotlib使用的绘图API。not然而,函数签名可能不同,C++的Matplotlib不支持MPL的全部功能。其目的是为C++中的MPL提供一个易于使用的包装器,而不是完全翻译库。

2024-01-07 21:54:07 2153

原创 车辆运动学方程推导和代码实现

自行车模型(Bicycle Model)是车辆数字化模型中最常见的一种运动学模型。其除了可以反映车辆的一些基础特性外,更重要的是简单易用。通常情况下我们会把车辆模型简化为二自由度的自行车模型。由于低速条件下,我们可以假设车辆不会发生侧向滑动(漂移),此时我们可以将。又由于大部分车辆不具备后轮转向的功能,因此我们可以假设后轮转角。:一个刚体的角速度 = 线速度/线速度到速度瞬心的距离。,因此基于我们假设的前提下的运动学微分方程化简为。由此得到单车模型下的车辆运动学微分模型为。是不变的,因此由式子。

2024-01-07 21:50:39 2851

原创 C++11的互斥包装器

C++11的互斥包装器

2023-11-19 17:55:48 288

原创 c++11 mutex互斥量

c++11 mutex互斥量

2023-11-19 17:54:49 161

原创 新的线程:C++20 std::jthread

jthread基于jthread对象被析构时,会自动调用join,等待其所表示的执行流结束。jthread支持外部请求中止(通过和中的自动join和外部请求中止功能使编写更安全的代码变得更加容易,但其性能上相对于thread也增加了开销。iDoitnow如果喜欢话,可以关注一下。

2023-11-04 13:10:36 870

read-file.c

c语言文件读写操作代码

2024-10-08

后轮反馈控制算法仿真实现python代码

后轮反馈控制算法仿真实现python代码,使用python搭建小车自行车模型,使用后轮反馈控制算法控制小车。

2024-02-27

code-1.81.1-1691620686-amd64(ubuntu).deb

vscode旧安装包code_1.81.1-1691620686_amd64

2024-02-15

ubuntu下qt5.12安装包

ubuntu下qt5.12安装包 qt-opensource-linux-x64-5.12.12

2023-12-07

三路快速排序算法(qickSort3Ways)

基于c++ 11 的三路快速排序算法(qickSort3Ways),源码+实例

2018-05-20

Lora+stm32

sx1278,lora,stm32,物联网,无线通信 本文件夹包括了基于Contiki无线通信模块系统的软件代码: Project IAR环境下所有工程文档 Contiki Contiki操作系统 RF SX1278射频芯片驱动代码 Driver 驱动:CMSIS和MCU外设驱动文件 Application 应用程序,以Contiki系统的protothread方式组织 main.c 基于C语言系统的入口函数 main.h 系统的全局配置文件

2018-01-09

vivado2015.4 license

vivado2015.4 破解文件 license

2016-12-30

流水灯 hex

流水灯,单片机文件。单片机中的流水灯的hex文件格式

2014-09-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除