---
title: MasteringDroneSimulationWithHakoniwa
tags:  #hakoniwa  
author: [森崇](https://www.docswell.com/user/kanetugu2015)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/G7WDXQKPE2.jpg?width=480
description: 紹介動画：https://www.youtube.com/watch?v=Kb6i3Q7-L8E  概要： 飛行中にどこかにぶつかって機体を壊さないか？バッテリーがなくならないか？そんな心配をせずに、沢山ドローンを手軽に飛ばしたいですよね！シミュレーションの世界では、安全な箱の中で、試行錯誤をたくさん繰り返すことができます。  　今回のセミナーでは、オープンソースを使ったドローンシミュレータの作り方を徹底解説します！ドローンの飛行の仕組みから始めて、必要なソフトウェアや開発環境/ツール類などを一巡りします。フライトコントローラ向けのファームウェアとしては、PX4というオープンソースを使います。物理的な機体の動きの再現は、物理式をベースにイチからC言語でコーディングします。機体の動きのビジュアライズには、個人向けにフリーで利用できるUnityやUnreal Engineを使います。そして、これらの要素技術を組み合わせる仕組みには、箱庭というオープンソースを使います。  　箱庭は、さまざまな制御ソフトウェアやシミュレータを繋げるハブです。このようなシミュレーションハブでは、今回ご紹介するソフトウェアだけでなく、様々なソフトウェアとの連携を可能にします。可能性の広がりは無限大であり、箱庭ドローンシミュレータは、そういった構想で構築されたシミュレータなのです。誰でも手軽に、安全な箱の中でドローンの試作や実験を楽しめますので、これからドローンを使い始める方や、従来のやり方で困っている方々にとってお役に立てる情報が沢山あると思います。初心者から上級者の方まで楽しめる内容だと思いますので、ぜひご視聴ください！
published: April 14, 24
canonical: https://www.docswell.com/s/kanetugu2015/ZYW369-hakoniwa-drone
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/G7WDXQKPE2.jpg)

オープンソースで作る箱庭ドローン
シミュレーションの技術を徹底解説
合同会社箱庭ラボ
森崇


# Page. 2

![Page Image](https://bcdn.docswell.com/page/4JZG6WZ673.jpg)

アジェンダ
1. お話しする範囲
2. 箱庭ドローンシミュレータとは
3. ドローンの⾶⾏原理
4. ドローンの数学・物理・制御⼊⾨
5. ドローンの数値シミュレーション実現⽅法
6. オープンソース技術の紹介（QGC、 PX4）
7. ゲームエンジンの使い所
8. 箱庭ドローンシミュレータの構築
9. なぜ箱庭じゃなきゃダメなのか︖
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/YE6Y2GZLJV.jpg)

お話しする範囲
• オープンソースベースでのドローン技術のエコシステム
Open Source
HardWare
Pixhawk
Closed
Product
Software
User
Application
Firmware
PX4
Ground
Station
QGC
Simulation
SILS
DJI
HILS
Hakoniwa
AirSim
Gazebo
Drone
Control
Position/Speed
Attitude
ArduPilot
Mission
Planner
Game Engine
Unity
Unreal
Personal Use Free Software
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GE5G2VWME4.jpg)

箱庭ドローンシミュレータとは
• こちらで⼀般公開しています︕
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/972Y43QR7R.jpg)

箱庭ドローンシミュレータのアーキテクチャ
PX4 on SITL
4560/TCP
hakoniwa-px4sim
Drone
Physics/Sensor
(C/C++)
Drone Control
(C/C++)
Generate
MATLAB/Simulink
Plant/
Sensor
Model
Simulation
parameters
Hakoniwa
Scenario Test
18570/UDP
Python
scenario
Game Engine
Unity
Unreal Engine
QGroundControl
PS4 Controller
箱庭は様々なソフトウェアを繋げるハブです︕
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/DJYGM1W5JM.jpg)

箱庭ドローンシミュレータの歩き⽅
箱庭ドローンシミュレータの仕組みを理解するために必要な内容を説明します
①-1 ドローンの⾶⾏原理
①-2 シミュレーションでの実現⽅法
⑤-1 箱庭の仕組み
⑤-2 構築⽅法
②-1 PX4とは
②-2 SITLとは
③-1 QGCとは
③-2 ドローンの動かし⽅
④-1 ゲームエンジンの使い所
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/V7NGW294E8.jpg)

ドローンの⾶⾏原理
• ドローンの機体と⾶⾏原理
• ドローンの構造(クアッドコプタ)
• ドローンの並進運動
• ドローンの回転運動
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/YJ9WX124J3.jpg)

ドローンの構造(クアッドコプタ)
• クアッドコプタとは
• ロータ４個で機体の推⼒とトルクを発⽣させて⾶⾏する
• ロータとは
• プロペラを回転させるためのモーター
• ドローンの推⼒・トルクを発⽣させる
• ロータの特性として、回転⽅向と最⼤回転数などがある
• 今回の解説で使う機体
• 左右・前後を対象としています
• ロータ１と２が逆回転（CCW）
• ロータ３と４が正回転（CW)
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/GJ8N245VED.jpg)

ドローンの並進運動
• 垂直⽅向移動
• ４つのローターを同じ回転速度で回転させることで上昇⽅向の推⼒を発⽣させます
• 推⼒＞質量✖重⼒︓上昇
• 推⼒＝質量✖重⼒︓ホバリング
• 推⼒＜質量✖重⼒︓下降
•
推⼒はローターの回転速度の２乗に⽐例します
• ⽔平⽅向移動
• 左右⽅向
• 機体を左側に傾けると左⽅向へ移動します
• 機体を右側に傾けると右⽅向へ移動します
•
前後⽅向
• 機体を前側に傾けると前⽅向へ移動します
• 機体を後側に傾けると後⽅向へ移動します
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/LJLP26YRER.jpg)

移動の様⼦（デモ）
上昇
左⽅向移動
前⽅向移動
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/47M485NPEW.jpg)

ドローンの回転運動
• Roll/Pitch/Yawの⽤語
• Roll/Pitch⽅向の回転
• 左右・前後の推⼒の差がトルクになる
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/P7RW53DYE9.jpg)

ドローンの回転運動
• Yaw⽅向の回転
• ロータ回転⽅向と逆トルクが発⽣する
• 反トルクの差がYaw⽅向の回転トルクを⽣む
反トルク発⽣の様⼦︓
⾚⽮印の反トルクが⼤き
いので、その⽅向に機体
が回転する
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/PJXPK414EX.jpg)

回転の様⼦（デモ）
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/3JKD5Z2P7D.jpg)

アジェンダ
1. お話しする範囲
2. 箱庭ドローンシミュレータとは
3. ドローンの⾶⾏原理
4. ドローンの数学・物理・制御⼊⾨
5. ドローンの数値シミュレーション実現⽅法
6. オープンソース技術の紹介（QGC、 PX4）
7. ゲームエンジンの使い所
8. 箱庭ドローンシミュレータの構築
9. なぜ箱庭じゃなきゃダメなのか︖
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LE3RKD4475.jpg)

ドローンの数学・物理・制御⼊⾨
15
詳細はこちらを参照ください。
• https://speakerdeck.com/hiranabe/math-physics-and-dynamics-of-drone-in-hakoniwa


# Page. 16

![Page Image](https://bcdn.docswell.com/page/8EDY3PQ5EG.jpg)

ドローンの数値シミュレーション実現⽅法
• 微分⽅程式を数値シミュレーションする⽅法
• オイラー法
• ルンゲクッタ法
• 機体パラメータの決め⽅(試⾏錯誤中・・)
• 本体
• 質量、機体サイズ、空気抵抗係数
•
ローター
• 最⼤回転数、ホバリング時の回転数、応答時間
• ローターの配置と回転⽅向、慣性モーメント、ホバリング時の回転数
• 反トルクのパラメータBとJr
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/V7P64NLDJ8.jpg)

微分⽅程式を数値シミュレーションする⽅法
•
微分⽅程式（例）
•
•
!&quot;
!#
=−
$
(cos 𝜑 sin 𝜃 cos 𝜓
%
+ sin 𝜓 sin 𝜑) −
!
𝑥
%
= 𝐹 𝑡, 𝑥(𝑡)
オイラー法
• 時間微分を以下のように展開
•
! &quot;#△&quot; %! &quot;
△&quot;
= 𝐹(𝑡, 𝑥(𝑡))
• 時間 𝑡 +△ 𝑡 の 𝑥 𝑡 +△ 𝑡
• 𝑥 𝑡 +△ 𝑡 =𝐹 𝑡, 𝑥 △ 𝑡 + 𝑥(𝑡)
•
△𝑡
シミュレーションでは、
𝑡
• 初期値𝑥(0) およびパラメータ決めて、
• 𝐹 𝑥 △𝑡
• を連続して⾜し上げていきます。
• （他の変数の値φやθ等も同様にして計算します）
𝑥(𝑡 +△ 𝑡)
𝑥(𝑡)
𝑡 +△ 𝑡
メリット
実装が簡単
デメリット
Δtを⼗分に⼩さくしないと、
誤差が⼤きくなる可能性があります。
（今回は、0.003secとしています）
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/2JV3XKQGEQ.jpg)

微分⽅程式を数値シミュレーションする⽅法
•
４次ルンゲ＝クッタ法
𝑘)
• 𝑘! = 𝐹(𝑡, 𝑥(𝑡))
∆$
• 𝑘&quot; = 𝐹(𝑡 +
&quot;
∆$
• 𝑘% = 𝐹(𝑡 +
&quot;
,𝑥 𝑡 +
,𝑥 𝑡 +
∆$
&quot;
∆$
&quot;
𝑘! )
•
•
△$
=
!
+
𝑥 𝑡 + ∆𝑡𝑘#
𝑘&quot; )
• 𝑘&amp; = 𝐹(𝑡 + ∆𝑡, 𝑥 𝑡 + ∆𝑡𝑘% )
&#039; $(△$ *&#039; $
𝑥(𝑡 + ∆𝑡)
𝑘! + 2𝑘&quot; + 2𝑘% + 𝑘&amp;
𝑥 𝑡 + ∆𝑡𝑘&quot; /2
𝑥 𝑡 + ∆𝑡𝑘! /2
𝑥(𝑡)
考え⽅
• 𝑘&amp; ︓時刻 𝑡 の傾き。
• 𝑘) ︓時刻 𝑡 +
𝑘&amp;
𝑡
• ４つの傾きの平均値から次の時間を予測する
• 𝑘&#039; ︓時刻 𝑡 +
1 𝑘!
6
∆#
&#039;
∆#
&#039;
の傾き。 𝑥は 𝑘&amp; から予測したものを利⽤
+
2𝑘 &quot;
+
2𝑘 #
+
𝑘$
𝑥(𝑡 +△ 𝑡)
𝑘(
𝑘&#039;
𝑡 +△ 𝑡/2
𝑡 +△ 𝑡
メリット
実装はそれほど難しくない
オイラー法より精度が良い
デメリット
計算量が若⼲多くなる
の傾き。 𝑥は 𝑘&#039; から予測したものを利⽤
• 𝑘* ︓時刻 𝑡 + ∆𝑡 の傾き。 𝑥は 𝑘) から予測したものを利⽤
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/5EG3VQND7L.jpg)

機体のパラメータ
• https://www.biccamera.com/bc/item/6621239/
• 本体重量︓約80 g（プロペラとバッテリー含む）
本体サイズ(幅×⾼さ×奥⾏mm)︓98×92.5×41
パラメータ
役割
単位
d
空気抵抗係数
𝑁
Ixx, Iyy, Izz
慣性モーメント
K𝑔 / 𝑚&quot;
m
機体の質量
Tr
ロータの応答時間
Kr
ロータのゲイン
A
ロータ推⼒の⽐例係数
B
反トルクの⽐例係数
𝑁 / 𝑚 / 𝑠&quot;
(パラメータ探索)
Jr
ロータの慣性モーメント
𝑁 / 𝑚 / 𝑠&quot;
(パラメータ探索)
Rotor position
ロータの配置
𝑚
左右・前後対称
幅︓0.05m
Hovering RPM
ホバリング時のロータ回転速度
𝑟𝑝𝑚
最⼤RPMの半分に設定
Max RPM
ロータの最⼤回転速度
𝑟𝑝𝑚
教科書の参考数値で最⼤RPMが6000〜
8000rpmとあったので、8000に設定
K𝑔
パラメータ値
0.0001(えいやで決めた)
0.0000625, 0.00003125, 0.00009375
0.1
𝑠
(パラメータ探索)
K𝑔
(パラメータ探索)
𝑁 / 𝑠&quot;
ホバリングRPM（Ω% ）から逆算
𝑚𝑔
𝐴=
4Ω&quot;%
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/4JQ56KQX7P.jpg)

機体パラメータの決め⽅（試⾏錯誤中）
• 慣性モーメントの計算︓https://www.sky-engin.jp/blog/inertia-matrix/
• 機体のパラメータから仮定した値
パラメータ
値
単位
• 中⼼の⽅がローターより重い
全体質量
0.1
kg
• ロータ質量=(全体質量ー中⼼質量)/4
中⼼質量(c_m)
0.075
kg
• 半径は機体の幅と同じ
ロータ質量(m)
0.00625
kg
半径(a)
0.05
m
• 慣性モーメントの計算式
• 𝐼! =
&quot;!#&quot;
$
Izの計算
Ix, Iyの計算
• 𝐼% = 4𝑚𝑎$
• 𝐼&amp; =
&#039;#
$
（ピッチ側はロール側は同じではなさそうなので半分に）
• 計算結果
パラメータ
値
Iz
0.00009375
Ix
0.0000625
Iy
0.00003125
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/K7494PN2E1.jpg)

機体のパラメータ⼀覧
パラメータ
役割
単位
パラメータ値の決め⽅
パラメータ値
d
空気抵抗係数
𝑁
えいやで決めました
0.0001
Ixx, Iyy, Izz
慣性モーメント
K𝑔 + 𝑚!
本物の機体を参考にして、導出しました
0.0000625, 0.00003125, 0.00009375
m
機体の質量
本物の機体を参考にしました
0.1
Tr
ロータの応答時間
𝑠
パラメータ探索
0.05
Kr
ロータのゲイン
K𝑔
パラメータ探索
8000
A
ロータ推⼒の⽐例係数
ホバリング時のRPM値から逆算しました
1.53281e-08
B
反トルクの⽐例係数
𝑁 + 𝑚 + 𝑠!
パラメータ探索
1.3e-10
Jr
ロータの慣性モーメント
𝑁 + 𝑚 + 𝑠!
パラメータ探索
1.0e-10
Rotor position
ロータの配置
Hovering RPM
Max RPM
K𝑔
𝑁 + 𝑠!
𝑚
本物の機体を参考にしました
ホバリング時のロータ回転速度
𝑟𝑝𝑚
本物の機体を参考にしました
4000
ロータの最⼤回転速度
𝑟𝑝𝑚
本物の機体を参考にしました
8000
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/LJ1K495K7G.jpg)

アジェンダ
1. お話しする範囲
2. 箱庭ドローンシミュレータとは
3. ドローンの⾶⾏原理
4. ドローンの数学・物理・制御⼊⾨
5. ドローンの数値シミュレーション実現⽅法
6. オープンソース技術の紹介（QGC、 PX4）
7. ゲームエンジンの使い所
8. 箱庭ドローンシミュレータの構築
9. なぜ箱庭じゃなきゃダメなのか︖
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/GJWDXQ5P72.jpg)

