🐡

WSL環境でLivox mid-360を動かすためのメモ

2024/05/05に公開

Livox mid360はお手軽な3d lidarとして一部界隈で話題を集めいる.
僕自身一年ほど前に買ったはいいものの放置していた(いわゆる積みセンサ)が,このたび動かしてみることとした.
ロボットに載せれるlinux入りのマシンが現状ラスパイしかない&我が愛しの統合開発環境Clionはx86系でしか動かないこともあり,僕は開発はメインPC上のWSLで行っている.
ただLivox mid360はセンサの値をUDPブロードキャストでまき散らす関係上素直には行かなかったので,ここにメモする

下準備

まずはwslをブリッジモードで使用可能にする.これで直接wslが外部のネットワークに入れるようになる.

  1. Hyper-Vの有効化
    Hyper-Vを有効化する.
    windows pro edition以上でしか出来ないので注意.
    ここでいったん再起動が入る.
  2. Hyper-V で外部との通信用の仮想スイッチを作成する
    Hyper-Vマネージャーを開き,仮想スイッチマネージャーを選択

    こんな感じで新しい外部仮想スイッチを作成する.

    詳しくは以下のリンク参照
    https://zenn.dev/euxn23/articles/7b83df39720ccb
    https://learn.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/get-started/create-a-virtual-switch-for-hyper-v-virtual-machines?tabs=hyper-v-manager
  3. .wslconfigの編集
    .wslconfigに以下を追記する
networkingMode=bridged
vmSwitch=External

スイッチモードにするための設定,vmSwitchは仮想スイッチの名前と同じにすること
5. wsl再起動

wsl --shutdown
  1. IPの設定
    Livox mid360はデフォルトで192.168.1.1XX(XXに該当デバイスのシリアルナンバー下二桁が入る)をIPアドレスにとり,デフォルトゲートウェイは192.168.1.1を取る.
    そのためパソコンに直接ぶっさす場合はnicの設定を,スイッチかまして使う場合はルーター等の設定を適切に行う.
    今回はルーターのIP(この場合はデフォルトゲートウェイのIPも)を192.168.1.1にすることで解決
    pingを該当デバイスのipに打って疎通確認すればよいだろう.
    また今回はdhcpでipを取るようにしている.
    そのため割り振られるIPがLivox側から見れる192.168.1.1~192.168.1.254の範囲にあるように設定されていることを確認する.(特にルーターのサブネットマスクを/23等/24より広めに設定している場合注意)

Livox-SDK2のインストール

ここからは再起動したwsl側で行う.
まずLivox-SDK2(https://github.com/Livox-SDK/Livox-SDK2 )をインストールする.
githubのりどみを参考に行う.
以下のリンクも参考になった.
https://proc-cpuinfo.fixstars.com/2023/01/livox-mid360-ros1-ros2/
インストールが終了したらlivox_lidar_quick_startを実行してみる.
今回は自IPを192.168.1.5にしたので変更の必要は無いが,そこが異なる場合Livox-SDK2/samples/livox_lidar_quick_start/mid360_config.jsonを適宜編集すること.

cd Livox-SDK2/build/samples/livox_lidar_quick_start/
./livox_lidar_quick_start ../../../samples/livox_lidar_quick_start/mid360_config.json

なんかいい感じのログが出た後にダーッと良い感じに流れたらおk.

Livox-Viewerの実行

最後にちゃんと動いているか確かめるために,純正ビューアーのLivox-Viewerを実行してみる.
設定の変更とかもできるし,Realsence-viewerみたいなものかな?
ここ(https://www.livoxtech.com/jp/mid-360/downloads )からダウンロードする.
wgetではうまく行かなかったので,windows側でダウンロードした後に移動させるのがよさそう.
またopengl4.3が必要になるが,デフォルトのopenglは4.2でエラー吐かれるので新しめのopenglをインストールする.

sudo add-apt-repository ppa:oibaf/graphics-drivers -y
sudo apt update
sudo apt upgrade -y

openglバージョンの確認

ryuzot@RYUZOT:~$ glxgears -info
WARNING: dzn is not a conformant Vulkan implementation, testing use only.
WARNING: Some incorrect rendering might occur because the selected Vulkan device (Microsoft Direct3D12 (NVIDIA GeForce RTX 2070 SUPER)) doesn't support base Zink requirements: feats.features.logicOp have_EXT_custom_border_color have_EXT_line_rasterization
GL_RENDERER   = D3D12 (NVIDIA GeForce RTX 2070 SUPER)
GL_VERSION    = 4.6 (Compatibility Profile) Mesa 24.2~git2405040600.1b8cf0~oibaf~j (git-1b8cf06 2024-05-04 jammy-oi
GL_VENDOR     = Microsoft Corporation
GL_EXTENSIONS = GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color
(以下略)

opengl4.6だね,ヨシ.
では最後にLivox-Viewerを実行する.

cd LivoxViewer2\ for\ Ubuntu\ v2.3.0/
sh LivoxViewer2.sh

adapterのところで192.168.1.5を選択すると,点群データが見えるようになる.

あとがき

本当はROS2で使うとこまでしたかったが,なんかindex取れないよー見たいなエラー出てるのでまだできてない.
まあwsl側でLivox-Viewer見れたしあとはあるとしてもcommonな問題しかなさそうなのでここで〆
ていうか研究室のタスクが全然出来てなくてlidarで遊んでる場合じゃない,それとinrofどうしよマジで

Discussion