AbudoriLab.

自律ロボットで誰でも遊べるよう試行錯誤するブログです。

意外とできない!MID-360の動かし方

Abudoriです。ロボットのセンサは劇的に安価になっています。 かつての3DLiDARは3桁万円は当たり前、とても気軽に手に入るものではありませんでしたが、 今はLIVOXなど個人でも頑張れば新品で購入できる3DLiDARが出てきました。

中でも最も手に入りやすく、さまざまなアプリケーションに活用しやすい3DLiDARがMID-360です。 ですが、いざ触ってみるとかなり手こずります。ただスキャンしている像を見たいだけなのにとにかく動きません。

そこでこの記事はROS 2で動かす時、25/9/1現在で動作する大体の手順をまとめました。参考にしてください。

引用:https://www.livoxtech.com/jp/mid-360

必要なもの

この記事では、ROS 2のHumble、もしくはJazzyで(当分はこれ以降のROS 2バージョンで)動作するところまでを解説します。 ROS 2はインストールして動作するものとします。

それ以外でインストールするものとしては、

  • Livox-SDK2
  • livox_ros_driver2

の2つをインストールします。

ROS 2で動作させる時はlivox_ros_driver2ros2 launchさせたいのですが、この動作にLivox-SDK2がインストールされている必要があります。

Livox-SDK2のインストール

Livox-SDK2は公式のGithubのままでは、まさかのビルドが通りません。

そこで、Xの @dandelion1124 さんのfork先のリポジトリを利用します。

こちらのリポジトリを利用します。本当に感謝! github.com

このリポジトリはROS 2のソースコードではないので、適当な場所でビルドしてインストールします。 ビルド(コンパイル)をしたら、実行ファイルが作成されます。 この実行ファイルはこのビルドした場所でしか利用できません。 ROS 2のlivox_ros_driver2ノードが実行する時にこの実行ファイルが必要になりますので、実行ファイルをOS上でいろんなプログラムが簡単に見える場所に置いておく必要があります。

Linuxでは、/usr/localなどの場所にコピーすることでいろんなプログラムが実行ファイルとして見られるようになります。 Windowsインストーラが“インストールしています”と言っている時はだいたい実行ファイルをコピーしているのですね。MacApplicationフォルダにコピーをしています。

この作業をしてみましょう。

まずは作業場所を確保します。どこでもいいですが、Abudoriはhome(ターミナル開いた時の一番最初の場所)直下にinstallディレクトリを作ってそこで作業しています。

mkdir install
cd install

installディレクトリの中にLivox-SDK2ソースコードをダウンロードしましょう。 以下のコマンドは @dandelion1124 さんの修正されたものをダウンロードしています。

git clone https://github.com/atinfinity/Livox-SDK2.git

ダウンロードが完了したらLivox-SDK2ディレクトリができているはずです。 次はソースコードをビルドします。

ビルドする手順としては、ビルド作業を行うbuildディレクトリを作り、その中でビルドを行います。 この時、ソースコードを開発中のものではなく、リリース版に切り替えるコマンドを入力します。

cd ./Livox-SDK2
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && make -j

最後にOSで見える場所にコピーする(インストール作業する)コマンドを入力し、 コピーした実行ファイルを“共有ライブラリ”として認識させる(パスを教えてあげるコマンド)を入力をして完了です。

sudo make install
sudo ldconfig

これでターミナルにエラーが出ていなければ成功です。

livox_ros_driver2のインストール

次にROS 2でMID-360を使用するためのROS 2ノードであるlivox_ros_driver2をインストールします。 このlivox_ros_driver2は通常のROS 2ノードのようにcolcon buildができません。 なぜならROS1とROS 2のコードを無理やり共通化されていて形式があっていないからです(それはお客にとってはこまりますね)。

とはいえ、ROS 2ノードなので、colcon build環境を作ります。いつも使っているcolcon build内のsrcに入れてしまうと、 他のROS 2ノードをcolcon buildする時に必ずビルドエラーが起きてしまい、 目的のノードがビルドできなくなってしまうため、別のワークスペースを作ります。

ここでは、さきほど作ったinstallディレクトリ内にもう一つのcolcon ワークスペースを作ります。 ワークスペースcolcon buildするとbuildinstalllogディレクトリが作られ、src内にあるソースコードからbuild内に実態が作られます。 これが新しいワークスペースです。 この新しく作ったワークスペースソースコードをクローンします。

cd ~/install
mkdir livox_ws
cd livox_ws
mkdir src
colcon build
cd src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git

今回はいつも通りのようにcolcon buildするのではなく、build.shが用意されているのでこれを使います。逆にこれ以外ではビルドできません。 build.shはROS1用とROS 2用が用意されていますので、ここではROS 2のオプションを指定することでビルドできます。 ./build.sh の後にhumbleオプションをつけます。 HumbleからROS 2のディレクトリ構造が大きく変更されたので、これ以降のバージョン(例えばJazzy)の場合でもhumbleオプションでOKです。

cd livox_ros_driver2
./build.sh humble

Livox-SDK2をインストールしていたため、ビルドができました。 ただし、ビルドできただけでは使えません。ros2 launch livox...と入力しても認識してくれません。

ROS 2にビルドした実行ファイルを認識させるには、ワークスペース内のsetup.bashを参照する必要があります。 これは毎回必ず参照する必要があるので、自動的に毎回参照してくれる~/.bashrcに書き込みます。 ~/.bashrcを編集するには、以下のようにしてファイルを開きます。

