hakoniwa-drone-environment

>100 Views

September 16, 25

スライド概要

## 📘 概要

本資料は、**箱庭ドローンシミュレータにおける環境シミュレーション拡張**について解説したチュートリアルです。
従来の温度・気圧・風・境界などの環境要素に加え、**電波強度(Signal Strength)** を新たにモデル化する方法を整理しました。

環境シミュレータとドローンシミュレータの **PDU(Protocol Data Unit)通信を介した相互作用** を中心に、

* 基本構成
* 環境データの伝搬仕組み
* Disturbance PDU の構造
* 処理フロー(環境側/ドローン側)
* 電波強度拡張の具体例(dBm, GPS SNR/DOP)

を段階的に解説しています。

---

## 🎯 想定する読者

* 箱庭ドローンシミュレータを使った研究・開発を始めたい方
* 環境シミュレーションを拡張し、独自要素(電波・降雨・霧など)を追加したい方
* PDU通信を理解し、実装へつなげたい技術者・研究者

---

## 🔧 この資料で得られること

* 箱庭ドローン環境シミュレータの基本構造を理解できる
* 環境データが PDU を通じてドローンシミュレータに渡る仕組みを把握できる
* 電波強度を例に、環境シミュレーションを拡張する設計手法を学べる

---

## 🔗 関連リンク

