3D Solid State LiDARの環境構築(Ubuntu)


はじめに

近年、LiDARは自動運転などにより普及が進み、価格が従来と比べて非常に安くなってきており、研究界隈でも注目されています。市場規模で言えば、2025年には約3,330億円規模に達すると予測されています。

今回はそんなLidarの中でも3D LiDARの1つである、「HPS-3D160-U Solid-State LiDAR」を触る機会がありましたので、その使用方法をまとめておこうと思います。

LiDAR とは

LiDARとは「Light Detection and Ranging」の略であり、レーザー光を走査しながら対象物に照射してその散乱や反射光を観測することで、対象物までの距離を計測したり対象物の性質を特定したりする、光センサー技術のことです。

ソリッドステート(Solid State)式 LiDAR とは

従来の3D LiDARは、360°全方位を検出する機械的回転方式が主流でした。そのため駆動部にモーターが必要で、小型化・軽量化が難しく、コストも高くなるので車載用としてはデメリットが多くありました。それらのデメリットを克服するために駆動部を廃し、半導体技術や光学技術で機構部を置き換えたものを「ソリッドステート(Solid State)式」と呼びます。
回転機構を持たないのでレーザー光照射角は限定されますが、小型なので設置場所の自由度が高く、複数のセンサを利用することで360°をカバーでき、車載用として主流になっています。

今回使用するLiDARは、このタイプのものを使用します。

HPS-3D160-U Solid-State LiDARの基本情報

特徴

ハイパフォーマンスプロセッサーとプロの数学のアルフォリズムにより、3Dポイントクラウドデートは、リアルタイムで生成され、高速通信インターフェースを通して送信されます。

仕様
  • モデル番号 : HPS-3D160-U
  • タイプ:ニッケル
  • 測定モード:ToF
  • 解像度: 160960
  • 最小深さ解像度:1mm
  • FoV: 76*32度
  • フレームレート:60Hz(調整可能)
  • 測定範囲:0.25~15m
  • 精度:±2cm
  • 強力な光度:80,000ルクス
  • 通信インターフェース:USB
  • 動作温度:-10~+55℃
  • 電源:9~12V
  • 消費電力:3~5W
  • 重量:195g
  • サイズ:88×70×30mm
接続

デバイスとの接続は、単純なUSBによるシリアル通信です。
しかし、電源は別途12Vの供給が必要です。

Ubuntuでの環境構築

まず、公式のSDKをダウンロードします。

以下のコマンドで3D LiDARが接続されているか確認してください。
確認ができたら、実行権限を持たせておきましょう。

$ ls /dev/ttyACM*
ttyACM0

$ sudo chmod 777 /dev/ttyACM0

コンパイルの手順へと進んでいきますが、ここで以下のコマンドを用いてOSが何bitのものを使用しているか確認しておきましょう。それによって使用するライブラリがことなります。

$ ls /etc/os-release

先ほどダウンロードしたSDKには「libhps3d~.so」ファイルがありますが、

  • libhps3d32~.so 32bit用モジュール
  • libhps3d64~.so 64bit用モジュール

となっています。
対応するモジュールを/usr/local/libにコピーしましょう。
Jetsonなどのarm-OSを使用している場合は、以下のgithubから別途モジュールをダウンロードする必要があります。

$ sudo cp libhps3d~.so /usr/local/lib/
$ sudo chmod 777 /usr/local/lib/libhps3d~.so
$ sudo ldconfig

あとはソースコードをコンパイルして実行すればサンプルプログラムは動かせます。

$ gcc main.c -L./ -lhps3d~ -o app
$ sudo ./app

おすすめの応用プログラム

点群データを可視化してるれるプログラム
ROSを使ったプログラム

追記

公式のSDKを見つけたので記載しておきます。
https://github.com/hypersen/HPS3D_SDK/tree/master/English