gedit ~/.bashrc

ROS 2の環境構築をする時にも同じ操作をしているはずなので、ROS 2の設定は以下のようにしてください。

source /opt/ros/humble/setup.bash
source /home/usr_name/colcon_ws/install/setup.bash
source /home/usr_name/install/livox_ws/install/setup.bash

編集した直後にこの~/.bashrcの変更点を反映したい場合は以下のコマンドを入力します。 ターミナルを開き直したり、別のターミナルを新たに開く場合は必要ありません。

source ~/.bashrc

これで、先ほどビルドした実行ファイルが反映されて、ROS 2コマンドに認識されます。

起動しよう

以上の準備を行うとようやく実行ができるようになります。 ただし、ネットワーク設定ができていないため、実行してもネットワーク上にLiDARを見つけることができないはずです。

まずはLiDARを接続して起動させましょう。電源ケーブルを繋ぎ、EthernetケーブルをPCに直接挿してください。 ここでは、複数台の接続やネットワーク上の接続の解説は省略させていただきます。また、接続や電気的なものは次回説明するかもしれません。

PCのEthernetケーブルに接続したら、有線LANの設定を行います。Ubuntuの設定からネットワーク設定を開いてください。 有線接続の歯車マークを押すと以下の画像のような、有線Ethernetの設定画面が出てきます。

IPv4を手動設定にし、IPを 192.168.1.5 サブネットマスク255.255.255.0 にして適用ボタンを押しましょう。

このとき、PCのIPがすでに何らかの事情で192.168.1.5以外を使用したい場合はPCのIPを必ず覚えておいてください。 ここで192.168.1.5に変更したのは、MID-360が初期値でこのアドレスに送信しているからです。MID-360の送信先は変更できます。

この画面のように手動設定を入力する

つぎにMID-360のIPアドレスを確認します。 MID-360本体のケーブルの根本にQRコードがあります。 この下に書かれている数字の下2桁を覚えましょう。 この下2桁の数字に100足した数がMID-360の4桁目のIPとなります。 これは個体ごとにすべて異なる数字です。 例えば255と書かれていたら、551をくっつけて155。つまり、192.168.1.155となります。

PCのIPアドレスとMID-360のIPアドレスがわかったら、設定をコンフィグファイルに書き込みます。 コンフィグファイルをはlivox_ros_driver2直下にconfigディレクトリ内にありますのでそのファイルを開きます。

cd ~/install/livox_ws/livox_ros_driver2/config
ls

ここでは、LIVOX製品のそれぞれの設定のjsonファイルがあります。 おそらく、同じ手順で他の製品も設定できそうです(手元にないので実行したことはありませんが)。

今回はMID-360なので、 MID360_config.jsonを開きます。

gedit MID360_config.json

ファイルを開いたら、MID-360のlidar_configsip の番号を先ほど覚えた番号に書き換えて保存しましょう。

"lidar_configs" : [
  {
    "ip" : "192.168.1.12",  # この行を
    "ip" : "192.168.1.155",  # このように変更

もし、PCのIPを変えている人は(例えば 192.168.1.100 など)host_net_info のIPを全て変えます。 元は 192.168.1.5に設定しているので、この番号の箇所をすべて現在設定されているPCのIPに書き換えて保存しましょう。

    "host_net_info" : {
      "cmd_data_ip" : "192.168.1.5", # 変更
      "cmd_data_port": 56101,
      "push_msg_ip": "192.168.1.5", # 変更
      "push_msg_port": 56201,
      "point_data_ip": "192.168.1.5", # 変更
      "point_data_port": 56301,
      "imu_data_ip" : "192.168.1.5", # 変更
      "imu_data_port": 56401,
      "log_data_ip" : "",
      "log_data_port": 56501

設定ファイルを書き換えたら、もう一度ビルドしましょう。 ビルドスクリプトが走ることで、このコンフィグファイルが必要な場所に正確にコピーされます (もし複数のMID-360を操作していてIPを変えるだけなら実行されている場所にいって書き換えるだけでもOKです)。

cd ~/install/livox_ws/src/livox_ros_driver2
./build humble
source ~/.bashrc

ようやく、実行するまでの準備ができました。実行してみましょう。

ros2 launch livox_ros_driver2 rviz_MID360_launch.py

お疲れ様でした。Rviz2が立ち上がり、MID-360の点群が表示されているかと思います。

応用しよう

これで、安価で実用的な点群データが手に入ります。 Abudoriが使ってみたところ、SLAMや自己位置推定、障害物認識、地面判定など様々なアプリケーションで使うことができました。 IMUも内蔵しているため、工夫によってはこのセンサ一発で自律走行の全てのセンシングが完結します。

次回は、応用編としてハーネスの自作方法を紹介したいです。 公式のハーネスは売り切れている上に高価ですので、自作をお勧めします。 LiDARを破壊せず、自分が欲しい長さでスマートに配線できるようになる方法を紹介する予定です。

すぐにMID-360を試したいよ、ケーブル買いたいけど時間がないよって方は、商社の光響さんがお勧めです。 Abudoriは数台購入していますが、対応がすごく早く、そしてDJIストアより安いです。 個人でも購入できるそうなので、以下のXアカウントまでお問い合わせください。

それでは、楽しいLiDARライフを〜