初めてのフィジカル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
1. 学習データを選ぶ。
ACT 対応で、シュミレーションが有るのデータを選ぶ。
おんちゃんは、lerobot/aloha_sim_transfer_cube_human を使ってみた。
Demo が見えるので、見てみます。
git clone した、ディレクトリーで、
$ cd lerobot
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/src
or
$ export PYTHONPATH=$PYTHONPATH:/home/your-id/path-to-clone/lerobot/src
$ lerobot-dataset-viz --repo-id lerobot/aloha_sim_transfer_cube_human --episode-index 0
start ボタンをクリックする。
--episode-index n: n は、結構あるみたい。
これで、Demo が確認できれば、あとは、 ACT model を学習させてみる。
方法が、幾つかあるが、
おんちゃんは、まず、最初に、
1) examples/tutorial/act/act_training_example.py
を使って、 train を試してみた。
ちょこっと直す。
こいつは、自分のディレクトリーへコピーして、
そこから実行出来る。
i ) train
$ export PYTHONPATH=$PYTHONPATH:/home/your-id/path-to-clone/lerobot/src
$ python act_training_example.py
ii) シュミレーションでの動作確認。
$ python act_training_example_check_sim_cui.py
とりあえず、10,000 ステップ学習させてみました。
さいしょ、アームがブルブルして、その後、向かって右側のアームが、赤いキューブを掴みに行きますが、
なかなか、まだ、つかめません。
でも、もっともっと学習させれば、成功するかも。
この、最初のアームのブルブルは、ACT につきもの様です。
ChatGTP に尋ねたら、調整方法を教えてくれます。
ぜひ、チャレンジしとうせ!!
2) 次に class ACT を直接使って、同じトレーニングデータで、train させる。
ACTConfig() を使うのに手こずったので、ここで書いておきます。
i) trainは、 jupyter notebook で、
train.ipynb
ii) シュミレーションでの動作確認。
$ python Act_check_sim_cui.py
40,000 ステップ学習させたけど、なかなか難しい。
train の仕方が、マッチしていないかも。
これはらは、github に上げました。 by nishi 2026.5.14
lerobot-my/AlohaTransferCube
その後、かなり手を加えて、最新版を、github に上げました。by nishi 2026.5.20
今は、向かって右のアームが、赤いキューブを掴んで持ち上げて、画面中央の、左のアームのグリッパーまで持って行って、
そこで、いちが少しずれていて、手渡しするところで、失敗する状態です。
まだ完成ではないが、ここまで来るのに苦労しました。
いまは、このシーンをみながら感激しちょります。なみだが、ちょちょ出ます!!
2. おんちゃんの Tips!!
i) 学習データと、 inference 時に上がってくる、ロボットのアーム情報について!!
上がって来た、あるいは、 train 時に datasets から取り込んだ、アーム情報は、生のサーボーかなんかの数値データみたい。
ただし、これを、 train や predict で、 model に入力するときは、ノーマライズ(0.0 - 1.0) が必要みたい。
つまり、 image だと、スケーリングで、 image / 255 するのと同じ。
inferrence 時に、 model からの 出力値(アーム情報) は、ロボットに送る前に、
今度は、逆ノーマライズして、ロボットへおくるみたい。
これをしないと、アームがまともに動かない。
ii) inference 時の注意!!
temporal_ensembling(時間のアンサンブル)の有効化が必要みたい!!
ACTモデルを評価(シミュレーション)する際、公式サンプルでは通常 temporal_ensembling=True という機能が有効になっています。
影響: これが有効な場合、過去の予測値と現在の予測値を滑らかに「ブレンド(平均化)」しながらアームを動かすため、浮いているような非常に滑らかな動き(いい具合の動作)になります。
自作コード(あるいは自作モデルの推論側)でこれが False(または未実装)になっていると、ブレンドされずに毎ステップごとの生のアクションがそのままアームに伝わり、結果としてカクカクとした非常に激しく速い動きに見えるようになります。
確認箇所: 推論(評価)を行うコード側で、policy.temporal_ensemble などの設定や、アクションをブレンドするロジックが抜け落ちていないか確認してください。
との事。
なので、自分で、Temporal Ensembling(時間のアンサンブル)の仕組みを組み込まないといかん!!
特に、おんちゃんは、config = ACTConfig(..) しかないので、google ai に python torch でのコードサンプルを教えてもらって組み込んだ!!
iii) google Ai 、 ChatGTP に随分教えてもらって作ったが、使える時もあれば、使えないときも有る。
間違い出すと、どうしようもない。多分、正しい答えを持っていないケースだと思う!!
其の場合は、自分で頭を働かさないといかん!!
3. このあとのアプローチ。
モーションを区切った学習が出来るみたい。それを、試してみるべきじゃ!!
初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。#2 へ、続きます。