大三小学期进阶课程第三十八课:control in apollo3
第38课、control in apollo3
今天加了一点自己查到的东西,6之后是查到的
- controller types
- 三种类型的控制系统:
(1)开环
(2)前馈
(3)反馈,闭环 - 前馈回路控制器
(1)主要控制策略:
①最优控制
②自适应控制
③鲁棒控制 - 最优控制:为给定的系统找到一种控制法,从而实现一种特定的最优性标准
- 自适应控制:控制器必须适应参数变化或初始不确定的控制系统
- 鲁棒控制:一种明确的处理不确定性的控制器
- 纵向控制主要通过控制汽车的刹车/油门来实现对汽车速度的控制。它主要由一个级联控制器和一个标定表构成。
- 级联控制器由位置PID闭环控制器和速度PID闭环控制器构成;
- 标定表是指速度-加速度-刹车/油门命令标定表。
- 位置PID闭环控制器
(1)输入:期望位置+当前实际位置
(2)输出:速度补偿量 - 速度PID闭环控制器
(1)输入:速度补偿+当前位置速度偏差
(2)输出:加速度补偿量 - 速度-加速度-刹车/油门命令标定表
(1)输入:加速度补偿+规划加速度,车速
(2)输出:油门/刹车控制量 - 标定流程大致如下:
(1)首先,搭建CarSim和Smulink模型,CarSim中让汽车在带速下走直线,同时给出一定的刹车值,使车辆模型伴随一定的刹车值(0~1)进行带速行驶,判断哪些刹车值状态下,车辆可以进行加速运动;然后让车加速到带速状态下最大速度,给刹车值,测试多大刹车值下可使车辆在最高速情况下停止;
(2)确定标定序列后(采样间隔自定,因为后期是后标定表时候需要插值计算,间隔越小相对来说插值越准确),按照一定间隔(我设置的采样周期为20s,加速12s,减速8s)在Simulink中采集CarSim传输过来的数据(主要为时间、速度、加速度)并按照Apollo采集数据的格式存入.csv文件中;
(3)然后调用python文件进行数据处理与转换,需要针对自己的数据对部分python文件进行更改。 - 横向控制主要通过调节方向盘转角来实现对航向的控制。它主要由一个前馈控制器和反馈控制器组成。横向控制器的核心是车辆动力学模型与LQR模型。
(1)输入为:定位信息(localization)、自车底盘信息(chassis)、规划信息(planning_published_trajectory)
(2)输出为:方向盘控制量(cmd) - 闭环控制主要结合车辆动力学模型得出状态矩阵,然后利用LQR模型获取K矩阵,进而计算最优控制解steer_angle_feedback,
- Apollo中Control模块计算完cmd后按周期发送给canbus模块,再由canbus模块发送给CANBUS,并定期从canbus模块接收相关信息。Apollo can信号采用DBC格式