机器人避障和跳过访问过的补丁/地方

时间:2014-05-29 06:52:44

标签: netlogo

我是NetLogo编程的新手,我需要帮助。我正在做研究项目,在这个项目中,我创建了一个像道路和建筑物一样的现实世界。建筑物为黑色,道路为白色。机器人只能在白色斑块上行走,即在道路上行走。我遇到了避障算法的问题而没有访问访问过的地方。我需要人类喜欢基于行为的算法来避障,即人类在他们面前看到障碍物,然后他们向后移动(或向后退一步然后向右或向左移动以再次检查障碍物)或者在右边看到然后转向左,反之亦然。现在我的代码我使用随机360旋转避免障碍但我不需要我需要基于行为的算法。 这是我到目前为止所做的代码。

breed [robots robot] ;robot breed
robots-own [goal velocity]

globals[   ;set of global variables
        road-colour
        building-colour
 ]
to setup
 clear-all
 set road-colour white
 set building-colour black
 let block-area grid-x ; desired area for a grid block in km²
 let patch-area  grid-y ; area represented by a patch in km²
 let num-patches-in-block (block-area / patch-area)
 let side round sqrt num-patches-in-block
 let goals (patch-set patch -16 12 patch 12 12 patch -6 15 patch 9 12)
 ask patches [ set pcolor 10 ] 
 let roads patches with [
   (pxcor mod (side + 1) = 0 ) or
   (pycor mod (side + 1) = 0 )
 ]
 ask roads [ set pcolor white ]
 create-robots num [ set size 1
   set goal one-of goals
   set velocity speed 
  ]
 set-default-shape turtles "person"  


end

to move
  fd velocity
  if patch-here = goal [ die ]
end

to go
  ifelse [pcolor] of patch-ahead 1 = road-colour
  [ move ]  
  [ lt random-float 360 ]
  ;[avoid-obstacle]

 end

to avoid-obstacle
 ;code here
end

1 个答案:

答案 0 :(得分:1)

你的问题有点模糊,但你可能想读一些" classic"算法(来自Sun和Lumelsky)被称为" Bug"用于碰撞检测和避免的算法。 Bug算法对地形/路线的知识做了很少的假设,即使对于没有任何视觉的机器人也是如此。除了检测碰撞的能力。概述可以阅读各种错误算法的PDF here