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自体のセットアップは割愛する(量が多いので💦)

参考

Microsoft StoreからUbuntuをインストール
ここでは22.04.3 LTSをインストールした
こうなれば成功

アップデートも忘れずに

sudo apt update
sudo apt upgrade
lsusbコマンドはすでに入っていたようだ

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側にアタッチする前にソフトを書きこんでおく。

→ボタンを押して、Raspberry Pi Pico wにソフトを書き込む

USBデバイスを接続する

PowerShellを管理者モードで開き、usbipd listと入力すると一覧が表示される

Raspberry Pi pico wを接続した状態で実行。
BUSID1-6に割り当てられている
※usbipd wsl listと書かれている資料もあるが、現在はwslオプションは廃止されたようだ。
WSL側にアタッチする。
--wslは-w、--busidは-bと省略できる
Linux側でlsusbを実行してみる
Raspberry Pi Pico Wがアタッチされている
アタッチされたシリアルポートは/dev/ttyACM0となる。
これをmicro-ROSエージェント起動時のオプションとして指定する。

micro-ROSエージェントの起動方法は以下のサイト参考

下の方に行くとエージェントの起動方法が書かれている。
今回は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)で上記コマンドを入力する

Raspberry Pi pico w から0x10ずつ加算された値が定期的に送信されている。

USBデバイスを切断する

Linux側にAttachしている間、Windows側からはアクセスできなくなっているため、ソフトを書き込む際には一度USBデバイスを切断する必要がある

切断しないでソフトを書き込もうとしたらエラーになった!!

PowerShell(管理者)にて、以下のコマンドを入力する

usbipd detach --busid 1-6
--busidにアタッチしたbusidを指定する
書き込みが成功した!!


この記事が気に入ったらサポートをしてみませんか?