SMSL Point Cloud Processing Toolkit
自動運転やロボティクスで不可欠な点群処理機能をパッケージ化しています。フィルタリングから特徴量抽出まで、RTMaps 4環境で動作する包括的な三次元点群処理コンポーネント群を提供します。特に水平回転式LiDARのリング構造を考慮した効率的なアルゴリズムにより、汎用的な非構造点群処理に比べ、高速かつ高精度な認識・推定が可能です。
SMSL Point Cloud Processing Toolkitは、PCLなどのサードパーティー製の点群処理ライブラリを使用しておらず、外部ライブラリのバージョン依存性が低いと言えます。
SMSL Point Cloud Processing Toolkitは、鈴鹿経営科学研究所の有償IPであり、使用者の方からの機能拡張のご相談を受け付けております。
ご購入方法
SMSL Point Cloud Processing Toolkitは現在予約受付中であり、購入や価格のお問い合わせは、お問い合わせフォームから受け付けています。
また、RTMaps AI storeから購入いただくことも可能となる予定です。
提供コンポーネントリスト
ダウンサンプリング
pc_downsample_cart
- 直交座標系の点群を効率的に削減します。
- index、voxel、voxel-centroidの3つのサンプリングモードをサポートしています。
pc_downsample_sph
- 球座標系の点群をダウンサンプリングします。
- スキャニングLiDARのデータ量削減に効果を発揮し、範囲フィルタ機能も内蔵しています。
pc_downsample_cyl
- 円筒座標系の点群をダウンサンプリングします。
- 複数の高さに設置された2D LiDARシステムなどの信号処理に使用します。
フォーマット変換
pc_coordinate_cart2sph
- 直交座標(X, Y, Z)から球座標(Azimuth, Elevation, Radius)へ変換します。
- 最小半径閾値によるゼロ点出力やNaN変換機能を備えています。
pc_coordinate_sph2cart
- 球座標から直交座標へ変換します。
- 入力半径が閾値以下のデータをゼロまたはNaNとして処理できます。
pc_coordinate_cart2cyl
- 直交座標から円筒座標(Radius, Azimuth, Elevation)へ変換します。
pc_coordinate_cyl2cart
- 円筒座標から直交座標へ変換します。
Pc_formatter_oneline2array
- ベクトル形式をMATLAB等の配列形式(整理された点群)に変換します。
- 垂直チャンネル数や最大掃引点数に基づいた整形を実行します。
pc_formatter_array2oneline
- 配列形式の点群を1行のベクトル形式に変換します。
pc_axis_separator
- 点群信号からX, Y, Z, iの各次元を個別に抽出します。
rings_transpose
- 点群の並び順を「垂直優先」から「リング優先」に転置します。
- 本パッケージのリングベース処理コンポーネントへの接続に必須となります。
rings_separator
- LiDARの各リングごとの点群信号を個別に抽出します。
array_zero2nan
- 点群内のゼロ値をNaNに変換し、レンダリング負荷を軽減します。
LiDAR ジオメトリ & オドメトリ
rings_features_estimation
- 法線やエッジ特徴を推定し、法線ベースの地面分離を実行します。
- 法線マップやエッジマップを画像(IplImage)として出力できます。
rings_pose_estimation_icp
- リング構造を利用した高速ICP(terative Closest Point)アルゴリズムにより、自己の三次元ポーズを推定します。
rings_pose_estimation_p2plane
- Point-to-Planeアルゴリズムを用いて高精度に自己位置推定します。
rings_pose_estimation_extLOAM
- 拡張LOAMアルゴリズムを用いて、法線・エッジ特徴により自己の三次元ポーズを推定します。
rings_ground_estimation_cyl
- 円筒座標系およびリング構造を利用して、幾何学的に地面を推定します。
pc_pose_estimation_icp
- 非構造点群(汎用点群)に対して、ICPアルゴリズムで自己の三次元ポーズを推定します。
pc_pose_estimation_ndt
- 非構造点群(汎用点群)に対して、Normal distributions transform(NDT)アルゴリズムで自己の三次元ポーズを推定します。
pc_egomotion_correction
- 自己車両の移動、回転(エゴモーション)に伴う点群の歪みを補正します。
ポーズ処理
pose6D_to_matrix
- 6要素のポーズベクトルをポーズ変換行列(4x4等)に変換します。
poseMatrix_to_6D
- ポーズ変換行列を6要素のポーズベクトルに変換します。
pose6D_accumulator
- 相対ポーズを累積し、原点からの絶対ポーズを算出します。
フィルタリング
pc_range_filter
- 三種類の座標系で点群の範囲フィルタリングします。
pc_neighbor_removal_filter
- 周囲環境把握に不要な原点近傍の点を除去します。
pc_outlier_removal_filter
- 外れ点を幾何学的、または統計的に除去します。
可視化
rings_depth2image
- リング構造の距離データを深度画像に変換します。
オブジェクト認識、地面推定などに活用できます。
rings_intensity2image
- リング構造の反射強度データを画像形式で可視化します。
地面の白線検出などに活用できます。
rings_height2image
- リング構造の点群の高さ情報を画像形式で可視化します。
高さ画像に基づく地面推定などに活用できます。
LiDAR 特有の処理
Velodyne_pc_outlier_removal_filter
- Velodyne製LiDARに特化した、外れ値除去フィルタとして機能します。
Velodyne_pc_elevation_sorting
- Velodyneデータの仰角に基づいてソートします。可視化の前処理として必要です。
rings_pc_interpolation
- リング構造の仰角方向に沿って、線形補間を実行します。平面検出に有効です。
hesai_pc_azimuth_correct
- Hesai製LiDARの方位角の格納順を補正します。可視化の前処理として必要です。
ソフトウェア仕様
| パッケージ名 | Point_Cloud_Processing_Tookit.pck |
|---|---|
| バージョン | 1.0 |
| 対応OS | Windows 10/11 (64bit) / Ubuntu 24.04 LTS (64bit) |
| 対応RTMapsバージョン | RTMaps 4.9.2 以降 |
| 提供物 | パッケージ本体(.pck)、ユーザーマニュアル(PDF)、サンプルダイヤグラム(.rtd) |
デモ機能
本パッケージには、導入後すぐに動作を確認できる以下のデモが同梱されています。
- rings_pose_estimation_demo: リング構造を活用した高速ICPアルゴリズム等により、リアルタイムで自己位置推定する例。
- generic_pc_pose_estimation_demo: 非構造点群(汎用点群)に対して、ICPやNDTを用いたポーズ推定と地面分離の例。
- rings_pc_interpolation_imaging_demo: リング構造の仰角の補完処理といくつかの可視化の例。
- Hesai_PanderX128_imaging_demo: Hesai社製LiDAR特有の補正処理と可視化の例。
- pc_formatconverter_demo: 直交・球・円筒の各座標変換や、配列形式へのフォーマット変換の例。