◆第十五話 仮想空間プログラム

文字数 2,499文字

 森の城にある離れの工房で、レオナルドはモニターに向かい、プログラムの開発をおこなっている。参考にしたのは、現在多くの企業が開発している自動運転車のシステムだ。
 人間の代わりに機械が運転する自動運転車は、人間の目の代わりになる各種のセンサーを備えている。カメラ、レーダー、超音波ソナー、それらから得た情報を元に、周囲の状況を把握して瞬時に判断をくだす。
 レオナルドが開発しなければならない空間把握システムも、同じようにセンサーの情報を用いる。しかし、自動運転車とは異なる点もある。人間が操作するので、プログラム自身による判断は必要としない。また、洞窟内部は平坦でないために、上部や下部も含めた立体的な空間把握が求められる。
 利用する主なセンサーは、レーダーや超音波ソナーだ。レーダーは、ラジオ・ディテクティング・アンド・レンジング――電波による探知と測距、ソナーは、サウンド・ナビゲーション・アンド・レンジング――音波による航行と測距の略である。超音波ソナーは、音波の中でも、特に波長の短い超音波を利用する。
 電波、音波という違いはあるが、波をぶつけて、反射した波が戻るまでの時間で、距離を測る仕組みは同じだ。レーダーと超音波ソナーという複数のセンサーを搭載しているのは、有効距離や対象物の材質といった、得意、不得意があるためだ。
 レーダーや超音波ソナーを使い、自身から障害物までの距離が分かれば、前方の様子を確かめられる。しかし、障害物があると判明しても、正確な形を知るのは容易ではない。レーダーや超音波ソナーで得られるのは、音の発生場所から、反射した音を受けるセンサーまでの往復距離だけである。センサーの向きを細かく変えて立体空間を認識する。複数のセンサーを利用する。そうした工夫が必要になる。
 レオナルドは、画面に表示された情報を見た。多数のウィンドウが開いており、それぞれが、バギーラのセンサーに対応している。レンダリング実行ボタンを押して数秒待つ。非常に大雑把だが、周囲の三次元空間が、白黒の画像として出来上がった。
 次にレオナルドは、特徴点検出ボタンをクリックする。仮想空間上の凸部全てに、赤いマーカーを表示する。続いて時間合成ボタンを選んだ。五十ミリ秒前、百ミリ秒前、百五十ミリ秒前と、過去のデータを次々と呼び出して、特徴点を結びつけていく。
 補正ボタンに移る。特徴点は、時間が変化しても、空間上の同じ位置にあると仮定する。空間は伸縮しないので、距離や位置関係は変わらないはずだ。しかし実際に計算したデータは一致しない。その違いを誤差として補正する。先ほどまでぼやけていた画像が鮮明になった。計測時間が長いほど、コンピュータ上に構築する三次元空間は精密になる。しかし、精度を追求すれば計算量が増える。
 現場ではリアルタイムの表示が要求される。映画を見ている程度の速度で画面を更新するには、秒間二十四コマの速さが必要だ。これは一回辺りのレンダリング時間を四十ミリ秒程度まで縮めなければならないことを意味する。半分の十二コマとしても、八十ミリ秒以内に計算を収めなければならない。
 さて、今の計算方法で十秒以上かかるのをどうするか。レオナルドはこの問題を、アルゴリズムの改良と、並列演算で解決しようと考える。
 それとは別に、もう一つ問題を抱えている。データの転送方法だ。センサーは複数ある。無圧縮の情報を送ると、通信は遅延しかねない。送信するデータを圧縮したり減らしたりする必要がある。
 データ削減のアプローチは二つある。時間解像度を減らすか、不要なデータを切り捨てるかだ。適切なデータに加工するには、バギーラ上での処理が発生する。
 ギレルモに相談した結果、計算能力を上げてくれた。その能力内で動作するプログラムを作り、バギーラに送り込む。データ圧縮に関しては、圧縮時間と圧縮率を計りながら最適なアルゴリズムをいくつか検討する。受信後のデータ展開は、マシンパワーを上げればよいので気にしないことにする。
 通信が途絶した場合のバギーラの自動操縦プログラムも作成した。マシン構成と実行速度を確認しながら、アルゴリズムをチューニングして、現実的な速度に落とし込む。デバッグ、実機での確認、最適化。その作業を繰り返して、プログラムを練り込んでいく。
 横の席ではアルベルトが現地で集めたデータを解析して、洞窟のモデルの精度向上に努めている。ダイナマイトを起振源にした屈折法地震探査や、電極棒を設置しての比抵抗二次元探査。ボーリングした地下構造の記録など、各種データを統合していくことで、地下の空間を可能な限り詳しく調べていく。
 データから立体空間を求める方法は、レオナルドの仕事と本質的には同じだ。しかし、リアルタイム性を要求しないことと、地面の中を扱っていることが大きく違う。
 レオナルドとアルベルトの作業と平行して、ギレルモがバギーラの改良を続けた。軽量で大容量のバッテリーを入手して、フレームを工夫して耐久性を減らさないようにしながら軽量化を図る。電気系統の絶縁と、熱の排出も大切だ。様々な問題解決を、工房で特注の部品を作りながら進めていく。

 瞬く間に一週間が過ぎ、プログラムのベータ版ができた。暗闇とガスの中で、バギーラをリアルタイムに操作することが可能になる。そこから三日かけて、時折発生する遅延の原因を調べて解決した。
 作成したプログラムのテストが始まる。洞窟内を模したコースを走らせる。長時間稼働や負荷状況下での動きを確かめた。ギレルモは、用意した項目を一つずつ埋めていく。問題なく全てをクリアした。
 プログラムが完成した日、いつもはむすっとしているギレルモが珍しく上機嫌だった。ギレルモはワインを持ってきて、カルロスとアルベルトとレオナルドのグラスに注ぐ。四人でグラスを掲げて乾杯した。一気に飲み干し、各々が喜びの声を上げる。ワインが二本、三本と消費されていく。バギーラ・プロジェクトの準備は終わった。あとは実地での探査を待つばかりとなった。
ワンクリックで応援できます。
(ログインが必要です)

登場人物紹介

登場人物はありません

ビューワー設定

文字サイズ
  • 特大
背景色
  • 生成り
  • 水色
フォント
  • 明朝
  • ゴシック
組み方向
  • 横組み
  • 縦組み