北陽 UTM-30LXをROS2 Humbleで動かす
概要
この記事では、北陽製のレーザースキャナUTM-30LXをROS2 Humble環境で動作させる手順を説明します。また、UTM-30LXのUSB接続時にデバイス名を固定し、書込権限を自動的に付与する方法についても解説します。UTM-30LXの詳細については、公式サイトをご覧ください。
この手順は、以下のQiitaの記事を参考にしつつ、筆者の解釈でまとめたものです
1. urg_nodeのインストール
まず、UTM-30LXをROS2 Humbleで動作させるために必要なurg_node
をインストールします。これは、北陽のレーザースキャナをROSで扱うためのパッケージです。
sudo apt update
sudo apt install ros-humble-urg-node
これでurg_node
がインストールされ、UTM-30LXのデータをROSトピックとして取得できるようになります。
2. 12Vの外部電源を給電する配線の作成
UTM-30LXは、USB接続だけでは動作しません。外部から12Vの電源を供給する必要があります。UTM-30LXの公式サイトには、各ケーブルの色に対応する信号が記載されているので、これに従って適切な配線を行います。
ケーブルの配線図
公式サイトで提供されている回路図を参考に、適切な電源ケーブルを作成してください。筆者はDCジャックを使用して、UTM-30LXを簡単に動作させられるようにしました。
詳細な配線情報は、こちらの回路図をご覧ください。
3. USB接続時に自動で書込権限を付与し、デバイス名を固定する方法
UbuntuでUSBシリアルデバイスを使用する際、デフォルトでは書込・実行権限が付与されないため、毎回手動で権限を設定する必要があります。これを自動化するために、udev
ルールを使用してデバイス名を固定し、権限を自動で付与する設定を行います。
lsusb
コマンドでUSBデバイスを確認
3.1 まず、lsusb
コマンドを使用して、UTM-30LXが接続されていることを確認します。以下のコマンドをターミナルで実行してください。
lsusb
次のような出力が得られるはずです。
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
:
Bus 003 Device 012: ID 15d1:0000 Hokuyo Data Flex for USB URG-Series USB Driver
:
この例では、UTM-30LXのUSBデバイスがID 15d1:0000
として認識されています。
3.2 シリアル番号を取得
次に、デバイスのシリアル番号を取得します。これにより、udevルールを作成する際に特定のデバイスを識別することができます。
sudo lsusb -d 15d1:0000 -v | grep iSerial
このコマンドを実行すると、UTM-30LXのシリアル番号が表示されます。
udev
ルールファイルの作成
3.3 次に、udev
ルールファイルを作成して、USB接続時にデバイス名を固定し、書込権限を付与します。
sudo nano /etc/udev/rules.d/99-hokuyo-devices.rules
以下の内容をファイルに記載してください。
# ttyUSB-utm-30lx
SUBSYSTEM=="tty", ATTRS{idVendor}=="15d1", ATTRS{idProduct}=="0000", SYMLINK+="ttyUSB-utm-30lx", MODE="0666"
このルールにより、UTM-30LXが接続されると、自動的に/dev/ttyUSB-utm-30lx
というシンボリックリンクが作成され、書込権限が付与されます。
udev
ルールのリロード
3.4 最後に、作成したudev
ルールをリロードして有効化します。
sudo udevadm control --reload-rules
sudo udevadm trigger
これで、UTM-30LXが接続されるたびに、自動で書込権限が付与され、指定したデバイス名で認識されるようになります。
以上の手順に従うことで、北陽 UTM-30LXをROS2 Humble環境でスムーズに動作させることができます。また、USBデバイス名の固定化と書込権限の自動付与により、毎回の設定作業が不要となり、作業の効率が向上します。
4. urg_nodeを動かす
固定したデバイス名を使ってurg_nodeを起動します。
ros2 run urg_node urg_node_driver --ros-args -p serial_port:=/dev/ttyUSB-utm-30lx
参考
Discussion