个人总结

Reynolds是为了用计算机模拟一群鸟飞行的动画,而提出的算法。本文最大的贡献是分布式flock的三个准则。

Our Foreflocks

本文提出的一种力场控制的flock。力场是由3*3的矩阵定义的,是一种分布式的。The “animator” defines the space fields and sets the initial positions, orientations, and velocities of objects. The rest of the simulation is automatic.

Particle Systems

particle systems 被用来模拟:火、烟、云、泡沫、海浪等。particle systems是由大量的particle组成的,每个particle可以控制自己的状态。

使用有形状的subobject与“点”的最大不同是它们可以旋转。

本文描述的boid模型是一阶或者二阶复杂度的,而且跟周围的环境有很多相互作用。

Geometric Flight | Backing

a certain type of motion along a path: a dynamic, incremental, rigid geometrical transformation of an object, moving along and tangent to a 3D curve.

是一种刚性的运动。包含最大速度、最小速度(通常是0)、最大加速度。

Geometric Flight包含平移、俯仰、偏航。Backing指的是倾斜。

Natural Flocks, Herds, and Schools

Natural Flocks是两种相反作用的平衡:a desire to stay close to the flock and a desire to avoid collisions within the flock。

avoid collision是很明显的,那么为什么鸟群要seek out the airborne equivalent of a nasty traffic jam?答案有:躲避天敌、寻找食物、利于社交和配偶。

自然界中的鸟群从来不会“满”或者超载。当它们迁徙的时候,经常会有数百万的鸟组成的鸟群,绵延17英里。

一只鸟可能会感知三类状态:它自己、周围的两三只鸟、其余的flock。

在计算机仿真中,我们经常会遇到一个数量的上界,因为随着数量的增加,计算复杂度会快速增长。但是这在自然界中是不存在的。

Flock 仿真

三个法则

  1. Colliosion Avoidance: avoid collisions with nearby flockmates
  2. Velocity Matching: attempt to match velocity with nearby flockmates
  3. Flock Centering: attempt to stay close to nearby flockmates

Static collision avoidance and dynamic velocity matching are complementary. 它们两个的共同作用,可以上flock在拥挤的天空中fly。Static collision avoidance 是基于相对位置的,与速度无关。相反,velocity matching是基于速度的,与位置无关。同时,velocity matching is a predictive version of collision avoidance。因为如果大家速度是一样的,就不会碰撞。

Certer of flock acually means the center of the nearby flockmates。

Flock centering 允许flock分叉,以躲避障碍物。

在浑浊的水中的鱼的视觉范围是有限的,但是空中的鸟,尤其是没有在flock中的鸟,有非常宽阔的视野。开阔的视野有利于分散的flocks join together。Long-range vision seems to play a part in the incredibly rapid propagation of a “maneuver wave” through a flock of birds.

Arbitrating Independent Behaviors

三个法则各自都会产生一个期望加速度,所以需要将他们结合在一起。最简单的方法就是对这几个加速度求平均值(加权平均)。

求加权矩阵是非常危险的,如果两个期望加速度正好相反,那么结果可能是相互抵消的。举个例子:在网格状的城市道路上,向东和向北都是可以的,两个共同作用,向东北运动,就会造成严重的后果。

一个简单的做法是定义优先级和顺序。而且不同的情况下,优先级是会变化的。在紧急情况下,加速度会优先分配给优先级最高的需求,如果所有的加速度都分配完了,那么低优先级的加速度需求可能就无法满足了。

Simulated Perception

感知模型其实是对信息的一个过滤。

给每个boid完美的、完整的、全局的信息,是不现实的,而且是错误的。有意思的是:本文的结果表示,flocking的组成是在有限的、局部的信息基础之上的。

在当前的应用中,每个无人机感知以其为圆心的一个球形区域,有两个参数:半径和敏感度。而且在前向的区域,敏感度要增大。而且应该随速度的变化而变化。

早期的仿真中,使用与距离相关的吸引力和排斥力,形成一个类似卡通的性格,但这是不真实的。后来使用的是与距离平方的倒数,

Impromptu Flocking

小的flock可以加入,而变成大的flock。在遇到外部障碍物的时候,大的flock也可以分裂成一些小的flock。

每次仿真的初始状态都是随机的,

Scripted Flocking

可以定义一个全局的位置和速度,将这个参数传播给flock。当然也不用同时传输给所有的无人机,可以有一个delay。我们可以控制这个全局变量来引导flock的走向。

Avoiding Environmental Obstacles

障碍物有两个shape,一个是为了表现,一个是为了避障。避障算法有两种:force field 和 steer-to-avoid。

Force field模型比较简单,当boids靠近障碍物的时候,会受到一个相反的力,但是也有缺点。(1)当boids速度与排斥力垂直的时候,boids就不会转向。(2)force field会产生一个“peripheral vision”的问题,当boids飞向墙的时候,当然应该考虑,但是当boids与墙平行飞的时候,就可以不用考虑了。(3)在离墙很近的时候,force field很强,离得远的时候,force field很弱。但是应该是在很远的时候,就应该对将要发生的碰撞做预测,并且提前规划。

future work

本文描述的模型没有自己的动作,比如拍翅膀和转头等。这些都涉及到时间同步的问题。

更有趣的是,也可以添加“mental”状态,比如真正的鸟的避障不止简单的防止碰撞,而且也不止简单的趋向中心。而且,真实的鸟会感觉到饥饿,会寻找食物,会躲避天敌,而且有周期性的睡眠。

结果图

论文笔记-Flocks, Herds, and Schools: A Distributed Behavioral Model
论文笔记-Flocks, Herds, and Schools: A Distributed Behavioral Model

相关文章: