PID与MPC控制方法

记录udacity–无人驾驶工程师课程中控制部分。
MPC代码和实践链接https://github.com/udacity/CarND-MPC-Quizzes

  • 本文按照对udacity课程的理解和翻译而来

1、PID

P:Proportional 比例项, 用比例项乘以误差;快速缩小误差;
I:积分单元(Integral) 积分单元乘以一定时间内误差的和,用来消除稳态误差;
D:微分单元(Derivative) 微分项乘以误差的差分,防止震荡;
P控制:存在震荡情况;
PD控制:缩小震荡,快速缩小误差,但是不能消除系统误差;system bias.零位不能够达到实际的直行;
PID:在PD的控制基础上,用以消除稳态误差。

在这里插入图片描述

调参方法

讲师介绍到一种自动调参数的方法twiddle,即在开始控制前用以标定参数。
在这里插入图片描述
代码如下:

def twiddle(tol=0.2): 
    p = [0, 0, 0]
    dp = [1, 1, 1]
    robot = make_robot()
    x_trajectory, y_trajectory, best_err = run(robot, p)

    it = 0
    while sum(dp) > tol:
        print("Iteration {}, best error = {}".format(it, best_err))
        for i in range(len(p)):
            p[i] += dp[i]
            robot = make_robot()
            x_trajectory, y_trajectory, err = run(robot, p)

            if err < best_err:
                best_err = err
                dp[i] *= 1.1
            else:
                p[i] -= 2 * dp[i]
                robot = make_robot()
                x_trajectory, y_trajectory, err = run(robot, p)

                if err < best_err:
                    best_err = err
                    dp[i] *= 1.1
                else:
                    p[i] += dp[i]
                    dp[i] *= 0.9
        it += 1
return p

使用动态的PID参数能够使快速接近,但是容易造成初始的摆震;

首先使用上述方式确定一个PID参数,再进行控制,会使得控制收敛很快。

对各种组合方法的收敛效果示意:
在这里插入图片描述

2、MPC

2.1 MPC的主要组成

MPC需要设置的主要参数包括N, dt, and T。

N, dt, and T are hyperparameters you will need to tune for each model predictive controller you build. However, there are some general guidelines. T should be as large as possible, while dt should be as small as possible.
N Dt T(总步数、时间步长、总时域:T=N*Dt)是需要调整的超参数,一般的调整方式T越大越好,dt越小越好。

一般对超参数的设置按照如下原则:

  • HORIZON:

用在车上的时域,至少是数秒的级别,在这段时域以内,得到环境的变化,否则预测是毫无意义的。

  • Number of timesteps:

MPC的优化目标是优化控制的输入量,通过调整输入,直到找到在这些输入下最低的cost vector。这个向量的长度为N,N就是决定了MPC需要优化的变量,同时也是计算cost的major driver。

  • Time Duration时间间隔

MPC是想要通过动作额离散路径的平均来逼近一个连续的参考线,大的时间间隔会导致低频的actuations,难以连续逼近曲线,这种误差被叫做离散误差"discretization error".

基于车辆自行车模型的MPC方法,其中:
初始状态包含车辆的位置、速度、航向;
优化过程中的状态更新是根据自行车模型推算的位置,车辆速度,cte(位置偏差),航向偏差;优化方程不定,主要包含误差变小、速度转角的平滑度;
约束:对转角约束在±25°,纵向约束在±1(表示油门到极限和刹车到极限)
在这里插入图片描述

3、方法优劣讨论

对PID和MPC的讨论除了是否运用被控制物体的物理模型外,主要集中在系统延迟能否处理好的问题。
在实际的车辆中,一个动作并不会被立马响应,而是会经过100ms的量级的延迟(主要指线控车辆的执行延迟)。这个延迟会对不同的控制器来讲都是一个挑战。比如PID:会造成overcome(超调);但是MPC能够较好地处理这种延迟,因为其将延迟考虑在模型中了。

  • PID controller

PID算法一般不依赖于未来的误差,这是不对的。如果依赖未来的误差,也没有考虑车辆的模型,必然不准确的控制;

  • Model predictive controller

延迟的一个重要因素就是执行器的动态特性。例如,从转向角指令下发到实际到达该转向角度的时间。这个可以通过简单的动态系统进行建模,并且整合到车辆模型中去。一种方法就是将使用车辆模型,根据延迟时间推算延迟时间后的车辆状态,这个车辆状态就是MPC计算的新初始状态;

相比之下,MPC能够比PID算法更优地处理延迟问题;

  • 20
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值