🐡

Raspberry PI 5でロボットカーを操作2:LLM AGENTでおもちゃのロボットカー動かす

に公開

以前、別の記事でラズベリーパイにUbuntuをインストールする方法を開設しました。
https://zenn.dev/takeofuture/articles/e58703a74dd6ad
そしてロボットと通信するために標準規格であるROS(ROBOT OPERATING SYSTEM)の導入方法も解説しました。
https://zenn.dev/takeofuture/articles/e99cc33d4a7bc3
そして、そのインストール済みのラズベリーパイと2RW(2輪駆動)のおもちゃのロボカーを接続して基本的な動作確認方法をまた別系統の記事で解説しました。
https://zenn.dev/takeofuture/articles/54388b1edda09a
今回はlangchainでtool useという仕組みを使って、実際にラズベリーパイを日本語で簡単な指示を出して動かしてみようと思います。またシミュレーション上でROS(Robot Operating System)というフレームワーク経由で自然言語による指示をしてシミュレーション上のロボットカーを動かす方法は解説してます。
https://zenn.dev/takeofuture/articles/458c1a3abcce04
(すみません、自分の忘備録が主な目的で書いているため結構1つの記事にすべての情報がまとまってなく、別記事のリンクが多いかもしれませんが、私の頭の中でマイルストーンごとに記事を書いていっているため、ちがう目的やマイルストーンでプロジェクトを進めている方には少しわかりにくくなっているかもしれません。どっかでまた再整理します。m(__)m

ちなみにこのROSとLLMと組み合わせたライブラリはいくつか存在するようです。私が今知っているのは以下2つ.
👉主なライブラリ
*今回紹介するROSA
 https://arxiv.org/pdf/2410.06472
 https://github.com/nasa-jpl/rosa
*RAI
  https://robotecai.github.io/rai/
  https://github.com/RobotecAI/rai
今回はROSAを試してみます。なぜそれにしたかというと、最初に知ったのと、インストールがpip1つで簡単にできるためです。

今回はラズベリーパイはべージョン5で比較的高性能なためここにエージェントをいれて操作する方法を紹介します。いわゆるちょっとした頭脳と操作指示そのものをラズベリーパイにもち、LLM/VLMだけ外部に頼るしくみです。構成としてはこんな感じになります。コマンドラインでもよかったのですが、一応STREAMLITのWEBインターフェースで指示できるようにしてます。

それでは、設定にすすんでいきます。
今回はROSAというエージェントを利用するため、ROS2の設定が必要です。(以下参考)
https://zenn.dev/takeofuture/articles/e99cc33d4a7bc3
上記でも書きましたが、PYTHONの仮想環境作るときは--system-site-packagesのあぷしょんを付けます。これをつけることでラズベリーパイに接続されたGPIOに直接操作できます。
https://zenn.dev/takeofuture/articles/54388b1edda09a
今回は上記の記事のようにdevicetestではなくあらためてrosaという名前で仮想環境をセットします。

python3 -m venv rosa --system-site-packages
source rosa/bin/activate

そしてインストールします。一応サンプルコードを以下にアップしております。
https://github.com/takeofuture/rosa_raspberry_gpio

git clone https://github.com/takeofuture/rosa_raspberry_gpio.git
cd rosa_raspberry_gpio
pip install -r requirement_rosa.txt

起動はSTREAMLITを立ち上げて実施します。(コマンドでもよかったですが日本語を訂正するためのバックコマンドがターミナルだと思うように訂正できないかったためWEBベースにしました)
ROSのVERSIONはJazzyを想定してますが、必要に合わせて確認ください。

bash run.sh

もし別のバージョンでしたら以下のパスを調整してみてください。

source {your_ros_path}/setup.bash
source {your_python_venv_path}/bin/activate
streamlit run app_rccam_rosa.py --server.address 0.0.0.0 --server.port 8501

実際に動かした様子ですがキャリブレーションが不十分なせいか若干ずれてはいますが一応指示どおり動きます。また少し動かしてとかやるとモータはうなりますが電力出力が十分でないためか動きません。ここはTOOLでモータに送る電力の調整が必要そうです。

Discussion