Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

演習をwindows10or11上のWSL2(Ubuntu20.04)で行う場合のUSB機器の(簡易的な)利用方法 #439

Open
Masanori-Konishi opened this issue Nov 23, 2023 · 1 comment

Comments

@Masanori-Konishi
Copy link

Masanori-Konishi commented Nov 23, 2023

動作確認した環境

  • windows:windows10 version 22H2 (OS build 19045.3693)
  • WSL2
    • ubuntu20.04
    • ROS:noetic
    • その他:演習の環境構築方法に従う(ただし$ rosrun kobuki_ftdi create_udev_rules以外)

概要

  • windows10or11、WSL2(ubuntu20)、ROS noeticの環境において演習を行う際に、usbipd-winというツールを使って簡易的に(WSLのlinuxカーネルのカスタムビルドを行わず)USB機器をWSL側で利用できるようにする。
  • 動作確認結果
    • OK:turtlebot、dxl-arm、Arduino nano
    • NG:kinect、USB camera
  • USBカメラも使いたい場合
    • この記事に従って Windows11でWSLのlinuxカーネルのカスタムビルドを行う(windows10で動作するかは不明)
    • USBカメラは使えるがkinectは使えない(らしい)

USB機器の利用方法

トラブルシューティング

$ roslaunch turtlebot_bringup minimal.launchなどを実行するときよく見るエラー

  • [ WARN] [1700737896.775313084]: Kobuki : device does not (yet) available, is the usb connected?
    • windows側でusbipd wsl attachをしていない
      • 次節のチュートリアルを参考にwindows側でusbipd wsl attachを行う
    • WSL(ubuntu)側で$ rosrun kobuki_ftdi create_udev_rulesがうまくいっていない
      • $ roslaunch turtlebot_bringup minimal.launch serialport:=/dev/ttyUSB0のように明示的にserialportを指定する
  • [ERROR] [1700742202.371375304]: Kobuki : initialisation failed [/mobile_base].と[ERROR] [1700742202.371435405]: Kobuki : could not initialise! Please restart.が同時に出る
    • 指定しているserialportに権限がない
      • $ sudo chmod 777 /dev/ttyUSB0などで権限を与える

チュートリアル:WSL2でturtlebot実機をPCにつないで$ roslaunch turtlebot_bringup minimal.launchしバンパーの値をrostopic echoで確認するまでの流れ

以下ではwindowsとubuntu(WSL)の端末のコマンドをそれぞれ>command$commandで表す

最初の1回だけ実行する手順

  1. 前節に従ってwindowsにusbipd-winをインストール
  2. 演習資料に従って環境構築する
  3. 演習資料に従って$ rosrun kobuki_ftdi create_udev_rules を実行するが恐らく失敗する
  4. このため、roslaunchを実行する時はroslaunch turtlebot_bringup minimal.launch serialport:=/dev/ttyUSB0などのように明示的にturtlebotのシリアルポートを指定する

USBを抜き差しするたびに行う手順(USBを抜いた状態からスタート)

2.windows側で行う操作

  1. windows側でPowershellなどの端末を管理者権限で開く
  2. >usbipd wsl list (windows側で接続されている機器のリスト)
  3. turtlebotのUSBをPCに接続
  4. もう一度>usbipd wsl list して増えたもののBUSID(4-1など)を確認
  5. 上で確かめたBUSIDで>usbipd wsl attach --busid BUSIDを実行
    -WSLに認識されて/dev以下に/dev/ttyUSB0などの名前で見えるようになる
    -もう一度>usbipd wsl list するとSTATEがNot attachedからAttached - WSLという表示になっている
    1.WSL(ubuntu)側で行う操作
  6. $ ls /devでturtlebotが認識されているか確認する(ttyUSB0などの名前になっている)
  7. $ sudo chmod 777 /dev/ttyUSB0としてturtlebotに権限を与える
  8. $ roslaunch turtlebot_bringup minimal.launch serialport:=/dev/ttyUSB0
  9. 別端末で$ rostopic echo /mobile_base/events/bumperとしてトピックを確認
  10. turtlebotのバンパーをカチカチ押してみる
@k-okada
Copy link
Member

k-okada commented Nov 24, 2023

USBカメラは使えるがkinectは使えない(らしい)

のkinectは使えない、が僕のコメントがソースだったら、「使えなくてもしょうがない、万が一動いたらラッキー」程度の情報です。誰か是非試してみてください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants