写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝

🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟
感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~



文章目录

  • 引言
  • 一、误差计算概述
  • 1、连续轨迹的横向误差
  • 2、连续曲线的投影问题
  • 3、离散轨迹点的误差
  • 二、离散轨迹规划误差计算步骤
  • 1、匹配点
  • 2、投影点
  • 3、横向误差
  • 4、纵向误差
  • 5、投影点的航向角
  • 6、四个式子
  • 三、总结



引言

  本篇博客是 自动驾驶控制算法 系列的第七节。内容整理自 B站知名up主 忠厚老实的老王 的视频,作为博主的学习笔记,分享给大家共同学习。

  本节博客讲解离散轨迹的误差计算,是理论部分中的最后一节,如果看完了前七节,可以自己尝试搭建横向控制模型,因为横向控制所需要的知识和理论,以及存在的障碍,都讲明白了,大家可以自己尝试搭建相关理论模型,编写代码。


一、误差计算概述

  在前面六节讲到了最优的横向控制:
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶其中,【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_02【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_03【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_04的解。

关于这些量的计算:

  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_05
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_06
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_07

还剩误差 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_08

1、连续轨迹的横向误差

  在第四节讲过相关误差的计算,先把图画一下:

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_09

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_10
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_11其中,【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_12

计算误差需要 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_13【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_14

  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_15
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_16为投影点的速度 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_17
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_18
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_19 为投影点的速度
    【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_20

而剩下的这几个自变量:

  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_21
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_22
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_23

都可以通过上游的定位模块以及传感器的信号采集到,视为已知。

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_24【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_25 为投影点在自然坐标系下的坐标)

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_26

   如果知道这些信息,就可以把误差计算出来。

注意:如果规划曲线为连续曲线,那么可能导致投影点不唯一。

2、连续曲线的投影问题

   举几个例子:

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_27

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_28 的投影定义:如果 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_28【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_30 的连线与 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_30 的切线垂直,则称 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_30【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_28

  • 直线
    直线的投影是最简单的, 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_34 在直线的投影就是 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_35
  • 简单曲线
    简单曲线的投影比较简单,只要 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_34【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_35 的连线和 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_35 的切线方向 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_39 垂直,则 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_35

  • 对于封闭的圆,【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_34 正好在圆心处,按照定义,【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_34
  • 椭圆
    在椭圆半长轴上, 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_34

   如果曲线连续,不仅求投影比较麻烦,而且要处理多值问题,即投影可能不止一个,这是非常麻烦的事情。

   在这里并不是说连续曲线的规划就不能用,各有各种用法,要用连续曲线做规划,在规划层面上就必须要考虑到投影的多值性问题。

3、离散轨迹点的误差

如果轨迹规划是离散的,怎么求投影相对比较容易处理?

   本篇博客讲解离散轨迹点的误差计算,应用比较广泛,且相对较简单。第四节讲过的是连续轨迹曲线的误差计算公式。

   比如,轨迹规划出一系列离散点:

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_44

   要用离散的轨迹规划做相应的控制,就要进行相应的误差计算,离散轨迹点的每一点都包含四个信息:
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_45   这仅仅是做横向控制,如果要做纵向控制的话,还需要包含离散点的在自然坐标系下的 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_46。不过本节只讲横向控制,只需要这 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_47


二、离散轨迹规划误差计算步骤

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_48

1、匹配点

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_49

2、投影点

   第二步,计算投影点。

匹配点和投影点是什么关系呢?

   比如,在直线里有三个规划点:

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_50

   图中蓝色点为匹配点,红色点为真正的投影点。投影点是不在规划轨迹点中的理想点。因此,匹配点并不等于投影点。

匹配点能否近似代替投影点?

   用最短距离的匹配点近似代替投影点,理论上可以,但有个前提,规划点要特别密集,这样匹配点和投影点的位置比较接近,越密就越接近,近似程度就越高。但是理论归理论,现实生活中这种方法依然不可行:

  • 规划点不可能特别密集
  • 规划点取得非常密集会增加计算负担

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_49

   在自动驾驶中控制的实时性要求最高,要尽可能不惜代价提升控制代码的运行速度,所以用匹配点近似投影点在实际运用中不可行。

   可以通过匹配点近似计算出投影点。

   假设有一条连续曲线,上面有三个离散规划点:

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_52

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_53,真实点也有信息 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_54,通过真实点和匹配点的信息,把投影点信息近似计算出来。

   假设从匹配点到投影点曲线的曲率不变,即近似认为匹配点的曲率等于投影点的曲率。

   黑色曲线是规划轨迹,这是真实的连续轨迹,根据连续轨迹得到离散的规划点。

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_10,已知图中红色向量:
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_56   由匹配点的航向角 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_57 可知切向向量 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_58和法向向量【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_59,即:
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_60

3、横向误差

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_10 近似等于红色向量 在 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_59 方向上的投影:
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_63
   注意【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_64

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_65 ,这种近似完全没有任何误差,【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_66,这是非常好的性质,有了此性质后:

  • 在曲线段,横向误差 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_64
  • 在直线段,横向误差 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_64

   意味着在直线段用非常少的轨迹规划点就可以完整地进行轨迹跟踪。

   所以只需在曲线曲率比较大的位置,规划的离散轨迹密一点;在直线段或者曲率特别小的位置完全可以用几个点一笔带过,节省计算资源。

4、纵向误差

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_69 等于红色向量在 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_70 上的投影:
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_算法_71
   注意:弧长有正负。

   比如,有一条曲线:

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_72

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_70【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_74 夹角小于 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_75

   如果是这种情况:

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_76

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_70【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_74夹角大于 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_75

5、投影点的航向角

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_80

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_81   比如,有一段圆弧:

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_82

【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_83【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_84,根据几何关系,绿色角是 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_85,那么
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_86    又因为 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_69 近似认为是匹配点与投影点间的弧长,所以
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_移动机器人_81

6、四个式子

   第六步,得到四个转换关系式子:
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_89
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_90   可计算出【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_91


三、总结

   最终,横向控制
【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶其中,【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_93【自动驾驶】控制算法(七)离散规划轨迹的误差计算_自动驾驶_04的解。

关于这些量的计算:

  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_95
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_06
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_笔记_07
  • 误差 【自动驾驶】控制算法(七)离散规划轨迹的误差计算_运动控制_98

至此,横向控制理论部分结束。

   在下一节会详细演示怎么把程序代码编写出来,将理论变成实际。第八节是横向控制的核心,将用到前七节所有知识。

   本篇博客到此结束,欢迎关注!


后记:

🌟 感谢您耐心阅读这篇关于 离散规划轨迹的误差计算 的技术博客。 📚

🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢

🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀

🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡

🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