[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发

这次的实验是基于"Temperature-induced aggregation of young honeybees:
Individual behaviour vs. collective behaviour"(Nov. 2007 to June 2011,http://zool33.uni-graz.at/artlife/bee) 中提到的蜜蜂幼体在蜂巢中自发的随热源迁移的行为行进集群机器人模拟。[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发_第1张图片
[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发_第2张图片
[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发_第3张图片
根据上述关于蜜蜂幼体研究,蜜蜂幼体行大致可以分为Random Walker, Wall Follower, Goal Finder和Immobile Bee四种。这次的集群机器人模拟实验主要针对Goal Finder随光源迁移的行为进行模拟。为了简化模拟,Goal Finded的行为可以简化为障碍物规避行为和热源寻找行为。为此,集群机器人搭载了两种类的传感器,障碍物检测传感器和光强度传感器。当机器人检测到障碍物时(其他机器人,墙体)停止移动随机一段时间后进行规避行为(可自定义),停止时间随机器人集群密度增加而增加。当机器人检测到一定强度以上的光时,停止移动一段时间后继续移动。停止时间随光强度增强而增加。因此,在强光区域,机器人逗留时间变长,机器人集群密度变大,进一步延长停留时间,从而达到迁移的目的。
借此契机本小组决定开发一个基于pygame集群机器人模拟器。本次实验仅实现最基础的行动机器人,可配置光源的长方形场地以及障碍物检测传感器和光强度传感器。其余类型的机器人,场地,传感器将于日后继续开发。
[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发_第4张图片
[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发_第5张图片
图中,黑色正方形边框为实验场地表示外围墙体,橘色由深至浅渐变圆环表示强度不同的两个动态光源。黄色的圆点表示机器人并标明了id。在机器人周边黄色和蓝色的圆环分别是障碍物检测传感器和光强度传感器的感应区域(机器人的面积范围不包括在内)。
当障碍物检测传感器在感应区域检查所有的像素的颜色,当检测出不同于光源颜
色(见下表)的像素时,机器人执行规避运动。

    def get_at(self, (x, y)): 
    	# real signature unknown; restored from __doc__
        """
        get_at((x, y)) -> Color
        get the color value at a single pixel
        """
        pass
Color RGBA Weight/Light intensity
BLUE_0 (85,85,255,255) 15
RED_1 (255,130,70,255) 10
RED_2 (255,170,130,255) 5
RED_3 (255,220,210,255) 1
WHITE (255,255,255,255) 0
YELLOW (255,255,0,255) 0

当光强度传感器在感应区域检测到上表中的颜色时,按照 (各颜色像素点数量*光强度权重)/感应区域像素点总数 计算机器人周围的光强度,并将此光强度数值直接用作机器人停止概率。光强度数值越大,机器人停止概率越大,从而延长停留时间。
位于实验场地两侧动态光源随时间变化。实验初始,左侧光源最大并逐渐减弱,右侧光源最小并逐渐增强。当右侧光源达到最大时开始减弱,左侧光源开始增强,如此往复。下图分别是机器人聚集在左侧和右侧光源时的截图。
[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发_第6张图片
[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发_第7张图片
在实验进行时,可以按k移除一半的机器人观测机器人集群密度减小时的机器人行为。

RobotKiller

下图为实验中对左边半场机器人集群密度的计数。
[Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发_第8张图片

你可能感兴趣的:([Python][集群机器人模拟]基于pygame的集群机器人随光源迁移模拟器开发)