1月に早朝ジョギングをしているときにたまたま遭遇した鳩レースの練習風景。 約800羽のレース用の鳩がここ横浜から静岡の方まで約1時間半かけて戻るらしい。ちょうどアリコロニーの最適化で人工生命に興味を持ち始めたところだったので、鳩の群れの飛び方をボイドモデルで再現してみた。

Optical Flowによる鳩の軌跡

まず、撮像した動画からOptical Flowで鳩の群れの動きを可視化してみた。Optical flowは連続する画像で物体が移動した軌跡を描画する手法。上の動画は実際にiPhoneで撮像した動画。下の動画はOptical flowで動きを描画したもの。Optical flowは色々なサイトで紹介されているが、このサイトの記事で調整できる変数についての説明があり、それを元に条件を探索して、鳩の群れの動きをもっともらしく動画を描画してみた。カメラを固定していないので、画像に多少のブレから鳩に関係のない住居の部分も軌跡として捉えてしまっていてるが、何となく鳩の動きは可視化できたのではと思う。

鳩が何故このように円を描いて飛ぶかだが、個人的には以下のように考えている。鳩が帰舎するときに方角を決める必要があるが、磁気センサー、また太陽の位置(太陽コンパス)などを使って方角を決めているとされている。そのためにはある程度の高さまで上がる必要があるが、真上には飛べないので、このように円を描いて上に上がっているのでないかと思う。

ボイドモデル

人工生命(ALife)の中で、クレイグ・レイノルズという人が1986年に発表したボイドモデルというものがある。これは3つのルールから鳥の群れの動きを表現し、その後のCG技術を大きく発展させたものらしい。3つの動きは単純で、分離(他の鳥とぶつからないように距離を取ろうとする)、整列(他の鳥と飛ぶ方向を合わせる)、結合(周りの個体の中心点に向かうようにする)で構成される。この3つの動きから速度方向を決めて、シミュレーションしたものが以下になる。

ソースコードは作って動かすALife(オライリー・ジャパン)のものを流用させてもらい、実際の鳥の上昇の動きを表現するためにZ方向の速度を制限したのと、初期位置を変更したものである。

一応それらしい群れの動きはできている。全然関係ないが、鴨川の等間隔カップルもこれと同じ原理で、適度な分離(他のカップルに近づきすぎない)、整列(川に向かって同じ方向を向く)、結合(人が全くいかないところには行かず、ある程度人がいるところの中心点に場所を決める)から成り立っていると思っている。

鳩レース余談

鳩レースの人に色々と聞いてみたのだが、今回は横浜だったが、これから北上していってどんどん距離を伸ばしていくとのこと。今回見たような練習をする中で最も早く帰れる優秀な鳩を育てていくのだが、中には船にある餌につられて寄り道してしまい、そのまま船ごとカナダにに行ってしまう鳩もいたらしい。また、移送するときに、オスとメスを分けない場合、中で交尾をしてしまうらしく、移送するのにも気をつかうとのこと。レースで上位になるような血統書付きの鳩だと何百万円という値段がつくらしい。

鳩レースの裏情報については、こちらの記事で面白く紹介してくれている。