【ROS2】LiDARで取得したlivox独自形式データをPointCloud2形式に変換してみた

スポンサーリンク

Livox 3D LiDARで困ったのは、取得する点群情報のフォーマットをどうするか。
livox独自フォーマットなら、FAST_LIOなどで使えるが、rviz2では表示できない。
PointCloud2フォーマットだと、rviz2では表示できるけど、FAST_LIOで使えない。
両方扱えると嬉しいので、livox独自フォーマットからPointCloud2フォーマットにリアルタイム変換してみました。

環境

PC: TRIGKEY Green G5
OS: Ubuntu 22.04.3
ROS2 : Humble
LiDAR: Livox Mid-360
livox_ros_driver2: ユーザーによる修正版 (公式版でも問題ないはず。)

事前確認

livox_ros_driver2を起動して、/livox/lidar(livox独自フォーマット)の点群情報を発行。

$ source ~/ros2_ws/install/setup.bash
$ ros2 launch livox_ros_driver2 msg_MID360_launch.py 


ビルドと実行手順

ワークスペースが~/ros2_wsの場合の例

$ cd ~/ros2_ws/src
$ git clone https://github.com/porizou/livox_to_pointcloud2.git
$ cd ~/ros2_ws
$ colcon build --symlink-install
$ source ~/ros2_ws/install/local_setup.bash
$ ros2 run livox_to_pointcloud2 livox_to_pointcloud2_node  --ros-args -r /livox_pointcloud:=/livox/lidar

これで、/livox/lidar(livox独自フォーマット)を発行すると、/converted_pointcloud2(PointCloud2フォーマット)を発行してくれる。

rviz2でのPointCloud2表示と注意点

rviz2のGlobal Options -> Fixed Frameのデフォルトはmap。
LiDARで出力しているフレームはlivox_frame。

rviz2には表示の基準となるFixed Frame設定がある。
このFixed Frameと表示したいフレームの関連がわからないと表示できないので注意が必要。
解決方法は複数あるけど、手っ取り早くriz2のFixed Frameをlivox_frameに設定。

あとは、topic /converted_pointcloud2 を表示するように設定。
具体的にはAdd > by Topics > PointCloud2のtopicを指定。



無事rviz2で点群を表示できた。


リンク

livox_to_pointcloud2
便利なパッケージを公開してくれているおかげで、簡単に点群のフォーマットを変換することができました。感謝。
sensor_msgs/PointCloud2 Message