* [箱庭ドローンシミュレータ (GitHub)](https://github.com/toppers/hakoniwa-drone-core)
* [環境シミュレータ ドキュメント](https://github.com/toppers/hakoniwa-drone-core/blob/main/docs/environment/README-ja.md)
* [PDU 解説資料](https://www.docswell.com/s/kanetugu2015/ZQ8VN7-hakoniwa-pdu)

profile-image

TOPPERS/箱庭WG活動でUnityやらAthrillやらmROSやら触ってます。 最近は仕事の関係でWeb系の技術に注力しつつ、箱庭への転用を模索しています。 2023年8月1日:合同会社箱庭ラボに移動しました

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

箱庭ドローン・デモシリーズ 外部環境シミュレーション編 合同会社箱庭ラボ CTO 森崇

2.

アジェンダ • 環境シミュレーションの基本構成 • 環境情報のデータ構造 • 環境とドローンの相互シミュレーションの構成要素 • 環境データのデータ伝搬の仕組み(箱庭PDU) • Disturbance PDUとは • 環境シミュレーション処理フロー • ドローンシミュレーション処理フロー • 環境とドローンの相互シミュレーションのシステム構成 • 環境データの拡張方法 • 電波強度とその影響 • シミュレーション改造内容 2

3.

環境シミュレーションの基本構成 • 箱庭で定義できる環境データと設定イメージ (2025/9/16時点) 1. 風、温度、気圧 2. バウンダリ(境界) 3D空間を下図のようにブロックで区切り、それぞれ 空間IDを定義します。 風、温度、気圧は、各空間のプロパティとして定義します。 シミュレーション空間内の物理的な境界 (地面、天井など)を定義できます。 天井 空間 ID=1 空間 ID=9 空間プロパティ (風、温度、気圧) 壁 床 3

4.

環境情報のデータ構造 • 環境情報は、json形式で定義します。座標系はROS座標系です。 空間情報 (area.json) space_areas 1..* ・area_id: string 空間の識別ID 空間プロパティ情報 (area_property.json) area_properties 境界情報(矩形) (boundary.json) 0..* ・area_id: string 空間の識別ID(参照) 0..* ・name: string 境界の名前 ・position: (x, y, z) ・bounds: AABB AABB(最小点、最大点) による空間の範囲 properties 1 ・wind_velocity: (x, y, z) 風の速度(m/s)をfloatで定義 ・temperature:float 温度を°Cで定義 ・sea_level_atm:float 境界の中心位置を(m)を floatで定義 ・size: (x, y) 2Dとしての境界の 広さ(m)をfloatで定義 ・rotation: (roll, pitch, yaw) 境界の片無をdegで定義 海面気圧をatmで定義 4

5.

補足:AABBとは? AABB(axis-aligned bounding box) AABBはゲームエンジンやシミュレーションで最も使われる衝突判定の基本方式 ・軸に平行な最小点と最大点でボックスを定義する ・3次元でも「(min_x, min_y, min_z)」と「(max_x, max_y, max_z)」の2点で表現可能 ・点(ドローン位置など)がAABBに含まれるかどうかは、座標が min ≤ x ≤ max の範囲にあるか判定すれば良い ・ボックス間の重なり判定も、AABBの最小点・最大点を比較するだけでできる 最大 y 入ってる ボックスAとボックスBの重なり判定: •A.max_x >= B.min_x かつ A.min_x <= B.max_x •A.max_y >= B.min_y かつ A.min_y <= B.max_y •A.max_z >= B.min_z かつ A.min_z <= B.max_z この3つがすべて成立 → 重なりあり 入っていない 最小 x 5

6.

環境データのデータ伝搬の仕組み(箱庭PDU) • 環境データだけあっても、シミュレーションとして成立しません。 • なぜか、データは入力であって、出力(ドローンの位置・姿勢)変換が必要 • だから、その入力データを箱庭ドローンに伝搬する仕組みが必要になる • それが、箱庭PDUなのだ! Drone’s Disturbance (環境データ) ドローンシミュレーション 環境シミュレーション Drone’s Pose/Orientation (ドローンの位置・姿勢) 箱庭PDU 6

7.

Disturbance PDUとは • 箱庭PDUデータであり、環境データを伝播する役割をになっています。 • Disturbance は複数のサブメッセージで構成されます。 • Disturbanceのメッセージ構造: • hako_msgs/DisturbanceTemperature d_temp • value: (float64) 気温 (℃) • hako_msgs/DisturbanceWind d_wind • value: (Vector3) 風速ベクトル [x, y, z] (m/s) • hako_msgs/DisturbanceAtm d_atm • sea_level_atm: (float64) 海面気圧 (atm) • hako_msgs/DisturbanceBoundary d_boundary • boundary_point: (Point) ドローンに最も近い境界上の点 • boundary_normal: (Vector3) その点の法線ベクトル 7

8.

環境シミュレーション処理フロー ドローンの位置を リアルタイム監視 空間情報と付き合わ せする 空間プロパティ を取得する 当該ドローンへ 環境情報を通知 Drone’s Pose/Orientation 空間 ID=1 空間 ID=9 Drone Simulation 空間プロパティ (風、温度、気圧) Drone’s Disturbance Environment Simulation 環境シミュレーションを箱庭アセットとして定義 (Python実装) 8

9.

ドローンシミュレーション処理フロー Drone’s Pose/Orientation センサー Environment Simulation ドローン制御 処理 温度 ドローン物理 処理 気圧 アクチュエータ Drone’s Disturbance 風 Drone Simulation 9

10.

環境とドローンの相互シミュレーションのシステム構成 • 環境シミュレータを箱庭アセットとして配置し、ドローンの位置情報を監視する。 • ドローンが環境情報の空間に入った場合、Disturbanceとして箱庭ドローンに干渉情報を通知する(箱庭PDUの仕組みを利用) • 箱庭ドローンは、干渉データセンサや物理系に入力し、ドローンの挙動に影響を与える • 結果として、ゲームエンジン側で、その動きをビジュアライズされる Hakoniwa Drone Simulation (Sensor/Physics) Drone’s Disturbance Game Engine (Unity/Unreal) Drone’s Pose/Orientation Hakoniwa PDU Hakoniwa Environment Simulation (Hakoniwa Asset/Python) 環境情報 (json) 10

11.

環境データの拡張方法 • 電波強度を例にして、環境データの拡張方法を紹介します。 • 電波強度の種類 • Wi-Fi / LTE / 5G / 専用無線リンクの通信品質に直結 • 単位は dBm(デシベルミリワット) • 通信機器が受信できる電波の強さを示す指標 • 値が大きいほど強い(例: -40dBmは強い、-90dBmは弱い) • GPS • 衛星数・信号強度 (SNR)・位置精度 (DOP値) GPS • 電波強度によって影響を受けるセンサ • 通信モジュール(Wi-Fi, LTE, 5G, 無線LAN) • FPVカメラの映像伝送装置(電波が弱いと映像が途切れる) • テレメトリリンク(飛行制御用の送信/受信データが欠落) • GPS受信機(干渉や遮蔽で位置精度が低下) • ドローンが受ける影響 テレメトリ FPVカメラ • 通信途絶や遅延による 操縦不能リスク • リアルタイム映像が途切れ、操縦者の視認性低下 • 安全性低下に伴う フェールセーフ動作(リターンホーム、ホバリング) • GPS信号ロストによる 航法精度の低下 11

12.

シミュレーション改造内容 • 改造の全体像 電波強度によるセンサ/物理挙動の再現 電波強度のビジュアライズ 電波強度として ・dBm ・DOP値 を追加 電波強度を通知 電波強度として ・dBm ・DOP値 を追加 12

13.

Disturbance PDUの改造例 • Disturbanceに、DisturbanceSignalStrengthを追加 • hako_msgs/DisturbanceTemperature d_temp • hako_msgs/DisturbanceWind d_wind • hako_msgs/DisturbanceAtm d_atm • hako_msgs/DisturbanceBoundary d_boundary • hako_msgs/DisturbanceSignalStrength d_signal • dbm_value: 通信系(Wi-Fi / LTE / 5G / テレメトリ / FPV)用の信号強度。単位は dBm(float)。 • snr_value: GPS 系の信号品質(SNR の平均)。float で表現。 • dop_value: GPS 系の信号品質(DOP値)。 float で表現。 箱庭PDUデータの拡張方法詳細は、こちらを参照ください。 →hakoniwa-pdu 13

14.

環境シミュレーション処理フロー ドローンの位置を リアルタイム監視 Drone’s Pose/Orientation 空間 ID=1 空間情報と付き合わ せする 空間 ID=9 空間プロパティ を取得する Drone Simulation 空間プロパティ (風、温度、気圧) 電波強度を通知 当該ドローンへ 環境情報を通知 Environment Simulation 環境シミュレーションを箱庭アセットとして定義 (Python実装) Drone’s Disturbance 電波強度を通知 14

15.

ドローンシミュレーション処理の改造例 電波強度に応じて、 GPSノイズを付与 Drone’s Pose/Orientation センサー Environment Simulation ドローン制御 処理 電波 強度 温度 ドローン物理 処理 気圧 アクチュエータ Drone’s Disturbance 風 Drone Simulation 15