本記事は、Livox MID 360を製品組み込みやROS/ROS2で使うエンジニアを対象に、IP設定をPythonで自動化して“手設定と再設定の手戻り”をなくす方法を解説します。
MID
360は出荷時に個体ごとでIPが異なるため、現場のネットワーク設計と合わないとPCが見つけられず、最初の接続からつまずきます。
現場では環境に合わせてIPを変更・固定する必要があります。ところが、GUIでの手設定やROSドライバーの再設定は作業負荷が高く、ミスも起こりがちです。
本稿はPythonで“検出→設定→再接続”を自動化し、初期設定を数十秒で終える手順を示します。
GUIを介さないため、組み立て工程や複数台の立上げで“人手のIP書き換え”を排し、設定時間とミスをまとめて削減します。
対象はWindows
11。Linuxではnetsh相当をip addr/nmcliに置き換えるだけで同じ流れで動作します。
出荷時IPの仕組みとアドレス初期値の仕様
Livox MID-360の出荷時IPは“シリアル番号の下2桁を末尾に付与”するルールです。末尾が44なら192.168.1.144という具合です。
例えば、シリアルNo. 47MDMCB0030444であれば、IPアドレスは 192.168.1.144
となります。
最初の接続にはPC側のIPも同じセグメントに合わせる必要があります。合わせていないとLiDARを検出できず、IP変更の画面にすら到達しません。
一般的にはLivox Viewer 2でGUI変更しますが、手数が多く台数が増えると負荷になります。
ROS/ROS2のドライバーでは設定ファイルのLiDAR IPも書き換えが必要で、手作業だと漏れが起きやすくなります。
台数が増えるほど、GUIの書き換えと設定ファイル修正の両方でミスと手戻りが増えます。
本稿のスクリプトは“検出→設定→再起動→PC側IP切替→再接続”を通しで自動化します。
従来フロー vs 自動化フロー
- GUI:グラフィカル・ユーザ・インターフェイス
- configファイル:ソフトウェアやシステムの動作、環境、パラメーターなどを定義・指定するためのファイル
PythonでIPアドレスを自動変更する全体フロー
以下のフロー図は、PCとMID 360の間で行う通信と設定の全体像です。
Broadcastでデバイスを検出し、IP設定コマンド送信とACK確認、リブート、PC側IP変更、再接続までの流れを一括で自動化します。
フローチャートの内容を、処理順に整理すると以下の通りです。
1.Broadcast送信(PC→LiDAR)
PCは host_ip を送信元に UDP 56000番ポートでBroadcastコマンドを送信します(br_send())
2.Broadcast受信(LiDAR→PC)
PCは UDP 56000でLiDARからの応答を受信し、デバイスタイプ・シリアル番号・LiDAR IP を取得します(br_recv())。
受信後に コマンドID
/ タイプの一致 を確認し、CRC16 / CRC32 を検証します。デバイスタイプがMID‑360(h’09)以外やCRC不一致の場合、本スクリプトはエラーとして処理を中断します。
3.IP設定コマンド送信(PC→LiDAR)
LiDARの新しい IP / サブネットマスク / ゲートウェイ をバイト列化(16進表現)し、ヘッダと合わせて CRC16 / CRC32 を生成してUDP 56100番ポートへ送信します(cf_send())
4.ACK受信(設定結果の確認)
PCは UDP 56100でACKを受信し、コマンドID(h’0100)/ タイプ(h’01)/ CRC を再検証します。
1秒タイムアウトや不一致なら エラー終了(cf_recv())
5.リブートコマンド送信 → ACK受信
変更を反映させるため、LiDARに リブート(コマンドID h’0200) を送信しACKを確認します(rb_send() / rb_recv())
6.PC側IPアドレスの自動変更
ルーティング整合のため、PCのネットワークアダプター(pc_adopter)を netsh コマンドで host_new_ip / new_subnet_mask / new_gate_way
に変更します(set_pc_ip_address())
7.15秒待機 → 再Broadcast → 再接続確認
LiDAR再起動でリンクが安定するまで15秒待機し、新しいPC のIPから再度Broadcastを送信・受信し、変更後の LiDAR IPとシリアル番号 を表示して終了します(mid_360()内の終盤処理)
- Broadcast:コンピューターネットワークにおいて、特定の情報やデータをネットワーク内のすべての端末 (ノード) に同時に送信する通信方式
- UDP(User Datagram Protocol):高速なデータ転送を重視し、接続の確立やデータ到達確認を行わない「コネクションレス型」の通信プロトコル
- CRC(Cyclic Redundancy Check):ネットワーク通信などで送受信されるデータが正しいかを確認する技術で、データが破損していないかを検出し、CRC16は16bitのチェックサムを生成、CRC32は32bitのチェックサムを生成
スクリプトの構成と前提パラメーター
Pythonスクリプトの実行方法
まずは、以下の設定をPythonスクリプト内に設定します。
- pc_adopter:PC側のイーサネットアダプター名(コントロール パネル¥ネットワークとインターネット¥ネットワーク接続 より接続するアダプター名を確認)
- host_ip:現在のPC側IPアドレス(192.168.1.100)
- host_new_ip:変更後のPC側IPアドレス(192.168.2.100)
- lidar_new_ip :変更後のLiDARのIPアドレス(192.168.2.244)
- new_subnet_mask:変更後のLiDARのサブネットマスク(255.255.255.0)
- new_gate_way:変更後のLiDARのゲートウェイ(192.168.2.1)
上記を設定後、コマンドプロンプト上でpythonプログラムのあるディレクトリに移動して実行します。
IPアドレス変更の実行結果と確認方法
以下、実行結果の画面です。
確認環境
- LiDAR:Livox MID-360
- OS:Windows 11
- Python:3.11.9
C:\XXXX>python mid_360.py
# Broadcast #
***** LiDAR IP address = 192.168.1.144 : Serial number = 47MDMCB0030444 *****
# Config #
# Reboot #
# PC ip address change #
..... Sleep 15s .....
# Broadcast #
***** LiDAR IP address = 192.168.2.144 : Serial number = 47MDMCB0030444 *****
C:XXXX>
LiDARのIPアドレスが、192.168.1.144 → 192.168.2.144に変更されたことが分かります。(ログ出力)
また、PC側も192.168.1.100 → 192.168.2.100へ変更され、LiDARと通信が可能となっています。
念のため、LivoxViewer2でも確認しましょう。
-
変更前
-
変更後
確かに、LiDARのIPアドレスが192.168.2.144に変更されたことが確認できます。
また、PC側IPアドレスの変更部分を修正することにより、Linux PC上でも動作可能です。
- PCとLiDARは1対1のみで動作可能です。
- 実行には管理者権限が必要です。
- Pythonのファイアウォール通信を許可してください。
- 本スクリプトはLivox公式サポート外の方法です。
まとめ
本稿のPython化で、出荷時の個体別IPでもGUI操作なしで“検出→設定→再接続”を自動化できました。複数台のセットアップや量産前の初期設定で人手作業を外し、ROS/ROS2側の再設定も最小化できます。Windows前提でLinux移植も容易なため、開発と保守の両現場で導入効果が出ます。
関連情報
免責事項
本スクリプトはテスト用として動作確認しています。そのため、不具合などの責任は一切負いかねます。
お問い合わせ
関連技術コラム
関連製品情報

新LTspice完全ガイド①
LTspiceとは、アナログ・デバイセズが無償で提供するSPICEシミュレータです。バージョンアップしたLTspice24の変更点や性能を解説します。
- Analog Devices, Inc.
- NEXT Mobility

新 LTspice②SPICEモデル使用方法
LTspiceは、アナログ・デバイセズが無償で提供するSPICEシミュレータです。デモ回路の入手方法や各モデルを紹介します。
- Analog Devices, Inc.
- NEXT Mobility

新LTspice③パラメトリック解析、公差解析
LTspiceはアナログ・デバイセズ提供の無償SPICEシミュレーターです。パラメトリック解析や公差解析の手法、ドットコマンドの使い方を紹介します。
- Analog Devices, Inc.
- NEXT Mobility







