无人驾驶车辆控制(四):Matlab+ROS快速开发控制算法

声明:此篇文章内容参考B站UP主:-DandD-

目录

一、汽车电子V流程开发

二、纯软件仿真

三、RCP仿真

四、自动生成代码

五、HIL仿真

六、系统测试


一、汽车电子V流程开发

现代控制器开发采用“V字开发流程”,利用Matlab/Simulink开发ROS C++控制算法程序参考该方法

无人驾驶车辆控制(四):Matlab+ROS快速开发控制算法_第1张图片

      本次课程以ROS系统自带的小海龟为控制对象,完成路径跟踪控制算法的开发。如果换成其他的仿真模型或者实际的机器人,完成其他功能的算法开发,流程也是类似的。

     通过一个轨迹跟踪控制算法的开发实例,展示MATLAB与ROS联合快速开发控制算法的流程(V字开发流程):理论推导与纯软件仿真(MATLAB/Simulink);RCP仿真(Simulink控制ROS);自动生成代码;HIL仿真(ROS控制Simulink);系统测试(ROS)。

      要想设计一个控制器,首先要对它的功能需求进行分析,对应的就是系统测试/标定。在功能需求分析时就可以进行理论推导,利用simulink进行纯软件仿真和仿真验证。

      接下来就是利用RCP快速控制原型的半输入仿真。虚拟的控制器控制实际控制对象。如果效果通过的话,就可以对虚拟控制器自动生成代码,生成一个报告和一个代码包,代码包就可以在ROS环境下进行编译运行。

      接下来是HIL,硬件在环仿真。就是实际的控制器控制虚拟的控制对象。RCP和HIL两种版输入仿真可以交叉验证。验证虚拟的控制器和虚拟的控制对象的有效性。

      最后形成系统。实际的控制器和实际的控制对象,如果发现有什么问题可以返回到功能需求中进行迭代设计。这样就形成一个闭环,对系统迭代升级,即使发现问题,优化控制系统。

无人驾驶车辆控制(四):Matlab+ROS快速开发控制算法_第2张图片

       由于前期是simulink图形化编程,和流程图十分类似,就可以在设计初期避免大量的代码编写工作。同时,可以利用原有的Matlab/Simulink文件,照搬控制器开发流程,实现C++程序开发。本来在Windows系统下利用Matlab/Simulink进行控制器开发的同学可以照搬到ROS C++环境下。由于是自动生成C++代码工具,减少代码量,同时可以充分利用Windows系统下各种仿真工具,如无人车中的Carsim进行动力学仿真。在传统的控制框架下,利用上层规划得到前馈量,然后机器人会有反馈量,利用前馈反馈的控制结构得到的控制量输入到机器人模型中,会发现和我们之前搭建的纯软件仿真结构非常相似。在后续的开发中,只需要将控制量输入和反馈量输入接口设计好就可以完成代码快速开发。将控制量改成Publish,Subscribe机器人返回接口,将工作重点放在控制算法开发上。

二、纯软件仿真

根据V字开发流程,我们应该一次搭建出控制对象模型,控制系统模型,以及期望轨迹模型,形成控制闭环。

首先期望轨迹。输入纵向速度Vx和横摆角速度Wz,得到一条期望轨迹。

轨迹跟踪方法采用无人车控制理论中比较常用的控制方法,纯跟踪算法。理论推导:本次小海龟路径跟踪算法采用纯跟踪算法(Pure Pursuit),推导过程见无人驾驶车辆控制(三):纯跟踪算法(Pure Pursuit)这里直接写出结论:对于两轮汽车,也就是自行车模型

要跟踪轨迹,需要控制前轮转角

无人驾驶车辆控制(四):Matlab+ROS快速开发控制算法_第3张图片

小乌龟作为被控对象,本身具有物理模型(运动学模型Kinematic model)

无人驾驶车辆控制(四):Matlab+ROS快速开发控制算法_第4张图片

据此搭建simulink模型:

无人驾驶车辆控制(四):Matlab+ROS快速开发控制算法_第5张图片

接下来搭建控制器模型,用到的是纯跟踪算法。基于上述推导搭建算法模型

无人驾驶车辆控制(四):Matlab+ROS快速开发控制算法_第6张图片

接下来看半输入仿真RCP

三、RCP仿真

四、自动生成代码

五、HIL仿真

六、系统测试

 

你可能感兴趣的:(无人驾驶车辆控制,ubuntu,matlab,算法,控制器)