フィジカルAi で ROS2 自立走行ロボットを動かす。#2
ACT の sub goal が、芳しくないので、業を煮やして、diffusion の sub goal を試してみた。
まだ、作っている途中だが、簡単に動いた。
こちらは、優秀みたいじゃ。
なんじゃこりゃ、こんなに、簡単にうごくの?
AIの最近のブログ記事
フィジカルAi で ROS2 自立走行ロボットを動かす。
Google Ai に、質問していたら、ROS2 自作 Turtlebot3 で色々走行させて、データを取れば、
それを、フィジカルAI の 適当な model(ここは、Lerobot ACT、diffusion etc) に学習させれば、自立走行させられそう!!
フィジカルAI の学習は、エピソード単位でさせる!!
ので、基本、目的地は、1箇所。
しかし、これをベースにして、目的地を告げて、複数ヶ所へ到達させることも出来るとの事じゃ!!
ここにきて、やっと、フィジカルAi と ROS2 自立走行ロボットの勉強がつながったぞね!!
ちょっと、ROS2 Jazzy Tugbot の Gazebo で、学習data を作ってためしてみます。
開発環境:
Ubuntu Mate 24.04
ROS2: Jazzy
Gazebo
Tugbot wearhouse
Navigation2 with AMCL front rgb camera, front scan
Model:
LeRobot ACT
注) ROS2 の環境と、virtual_env で作った、torch、lerobot の環境の2 を、使い分けます。
lerobot_env: virtual_env で作ります。
lerobot_env で、
$ python -m pip install mcap mcap-ros2-support opencv-python numpy [torch] [lerobot]
1. Gazebo Tugbot wearhouse を、Navi2 で動かして、bag data を保存します。
ROS2 環境が必要なので、下記をターミナルからたたく
$ source /opt/ros/jazzy/setup.bash
$ source ~/colcon_ws-jazzy/install/local_setup.bash
$ export ROS_DOMAIN_ID=30 #TURTLEBOT3
$ export TURTLEBOT3_MODEL=waffle
$ export GZ_SIM_SYSTEM_PLUGIN_PATH=/opt/ros/jazzy/lib
下記、launch で、 Gazebo Weahouse Tugbot が Nav2 で、操作出来ると思う。
最新版を、up しているか、自信がないが!!
tosa-no-onchan/turtlebot3_navi_my/launch/tugbot_amcl_scan.launch.py
すでに、SLAM で、map が作成されていると思うので、その Map を使います。
上記、 launch.py の上部の起動手順に従って、Rviz2 で、Nav2 操作が出来る状態にします。
# 2.2 navigation
の部分。
初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。#3
LeRobot ACT model で、モーション分割 Datasets で、学習を行う!! 第2段!!
初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。#2 の続きです。
今回は、本当に、オリジナルの データ・セット lerobot/svla_so101_pickplace を、各エピソードを、複数モーションに分割して学習させてみました。
初めに、Demo にて確認します。
$ export PYTHONPATH=$PYTHONPATH:/home/your-id/local/git-download/lerobot/src <-- git clone した場所の src
$ lerobot-dataset-viz --repo-id lerobot/svla_so101_pickplace --episode-index 0
外置きのカメラが、2台あるみたい。observation.images.up と observation.images.side
なので、 class ACT は、2 images inputs にしないといけない。
この、Detasets は、FPS:30[hz] なので、これも、train.ipynb に反映させないといかん!!
1. Datsets: lerobot/svla_so101_pickplace を、3 モーションに区分けして、 3 Datasets ファイルにする。
$ make_3motions_data.py
本来のこの3分割の目的は、motion1、motion2、motion3 に分割したあと、学習が弱い部分の motion? を、新たなデータから加えて、
motion1、motion2、motion3、montion1b の様に、組み合わせて学習させるのが、本来の目的じゃ。!!
2. train
train.ipynb を、lerobot/svla_so101_pickplace に合うように、
input、output を修正して、
jupyter notebook で、train させます。
1 epoch のデータ数が、ちょっと少ないので、10 epochs 程、学習が必要です。
8 batch で、
Steps 13400 | Loss: 0.167124 | LR: 0.000003
Model saved! (Step Best Loss: 0.1671)
Loss: 0.11 辺りになれば、良いとおもいますだ!
初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。#2
LeRobot ACT model で、モーション分割 Datasets で、学習とシミュレーションの inference を学ぶ!!
初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。 の続きです。
今回は、オリジナルの データ・セット lerobot/aloha_sim_transfer_cube_human を、各エピソードを、複数モーションに分割して学習させてみました。
オリジナルのデータは、必ず、start - end の決まった流れで、複数エピソードを学習させています。
前回の学習済 ACT model で、シミュレーションでのテストをずっと見ていましたが、
なんとなく、キューブを見つける性能が弱い気がするし、最後の手渡しする部分も弱い気がしました。
できれば、その部分だけ、もっと学習させれば、良い気がしました。
そのためには、いつも1 エピソードを学習させるのでは無くて、部分的に強化した学習が出来ないかと考えた結果、
モーションを区切って学習させたらどうじゃろか? と思って、作ってみました。
1. まずは、2 分割のモーションで試してみます。
オリジナルの lerobot/aloha_sim_transfer_cube_human を分割する python コードを作る必要があります。
例によって、Google Ai の助け(ほとんどだが) で、なんとかできました。
make_3motions_data.py
今回は、これで、 2分割させたモーションデータを使ってみます。
分割した Datasets を、確認するのは、
$ export PYTHONPATH=$PYTHONPATH:/home/your-id/local/git-download/lerobot/src
$ lerobot-dataset-viz --repo-id local/split_dataset_0 --root outputs/split_dataset_0 --episode-index 0
train コードは、前回作成した notebook の train.ipynb を、少し修正すれば、
学習済 ACT model が出来ます。
とりあえず、5 - 6 epochs 学習させてみます。
train.ipynb
use_ex=True
で学習させます。こちらが、train 時間が少ないので...
一応、非分割のデータ・セットと同じ様に、今回の 2モーション分割の場合も、Loss が減っていって、学習できている様です。
Steps 12400 | Loss: 0.175373 | LR: 0.000003
Model saved! (Step Best Loss: 0.1754)
本当は、Loss: 0.11 辺りが良いと思う!!
初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。
ACT モデルを、使っての Train と Predict の一連の流れを試してみる。
サイトは、下記
lerobot
githubは、
@huggingface/lerobot
インストールを、下記ページに従って行います。
lerobot/installation
virtual_env を使うと良いと思う。
$ cd
$ python3 -m virtualenv lerobot_env
$ source lerobot_env/bin/activate
おんちゃんの開発環境は、
ubuntu mate 24.04
GPU: gtx 1070
先に、pytorch 2.10.0 etc をインストールしておく。
$ python -m pip install torch==2.10.0 torchvision==2.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu126
lerobot のライブラリーは、最新を使うので、github 版を clone します。
あとは、git clone をして、clone したデイレクトリーへ移って、
$ cd relobot
$ python -m pip install -e .
その後、Simulations を使うので、続けて、
aloha をインストールします。
$ python -m pip install -e ".[aloha]" # or "[pusht]" for example
LM Studio と言うのが、あるそうな!!
ローカルPC 上で、LLM が気軽に試せるそうだ!!
lmstudio.ai
おんちゃんの、Ubuntu Mate 24.04 PC に入れてみようとおもったが、
Disk 容量が、50 Gigabytes 必要だそうで、うむ....
SSD の容量を増やさないと、むりか!!
Ollama というのもあるみたい。
How much hard disk size to install Ollama で、google で検索してみた。
Operating System: Linux: Ubuntu 22.04 or later
RAM: 16 GB for running models up to 7B
Disk Space: 12 GB for installing Ollama and basic models. Additional space is required for storing model data depending on the used models
Disk がだいぶ少なくてすむが、RAM が、 16GB だとさ。
7B というのが、LLMモデルの学習パラメータの大きさみたい。これが大きくなると、RAM も大きくなるみたいじゃ。
Gemma 3 なら、1B、4B 程度にすればよいのかも。
B: Bllion の事。10億 つまり学習パラメータの数みたい。1B: 10億個の学習パラメータの意味みたいじゃ。
Disk は、上記に加えて、ダウンロードする、local LLM モデルのサイズも必要みたいじゃ。
詳しくは、本家をみることじゃ。
ollama.com
Windows、Mac だと、GUI 版が出たそうじゃ。
@ollama/ollama