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