龙头算法
❶ 自动驾驶 车辆横向控制 主要采用pid算法吗
PID算法用的还是比较多的,因为算法原理简单,不需要对系统进行建模。只是需要调参。实际应用的时候需要根据系统的情况增加前馈控制或者采用PID算法的变种,比如PD控制,PI控制等。横向控制算法还有MPC等。
❷ PID算法怎么用
U不能代替V,它们有关联但不是同一个东东。
一般在自动控制中,控制模块(PID等)输出的是控制值,但不是输出值。它们的关系在于PID控制模块输出到PID输出的部分——这个部分,你初入门把它当成“另一个系统X或另一个单独的设备X”即可。系统X是接受U输入,再产生V输入。
拿个实际的例子来说,有个PID要控制水箱水位,上面有入水的水龙头,下方是出水口流出。这个水位就是V输入,通过某个测量器(水位计什么的)输入到PID。然后PID输出U,这里请注意!它的输出U接到水龙头,而水龙头给出的控制方式,是以它的水量影响水箱水位,最后绕回来,水位被测出以V输入到PID。
所以在这个系统中,除PID外,“水龙头-出水-水箱水位”可以视为一套单独的系统,PID以输出影响水龙头(水龙头排出的水量),再注意一下,水龙头对水箱水位的控制是不可预知的,因为不是小学数学题,没有恒定值。水龙头开了100%能产生的流量,可能是200,可能是180,也可能是170,更进一步在水箱中,因为排出量可能变化的影响,即例水龙头恒定了流量,水位也会波动,因此PID外部的“水龙头-出水-水箱水位”系统,可能会有不可预知的波动,但“大方向”是可预料的,比如这个系统,PID的U影响水龙头,间接对水位的大小是一个正向变化,U越大,水位V(输出值)在正常情况下加一个向上增值的影响。
考虑有个同学,他按“人工思考”的方式控制水箱水位,他的能力是可以操作水龙头,能看到水箱水位,相当于上面的U和V,现在BOSS要求他说,必须把水箱水位控制在40%这个位置(给定值),有误差可以,尽量控制。当他看到水位低于40%时,会把水龙头开大,然后根据水位的变化再调水龙头出水的大小,好吧他发现开了水龙头,水位从30%缓慢上升,他一想可能是下面出水太多,就会把水龙头拧大一点(D算法,偏差变化越大,正反向开得越大,I算法,经过一定时间累积值越大,调节U的力度越大),反之亦然,水位从30%向给定的40%上升的速度太快,他会想,快到40%前把水龙头拧小点,让出水和进水差不多。
说回你那个电机,它接受U,相当于“水龙头”,后面电机的输出不可能立即当成V送回PID,而是控制某个设备作正向或反向的增加量,比如这电机连接到一个送料器,控制容器送出给料,那就是个反向增量,PID系统测量出料的多少为V,同样的,由于现实系统的一些不确定性,经常会有另一个扰动加在送料系统上。PID的目的就是找出控制参数,尽量找到一个平衡点,令U对V的间接输出趋近PID的给定值