No description
  • C++ 82.8%
  • C 13%
  • CMake 4.2%
Find a file
2026-08-27 14:32:18 +09:00
3rdparty Livox-SDK2-1.2.5 based 2026-08-27 13:32:11 +09:00
build.win change for 1.3.1 2026-08-27 13:51:18 +09:00
include change for 1.3.1 2026-08-27 13:51:18 +09:00
samples change for 1.3.1 2026-08-27 13:51:18 +09:00
sdk_core change for 1.3.1 2026-08-27 13:51:18 +09:00
.gitignore Livox-SDK2-1.2.5 based 2026-08-27 13:32:11 +09:00
CHANGELOG.md change for 1.3.1 2026-08-27 13:51:18 +09:00
CMakeLists.txt Livox-SDK2-1.2.5 based 2026-08-27 13:32:11 +09:00
LICENSE.txt Livox-SDK2-1.2.5 based 2026-08-27 13:32:11 +09:00
README.md README.md を更新 2026-08-27 14:32:18 +09:00

Livox-SDK2 for MATLAB (Livox Mid-360)

Windows環境のMATLABから共有メモリShared Memoryを介して、Livox Mid-360/Mid-360s の3D点群Point CloudデータおよびIMU慣性計測装置データをリアルタイムに取得・可視化するための連携ツールキットである。

概要 (Overview)

Livox SDK2のC++アプリケーションでセンサデータを受信して共有メモリへ書き込み、MATLAB上のMEX関数sharedmemv5)で高速にデータを読み出す。プロセスを分離することで、処理速度とデータの安定性を両立を実現している。


動作確認環境 (Test Environment)

  • OS: Windows 11
  • MATLAB: MATLAB 2026a 以降
  • Compiler: Visual Studio Community 2026 (「C++によるデスクトップ開発環境」にチェック)
  • Hardware: Livox Mid-360/Mid-360s LiDAR
  • Software: Livox SDK2 (v1.3.1), Livox Viewer 22.5.9以降)

ネットワーク設定 (Network Configuration)

LiDARとPCをLANケーブルで直接接続し、ホストPC側の固定IPアドレスを設定した例を示す。

機器 IPアドレス サブネットマスク
ホストPC 192.168.1.1 255.255.255.0
Livox Mid-360(s) 192.168.1.1XX (初期値) 255.255.255.0

Livox Viewer 2 を起動し正常にデータ受信が行えるか事前に接続確認。


ビルドとセットアップ (Build & Setup)

1. C++ 受信プログラムのビルド

  1. [Livox-SDK2 v1.3.1]のソースコードを取得。
  2. Livox-SDK2-1.3.1/samples/CMakeLists.txt に本リポジトリの livox_lidar_quick_startv5 ディレクトリを追加。
  3. Developer Command Prompt for VS 2026 を起動し、ビルドを実行。
cd Livox-SDK2-1.3.1
mkdir build && cd build
cmake .. -A x64 -DCMAKE_POLICY_VERSION_MINIMUM=3.5
msbuild livox_sdk2.slnx /p:Configuration=Release /p:Platform=x64 /p:RuntimeLibrary=MultiThreadedDLL
  1. 生成された livox_lidar_quick_startv5.exe と同じディレクトリ(Release/)に config.json を配置し、host_net_info のIPアドレスを 192.168.1.1 に更新。

Step 1: 受信プロセスの起動

コマンドプロンプトより、ビルドしたC++プログラムを実行して共有メモリへのデータ配信を開始。

livox_lidar_quick_startv5.exe

2. MATLAB MEX関数のコンパイル

MATLABのコマンドウィンドウで以下を実行。

>> mex -setup C++
>> mex sharedmemv5.cpp

使い方 (Usage)

Step 2: MATLABでのデータ取得

MATLAB上で oneshot.m を呼び出すことで、指定フレーム数分の点群およびIMUデータを同期取得できる。

% 150パケット分のデータを取得
num = 150;
[lidar, imu] = oneshot(num);

% 点群データのプロット (x, y, z) [m]
plot3(lidar(1,:), lidar(2,:), lidar(3,:), '.');
axis equal; grid on;
xlabel('X [m]'); ylabel('Y [m]'); zlabel('Z [m]');

データ仕様 (Data Specifications)

出力フォーマット (oneshot.m)

データは自動的に ENU 座標系 (East-North-Up) およびSI単位系に変換される。

  • 点群データ (lidar): 5 × N 行列
    • 1:3行: X, Y, Z 座標 [m]
    • 4行目: 反射強度 (Reflectivity: 0 \sim 255)
    • 5行目: 信頼性・ノイズ識別 Tag 情報
  • IMUデータ (imu): 7 × M 行列
    • 1:3行: 角速度 Gyro X, Y, Z [rad/s]
    • 4:6行: 加速度 Accel X, Y, Z [m/s^2]
    • 7行目: タイムスタンプ

ノイズ除去フィルタリング (Tag Filtering)

Tag情報のビット判定により、雨・霧・イズ等の低信頼性点群を除去可能。

% 雨・ノイズ等を除去する例 (untitled8pcl.m より)
othrLow = bitand(lidar(5,:), 2^5) == 2^5;
rainLow = bitand(lidar(5,:), 2^3) == 2^3;
glueLow = bitand(lidar(5,:), 2^1) == 2^1;

validIdx = ~(othrLow | rainLow | glueLow);
cleanLidar = lidar(:, validIdx);

応用サンプル (Examples)

  • untitled8.m: 点群・IMUデータ・タイムスタンプ同期状態のリアルタイムモニタリング
  • untitled8pcl.m: pcshow 関数を用いた点群反射強度のリアルタイム可視化と動画保存
  • untitled9a.m: カルマンフィルタ(imufilter)および poseplot による姿勢計測

  • Developer: 法政大学 理工学部 創生科学科 小林一行研究室
  • Reference: Gerox.com