基于DragonBoard 410c的家庭智能环保卫士——(4)A*路径搜索算法

      在路径规划blog中已经结合具体的室内环境对实现室内路径规划的基本思想进行了介绍,这里再介绍一种常用的路径搜索算法A*,对算法的一些基本原理和实现思路进行分析,后期将进一步将该算法运用到室内路径规划中,加入各种输入参数,为机器人提供路径查询和预测。

       A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。

      A*算法基本数学模型如下:

      f(n)=g(n)+h(n)

      其中g(n)是状态空间从初始化到状态n的实际代价

     h(n)是从状态n到目标状态的最佳路径的估计代价

     f(n)是从初始状态经由状态n到目标状态的代价估计

     我们以d(n)表达状态n到目标状态的距离,那么h(n)的选取大致有如下三种情况,这也是算法的基本思路:

     如果h(n)<= d(n)到目标状态的实际距离,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。

     如果h(n)=d(n),即距离估计h(n)等于最短距离,那么搜索将严格沿着最短路径进行, 此时的搜索效率是最高的。

     如果 h(n)>d(n),搜索的点数少,搜索范围小,效率高,但不能保证得到最优解。

     基于上述思路,采用python实现A*算法核心过程如下:

     while True:
            _block = raw_input('input block:')
            if not _block:
                break
            _block = _block.split(',')
            _block = (int(_block[0]), int(_block[1]))
            _2dmap[_block[0]][_block[1]] = 'X'
            block_node = Node(None, _block[0], _block[1])
            close_list[(block_node.x, block_node.y)] = block_node

     详细实现可以参考http://blog.csdn.net/nobugtodebug/article/details/43986597,后续设计将借鉴该实现代码,结合室内环境需求对其进行改进设计。后续blog将向大家详细介绍如何将A*算法应用到室内的路径规划中。

     同样关于算法的实际运行展示,大家可以访问http://netsmell.com/post/pathfinding.html,这里可以设置相关参数进行算法模拟展示,如下图所示。

     

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值