Jetson Xavier NXでXsensのデバイスが認識しない問題 ([Error] Xsens device not working @ Jetson Xavier NX)
JetsonだってXsensのIMUを使いたい
Jetson Xavier NXで自律移動システムを構成するときに,IMUとしてXsens社のMTi-30を使おうと思ったのですが,単にxsens_driverをaptでインストールするだけでは動かなかったのでメモをまとめます.
症状
fatal could not find proper mt device
と出てきてroslaunchしても値が取れません.lsusb
を叩くとデバイス自体は見えていますが/dev/ttyUSB0
は無いので,ドライバ周りが怪しそうです.
なぜ動かない?
そもそもなぜ動かないかを調べたところ,普段のUbuntuのカーネルには含まれているドライバがJetson向けイメージでは入っていないことが原因のようです.Xavier NXに限った話ではなく,AGX Xavierでも同じくXsensのデバイスが検出できない症例が起きており,TX1や2でもカーネルの都合でそのままでは動かないデバイスの記事も割とありました.ライセンス的な都合なのでしょうか.不便.
ないものは入れよう
ドライバがないなら入れれば良いじゃない,ということで自分でビルドしてカーネルに突っ込むことにしました.上記の症例やそこから参照されているページに沿って進めてみたのですが,xsens_mt.ko
が生成されずに困っていたところ,Xsens社のコミュニティページに良い感じの手順が載っていました.これに基づいて実際に叩いたコマンドを以下にまとめます.
sudo apt-get install libncurses5-dev
dmesg --follow
cd /usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/
sudo make modules_prepare
cd ~
git clone https://github.com/xsens/xsens_mt.git
cd xsens_mt/
make
sudo modprobe ./xsens_mt.ko
sudo depmod -a
sudo cp xsens_mt.ko /lib/modules/4.9.140-tegra/kernel/drivers/usb/serial/
sudo reboot now
rosstack profile
rospack profile
sudo depmod -a
sudo reboot now
何やかんや試行錯誤行き当たりばったりで試したログをそのまま貼っているので,冗長だったり足りない内容があるかもしれませんがとりあえずこれで動いたのでメモとして残しておきます.
参考サイト
- ROS.org [xsens_driver] : http://wiki.ros.org/xsens_driver
-
xavier cannot recognize xsens (Solved) : https://forums.developer.nvidia.com/t/xavier-cannot-recognize-xsens-solved/66673
- A guide to solve USB serial driver problems on TX2 : https://forums.developer.nvidia.com/t/a-guide-to-solve-usb-serial-driver-problems-on-tx2/60787#5254939
- Jetson NanoでMIDIを使うためにカーネルビルド : https://qiita.com/karaage0703/items/9bef6aeec9ad24f647c6