算是了解一下LabVIEW的基本的结构和类型。
虽然还是没看懂那个例程,刚开始接触的时候感觉一个框按进去又是一个框简直心理阴影……
一块是对例程(Astar on Occupancy Grid)的改写,这个例程是对已经栅格化的数据地图指定起始点和终止点,第二部分是基于这个的仿真。
l LabVIEW接口
在这一部分我们尝试对A*例程中的核心部分:FindPath With Astar重写。
LabVIEW中为了图形化编程的需要,数据类型比较复杂。而matlab脚本能接收的只有不多的类型(如图),所以这一块比较繁琐的部分是数据类型的转换。
1示例分析(Astar)
示例的第一部分为读取txt并传输对地图的引用。
估值函数有曼哈顿距离和欧拉距离两种选择。
初始地图中1代表可通行的路,100代表障碍。障碍的代价相对较大,但在这个例子中它并非不可穿越,只是在这种情况下我们可以相信如果存在可通行的路线,机器人会选择这条路线而不是障碍。而在实际地图仿真的情况下,如果地图过为繁琐,则可能出现无法正确寻路的情况。
对于搜索出路径上的值的处理方法是对于各个点减三。在实际显示的时候100对应黑,97对应红,1对应白,-2对应蓝。
2簇Cluster
LabView中的cluster数据类型能集合不同的基础数据类型。在这次的实验中最关键的传入参数map reference,是对地图参数的一个引用。而地图的参数为。而OccupanyGrid是以为基本数据单元的簇的引用。
3引用Reference
引用是以地址的形式传递,在这种情况下能够减少赋值的时间。
(以某次调试为例:传递的值应该是类似于地址的概念)
在读取引用的时候用到的结构为。
4具体实现
一开始尝试用GetCell Reference来读取cost,形成一维数组,利用sizeX和sizeY在matlab中恢复原地图。然后实现的时候,发现例程的Get All Occupancy Grid Cell的subVI中,已经实现了这一功能。它的具体操作遍历所有的点,取出每个xy对应的cost。利用这样一个模块的传出参数cost array可以实现从LabVIEW到matlab地图信息的传递。
l Matlab代码
·传入参数:Start_node\end_node:起止点,格式为[x坐标,y坐标]
·Map_in: 二维数组,1 - 可通行,