5.8K Views
June 20, 24
スライド概要
この資料では、箱庭ドローンシミュレータのアーキテクチャ情報を以下の観点で整理しています。
- 箱庭ドローン・アプリケーション構成
- 箱庭ドローン・アプリ
- 箱庭ドローン・Python アプリとは
- 箱庭ドローン・Python APIライブラリとは
- 箱庭ドローン・Unity ワールド/機体
- 箱庭ドローン・Unity ワールドとは
- 箱庭ドローン・Unity 機体とは
- 参考情報
-PythonとUnity間の通信データ(箱庭PDUデータ)の説明
TOPPERS/箱庭WG活動でUnityやらAthrillやらmROSやら触ってます。 最近は仕事の関係でWeb系の技術に注力しつつ、箱庭への転用を模索しています。 2023年8月1日:合同会社箱庭ラボに移動しました
箱庭(Hakoniwa) Drone Architecture 合同会社箱庭ラボ 森崇
はじめに • この資料では、箱庭ドローンシミュレータのアーキテクチャ情報を以下の観点で 整理しています。 • 箱庭ドローン・アプリケーション構成 • 箱庭ドローン・アプリ • 箱庭ドローン・Python アプリとは • 箱庭ドローン・Python APIライブラリとは • 箱庭ドローン・Unity ワールド/機体 • 箱庭ドローン・Unity ワールドとは • 箱庭ドローン・Unity 機体とは • 参考情報 • PythonとUnity間の通信データ(箱庭PDUデータ)の説明 2
箱庭ドローン・アプリケーション構成 • カスタマイズ可能な機能 • Pythonアプリ • Unityワールド/環境 • 箱庭提供機能 • Python APIライブラリ • 箱庭PDUデータ • 箱庭ドローンシミュレータ • 箱庭コア機能 プログラミング編で詳説 詳細を把握されたい場合 は、こちらを参照ください カスタマイズ可能な範囲 プログラミング編で詳説 ワールド・機体 カスタマイズ編で詳説 Python アプリ Unity ワールド/機体 Python API ライブラリ 詳細を把握されたい場合 は、こちらを参照ください 箱庭ドローン シミュレータ 箱庭コア機能 箱庭PDUデータ (共有メモリ︓MMAP) 詳細を把握されたい場合 は、こちらを参照ください 3
補⾜ • 箱庭のシミュレーション時間同期について • Unityと箱庭ドローンシミュレータは、箱庭コア機能を通して時間同期しています。 • ドローン・アプリは、箱庭のシミュレーション時間同期の範囲外で機能します。 • 理由︓任意のタイミングでアプリの起動・終了をできるようにするため • 箱庭PDUデータについて • ドローン・アプリとUnityは、箱庭PDUデータ(共有メモリ)を介して通信を⾏います。 • 通信のやり取りは、Python APIライブラリが実現してくれています。 4
箱庭ドローン・Pythonアプリとは • Pythonプログラムで、Unity内のドローンを操作するアプリケーションであり、 • Unityワールド内で様々なミッションを実施できます。 • ミッション達成する上で必要なドローン操作としては、以下があります。 • 機体を離陸する • 機体の現在位置を取得する • 機体を⽬的地へ移動する • 機体で荷物を運ぶ • 機体のカメラで撮影する • 機体のレーザセンサ(LiDAR)で周辺の障害物を検出する • 機体を着陸する • これらの操作を⾏うために、箱庭ドローン・Python APIライブラリを利⽤します。 5
Python アプリ&API ライブラリの位置付け Pythonアプリ Python APIライブラリ 箱庭ドローン ドローンを操作し、 様々なミッションを コントロール 箱庭ドローンを 操作するため のAPIセット Unityの3Dモデル で作成された ドローン 6
箱庭ドローン・Python API 操作のユースケース 箱庭ドローンを操作するAPIセットは全部で7個あります。 現在位置を 取得する 着陸する 離陸する カメラ撮影する 障害物を検出する ⽬的地へ 移動する 荷物を運ぶ 7
箱庭ドローン・Python APIライブラリとは • 先述した箱庭ドローン操作を⾏うためのAPIセットです。 • Pythonプログラムで作成されており、AirSimのAPIと同じ構成です。 • プログラム例︓ • ライブラリの初期化 離陸前︓ 離陸後︓ • 機体を3m上空まで離陸する 8
箱庭ドローン・Unity ワールドとは • 箱庭ドローンが⾶⾏する周辺環境です 周辺環境例(デフォルト)︓⾊とりどりの障害物を配置 • Unityエディタを使⽤して、 • ドローン・ミッション⽤の荷物や • 障害物、⼈、ロボット等、 • 様々な構成を実現可能 • シミュレーション実⾏に必要なUI機能セット • シミュレーション開始ボタン(START) • 機体の位置や姿勢⾓などの表⽰等 シミュレーション実⾏する上で必要なUI機能セット • がデフォルトで⽤意されています。 9
箱庭ドローン・Unity 機体とは • Unityの3Dモデルとして作成されたドローンで、 • 前⽅にカメラ • 障害物検出⽤のセンサ(LiDAR) • 荷物運搬⽤のスイッチングマグネットホルダー • などがあります。 3DLiDAR Camera 10
デモ(荷物運搬) https://www.youtube.com/watch?v=1eHvgdBNYFA 11
デモ(カメラ) https://www.youtube.com/watch?v=202fq2OQ8JI 12
デモ(3DLiDAR) https://www.youtube.com/watch?v=a4Kdo8jKitg 13
PythonとUnity間の通信データの説明 • PythonとUnity間の通信データは、箱庭PDUデータです。 • PDUデータの説明は、こちらを参照ください。 • PythonとUnity間で利⽤しているPDUデータは以下のものです。 チャネル 番号 データ名 I/O 役割 データ型(参照) drone_pos I ドローンの位置・姿勢情報 1 geometry_msgs/Twist drone_cmd_takeoff I ドローンの離陸指⽰コマンド 5 hako_msgs/HakoDroneCmdTakeoff drone_cmd_move I ドローンの移動指⽰コマンド 6 hako_msgs/HakoDroneCmdMove drone_cmd_land I ドローンの着陸指⽰コマンド 7 hako_msgs/HakoDroneCmdLand hako_cmd_magnet_holder I ドローンのスイッチングマグネットホルダー指⽰コマンド 12 hako_msgs/HakoCmdMagnetHolder hako_cmd_camera I ドローンのカメラ撮影指⽰コマンド 9 hako_msgs/HakoCmdCamera hako_status_magnet_holder O ドローンのスイッチングマグネットホルダーのステータス 13 hako_msgs/HakoStatusMagnetHolder hako_camera_data O ドローンが撮影したカメラデータ 10 hako_msgs/HakoCameraData lidar_points O ドローンの3DLiDARのデータ 14 sensor_msgs/PointCloud2 lidar_pos O ドローンの3DLiDARの取り付け位置情報 15 geometry_msgs/Twist 14