🙆

北陽 UTM-30LXをROS2 Humbleで動かす

2024/12/30に公開

概要

この記事では、北陽製のレーザースキャナUTM-30LXをROS2 Humble環境で動作させる手順を説明します。また、UTM-30LXのUSB接続時にデバイス名を固定し、書込権限を自動的に付与する方法についても解説します。UTM-30LXの詳細については、公式サイトをご覧ください。

この手順は、以下のQiitaの記事を参考にしつつ、筆者の解釈でまとめたものです

https://qiita.com/zakutakumi/items/1cfd269de6459ce05031

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ルールを使用してデバイス名を固定し、権限を自動で付与する設定を行います。

3.1 lsusbコマンドでUSBデバイスを確認

まず、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のシリアル番号が表示されます。

3.3 udevルールファイルの作成

次に、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というシンボリックリンクが作成され、書込権限が付与されます。

3.4 udevルールのリロード

最後に、作成した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

参考

https://www.robotech-note.com/entry/2018/07/23/ubuntuでUSBシリアルデバイス(/dev/ttyACM0等)接続時に自動で書

Nexis-R

Discussion