我在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发布于 2014-05-29 15:20:28
你的问题有点模糊,但你可能想要阅读一些关于碰撞检测和避免的“经典”算法(来自Sun和Lumelsky),称为"Bug“算法。Bug算法对地形/路线的知识做了很少的假设,即使对于除了检测碰撞的能力之外没有任何“视觉”的机器人也是如此。各种bug算法的概述可以在here上阅读。
https://stackoverflow.com/questions/23927463
复制相似问题