35.5 Simulink中的输出可视化
ALMS的输出可以使用一个专用的Simulink块进行可视化。通过点击任何实验的主编译表上的 "打开有用的块 "按钮可以找到这个块。
Simulink输出分析:
ALMS Simulink总线结构
ALMS传感器输出一条包含单个信息的总线。每条信息都描述了一组多项式组件,X、Y 和 Z 三个方向各一个。每条信息中的数据结构如下:
MESSAGE HEADER
Valid DATA
X
N0 N1 N2 N3 N4
Y
N0 N1 N2 N3 N4
Z
N0 N1 N2 N3 N4
Length GroupID
LineLabel
当配置了20个多项式的限制时,输出总线上将始终有20个消息槽。然而,它们可能不会全部被填满,这取决于传感器在给定仿真中实际拟合的多项式的数量。一个消息槽是否包含一个结果由HEADER.Valid参数表示。
N0 - N3 值以下列方式表示一个多项式的系数(在本例中为 X):
其中L是多项式有效的区间[0,length]中的一个参数。需要注意的是,只有当阶数足够高时,系数才会被填满。例如,3阶多项式相当于4个系数,会填满所有的系数,但1阶拟合只能填满N0和N1。在这种情况下,N2和N3将为零。
GroupID表示哪一组多项式代表一条线,在GroupID部分提到。LineLabel表示为每条车道线设置的Label值,如LineLabel一节所述。
使用Simulink块进行分析
ALMS Simulink输出基于嵌套总线结构。可以使用Simulink选择块提取输出值。下面是一个例子,说明如何提取X多项式的四个系数。它使用一个Simulink选择器块和一个总线选择器块来提取四个数据输出流,(在这个例子中)这些数据输出流被写入四个Workspace。
从ALMS输出块中提取数据
上面使用的选择器块在Simulink库浏览器的信号路由页面。选择器的输入端口大小参数必须设置为本ALMS的PreScan编辑器中设置的最大多项式数,见下文。
使用的第二个块是总线选择器,它也在Simulink库浏览器的信号路由页面上。总线选择器的设置直接遵循上面讨论的ALMS总线结构。
使用MATLAB函数进行分析
另一种分析ALMS输出的方便方法是使用MATLAB函数块(在旧版本中称为嵌入式Matlab函数)。下面是一段沿着每个多项式评估10个值的示例代码。这个方法的例子可以在ALMS高速公路例子中找到。
function fcn(u)
% Iterate through all data in bus
for i = 1 : size(u,1);
% The validparameter indicates that the data slot in the bus is actually filled in
if u(i).HEADER.valid == 1
% Extract polynomial coefficient vectors
% The reverse order is required forpolyval()
cx = u(i).DATA.X;
cy = u(i).DATA.Y;
Px = [cx.N3 cx.N2 cx.N1cx.N0];
Py = [cy.N3 cy.N2 cy.N1cy.N0];
% Extractpolynomial interval L1 = 0;
L2 = u(i).DATA.Length;
% Evaluate 10points along each polynomial value numOfPoints = 10;
L =linspace(L1,L2,numOfPoints);
x =polyval(Px,L);
y =polyval(Py,L);
end
end
原文标题 : PreScan快速入门到精通第三十五讲车道线识别传感器-ALMS车道线传感器