背景
MID360とは、横360度、縦52 ~ -7度の点群を取れるLidar(レーザー距離測定装置)です。ドローンで有名なDJIの Open innovation program を通して出来たLivoxという会社が作っています。
前回ネットワークの設定を施してpingを通しました。
今回はLivoxのドライバやros2のプログラムを動かすときに詰まったことを共有します。
使ったもの
- Ubuntu22.04にros2 humbleをインストールしたノートPC
- MID360
- Livox 3線式航空コネクタ
何とケーブルが別売りです - USB 有線LANアダプタ
amazonで買いました - 12V DC電源
電源です。
MID360は9から27Vの入力で動くので、24Vでも良いです。 - DCジャックスクリュー端子台
はんだ付けせず、ねじ留めでDCジャック対応ケーブルにできる変換装置です - ワイヤストリッパー(ニッパーやハサミでも可)とねじ回し
ケーブルの被覆を向いて端子台を固定します。
接続
MID360にケーブルを繋ぎ、12V電源と通信相手を接続します。12Vを繋いでも動かないことがありますが、その場合は一度12Vを外して繋ぎ直すと動きます。
電源の出力を上回る突入電流を要求し、不足したら起動が失敗することがあるのだと思います。
前回の記事を参考にpingを通してください
pingでMID360を認識できた環境を使います。LIVOX MID360にubuntuからUSB有線LANドングル経由でpingを通す
この記事の接続設定はこちらです
接続元のノートPC 192.168.1.5
接続先のLidar MID360: 192.168.1.168
Livox SDK2をインストール
記事を書いている時点ではlivox_ros_driver2を動かすにはLivox SDK2が要るので、まずはLivox SDK2をインストールします。手順は公式のREADMEを参照にしました。
gitprojectsの中にSDKのコードを配置してビルドしてインストールするコマンドを共有します。
sudo apt install git cmake
mkdir ~/gitprojects
cd ~/gitprojects
git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd Livox-SDK2
mkdir build
cd build
cmake .. && make
sudo make install
公式の手順では「make -j」でmakeしていますが、利用しているPCだとメモリが不足するのかmakeが落ちてビルド出来なかった(その後ビルドを試みても最後の統合処理でエラーになる)ので「-j」無しで実施しました
livox ros driver2をビルド
livox_ros_driver2のREADMEに従いダウンロードしてビルドします。Livox SDK2は先程でインストールしたので飛ばします。
ダウンロードしてビルドしたコマンドを共有します。
cd ~/ros2/humble/ws_livox
git clone https://github.com/Livox-SDK/livox_ros_driver2.git
cd ~/ros2/humble/ws_livox/livox_ros_driver2
source /opt/ros/humble/setup.sh
./build.sh humble
ビルドが済んだらsetupファイルを読み込みます。
この読み込みはros2を起動する度に必要です。
source ~/ros2/humble/install/setup.bash
livox ros driver2の設定ファイルの接続元と接続先のIPを変更
ros driver2のビルドで生成されるinstallフォルダ内にpoint cloudプログラムの設定ファイルが出来ます。~/ros2/humble/install/livox_ros_driver2/share/livox_ros_driver2/config/MID360_config.json
{
"lidar_summary_info" : {
"lidar_type": 8
},
"MID360": {
"lidar_net_info" : {
"cmd_data_port": 56100,
"push_msg_port": 56200,
"point_data_port": 56300,
"imu_data_port": 56400,
"log_data_port": 56500
},
"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
}
},
"lidar_configs" : [
{
"ip" : "192.168.1.12",
"pcl_data_type" : 1,
"pattern_mode" : 0,
"extrinsic_parameter" : {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
}
]
}
この設定ファイルには接続元(この記事ではノートPC)のIPが192.168.5として、接続先LidarのIPが192.168.12として記載されいるため、point cloudを意図通りに表示するには環境に合わせて書換えが必要です。
この記事を試している環境ではLidarを接続している192.168.1.*のネットワークはPCが192.168.1.5、Lidarが192.168.1.168なので、下記のように書換えます。
~/ros2/humble/install/livox_ros_driver2/share/livox_ros_driver2/config/MID360_config.json の書換え内容
「192.168.1.5」の4箇所は、PCのIPが「192.168.1.5」なのでそのまま維持(それ以外なら書換えててください)
「192.168.1.12」の1箇所はLidarに合わせて「192.168.1.168」に変更
書換えた設定ファイルを利用してpoint cloudを表示
下記コマンドでros2とlivox_ros_driver2を有効化してMID360のpoint cloudを表示できます。source /opt/ros/humble/setup.sh
source ~/ros2/humble/install/setup.bash
ros2 launch livox_ros_driver2 rviz_MID360_launch.py
おわり
前回pingを通したMID360のpoint cloudをros2を利用して表示できました。Livox SDKのmakeで「-j」を付けてビルドするとPCによってはビルドが失敗することと、point cloud実施のためにPCとLidarのIPを設定ファイルに反映させる必要があったのが詰まりどころでした。
参考
ライブラリのリポジトリです。Livox-SDK2
livox_ros_driver2
livoxのプログラム構成が変わってインストールコマンドは古くなって動きませんでしたが、インストールより後の書換えやコマンドは参考になった記事です。
Livox Mid-360をROS1/ROS2で動かしてみた
0 件のコメント :
コメントを投稿