マイコンとURGをUSB接続してシリアル通信をする際に、実行権限(パーミッション)とポート名(/dev/ttyACM0等)が必要になってくると思います。
このようにシリアルデバイスが複数ある場合、デバイスは接続された順番にポート名が割り当てられるため、デバイスが複数接続された場合に毎回シリアルの設定を変えなければいけません。
また、シリアル通信は実行権限を付与してやる必要があります。
デバイス接続時に毎回設定する設定が面倒なのでそれに対応していきます。
設定方法
マイコン : STM Nucleo F446RE
LiDAR : Hokuyo UTM-30lx
まずマイコンのデバイス情報を調べます。下記のコマンドを実行します。
dmesg
すると、ログの下の方に接続したデバイスのプロダクト名が出てくるので、そのデバイス名の上にある[idVendor][idProduct][SerialNumber]の3つを記録します。
次に設定ファイルを作成します。
下記コマンドを実行してルート権限でテキストを開きます。
sudo vim /etc/udev/rules.d/99-serial.rules
さきほど調べた3つの番号と、設定したいポート名、実行権限が以下の場合は
以下のように設定して保存します。
KERNEL=="ttyACM*", ATTRS{idVendor}=="15d1", ATTRS{idProduct}=="0000", SYMLINK+="ttyACM_URG", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", ATTRS{serial}=="**3**", SYMLINK+="ttyACM_STM", MODE="0666"
※ URG側はserial番号を使用しません。
これで設定完了です。
リロードする方法もあるのですが、確実のため再起動してください。
確認
デバイスを接続して以下のコマンドを打ちます。
reo@reo-desktop:~$ ls -la /dev/ttyACM_STM
lrwxrwxrwx 1 root root 7 1月 9 18:36 /dev/ttyACM_STM -> ttyACM1
reo@reo-desktop:~$ ls -la /dev/ttyACM_URG
lrwxrwxrwx 1 root root 7 1月 9 18:36 /dev/ttyACM_URG -> ttyACM0
このように出力されれば設定成功です。