🛠箱庭ラボ日記──2025年10月21日


こんばんは〜。あー、今日も日が暮れちゃいましたね。
だんだんと、日が落ちるのが早くなりました。

箱庭ドローンv3.4.0、今日のお題は?

昨日は、MuJoCoについて語りましたので、今日は何を話しましょうか。

ところで、
話変わりますが、実は、今日、箱庭のプログラムのバグを2件見つけました。

1つは、OSS側の箱庭PDUのPythonライブラリで、バイナリ変換周りで結構嫌なやつに出会いました。
ちょっとした思いつきだったんです。

「軽く、動作チェックでもしてみようか」

そう思い立ち、ほんとに軽い気持ちでやったんです。そしたら、….

なんか、おかしい
データ読めない?
設定ミス?
いや、あってる…。
あれ、もしかして…、
エンコーダーのバグ?しかも可変長配列のむずいやつ?
:
まじ?

「あー、みてしもた。」

朝イチで始めた、ほんのちょっとした気まぐれでした。
なのに、、、毎日楽しみにしている朝ごはんは、お通夜のようでした。

でも、ちゃんと直しました。ノートに絵を描いて、
この条件だから、ここにこのデータがあるはずなのに、
「あ、ここない。」
だから、ここ直すのね、はい、1時間かけました。

話が逸れました

今日は、箱庭環境シミュレーションのリリース前テストをやろうとしていたのです。
なので、この話をしようと思っていたのでした。

環境シミュレーションを真面目に考え始めたのは、先日のブログで少し取り上げてたやつです。
吉次さんと、

「いつか、箱庭ラボのブログで、粘菌と箱庭ドローンをテーマにした連載記事を書こう!」

って約束したのを、少しずつ、箱庭としてどうやったらよいか考えなから、
アイディアや技術を温めてきました。

マーケットインではなく、約束インですかね。

箱庭環境シミュレーション

これまで、箱庭の環境シミュレータは、箱庭アセットとして、
箱庭ドローンのリポジトリ内の1つのプログラムとして作ってきました。

でもねー、これじゃだめなんですよ。

「なぜか?」

環境シミュレーションは奥が深い。
平たくいうと、環境って、「自然環境」、「物理環境」、「電波・通信環境」なんかがありますよね。
さらに、それらの環境上でシミュレーションとしては、何を目指すべきなの?その目的は?
で、それを色々絵を描きながら、考えました(下図)。

でも、なんか足りない、これだと、ただやっただけになちゃう。

で、ようやく自分なり辿り着いたそのシミュレーションの目的、それは、

現実を再現するためではなく、現実におき得るリスクを考察・体感し、
もしのリスクを自由に設定して、頑健な設計と円滑な合意形成を目指すこと

でした。
(じっくり、1ヶ月くらい、ねかせながら、ぼやぼやと考えながら、ここに行きつきました)

つまり、これらのコンセプトは、単なる1プログラムに収まるはずがないんです。

だから、新しいリポジトリを作りました。

https://github.com/hakoniwalab/hakoniwa-envsim

環境シミュレーションのアーキテクチャ

最初に頭に浮かんだのは、「神戸港」でした。
あの広い港の上空を、箱庭ドローンが風に揺れながら荷物を運ぶ——
そんなシーンを、まず“想像”したんです。

きっと、そこには風の影響もあるし、電波が届きにくい場所もある。
GPSが乱れることだってあるでしょう。
でも、それを「実際に試す」には危険もコストも大きい。
だったら、箱庭の中で、現実に起こりうる“環境リスク”を自由に再現できる世界を作ればいい。

そう思って、地図データをベースに環境情報を埋め込もうとしました。
けれど、やってみるとすぐに限界に気づきました。
広大な神戸港の地図に、風・温度・電波などの細かな情報を手で入れていくなんて——到底、無理。

そこで登場したのが、このアーキテクチャです。

環境データを 「作る」(Creator)、「見る」(Visualizer)、「探す」(FastSearcher)、
そしてそれを 「使う」(シミュレーション) という4つの要素に分けました。

  • Creator は、環境を“描くための道具”
  • Visualizer は、“見える化して考えるための道具”
  • FastSearcher は、“効率的に活用するための道具”
  • Simulation は、“それらをつなげて命を吹き込む存在”

こうして、「環境を再現する」ではなく、「環境を創造する」ための仕組みが生まれました。

こんなのです

こうして、「環境を再現する」ではなく、「環境を創造する」ための仕組みが生まれました。

そして、これが——
Creatorで作成して、Visualizerで可視化した「神戸港の環境マップ」です。

この図の赤い部分はGPS信号が弱くなるエリア。
港湾の構造物や高層ビルの陰影が、そのまま電波の“地形”として浮かび上がっています。
さらに、黄色の矢印は風の流れ。
まるで港全体が“息をしている”ような、そんな感覚を覚えました。

やってみた

論よりRUN!です

ArduPilotで飛行させ、Unreal上でその様子を可視化してみました。

港の上空を、三角軌道で1.5km飛行するテストを行ったのですが——
これが想像以上に“風の影響”を受けました。

テスト結果は次のとおりです。

風あり:走行時間:5分45秒
風なし:走行時間:4分23秒

たった数m/sの風でも、航路全体の飛行時間が1分以上も変わる。
これ、まさに「環境がミッション結果を左右する」ことを、数字が語ってくれた瞬間でした。

こういう差を“再現”できることが、箱庭環境シミュレーションの面白さだと思っています。
現実を模倣するのではなく、現実に起こりうるリスクを感じ取るための装置として。

2件目のバグ

ところで、
話変わりますが、今日見つけた2件目のこと…

そう、今日は朝イチでお通夜の気分から一転して、仕事をガリガリ済まして、
そう、ちょっとした思いつきだったんです。

「久しぶりに、Unreal EngineとPS4コントローラの組み合わせで箱庭ドローンを操縦してみよう」

夕暮れ時、気晴らしの出来心でした。

Unreal Engineは、PS4コントローラ認識させるの難しいのわかってたから、
箱庭PDU通信で、Windows側からPS4コントローラの操作値を送信する仕組みを昔作っていて、
久しぶりにそれを動かして、今日の仕事納めとするかと。

「そんな軽い気持ち、きっとみなさんにもありますよね?」

もうわかりますよね、はい、「エラー」です。動きませんでした。

「あー、みてしもた。」

あー、なんでー?

見てしまった以上は、やるしかない。(そういう性格なんです)

原因見つけるのに、1時間。直すのに1時間。ほんと、つらい。。

夕暮れどきに始めた、ほんのちょっとした気まぐれでした。
ささっと終わらせて、箱庭ブログでも書くかーって思っていたのに、、、

最後に

それでも、がんばってブログ書きました。えらい!

なんども、悪魔の囁きがありました。

「今日は、こんなにいろんなバグに遭遇して、こころ折れたから休みなよ〜」

「もう明日にもちこしなよ。きっと、誰も読まないよ、こんなブログ」

でも…、約束だから。書きました。

今日も、箱庭はちゃんと動いています。
(でも、また、明日とは言いません。きっと辛くなるから)

おしまい。


トップへ戻る