精华内容
下载资源
问答
  • 它十分常用,但是在我们用Word书写论文过程中,往往不知道如何在Word中输入这个符号,下面我就介绍一下Word中输入平均数的符号X上加一(X拔)方法,来看看吧!工具/原料Word 2003及以上版本方法/步骤第种方法是...

    在我们常用的公式中平均数的基本都是用X的上面加一根横杠来表示,念作“X拔”。它十分常用,但是在我们用Word书写论文过程中,往往不知道如何在Word中输入这个符号,下面我就介绍一下Word中输入平均数的符号X上加一横(X拔)方法,来看看吧!

    工具/原料

    Word 2003及以上版本

    方法/步骤

    第一种方法是比较通用的方法,不管是在Word 2003或者2010中都可以使用。首先在Word中输入字母X,然后将光标定位到X之前

    b1f0058d726319a5f224e355e23c2871.png

    依次点击Word菜单栏中的插入——符号——其他符号

    b2472c58f2763c22dda7fee6d4e77a30.png

    在弹出的的新对话框中,点击符号下面字体的下拉箭头,选择symbol这个字体

    0abb82ec4b2463494b9f63e049ebdd92.png

    在此字体下,有一个上划线的符号,具体为在希腊字母阿发a的前面,点击插入即可

    2ed314eb37f1db450eb2b10869c2bbc7.png

    此法对小写字母结合得较好,对大写字母由于横线较短,显示比例有点失调,不太美观

    8aa8075ee8d6f7fe9d2a3b725bdd2166.png

    第二种方法适合用于Word 2010。点击菜单栏中的插入——公式——插入新公式

    1c5a63de59485e21fbc9ffdc0bfe8798.png

    在弹出来的公式工具菜单栏中点击倒数符号,在出来的下拉菜单中选择第三行第二个

    f7faa0fb5bec68de9edc7d59c9e0c85b.png

    最后在出现的横杠下面虚线框中输入X即可,此法不管是大写还是小写的字母都较合适

    c80a5ed7bb920272eeadce62f79b754d.png

    点击右边的下拉箭头点击另存为新公式,可以对此符号公式进行保存,以便下一次输入

    9acccd4ad9a34af31092b49b98668473.png

    在弹出的的新的对话框中,直接点击确定

    268f11a819f8b2502e55c892ea476273.png

    11

    再下一次需要插入此符号的时候,点击插入——公式,直接就可以看到此符号

    f592e886a3e6041365dc77729b08d327.png

    12

    要删除此符号公式,只需右键单击,然后选择整理和删除即可

    479559b20b1bcce25a8e8843c023e32d.png

    以上就是在Word中输入平均数的符号X上加一横(X拔)的方法介绍,希望能对大家有所帮助!

    展开全文
  • 空间目标光学截面积(OCSA)的准确计算是空间目标特性分析及识别的重要基础和前提之。针对面元网格法计算OCSA实时性,计算机图形学方法对材质的双向反射分布函数(BRDF)描述能力弱等问题,提出了种基于OpenGL...
  • 该算法选取标准普尔 500 指数内的每只股票,并提交以下限价单: 1) 买入限价单:mean-alpha 标准偏差2) 限价单:均值+阿尔法标准偏差每个出价策略的历史表现超过过去的“hist_lag”时期被视为个单独的策略投资...
  • 滑动平均模型

    千次阅读 多人点赞 2019-03-01 10:23:39
    在书上看到了滑动平均模型,不懂什么意思,然后博客上有篇写的很明白,摘抄了段,然后附上书中的代码。 TensorFlow中的滑动平均模型使用的是滑动平均(Moving Average)算法,又称为指数加权移动平均算法...

    指数加权平均算法的原理

    在书上看到了滑动平均模型,不懂什么意思,然后博客上有一篇写的很明白,摘抄了一段,然后附上书中的代码。

    TensorFlow中的滑动平均模型使用的是滑动平均(Moving Average)算法,又称为指数加权移动平均算法(exponenentially weighted average),这也是ExponentialMovingAverage()函数的名称由来。 
    先来看一个简单的例子,这个例子来自吴恩达老师的DeepLearning课程,个人强烈推荐初学者都看一下。 
    开始例子。首先这是一年365天的温度散点图,以天数为横坐标,温度为纵坐标,你可以看见各个小点分布在图上,有一定的曲线趋势,但是并不明显。
     
    接着,如果我们要看出这个温度的变化趋势,很明显需要做一点处理,也即是我们的主题,用滑动平均算法处理。 
    首先给定一个值v0,然后我们定义每一天的温度是a1,a2,a3····· 
    接着,我们计算出v1,v2,v3····来代替每一天的温度,也就是上面的a1,a2,a3 
    计算方法是:v1 = v0 * 0.9 + a1 (1-0.9),v2= v1 0.9 + a2 (1-0.9),v3= v2 0.9 + a3 (1-0.9)···,也就是说,每一天的温度改变为前一天的v值 0.9 + 当天的温度 * 0.1,vt = v(t-1) * 0.9 + at * 0.1,把所有的v计算完之后画图,红线就是v的曲线: 
     
    v值就是指数加权平均数,整个过程就是指数加权平均算法,它很好的把一年的温度曲线给拟合了出来。把0.9抽象为β,总结为vt = v(t-1) * β + at * (1-β)。

    β这个值的意义是什么?实际上vt ≈ 1/(1 - β) 天的平均温度,例如:假设β等于0.9,1/(1 - β) 就等于10,也就是vt等于前十天的平均温度,这个说可能不太看得出来;假设把β值调大道接近1,例如,将β等于0.98,1/(1-β)=50,按照刚刚的说法也就是前50天的平均温度,然后求出v值画出曲线,如图所示: 
     
    绿线就是β等于0.98时候的曲线,可以明显看到绿线比红线的变化更迟,红线达到某一温度,绿线要过一阵子才能达到相同温度。因为绿线是前50天的平均温度,变化就会更加缓慢,而红线是最近十天的平均温度,只要最近十天的温度都是上升,红线很快就能跟着变化。所以直观的理解就是,vt是前1/(1-β)天的平均温度。 
    再看看另一个极端情况:β等于0.5,意味着vt≈最近两天的平均温度,曲线如下黄线: 
     
    和原本的温度很相似,但曲线的波动幅度也相当大!

    然后说一下这个滑动平均模型和深度学习有什么关系:通常来说,我们的数据也会像上面的温度一样,具有不同的值,如果使用滑动平均模型,就可以使得整体数据变得更加平滑——这意味着数据的噪音会更少,而且不会出现异常值。但是同时β太大也会使得数据的曲线右移,和数据不拟合。需要不断尝试出一个β值,既可以拟合数据集,又可以减少噪音。 
    滑动平均模型在深度学习中还有另一个优点:它只占用极少的内存 
    当你在模型中计算最近十天(有些情况下远大于十天)的平均值的时候,你需要在内存中加载这十天的数据然后进行计算,但是指数加权平均值约等于最近十天的平均值,而且根据vt = v(t-1) * β + at * (1-β),你只需要提供at这一天的数据,再加上v(t-1)的值和β值,相比起十天的数据这是相当小的数据量,同时占用更少的内存。

    偏差修正

    指数加权平均值通常都需要偏差修正,TensorFlow中提供的ExponentialMovingAverage()函数也带有偏差修正。

    首先看一下为什么会出现偏差,再来说怎么修正。当β等于0.98的时候,还是用回上面的温度例子,曲线实际上不是像绿线一样,而是像紫线: 
     
    你可以注意到在紫线刚刚开始的时候,曲线的值相当的低,这是因为在一开始的时候并没有50天(1/(1-β)为50)的数据,而是只有寥寥几天的数据,相当于少加了几十天的数据,所以vt的值很小,这和实际情况的差距是很大的,也就是出现的偏差。 
    而在TensorFlow中的ExponentialMovingAverage()采取的偏差修正方法是:使用num_updates来动态设置β的大小 

    在数据迭代的前期,数据量比较少的时候,(1+num_updates)/(10+num_updates)的值比较小,使用这个值作为β来进行vt的计算,所以在迭代前期就会像上面的红线一样,和原数据更加接近。举个例子,当天数是第五天,β为0.98,那么(1+num_updates)/(10+num_updates) = 6/15 = 0.4,相当于最近1.6天的平均温度,而不是β=0.98时候的50天,这样子就做到了偏差修正。

    滑动平均模型的代码实现

    看到这里你应该大概了解了滑动平均模型和偏差修正到底是怎么回事了,接下来把这个想法对应到TensorFlow的代码中。

    首先明确一点,TensorFlow中的ExponentialMovingAverage()是针对权重weight和偏差bias的,而不是针对训练集的。如果你现在训练集中实现这个效果,需要自己设计代码。 
    为什么要对w和b使用滑动平均模型呢?因为在神经网络中, 
    更新的参数时候不能太大也不能太小,更新的参数跟你之前的参数有联系,不能发生突变。一旦训练的时候遇到个“疯狂”的参数,有了滑动平均模型,疯狂的参数就会被抑制下来,回到正常的队伍里。这种对于突变参数的抑制作用,用专业术语讲叫鲁棒性,鲁棒性就是对突变的抵抗能力,鲁棒性越好,这个模型对恶性参数的提抗能力就越强。 
    在TensorFlow中,ExponentialMovingAverage()可以传入两个参数:衰减率(decay)和数据的迭代次数(step),这里的decay和step分别对应我们的β和num_updates,所以在实现滑动平均模型的时候,步骤如下: 
    1、定义训练轮数step 
    2、然后定义滑动平均的类 
    3、给这个类指定需要用到滑动平均模型的变量(w和b) 
    4、执行操作,把变量变为指数加权平均值

    实现代码如下:

    import tensorflow as tf
    
    v1 = tf.Variable(0, dtype=tf.float32)
    step = tf.Variable(0, trainable=False)
    ema = tf.train.ExponentialMovingAverage(0.99, step)
    maintain_averages_op = ema.apply([v1])
    
    with tf.Session() as sess:
        
        # 初始化
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
        print (sess.run([v1, ema.average(v1)]))
        
        # 更新变量v1的取值
        sess.run(tf.assign(v1, 5))
        sess.run(maintain_averages_op)
        print (sess.run([v1, ema.average(v1)]))
        
        # 更新step和v1的取值
        sess.run(tf.assign(step, 10000))  
        sess.run(tf.assign(v1, 10))
        sess.run(maintain_averages_op)
        print (sess.run([v1, ema.average(v1)])   )    
        
        # 更新一次v1的滑动平均值
        sess.run(maintain_averages_op)
        print(sess.run([v1, ema.average(v1)]))    

    原文:https://blog.csdn.net/m0_38106113/article/details/81542863

    展开全文
  • python写平均

    2020-11-24 08:59:36
    广告关闭腾讯云11.11云...如何计算python中的平均顶部或底部n值? 例如,column = c2计算过去4天中前2名的平均值。 c0 c1 c21 2 na2 2 na3 3 na4 5 45 6 5.56 7 6.57 5 6.58 4 6.59 5 610 5 5...python 环境:python...

    o55g08d9dv.jpg广告关闭

    腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!

    如何计算python中的平均顶部或底部n值? 例如,column = c2计算过去4天中前2名的平均值。 c0 c1 c21 2 na2 2 na3 3 na4 5 45 6 5.56 7 6.57 5 6.58 4 6.59 5 610 5 5...

    python 环境:python2. 7.12 x64ide : wing ide professional 5.1. 12-1题目:求数组元素的平均值#求数组元素的平均值 a=b=len(a)sum=0print 数组长度为:,bfor i in a: sum=sum+iprint 均值为:,sumb?...

    大约有7500个x值和相应的y值(因此每x一个y)。 它看起来像这样: ? 中间的蓝线是我尝试绘制绘图线失败的结果,该绘图线代表我的数据的平均值。 码:import numpy as npimport matplotlib.pyplot aspltdata=np.genfromtxt(data.csv)temp_av=)]*len(data)plt.figure()plt.subplot(111)plt.scatter(data,data)plt.plot...

    作者:司开星http:blog.csdn.netchromingarticledetails46471155用python写了一个抓取上海地区二手房价格的程序,python2.7,数据来自赶集网。 由于在赶集网查看房价不需要登录,所以程序也十分简单。 程序代码如下:源代码托管在:https:github.comchromingsh_house_price # -*- coding:utf-8 -*-import requestsimp...

    我正在做一些研究,我正在基于这个数学表达式在python中实现移动平均值: ? 其中:n =样本,w1 =窗口 我这样实现: def movingaverage(signal, window):sum = 0 maver = #end-for maver.append(sum window) sum = 0 #end-for zeros =*k maver = zeros + maver + zeros return maver 它工作得很好。 但是我试图找到...

    我有一个列表:类似: data = , , , ] 我想把这个算出来...

    前言在《python数据清洗--类型转换和冗余数据删除》中分享了有关数据类型转换和冗余信息删除的两个知识点,接下来继续讲解缺失值的识别和处理办法。 缺失值指的是由于人为或机器等原因导致数据记录的丢失或隐瞒,缺失值的存在一定程度上会影响后续数据分析和挖掘的结果,所以对他的处理将显得尤为重要。 缺失值的识别...

    u519gbxgxe.jpeg

    (1)简单统计量分析 可以先对变量做一个描述性统计,进而查看哪些数据是不合理的。 最常用的统计量是最大值和最小值,用来判断这个变量的取值是否超出了合理的范围。 如客户年龄的最大值为199岁,则该变量的取值存在异常。 (2)3原则 如果数据服从正态分布,在3原则下,异常值被定义为一组测定值中与平均值的偏差...

    本文介绍python扩展库numpy的函数average()的用法。 import numpy as np# 创建二维矩阵>>> x = np.matrix(, ])# 设置权重>>> w1 = #纵向计算加权平均>>> np.average(x, axis=0, weights=w1)matrix(])>>> w2 = #横向计算加权平均>>> np.average(x, axis=1, weights=w2)matrix(, ])>>>np.average(x, axis=1, weights=w2...

    换句话说,如果日期为2015-03-02的所有列的平均值为80.018,我只希望保留该特定日期的值在-19.982到180.018之间的列。 所以在这个例子中,我会排除d列,因为它的值超出了这个范围。 我也不想遍历dataframe的行,所以我正在寻找一个非常仿生的解决方案...

    我有一个深度和其他值列的数据框:data = {depth: , value1:, value2: } df = pd.dataframe(data)正如你所看到的那样,有些重复depth。 我希望能够以某种方式组合间隔和平均值。 例如,我希望的输出是:intervals =获取间隔列表并将这些间隔上的数据集分解为每个值的平均值(value1,value2)以获得depth value1 ...

    本文涉及python元组的运算及函数方法元组元组与列表类似,都是一种序列,但是列表可以被修改,而元组不能被修改; 元组用()创建,列表用)#输出:(l, o, g) 注意左闭右开元组中的元素是不允许修改的,不过我们可以对元组进行组合,如下所示:#元组的元素不允许重新赋值修改tup_1 = (hello , logic)tup_1 =你好print(tup...

    输入:numpy的array输出:一个一维的平均值arrayimport numpy as np def non_zero_mean(np_arr):exist = (np_arr != 0) num = np_arr.sum(axis=1) den = exist.sum(axis=1) returnnumden如果要求按行的非零元素的平均值,把所有的 axis=1改成axis=0补充知识:python dataframe 统计行列中零值的个数1、按行统计,返回...

    但请再思考一下,如果你把方案二的代码换成另外一种语言,比如 java,它是不是基本可以做到 1:1 的完全翻译? 换句话说,它虽然效率高、代码直接,但是它没有完全利用好 python 世界提供的规则,最大化的从中受益。 如果要具体化这个问题里的“规则”,那就是 “python 拥有内置结构集合,集合之间可以进行差值等四则...

    运行平台: windows python版本: python3.6 ide: sublime text 其他工具:chrome浏览器0、写在前面的话本文是基于基础版上做的修改,如果没有阅读基础版,请移步 python爬虫抓取智联招聘(基础版)在基础版中,构造url时使用了urllib库的urlencode函数: url = https:sou.zhaopin.comjobssearchresult.ashx?...

    我想计算每个键和打印结果的平均值,以便结果显示关键和相关的平均值。 以下代码计算平均值,但我不知道如何将密钥与平均值相关联。 我想要的答案是mean = {22:average1,23:average2,24:average3}。 mydict = {22: , 23: , 24: } mean =...

    作者:二十一 来源:https:segmentfault.coma1190000018737045大家好,我是咸鱼,之前推送过不少关于 python 的知识合集,反响不错,今天继续给大家带来一篇关于 python 相关知识的内容合集,希望大家喜欢。 本篇内容的作者是二十一文章来源:https:segmentfault.coma1190000018737045咸鱼在这篇内容的基础上修改并...

    python概述简介 python是一种解释性,面向对象,动态数据类型的高级程序语言, 解释型,无编译过程,逐行解释为二进制 交互性,直接执行程序 应用广泛, 编译型:一次将所有编译为二进制 特点 易于学习 易于维护 易于阅读 广泛的标准库 互动模式可移植 可扩展:兼容c语言,可调用 数据库 gui编程 可嵌入,c调python 缺点 运行慢...

    我有第一张带水印的照片,使用代码:import cv2import numpy as np img = cv2.imread(veidz.jpg) alpha = 2.0beta =-160 new = alpha * img + betanew = np.clip(new, 0, 255).astype(np.uint8)cv2.imwrite(cleaned.png, new) 我得到第二张没有水印的照片,但它变得更清晰,所以我有一个问题,是否有任何方法可以应用...

    7pzrew4e05.png

    在使用python进行数据分析时,如果数据集中出现缺失值、空值、异常值,那么数据清洗就是尤为重要的一步,本文将重点讲解如何利用python处理缺失值创建数据为了方便理解,我们先创建一组带有缺失值的简单数据用于讲解 ? 检查缺失值对于现在的数据量,我们完全可以直接查看整个数据来检查是否存在缺失值看到有两列含有...

    展开全文
  • 基于车辆模型的横向控制方法

    万次阅读 多人点赞 2020-03-24 14:37:05
    无人驾驶车辆基于模型横向控制、车辆运动学模型、纯跟踪、后轮反馈、前轮反馈控制算法;车辆动力学模型、车辆线性二自由度动力学模型、车辆路径跟踪偏差状态方程的构建、LQR 横向控制算法的求解


    1. 简介


    1.1. 无人驾驶车辆

    大到类似百度apollo无人车,无人配送车
    小到扫地机器人,其实都是无人驾驶车辆
    都是一个复杂的软硬件结合系统
    其软件算法模块主要包含:感知、定位、轨迹预测、行为决策、运动规划 及 反馈控制

    在这里介绍和补充的是 反馈控制部分
    部分软件实现可参考:个人开源项目 path-following-control


    1.2. 横向控制和纵向控制

    反馈控制是无人车 最底层 的软件算法模块,包括:

    • 横向控制,主要用于车辆方向盘的控制
    • 纵向控制,主要用于车辆油门、刹车的控制

    两者协同工作以 使无人车按照预定的参考轨迹行驶

    其中,横向控制根据上层运动规划输出的 路径曲率 等信息进行跟踪控制,以减少跟踪误差
    同时保证车辆行驶的 稳定性舒适性


    1.3. 横向控制

    根据横向控制使用车辆模型的不同,可以将其分为两种类型,包括:

    • 无模型 的横向控制方法
    • 基于模型 的横向控制方法

    1.3.1. 无模型横向控制

    无模型的横向控制即传统的 PID 控制算法
    将车辆当前的 路径跟踪偏差 作为输入量
    对跟踪偏差进行比例(Proportion)、积分(Integration)和微分(Differentiation)控制得到转向控制量
    具体原理可以参考:增量式PID控制的理解和应用

    但该算法由于没有考虑车辆本身的特性
    因此算法对外界干扰的鲁棒性较差,无法满足车辆在高速行驶过程中的有效控制


    1.3.2. 基于模型横向控制

    而其中基于模型的方法又可分为:

    • 基于车辆 运动学模型 的横向控制方法
    • 基于车辆 动力学模型 的横向控制方法

    因此,将主要介绍包括:

    • 基于车辆运动学模型的纯跟踪控制(Pure Pursuit)算法
    • 后轮反馈控制(Rear wheel feedback)
    • 前轮反馈控制(Front wheel feedback)算法
    • 基于车辆动力学模型的线性二次型调节器(Linear Quadratic Regulator,LQR)控制算法

    2. 基于车辆运动学模型的控制方法


    2.1. 车辆运动学模型

    基于车辆运动学模型的控制方法主要考虑了 车辆的运动学约束对车辆控制的影响

    首先了解一下常见的车辆运动学模型:
    在这里插入图片描述

    平时见到的汽车属于 阿克曼转向,通常可以简化为两轮的自行车模型

    在这里插入图片描述

    其假设车辆的前后轮均为刚体,只能沿着车轮滚动的方向前进,无侧向滑动

    由上述假设可得自行车模型的运动微分方程如下式:

    在这里插入图片描述

    角速度和角速度的关系:v=ωr,即 ω=v/r,因此这里 ψ ˙ \dot{\psi} ψ˙ = v * tan( δ δ δ) / L
    其他的比较简单,就不加以说明


    2.2. 纯跟踪控制算法

    纯跟踪控制算法(Pure Pursuit)是一种典型的横向控制方法
    最早由 R. Wallace 在1985年提出,该方法对外界的 鲁棒性 较好

    该算法的思想:
    基于当前车辆 后轮中心 位置,在参考路径上向 l l ld (自定义)的距离匹配一个预瞄点
    假设车辆后轮中心点可以按照一定的转弯半径𝑅 行驶抵达该预瞄点
    然后根据 预瞄距离 l l ld , 转弯半径𝑅,车辆坐标系下预瞄点的朝向角𝛼 之间的几何关系来 确定前轮转角

    在这里插入图片描述

    弧的弧度为2𝛼是因为这个三角形是等腰三角形,边长为𝑅,而其中一个角为 π π π/2-𝛼
    所以这个弧度为 π π π -( π π π / 2- 𝛼)* 2 = 2𝛼

    如图所示,弧线为经过车辆后轮中心以及预瞄点的圆弧
    圆弧的半径𝑅 与 朝向角𝛼和 预瞄距离 l l ld 有关,其实也就是与( x x xg y y yg)有关

    作一条辅助线d,垂直于𝑅,则:
    在这里插入图片描述
    根据图中的几何关系,𝑅, 𝛼, 与 l l ld 的关系为:

    在这里插入图片描述
    再作一条辅助线,垂直于 l l ld,则:
    在这里插入图片描述
    根据图中的几何关系,𝑅, 𝛼, 与 l l ld 的关系为:

    在这里插入图片描述
    根据运动学方程(2-1) 中 ψ ˙ \dot{\psi} ψ˙ = v ∗ t a n v * tan vtan( δ δ δ) / L / L /L
    t a n tan tan( δ δ δ) = ψ ˙ \dot{\psi} ψ˙ ∗ L / v * L / v L/v,而在这里 ψ ˙ \dot{\psi} ψ˙ / v / v /v = 𝑅,即:

    在这里插入图片描述
    再把式(2-4)带入(2-5)可得前轮转角为:
    在这里插入图片描述


    2.3. 后轮反馈控制算法

    后轮反馈式(Rear wheel feedback)是利用 后轮中心路径跟踪偏差量 来进行转向控制量计算的方法

    在这里插入图片描述

    根据运动学方程(2-1)及车辆后轮与参考路径的几何关系
    可推导出参考路径坐标系 (𝑠, 𝑙)

    Ferent 坐标系下 (𝑠, 𝑒, ψ \psi ψ𝑒) 的变化率为:

    在这里插入图片描述

    Frenet坐标系使用道路的中心线作为参考线,使用参考线的 切线向量法线向量 建立坐标系
    那么基于参考线的位置,就可以使用 纵向距离横向距离 来描述任意位置
    同时纵向和横向的速度、加速度、加加速度等信息也更便于计算

    对于二次连续可导的参考线,需要设计车身横摆角速度𝜔保证在李亚普洛夫方程下局部渐进收敛:
    在这里插入图片描述
    李亚普洛夫稳定(一个分析系统的稳定性方法)用数学的语言描述为:
    可控可微分的状态方程 x ˙ \dot{x} x˙ = f ( x , u ) f(x,u) f(x,u)

    在给定的参考轨 x x xref ( t ) (t) (t) 下,存在 ∀ \forall ε>0, t t t1< t t t2,𝛽>0,满足下列条件:
    :

    在这里插入图片描述
    对于李亚普洛夫稳定也分为渐进稳定和指数稳定

    李亚普洛夫稳定性理论是从能量的观点出发的
    系统的能量随着时间的推移不断变化(增加or减少),在有限时间内,系统趋于稳定,能量不再变化
    此时,系统的k+1时刻的能量减去k时刻的能量是<0的,即V(k+1)-V(k)<0,V代表能量函数

    渐进稳定指对于时变系统,𝛽在条件(1)下独立于时间 t t t1
    指数稳定指收敛率是以指数下降

    对于后轮反馈式算法,为了保证车辆的李亚普洛夫稳定性,车身横摆角速度𝜔可表示为式(2-10)

    在这里插入图片描述

    其中, 𝑘ψ 为横摆角偏差反馈控制增益, 𝑘e 为横向位置偏差反馈控制增益

    因此,根据运动学方程(2-1),可得到前轮转角𝛿为:
    在这里插入图片描述


    2.4. 前轮反馈控制算法

    前轮反馈控制(Front wheel feedback)又称 Stanley 控制
    其核心思想是利用 前轮中心路径跟踪偏差量 对方向盘转向控制量进行计算

    在这里插入图片描述

    前轮中心横向位置跟踪偏差𝑒 的变化率为:

    在这里插入图片描述

    式(2-12)中可以看出前轮横向位置偏差的变化率 e ˙ \dot{e} e˙ 可以直接通过 前轮转角𝛿 进行控制

    当定义 e ˙ \dot{e} e˙ = − k = -k =k𝑒 后,可以保证前轮横向位置偏差𝑒 满足 李亚普洛夫的指数化收敛,即:

    在这里插入图片描述

    李亚普洛夫指数:在相空间中相互靠近的两条轨线随着时间的推移,按指数分离或聚合的平均变化速率

    关于 a r c s i n arcsin arcsin 函数:
    在这里插入图片描述
    那么对于式(2-13)来说,当 ∣ − k e / v |-ke/v ke/vf ∣ > 1 |>1 >1 时,函数无解

    对于有限域内的指数收敛可以放宽到局部指数收敛,从而将前轮转角𝛿 定义为:

    在这里插入图片描述

    Stanley 前轮反馈控制算法 在变曲率路径且路径连续可导 的条件下,可以满足局部指数收敛特性
    但也可以看出该算法不适用于倒车的场景,导致对于自动泊车等工况不适用


    3. 基于车辆动力学模型的横向控制

    基于车辆运动学模型的方法忽略了车辆的动力学特性
    因此在 车速过快 或者 曲率变化率过大 的情况下该算法无法满足车辆的 稳定性 控制要求

    这里介绍一种典型的基于车辆动力学模型的横向控制方法,包括

    • 车辆线性二自由度动力学模型的构建
    • 车辆路径跟踪偏差状态方程的构建
    • LQR 横向控制算法的求解

    3.1. 车辆线性二自由度动力学模型

    对于基于车辆动力学模型的控制方法,首要的工作是对车辆动力学进行建模
    由于车辆动力学模型具有强 非线性时变 的特性,因此精确建模整个车辆动力学十分困难

    在横向控制中,主要关心的是车辆横向运动特性
    通常将车辆动力学模型简化为的二自由度横向动力学模型
    假设车身的纵向速度Vx 保持不变, 其横向动力学模型的两个自由度为:

    • 横向运动
    • 横摆运动

    由于精确的二自由度动力学模型是非线性的,为了便于进行实时的跟踪控制计算
    通常还需要在精确的二自由度动力学模型基础上进行一些简化近似,得到线性二自由度动力学模型

    这里介绍基于 转向小角度轮胎动力学 线性化假设下的车辆线性二自由度动力学模型
    下图为车辆为车辆横向动力学坐标系示意图
    在这里插入图片描述

    假设道路平整(不考虑道路横向的倾斜),且转向角度较小时
    则车身𝑦轴方向应用牛顿第二定律可得:

    在这里插入图片描述
    其中,𝑚是整车质量, 𝛼y 是车辆质心处的横向加速度, Fyf,Fyr 为地面给前轮胎和后轮施加的横向力
    而横向加速度𝛼y 由两部分组成:

    • 车辆沿车身𝑦轴横向运动产生的加速度 y ˙ \dot{y} y˙
    • 车身横摆运动产生的向心加速度 vx ψ ˙ \dot{\psi} ψ˙

    因此:
    在这里插入图片描述
    将(3-2)代入(3-1)可得:
    在这里插入图片描述
    然后,车辆绕𝑧轴的转矩平衡方程为:

    在这里插入图片描述
    其中, l l lf , l l lr 分别是前轮轴和后轮轴到质心的距离

    接下来对横向轮胎力 Fyf,Fyr进行计算
    实验结果表明,轮胎侧偏角较小时
    地面施加给轮胎的横向力(侧偏力)与轮胎侧偏角成线性关系(侧偏角是车轮速度方向与车轮纵轴的夹角)
    在这里插入图片描述
    前轮侧偏角为:
    在这里插入图片描述

    θ \theta θvf 是前轮胎速度方向与车身纵轴的夹角,𝛿为前轮转向角
    后轮的侧偏角为:
    在这里插入图片描述
    θ \theta θvr 是后轮胎速度方向与车身纵轴的夹角

    因此,前轮(2个)横向轮胎力为:
    在这里插入图片描述
    C𝛼f 是前轮侧偏刚度(cornering stiffness)

    同样,后轮(2个)横向轮胎力为:
    在这里插入图片描述
    C𝛼r 是后轮侧偏刚度

    计算 θ \theta θvf θ \theta θvr
    在这里插入图片描述

    θ \theta θvf θ \theta θvr 较小时可近似得到:
    在这里插入图片描述
    将(3-5),(3-6),(3-7),(3-8),(3-11),(3-12)代入(3-3)和(3-4)可得线性二自由度模型的状态方程:
    在这里插入图片描述


    3.2. 车辆路径跟踪偏差状态方程的构建

    有了式(3-13)的系统状态方程之后
    就可以分析出在给定的前轮转角输入下,车辆的横向位移、横向速度、横摆角以及横摆角速度的响应

    但是横向跟踪控制的目的是为了减小跟踪偏差
    需要的状态方程是能够分析在给定的前轮转角下车辆跟踪偏差的响应
    因此些偏差通常是:

    • 横向位置偏差𝑒1 及横向位置偏差变化率 e ˙ \dot{e} e˙1
    • 横摆角偏差𝑒2 及横摆角偏差变化率 e ˙ \dot{e} e˙2

    在这里插入图片描述
    下面介绍具体的转换过程
    车辆期望横摆角速度:
    在这里插入图片描述
    期望的横向加速度𝛼ydes 为:
    在这里插入图片描述
    则横向加速度偏差 e ˙ \dot{e} e˙1 为:
    在这里插入图片描述
    因此横向位置偏差变化率 e ˙ \dot{e} e˙1 (横向速度偏差)为:
    在这里插入图片描述
    此外,横摆角偏差 𝑒2 为:
    在这里插入图片描述
    将式(3-16),(3-17),(3-18)代入(3-3),(3-4)化简后可以得到新的状态方程:

    在这里插入图片描述
    即:
    在这里插入图片描述
    进一步忽略 ψ ˙ \dot{\psi} ψ˙des 项之后:
    在这里插入图片描述

    上式(3-20)就是横向控制所需的路径跟踪偏差状态方程


    3.3. LQR 横向控制算法的求解

    基于前面推导的路径跟踪偏差系统状态方程(3-20)
    就可以分析在前轮转角控制输入𝛿作用下,车辆路径跟踪偏差𝑥的响应特性

    期望的响应特性就是 跟踪偏差能够快速、稳定地趋近于零,并保持平衡
    同时前轮转角控制输入又尽可能小
    ,这就是一个典型的多目标优化最优控制问题

    且优化的目标函数可以表示为跟踪过程累计的跟踪偏差与累计的控制输入的加权和
    如式(3-21)所示:
    在这里插入图片描述
    其中, 𝑄为半正定的状态加权矩阵, 𝑅为正定的控制加权矩阵
    且 𝑄, 𝑅通常取为对角阵

    若只是 x x x δ \delta δ 做为代价,那么存在 x x x的正误差被 δ \delta δ的负误差消除
    相反,自身相乘,这样负值也会产生正平方,称这些为二次项

    𝑄矩阵元素变大意味着希望跟踪偏差能够快速趋近于零
    𝑅矩阵元素变大意味着希望控制输入能够尽可能小

    设M是n阶方阵,如果对任何非零向量z,都有zTMz> 0,其中zT 表示z的转置,就称M为正定矩阵

    则式(3-21)目标函数中
    第一项优化目标 ∫ 0 ∞ ( x T Q x )   d t \int_{0}^{∞} (x^TQx)\, dt 0(xTQx)dt 表示跟踪过程路径偏差的累积大小
    第二项优化目标 ∫ 0 ∞ ( δ T R δ )   d t \int_{0}^{∞} (\delta^TR\delta)\, dt 0(δTRδ)dt 表示跟踪过程控制能量的损耗

    这样就将横向控制问题转化为一个最优控制问题:
    求解最优的前轮转角控制输入 δ \delta δ* ,使得式(3-21)目标函数 𝐽 可以取极小值

    而式(3-21)是一个关于状态变量𝑥和控制输入𝛿的二次型目标函数
    对它的优化求解是一个典型的 LQR 最优控制问题

    根据 LQR 最优控制理论,对式(3-21)目标函数的优化求解
    解出的最优控制规律 δ \delta δ* 是关于状态变量𝑥的线性函数:

    在这里插入图片描述
    其中,𝐴d 和 Bd 代表状态方程(3-20)离散化后的𝐴, B1 矩阵, 𝑃是式(3-23)黎卡提方程的解:
    在这里插入图片描述
    因此,根据式(3-22)可以设计一个状态反馈调节器,通过状态反馈实现闭环最优控制,如图所示
    在这里插入图片描述
    根据求解的状态反馈调节器增益𝐾,则可以得到最优的状态反馈前轮转角 δ \delta δfb
    在这里插入图片描述
    由于在 LQR 状态反馈控制求解过程中没有考虑路径本身的动态变化特性
    因此只有式(3-25)的反馈控制输入时 LQR 控制在曲线行驶时会存在稳态误差

    稳态误差是系统从一个稳态过渡到新的稳态,或系统受扰动作用又重新平衡后,系统出现的偏差

    为了消除该稳态误差, 还需要加上一个前馈控制输入量 δ \delta δff
    前馈控制考虑了路径的曲率及车辆的转向不足特性
    在这里插入图片描述
    其中, KV为不足转向梯度,表征了车辆的转向特性
    e2ss 为稳态时的角度跟踪偏差
    k3 为𝐾矩阵中的角度偏差反馈控制增益部分
    在这里插入图片描述
    因此,总的 LQR 前轮转角输入为:
    在这里插入图片描述


    4. 总结

    本文主要介绍了基于车辆运动学和动力学模型的横向控制算法
    从上文对两类方法的分析可以看出,两类方法在应用场景上都存在一定的局限性,并具有较强的互补性
    因此在实际使用中,综合使用这些方法会更有效
    在这里插入图片描述

    无模型的 PID 横向控制算法参数少,简单易用
    但是由于没有考虑车辆系统动力学特性及路径本身的动态变化特性,对外界干扰的鲁棒性较差
    在高速或曲率较大的弯道场景时,会出现较大的跟踪误差和“画龙”现象
    因此,该方法比较适合应用于低速曲率较小的路径跟踪控制场景中

    基于运动学模型的横向控制算法中
    Pure Pursuit 和 Stanley 前轮反馈算法在中低速场景下,他们的路径跟踪的性能较好

    Pure Pursuit 在大的跟踪误差和非连续的路径场景下鲁棒性较好
    其控制的关键在于对最佳前向预瞄距离的确定
    其中,增大前向预瞄距离将提高车辆控制的稳定性
    但随之会带来路径跟踪性能降低及稳态误差增大的后果,表现出转弯内切现象

    相比于 Pure Pursuit 算法,Stanley 前轮反馈算法还额外考虑了横摆角偏差
    因此在大多数场景下,跟踪性能更佳
    然而,由于没有设置前向预瞄,Stanley 算法会出现转向过度的情况
    与 Pure Pursuit 和 Stanley 算法相比,后轮反馈控制算法计算更加复杂, 对路径的平滑性要求更高
    在中等速度下的跟踪性能及鲁棒性与 Stanley 方法近似
    然而在速度较大时,稳态误差也会变大,从而导致控制效果不佳

    LQR 算法使用二自由度动力学模型来设计横向控制器
    与前述基于运动学模型的几种算法相比,LQR 参数调节更加复杂
    其不仅需要获取车辆自身的模型参数
    还需要调节LQR 目标函数的 Q,R 矩阵以获得较优的跟踪性能

    LQR 算法的优点在于,通过与转向前馈进行有效结合,LQR 能够很好的解决曲线行驶时的稳态跟踪误差
    中等速度曲线行驶时其稳态误差趋近于零,从而极大提升跟踪性能
    LQR 非常适用于路径平滑的高速公路及城市驾驶场景,具有较好的车辆高速控制性能

    但是,由于模型的固有缺陷,LQR 与前馈控制的结合也无法解决所有跟踪控制问题
    由于该方法采用基于简化后的二自由度动力学模型
    因此当车辆运动不满足二自由度动力学模型转向小角度,或轮胎动力学线性化的假设条件时
    LQR 算法的跟踪性能会大幅降低,从而导致控制失效


    参考: 走进自动驾驶横向控制,你需要这篇超长综述


    谢谢

    展开全文
  • 移动平均法详解

    2020-12-07 13:10:02
    移动平均法是用组最近的实际数据值来预测未来期或几期内公司产品的需求量、公司产能等的种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能有效...
  • Excel-算术平均分析(差异分析)

    千次阅读 2014-02-02 20:45:48
    算术平均分析就是运用计算平均数的方法反应总体在段时间、地点条件下,某数量特征的一般水平。平均指标既可用于同一现象在不同地区、不同部门间的横向比较,也可用于同一现象在不同时间的对比。 使用平均指标更...
  • 截面数据、时间序列数据、面板数据

    万次阅读 多人点赞 2018-03-20 15:12:40
    具有“截面”和“时间序列”两个维度,当这类数据按两个维度进行排列时,数据都排在个平面上,与排在条线上的维数据有着明显的不同,整个表格像是个面板,所以称为面板数据(Panel Data)。 实际上如果从...
  • 滑动平均模型原理

    千次阅读 2019-09-13 16:39:57
    举例来说,这是来自吴恩达老师的深度学习课程中的个例子,上图表示了一年365天的温度散点图,以天数为坐标,温度为纵坐标,大致看来图中的点遵循一定的曲线规律,但不明显。 为了使温度变化的趋势更加明显,需要...
  • 指数加权移动平均法(EWMA)

    万次阅读 2019-03-28 11:44:52
    指数加权移动平均法(EWMA) https://www.cnblogs.com/jiangxinyang/p/9705198.html ** 本文内容来自于吴恩达深度学习公开课 1、概述  加权移动平均法,是对观察值分别给予不同的权数,按不同权数求得移动平均...
  • 深入解析TensorFlow中滑动平均模型与代码实现

    万次阅读 多人点赞 2018-08-09 21:00:56
    因为本人是自学深度学习的,有什么说的不对的地方望大神指出 指数加权平均算法的原理 TensorFlow中的滑动平均模型使用的是滑动平均(Moving Average)算法,...先来看个简单的例子,这个例子来自吴恩达老师的De...
  • 线性求子序列最大平均

    千次阅读 2016-12-29 22:09:05
    Description给出长度为n的正整数序列,要求在所有长度大于m的连续的子序列中的最大的平均值。 n^7Solution如果是nlog(n)n\log(n)的话就是一道大水题,直接二分答案即可, 但现在n^7,必须要线性的做法, 来看一下...
  • 滑动平均原理

    千次阅读 2019-08-06 17:27:34
    给出个连续365天的温度数据,如图所示,坐标为天数,纵坐标是温度。 可以看到这些数据是很不平滑的,会让拟合出来的模型难以具有泛化性,因此,可以采用滑动平均的方式处理。假设某天经过滑动平均处理后的温度...
  • 指数加权移动平均

    2020-08-18 23:59:15
    指数加权移动平均exponentially weighted moving average (EWMA),又叫指数移动平均exponential moving average (EMA)。 算术平均(权重相等)—>加权平均(权重不等)—>移动平均(大约是只取最近的N次数据进行...
  • 原理:在训练神经网络时,不断保持和更新每个参数的滑动平均值,在验证和测试时,参数的值使用其滑动平均值,能有效提高神经网络的准确率。 tf.train.ExponentialMovingAverage tensorflow官网地址:h
  • 分隐私的个简单解释

    千次阅读 2018-11-26 23:27:26
    篇博客的翻译http://www.win-vector.com/blog/2015/10/a-simpler-explanation-of-differential-privacy/) 分隐私最初开发是为了方便敏感数据上的安全分析,并取得了成功。最近又很火,是Cynthia Dwork等做出...
  • 功率谱/径向平均对数功率谱

    千次阅读 2021-11-22 10:04:47
    最直接估计谱密度的方法是采用周期图法(即傅里叶变换),即把随机序列x(n)的N个观测数据视为能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的...
  • 机器学习笔试题精选(

    千次阅读 2018-08-04 08:12:46
    所谓同方,是为了保证回归参数估计量具有良好的统计性质,经典线性回归模型的个重要假定:总体回归函数中的随机误差项满足同方性,即它们都有相同的方差。如果这假定不满足,即:随机误差项具有不同的方差,...
  • 排序偏差是指,算法多次预估个元素的频度值的排序,与该元素的实际频度排序的平均偏差。序列是按频度值从大到小排序。排序偏差越小,表明算法越能还原元素的频次排序。排序偏差的定义如下: 其中,ar(d)是元素d的...
  • 如何分析第原理的计算结果在网上看到这个和大家分享一下!参考自百度文库和http://muchong.com/html/201106/3266401.html如何分析第原理的计算结果[转]关键词: 第原理 计算 结果 如何分析第原理的计算...
  • 资料分析 1:速算技巧 截谁 一步除法,只截分母,如ab\frac{a}{b}ba​,a+cb\frac{a+c}{b}ba+c...小,分子大的分数大 同大同小,分为竖着看,和着看 竖着看,就是平时的除法 着看,谁大谁牛皮,小的变成1,299
  • 通过对东濮凹陷沙段烃源岩有机质丰度、类型、成熟度的研究,发现东濮凹陷沙段烃源岩主要为混合型,有机质类型较好,平均有机碳含量在0.56%~1.04%之间,属于差一较好的级别。从烃源岩的潜力指数来看,东濮凹陷沙...
  • Carlo Reinforcement Learning,MC学习):指在不清楚MDP状态转移概率的情况下,直接从经历完整的状态序列(episode)来估计状态的真实价值,并认为某状态的价值等于在多个状态序列中以该状态算得到的所有收获的平均值. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,126
精华内容 10,050
关键字:

平均差的一横