クリスマスプレゼントにぴったり?なメカナムロボットを買った(電子工作日記) - えいあーるれいの技術日記の続きです。
今回は、Wi-Fiに繋がるRaspberryPi PicoWにmicro-ROSを載せちゃおうという試みです。
RaspberryPi Pico
RaspberryPi PicoはRaspberryPi財団が開発したマイコンチップ「RP2040」を搭載したボードです。
チップ自体はCortex-M0+という低価格・省電力重視仕様ですが、デュアルコアでベースクロック133MHzからさらにスピードを上げることができます。
突き詰めれば色々と遊べますね。
(実際、1GHzまでOCする強者も…🔥)
ちなみに、「RaspberryPi(ラズパイ)」はシングルボードコンピュータを指すため、区別してラズピコと呼んでいます。
Pico W
RaspberryPi Pico W (ラズピコW)は、ラズピコに無線チップ「CYW43439」を外付けしたモデルです。
Wi-Fi (2.4GHz) とBluetoothに繋げられるモデルですが、1200円くらいするので、ESP32チップ単体と比べるとなかなか悩ましい価格です。
プラットフォームや消費電力で比較することになりそうです。
micro-ROSとは?
micro-ROSとは、ROS2ノードとマイコンを接続するプロジェクトです。
他のROS2↔︎マイコンのプロジェクトと比較すると、幅広くプラットフォーム・デバイスをサポートしており比較的構築が簡単です。
ROS2との接続には、ホストPC上にmicro-ros-agentというROS2ノードを立ち上げる必要があります。
micro-ROS自体はプラットフォーム非依存のライブラリなので、ArduinoだけでなくESP-idfやRaspberryPi-Pico SDKでも使えます。
ラズピコ自体はmicro-ROSでサポートされていますが、UARTのみとなっていました。
Wi-Fiは自分でサポートしないといけないのかなと思ってフォーク先を漁っていたら、ありました!ラズピコW用のリポジトリ🤩
これだと少々使いにくかったので、コードを整理してUARTとWi-Fiを切り替えられるようにしました↓
これで、rpi-pico-de-hajimeru-ros2ができますね😉
使い方(4輪メカナムロボットの場合)
リポジトリは以下のURLより
TwistでデータをsubscribeしてTimerを回してデータが来ていない場合は速度をゼロにするだけの簡単なプログラムです。
analogWriteで全てを解決してきた自分としては、クロックからPWM生成とか訳わからんすぎでしたね。(PWMの部分(自分用))
ちなみに、動作確認についてですが、動きはしたもののモータの回転速度が全然違ったり唐突に接続が切れたりでちょっとキレそうになっていました…
フィードバックがない上に制御よわよわなのでちょっと今の状態では厳しいかも‥と思い、一旦諦めです😖
もしかしたらXに動画上げるかも
モータをDynamixelに変更して再挑戦ですね‥(原型留めていないのでは?