LabVIEW - A*仿真

本文介绍了使用LabVIEW实现A*算法的过程,包括LabVIEW的基本结构、数据类型转换,以及Astar on Occupancy Grid例程的改写。在LabVIEW中,通过FindPath With Astar模块进行路径搜索,并利用Get All Occupancy Grid Cell子VI处理地图数据。同时,文章还探讨了将数据传递到Matlab进行仿真的方法,以及在Matlab端如何处理路径和方向。最后,文中讨论了仿真的误差控制和状态管理策略。
摘要由CSDN通过智能技术生成

    算是了解一下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 - 可通行,

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值