Skip to content

箱庭ドローンシミュレータ Unity アプリケーション編

LiDARセンサ可視化方法

箱庭ラボコミュニティ

目次
用語集・改版履歴
略語 用語 意味
No 日付 版数 変更種別 変更内容
1 2026/01/15 0.1 新規 新規作成

1. 本ドキュメントについて

本ドキュメントは、箱庭ドローンシミュレータのUnityアプリケーションにLiDARセンサのセンシング状態を可視化するための追加方法になります。

2. UnityアプリケーションへのLiDAR追加

箱庭ドローンシミュレータの既存のPJを使って、ドローンの機体に搭載されているLiDARセンサからセンシング状態を可視化するためにアセット、スクリプトを追加します。

2.1. 既存のUnityアプリケーション利用

最初に箱庭ドローンシミュレータの既存Unityアプリケーションを開きます。

Unityアプリケーション1

Assets/ScenesにあるAvatar.unityを選択して開きます。

Avatarアプリを開いたら、Fileメニュー→Save As...を選択して別名で保存します。本ドキュメントでは、LiDARAvatarという名前で保存します。

Unityアプリケーション2

2.2. LiDAR可視化用のAssets

箱庭ドローンシミュレータのhakoniwa-unity-droneにはLiDARを可視化するためのAssetsが用意されています。

Assets/Scripts/Hakoniwa/VisualizeにLiDARディレクトリがあるります。このスクリプトを利用してLiDARの可視化をします。

LiDAR可視化1

2.2.1. LiDAR可視化用のスクリプト配置

HierarchyのDJIAvatar/DJIAvatarLiDAR/Sensorを選択します。

LiDAR可視化2

SensorがLiDARセンサになります。

2.2.1.1. LiDARセンサデータ可視化用のスクリプト配置

HierarchyのDJIAvatar/DJIAvatarLiDAR/Sensorを選択した状態でInspecorにDrone3DLiDARVisualizer.csのスクリプトをドラッグ&ドロップで配置します。

LiDAR可視化3

2.2.1.2. LiDARセンサデータの可視化UI用のスクリプト配置

Hierarchyで、右クリックして、Create Emptyのオブジェクトを作成します。

LiDAR可視化4

作成したオブジェクトの名前をLiDARUIに変更して、GUIに配置します。

LiDAR可視化5

配置したら、LiDARUIを選択した状態で、InspecorにDroneLiDARUI.csのスクリプトをドラッグ&ドロップで配置します。

LiDAR可視化6

2.2.2. LiDARスクリプトの初期化

Assets/Scripts/Hakoniwa/HakoSim/DroneAvatar.csに配置したLiDARスクリプトの初期化コードを追加します。 以下を追加してください。

using hakoniwa.visualization.lidar;

~中略~

namespace hakoniwa.drone.sim
{
    public class DroneAvatar : MonoBehaviour, IHakoObject, IDroneBatteryStatus, IMovableObject
    {

~中略~

        private LiDAR3DController[] lidars;
        private Drone3DLiDARVisualizer[] visualizers;

~中略~

        public void EventInitialize()
        {

~中略~
            /*
             * LiDAR
             */
            lidars = this.GetComponentsInChildren<LiDAR3DController>();
            if (lidars != null)
            {
                if (droneConfig)
                {
                    droneConfig.SetLidarPosition(robotName);
                }
                foreach(var lidar in lidars)
                {
                    lidar.DoInitialize(robotName, hakoPdu);
                }
            }
            // LiDARのポイントクラウドを読み取るため、PDUを宣言しておく
            try
            {
                var retLidar = hakoPdu.DeclarePduForRead(robotName, "lidar_points");
                if (retLidar == false)
                {
                    Debug.LogWarning($"Can not declare pdu for read: {robotName} lidar_points");
                }
            }
            catch (Exception ex)
            {
                Debug.LogWarning($"Exception while declaring lidar_points PDU: {ex.Message}");
            }
            /*
             * LiDAR Visualizer
             */
            visualizers = this.GetComponentsInChildren<Drone3DLiDARVisualizer>();

~中略~
        }
    }
}

2.3. 動作確認

ここまでの配置が完了したら、Unityにてビルドを実行するか、Playボタンで実行すると、LiDARの可視化を体験することができます。

Unityのビルドの詳細については、hakoniwa-unity-droneのビルド編などを参考にしてください。