RaspberryPi pico wでmicro-ROSを動かす(Serial編)
前回までのあらすじ
Windows環境上でRaspberryPi pico wにmicro-ROSを組み込むことができた。
今回はmicro-ROSエージェントとの通信を試みる
ただし、エージェントとの通信ポートはソフト書き込み用ポートと兼用になるため、ちょっとややこしい
準備
micro-ROSエージェントはDockerで動作させるが、シリアルポートに接続するには、仮想マシンによるシリアルポート(USBモジュール)へのアクセスを許可する必要がある
参考
USBIPD-WINプロジェクトをインストール
Windowsパッケージマネージャ(winget)を使ってインストールできる
winget install --interactive --exact dorssel.usbipd-win
WSL(Ubuntu)をインストールする
WSL自体のセットアップは割愛する(量が多いので💦)
参考
![](https://assets.st-note.com/img/1705390944491-DRCibTpAmx.png?width=1200)
ここでは22.04.3 LTSをインストールした
![](https://assets.st-note.com/img/1705391629118-D1VBRfC3GH.png?width=1200)
アップデートも忘れずに
sudo apt update
sudo apt upgrade
![](https://assets.st-note.com/img/1705391757827-NnwOLolzVq.png?width=1200)
USBIPツールとハードウェアデータベースをインストールする
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
VScodeでプロジェクトを開く
同じシリアルポートを使うので、Linux側にアタッチする前にソフトを書きこんでおく。
![](https://assets.st-note.com/img/1705393018394-A93kav7FG0.png?width=1200)
USBデバイスを接続する
PowerShellを管理者モードで開き、usbipd listと入力すると一覧が表示される
![](https://assets.st-note.com/img/1705392217349-N9e7vVfnoW.png?width=1200)
BUSID1-6に割り当てられている
![](https://assets.st-note.com/img/1705392347196-fwbe4PSMUm.png?width=1200)
![](https://assets.st-note.com/img/1705392520100-ouOSMIWKuT.png?width=1200)
--wslは-w、--busidは-bと省略できる
![](https://assets.st-note.com/img/1705392610659-oXMWf42DTh.png)
Raspberry Pi Pico Wがアタッチされている
![](https://assets.st-note.com/img/1705392680122-JsnMEVXXo5.png?width=1200)
これをmicro-ROSエージェント起動時のオプションとして指定する。
micro-ROSエージェントの起動方法は以下のサイト参考
![](https://assets.st-note.com/img/1705393262908-Wffw9S3So9.png?width=1200)
今回はSerialのエージェントを使用する
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:rolling serial --dev /dev/ttyACM0 -v6
VScodeのターミナル(PowerShell)で上記コマンドを入力する
![](https://assets.st-note.com/img/1705393420707-ZGnqyYm8lg.png?width=1200)
USBデバイスを切断する
Linux側にAttachしている間、Windows側からはアクセスできなくなっているため、ソフトを書き込む際には一度USBデバイスを切断する必要がある
![](https://assets.st-note.com/img/1705393683223-bnENWomELk.png?width=1200)
PowerShell(管理者)にて、以下のコマンドを入力する
usbipd detach --busid 1-6
![](https://assets.st-note.com/img/1705393775323-V7EK4cyf6N.png)
![](https://assets.st-note.com/img/1705393921547-TFLgJU4Osu.png?width=1200)