近年、ロボティクスや自動運転、インフラ点検、セキュリティー分野などで3D LiDAR(Light Detection and Ranging)の活用が急速に広がっています。LiDARはレーザー光で周囲の形状や距離を高精度に計測し、ロボットや車両の「目」として不可欠なセンサーです。
ただし、1台のLiDARでは設置位置や視野角の制約から死角が生じ、検出範囲が限定される課題があります。屋内外で稼働する自律移動ロボット(AGV、AMR)では360度の障害物検知や自己位置推定が求められますが、単体では十分なカバーが難しいケースも少なくありません。
こうした課題を放置すると、障害物の見落としや通信トラブルによるデータロスなど、システムの信頼性低下につながります。そのため、複数台のLiDARを組み合わせる運用が注目されています。本コラムでは、Livox社の3D LiDAR「MID-360」を複数台制御するためのネットワーク設計、ROS2設定手順、トピック設計のポイントを、実例を交えて解説します。
MID-360製品概要
Livox MID-360
Livox MID-360は、360°×59°の広い視野角と最大20万点/秒の高密度点群出力を特長とする3D LiDARです。コンパクトな筐体ながら、屋内外の自律移動ロボットやAGV/AMR、インフラ点検など幅広い用途に対応可能です。
本コラムでは、MID-360の複数台運用に焦点を当て、ネットワーク構成やROS2での実装ポイントを解説します。
複数台制御の方式比較
複数台の3D LiDARを運用する際、ネットワーク構成はシステムの安定性や拡張性に大きく影響します。Livox MID-360を複数台接続する場合、主に以下の2つの方式が考えられます。
| 比較項目 | 方式A:同一ネットワーク(スイッチ) | 方式B:PC直結(NIC複数) |
|---|---|---|
| 通信の安定性 | △(帯域共有) | 〇(物理分離) |
| 拡張性 | 〇(台数追加容易) | △(NIC追加が必要) |
| 初期コスト | 〇(低コスト) | ×(高コスト) |
| 長時間・連続運用適正 | △(短時間・評価向き) | 〇(長時間・安定運用向き) |
制御方式の比較
方式A:スイッチ経由(同一ネットワーク)
PCと複数台のLiDARをネットワークスイッチで接続し、同一のIPセグメント上でデータをやり取りする方式です。構成がシンプルで拡張性が高く、開発や評価段階でよく利用されます。将来的にLiDARの台数を増やす場合も、スイッチに追加接続するだけで対応可能です。
メリット
- 構成が単純で管理しやすい
- 台数拡張が容易
- 初期コストが低い
注意点
- 帯域は共有されるため、台数が増えると通信負荷が高まる
- 長時間・高負荷運用時は安定性に注意が必要
方式B:PC直結(NIC複数)
PCに複数のNIC(ネットワークインターフェイスカード)を搭載し、それぞれのLiDARと1対1で直結する方式です。通信経路が物理的に分離されるため、帯域干渉やブロードキャストの影響を最小化でき、長時間稼働時 の安定性が求められる現場で採用されます。
メリット
- 通信の安定性が高い
- 帯域干渉やブロードキャストの影響を受けにくい
注意点
- NICの増設や設定が必要
- 構成がやや複雑になる
- 初期コストが高くなる場合がある
ROS2の基本
ROS2(Robot Operating System 2)は分散・リアルタイム通信基盤です。LiDARをROS2化すると、SLAM/自律走行/3Dマップ化をノード連携で構築できます。
Livox MID-360をROS2で利用する際の中心となるのが、Livox公式のROS2ドライバー livox_ros_driver2です。このドライバーは、LiDARからのUDPデータを受信し、ROS2トピックとして配信する役割を担います。
複数台構成に対応し、点群/IMUをROS2トピックで配信します。
Livox MID-360を複数台運用する際、ROS2環境での設定や運用にはいくつかのポイントがあります。ここでは、代表的なネットワーク構成ごとに、設定ファイル(JSON)の記述例や、multi_topicオプション、トピック命名規則、launchファイルの起動例について解説します。
方式A:同一ネットワーク(スイッチ経由)
ネットワーク構成例
この構成では、PCと2台のMID-360をスイッチ経由で同一ネットワークに接続し、各機器に固定IPアドレスを割り当てます。
スイッチによるLiDAR接続例
PC:192.168.1.50
LiDAR1:192.168.1.101
LiDAR2:192.168.1.102
サブネットマスク:255.255.255.0
MID360_config.jsonの設定例
方式Aでは、一つの設定ファイル(configファイル)に複数台分のLiDAR情報をまとめて記載できます。
{
"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.50",
"cmd_data_port": 56101,
"push_msg_ip": "192.168.1.50",
"push_msg_port": 56201,
"point_data_ip": "192.168.1.50",
"point_data_port": 56301,
"imu_data_ip": "192.168.1.50",
"imu_data_port": 56401,
"log_data_ip": "",
"log_data_port": 56501
}
},
"lidar_configs": [
{
"ip": "192.168.1.101",
"pcl_data_type": 1,
"pattern_mode": 0,
"extrinsic_parameter": {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
},
{
"ip": "192.168.1.102",
"pcl_data_type": 1,
"pattern_mode": 0,
"extrinsic_parameter": {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
}
]
}
起動方法と生成されるトピック名
この設定ファイルをuser_config_pathで指定し、multi_topic=1オプションを付けて起動します。
ros2 launch livox_ros_driver2 rviz_MID360_launch.py \
user_config_path:=/path/to/MID360_config.json \
multi_topic:=1
multi_topicの値によるトピック生成の違い
multi_topic=1
LiDARごとに個別のROS2トピックが生成され、個別処理できます。
例:/livox/lidar_192_168_1_101
/livox/lidar_192_168_1_102
multi_topic=0
すべてのLiDARのデータが単一トピックに統合されて出力され、まとめて処理したい場合に有効です。
例:/livox/lidar
| multi_topic=1の時のtopic名称ルールは以下となります。※remapは使用できません。 /livox/lidar_{LiDARのIPアドレス } |
方式B:PC直結(NIC×2)
ネットワーク構成例
この構成では、PCに2枚のNIC(ネットワークインターフェイスカード)を用意し、それぞれのNICをLiDARと直接接続します。
なお、NICを追加するだけでなく、最初から2つ以上のNIC(ポート)が搭載されたPCを用意する方法も有効です。
各NICとLiDARは異なるIPセグメントに設定する必要があります。
また方式Bはconfig構造が異なります(host_net_infoが配列)。
複数NICによるLiDAR接続構成図
PC/NIC1:192.168.1.50
PC/NIC2:192.168.2.50
LiDAR1:192.168.1.101
LiDAR2:192.168.2.101
サブネットマスク:255.255.255.0(両IPセグメントとも)
設定ファイル例
MID360_config1.json(LiDAR1用)
{
"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": [
{
"lidar_ip": [
"192.168.1.101"
],
"host_ip": "192.168.1.50",
"cmd_data_port": 56101,
"push_msg_port": 56201,
"point_data_port": 56301,
"imu_data_port": 56401,
"log_data_port": 56501
}
]
},
"lidar_configs": [
{
"ip": "192.168.1.101",
"pcl_data_type": 1,
"pattern_mode": 0,
"extrinsic_parameter": {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
}
]
}
MID360_config2.json(LiDAR2用)
{
"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": [
{
"lidar_ip": [
"192.168.2.101"
],
"host_ip": "192.168.2.50",
"cmd_data_port": 56101,
"push_msg_port": 56201,
"point_data_port": 56301,
"imu_data_port": 56401,
"log_data_port": 56501
}
]
},
"lidar_configs": [
{
"ip": "192.168.2.101",
"pcl_data_type": 1,
"pattern_mode": 0,
"extrinsic_parameter": {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
}
]
}
起動方法とトピック名
それぞれの設定ファイルを指定して、2つのlaunchファイルを個別に起動します。
ros2 launch livox_ros_driver2 rviz_MID360_launch.py \
user_config_path:=/path/to/MID360_config1.json \
multi_topic:=1
ros2 launch livox_ros_driver2 rviz_MID360_launch.py \
user_config_path:=/path/to/MID360_config2.json \
multi_topic:=1
multi_topic=1
LiDARごとに個別のROS2トピックが生成されますが、パターンBにおいてあまりメリットはないでしょう。
例:/livox/lidar_192_168_1_101
/livox/lidar_192_168_2_101
multi_topic=0
両方のLiDARデータが同じトピック(/livox/lidar)に統合されますが、remapでノード単位のトピック名分離が可能です。
例えば、以下のようにremapを指定することで、ノードごとにトピック名を分けて運用できます。
ros2 launch livox_ros_driver2 rviz_MID360_launch.py \
user_config_path:=/path/to/MID360_config1.json \
multi_topic:=0 \
--remap /livox/lidar:=/lidar1
ros2 launch livox_ros_driver2 rviz_MID360_launch.py \
user_config_path:=/path/to/MID360_config2.json \
multi_topic:=0 \
--remap /livox/lidar:=/lidar2
| このように、方式Bでは配信ノードが異なることより、multi_topic=0とremapの組み合わせ設定を施すことでトピック名称の重複回避と個別運用が可能です 。 |
まとめ
本コラムでは、Livox MID-360を複数台運用する際のネットワーク構成やROS2環境での設定・運用ポイントについて解説しました。
複数台の3D LiDARを組み合わせることで、死角の補完や検出連続性の向上、自己位置推定の安定化など、システム全体の信頼性と性能を大きく高めることが可能です。
ネットワーク構成については、開発・評価段階での柔軟な運用が可能な「スイッチ経由(同一ネットワーク)」方式と、長時間稼働時の安定性を重視した「PC直結(NIC複数)」方式の2つを紹介しました。
それぞれの方式にはメリット・注意点があり、用途や運用環境に応じて最適な構成を選択することが重要です。
また、ROS2環境での設定においては、multi_topicオプションやトピック命名規則、設定ファイルの記述方法など、複数台運用ならではのポイントを押さえることで、効率的かつ安定したシステム構築が可能となります。
今後も、ロボティクスや自動運転分野を中心に、3D LiDARの複数台運用ニーズはさらに拡大していくと考えられます。Livox MID-360は、その高いコストパフォーマンスと柔軟なネットワーク対応力により、さまざまな現場での活用が期待されます。
関連情報
免責事項
本システムはあくまでもデモ用として確認しています。そのため、不具合などの責任は一切負いかねます。
また、本記事の内容は、Livox公式ドライバー livox_ros_driver2 の推奨環境である ROS2 Humble(Ubuntu 22.04) を基準に記載しています。ROS2 Foxy(Ubuntu 20.04)でも動作可能ですが、検証はHumble環境で行っています。





