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