オープンソース技術の紹介（QGC、PX4）
• ドローン⽤オープンソース技術のエコシステム
• QGC
• QGCとは
• QGCがすごいと思ったところ（感想）
• QGCのシミュレーションでの利⽤⽅法
• PX4
• PX4とは
• PX4がすごいと思ったところ（感想）
• PX4のシミュレーション⽤のアーキテクチャ
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/4EZG6WN6J3.jpg)

ドローン⽤オープンソース技術のエコシステム
Hardware
Firmware
Pixhawk
Ground Station
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/Y76Y2G8LEV.jpg)

QGCとは
• 何ものか
• ドローンの地上局システム⽤のアプリケーション
• 主な⽤途
• 地上から機体を遠隔操作し、
• 様々なミッションを実⾏できる
• サポートしているファームウェア
• PX4
• ArduPilot
• 動作環境
• Windows
• Linux
• MacOS
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/G75G2V9M74.jpg)

QGCがすごいと思ったところ（感想）
1. 地図の⾃動取り込み
2. 様々な機体設定
3. 直感的な操作
4. リアルタイム監視
5. ミッションプランニング
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/9J2Y432RJR.jpg)

地図の⾃動取り込み
• 東京都︓35.689、139.692
27


# Page. 28

![Page Image](https://bcdn.docswell.com/page/DEYGM1Y5EM.jpg)

地図の⾃動取り込み
• ⼤阪府︓34.686、135.520
28


# Page. 29

![Page Image](https://bcdn.docswell.com/page/VJNGW2P478.jpg)

地図の⾃動取り込み
• 福井県︓36.065、136.222
29


# Page. 30

![Page Image](https://bcdn.docswell.com/page/YE9WX134E3.jpg)

様々な機器設定
• 機体の様々な設定が可能です︕
• Actuators
• ⾶⾏挙動
• PIDチューニング
• Actuators
• ローターの位置
• 回転⽅向
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/GE8N24MV7D.jpg)

⾶⾏挙動
•
速度制限かけれます
• 箱庭は3.5km/s
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/LELP263R7R.jpg)

PIDチューニングもできちゃう︕
32


# Page. 33

![Page Image](https://bcdn.docswell.com/page/4JM485DP7W.jpg)

直感的な操作とリアルタイム監視
機体の姿勢⾓を
表⽰
機体の操作
地図上に⽬標地
点を設定
機体の位置や速
度を表⽰
33


# Page. 34

![Page Image](https://bcdn.docswell.com/page/PJRW534Y79.jpg)

ミッションプランニング
34


# Page. 35

![Page Image](https://bcdn.docswell.com/page/PEXPK4247X.jpg)

QGCのシミュレーションでの利⽤⽅法
これまでのデモ動画は全てシミュレータでっており、実機と同じ操作が可能です︕
↓PX4との通信設定さえやっておけば。
35


# Page. 36

![Page Image](https://bcdn.docswell.com/page/3EKD5ZMPJD.jpg)

PX4とは
• 何ものか
• ドローンのファームウェア
• オートパイロット⽤のフライトスタック
• 主な⽤途
• 様々な機体を選択できる
• マルチコプター、固定翼、VTOL
• 地上⾛⾏ロボット、⽔中ドローン
•
豊富なソフトウェアが揃っている
• 機体制御プログラム
• 周辺ドライバ
• 動作環境
• POSIX準拠のOS
• NuttX OS（組み込み向け）
• Linux、MacOS（シミュレータ向け）
36


# Page. 37

![Page Image](https://bcdn.docswell.com/page/L73RKDY4J5.jpg)

PX4がすごいと思ったところ（感想）
1. 外部連携が考慮されたアーキテクチャ
2. PX4通信フレームワーク
3. ロギング機構とビジュアライザー
4. ROSとの親和性
5. ドキュメントが充実している
37


# Page. 38

![Page Image](https://bcdn.docswell.com/page/87DY3P557G.jpg)

外部連携が考慮されたアーキテクチャ
1. TCP／UDP通信で、以下の連携が可能
1. Offboard
2. QGC
3. Simulator
38


# Page. 39

![Page Image](https://bcdn.docswell.com/page/VJP64NGDE8.jpg)

PX4通信フレームワーク
• uORBメッセージ
• PX4内のアプリ間の通信はuORBメッセージ
• Pub/Sub型の通信
• ROS っぽい︕
39


# Page. 40

![Page Image](https://bcdn.docswell.com/page/2EV3XK6G7Q.jpg)

40
ロギング機構とビジュアライザー
• uORBのメッセージは⾃動ロギングされる
• シミュレータの場合ここにあります。
logger
uORB msgs
• PX4-Autopilot/build/px4_sitl_default/rootfs/log
SDカード
ULog
Text
Visualizer
（pyulog等）


# Page. 41

![Page Image](https://bcdn.docswell.com/page/57G3VQ2DJL.jpg)

ROSとの親和性
• uORBメッセージは、μXRCE-DDSを通して、ROS2に変換できます︕
https://docs.px4.io/main/en/middleware/uxrce_dds.html
41


# Page. 42

![Page Image](https://bcdn.docswell.com/page/4EQ56KPXJP.jpg)

ドキュメントが充実している︕
https://docs.px4.io/main/en/
42


# Page. 43

![Page Image](https://bcdn.docswell.com/page/KJ494PY271.jpg)

PX4のシミュレーション⽤のアーキテクチャ
通信メッセージは MAVLINK
対応が必要なメッセージはそんなに多くない︕
43


# Page. 44

![Page Image](https://bcdn.docswell.com/page/LE1K496KJG.jpg)

アジェンダ
1. お話しする範囲
2. 箱庭ドローンシミュレータとは
3. ドローンの⾶⾏原理
4. ドローンの数学・物理・制御⼊⾨
5. ドローンの数値シミュレーション実現⽅法
6. オープンソース技術の紹介（QGC、 PX4）
7. ゲームエンジンの使い所
8. 箱庭ドローンシミュレータの構築
9. なぜ箱庭じゃなきゃダメなのか︖
44


# Page. 45

![Page Image](https://bcdn.docswell.com/page/GEWDXQWPJ2.jpg)

ゲームエンジンの使い所
• ゲームエンジンって何︖
• ドローンシミュレータの代表格
• 箱庭で使いたいゲームエンジンの機能
45


# Page. 46

![Page Image](https://bcdn.docswell.com/page/47ZG6W56E3.jpg)

ゲームエンジンって何︖
• あえて２つ挙げると（シミュレーションの視点で重要な機能）
• 物理エンジン
• レンダリングエンジン
• 物理エンジンとは※
• 質量・速度・摩擦・⾵といった，古典⼒学的な法則をシミュレーションするコンピュータの
ソフトウェアである
• レンダリングエンジンとは※
• レンダリングを⾏うソフトウェア部品。情報（データ）を読み込んで、特定のルールにした
がい適切な表現に変換する役割を担う
• レンダリングとは
• データ記述⾔語やデータ構造で記述された抽象的で⾼次の情報から、コンピュータのプログラムを⽤い
て画像・映像（動画）・⾳声などを⽣成すること
※参照元︓ウィキペディア
46


# Page. 47

![Page Image](https://bcdn.docswell.com/page/YJ6Y2G9L7V.jpg)

ゲームエンジンの種類
• ゲームエンジンには様々な種類がありますが、
• 代表的なものはUnityとUnreal Engineと思います。
観点
Unity
Unreal Engine
備考
初⼼者の学びやすさ
○
△
Unreal Engine は、⾼度な機能を利⽤できるが、初⼼者にはどれ
をどう使えば良いのか迷う。Unityは書籍も多く、導⼊障壁は低い。
グラフィックの美しさ
△
○
Unreal Engineのグラフィックは美しい
スクリプトの作りやすさ
◎
△
UnityはC#なので、作りやすい。標準で⾃動ビルドもしてくれる。
Unrealは、C++なので、初⼼者にはハードル⾼め。
UIの作りやすさ
○
△
Unityの⽅が直感的に作れる。
ライセンス
△
○
どちらもプライベートで利⽤する範囲では問題ないが、
商⽤利⽤する場合は、Unityの⽅がコストが⾼い
補⾜︓
どちらのゲームエンジンを選ぶかは、プロジェクトのニーズや開発者の好み、または特定のスキルセットに⼤きく依存します。
47


# Page. 48

![Page Image](https://bcdn.docswell.com/page/GJ5G2VNMJ4.jpg)

Unityでのデモ（１）
48
ボールを置いて，物理シミュレーションを実⾏するまで
48


# Page. 49

![Page Image](https://bcdn.docswell.com/page/LE3RKD2975.jpg)

Unityでのデモ（２）
49
ロボットも動かすことができる
49


# Page. 50

![Page Image](https://bcdn.docswell.com/page/8EDY3PZ8EG.jpg)

箱庭で使いたいゲームエンジンの機能
• ドローンのシミュレーションにおいて、ゲームエンジンの機能として使いたいもの
物理エンジン
レンダリング
エンジン
スクリプトシステム
ユーザI/F
ユーザ操作
⼲渉/衝突
カメラ/
LiDAR
外乱
⼒学/運動
3D
ビジュアライズ
テスト
シナリオ
Game Engine
50


# Page. 51

![Page Image](https://bcdn.docswell.com/page/V7P64NDWJ8.jpg)

アジェンダ
1. お話しする範囲
2. 箱庭ドローンシミュレータとは
3. ドローンの⾶⾏原理
4. ドローンの数学・物理・制御⼊⾨
5. ドローンの数値シミュレーション実現⽅法
6. オープンソース技術の紹介（QGC、 PX4）
7. ゲームエンジンの使い所
8. 箱庭ドローンシミュレータの構築
9. なぜ箱庭じゃなきゃダメなのか︖
51


# Page. 52

![Page Image](https://bcdn.docswell.com/page/2JV3XK19EQ.jpg)

箱庭ドローンシミュレータの構築
• 全体アーキテクチャ
• ゲームエンジン連携
• 箱庭と接続する上で対応が必要なこと
• ドローン3Dモデルの構築
• 箱庭通信PDUデータの作成
• PX4連携
• 箱庭と接続する上で対応が必要なこと
• MAVLINK通信プロトコルの理解と実装
• 物理モデルとセンサモデルのアーキテクチャ
• hakoniwa-px4sim
• 物理モデルの実⾏
• 箱庭コア機能との連携
52


# Page. 53

![Page Image](https://bcdn.docswell.com/page/5EG3VQ247L.jpg)

箱庭ドローンシミュレーション構成
53


# Page. 54

![Page Image](https://bcdn.docswell.com/page/4JQ56KPR7P.jpg)

詳細アーキテクチャ
54


# Page. 55

![Page Image](https://bcdn.docswell.com/page/K7494PYQE1.jpg)

全体アーキテクチャ
PX4 on SITL
4560/TCP
hakoniwa-px4sim
Drone
Physics/Sensor
(C/C++)
Drone Control
(C/C++)
Generate
MATLAB/Simulink
Plant/
Sensor
Model
Simulation
parameters
Hakoniwa
Scenario Test
18570/UDP
Python
scenario
Game Engine
Unity
Unreal Engine
QGroundControl
PS4 Controller
箱庭は様々なソフトウェアを繋げるハブです︕
55


# Page. 56

![Page Image](https://bcdn.docswell.com/page/LJ1K496L7G.jpg)

56
ゲームエンジン連携
3Dモデル
•
３Dモデル︓箱庭ドローン(H1号)
• 中村歩⾼さんからご提供いただきました
スクリプト • どういうものか︖
• DroneAvator スクリプト
• 箱庭と通信を⾏います
• 位置と姿勢情報をUnity上で再現します
• PWMデューティ値をプロペラ回転アニメに変換
• 障害物との衝突情報を箱庭にFBします
• 衝突検出
• 機体のプロペラに衝突検出オブジェクトを設置
位置・姿勢
PWM Duty
箱庭
衝突情報
箱庭PDUデータ
56


# Page. 57

![Page Image](https://bcdn.docswell.com/page/GJWDXQWQ72.jpg)

作成したドローンを配置してシミュレーション
シーン・ビュー
ゲーム・ビュー
57


# Page. 58

![Page Image](https://bcdn.docswell.com/page/4EZG6W53J3.jpg)

PX4連携
アクチュエータ情報に応じて物理ダイナミクスを駆動する
2. 物理ダイナミクスの内部情報をセンサデータに変換する
3. センサデータを定期的に送信する
1.
Hakoniwa-px4sim
HIL_SENSOR
Drone Sensors
(C/C++)
HIL_GPS
Drone Physics
(C/C++)
PX4
HIL_ACTUATOR
_CONTRLS
MAVLINK通信プロトコル
Drone Actuator
(C/C++)
58


# Page. 59

![Page Image](https://bcdn.docswell.com/page/Y76Y2G9ZEV.jpg)

PX4連携詳細
59


# Page. 60

![Page Image](https://bcdn.docswell.com/page/G75G2VN974.jpg)

hakoniwa-px4sim
• GitHubで⼀般公開中︕
• https://github.com/toppers/hakoniwa-px4sim
Star &amp; Watch
お願いします︕
60


# Page. 61

![Page Image](https://bcdn.docswell.com/page/9J2Y4355JR.jpg)

hakoniwa-px4simの内部構造
機体パラメータ
Sensors
Aircraft Factory
create
箱庭マスタ
Physics
Aircraft
位置・姿勢
HIL_SENSOR
衝突情報
HIL_GPS
PWM Duty
HIL_ACTUATOR
_CONTRLS
MAVLINK
箱庭アセット
(Unity)
箱庭時間同期
Actuator
箱庭アセット
PX4
箱庭PDUデータ
箱庭コア機能
61


# Page. 62

![Page Image](https://bcdn.docswell.com/page/DEYGM1K6EM.jpg)

デモ
62


# Page. 63

![Page Image](https://bcdn.docswell.com/page/VJNGW2Z178.jpg)

アジェンダ
1. お話しする範囲
2. 箱庭ドローンシミュレータとは
3. ドローンの⾶⾏原理
4. ドローンの数学・物理・制御⼊⾨
5. ドローンの数値シミュレーション実現⽅法
6. オープンソース技術の紹介（QGC、 PX4）
7. ゲームエンジンの使い所
8. 箱庭ドローンシミュレータの構築
9. なぜ箱庭じゃなきゃダメなのか︖
63


# Page. 64

![Page Image](https://bcdn.docswell.com/page/YE9WX1ZYE3.jpg)

なぜ箱庭じゃなきゃダメなのか︖
• 統合的なシミュレーションハブとしての機能性
• 様々なソフトウェアやシミュレータを柔軟に接続・統合を可能にします
• 今回の場合は、C⾔語ベースの物理式のプログラム、UnityやUnreal Engine、PX4等です
• 拡張性
• オープンソースであるため、⾃分のニーズに合わせてカスタマイズできます
• 物理式は⽬的に応じて変更可能。MATLABで作成することもできます
• コスト効率
• 箱庭は無料であり、コストを抑えながら⾼度なシミュレーションを実現可能
• 教育や研究開発、趣味のプロジェクトで⼗⼆分に活⽤できます︕
箱庭ドローンシミュレータは、
将来的に、様々なソフトウェアやシミュレータと
連携できる可能性を秘めています︕
64


# Page. 65

![Page Image](https://bcdn.docswell.com/page/GE8N241K7D.jpg)

最新のアップデート
⽣成AIコンテスト︕
65
低温領域でのセンサー異常（温度ドリフト）
https://www.youtube.com/watch?v=Z3Slx0CPf8I
https://www.youtube.com/watch?v=R67QkYnJngc


# Page. 66

![Page Image](https://bcdn.docswell.com/page/LELP26QP7R.jpg)

ご清聴
ありがとうございました︕
66


