ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

ロボット(実機)で模倣学習を動かすまでの勉強まとめ

ちょっと一区切りついたので、勉強したことを思い出しながらまとめてみます。誰かの役に立てば。

2022年

ロボット工学の最初の一歩

最初は右も左もわからないので、Courseraのコースを選択。目標はせめて学部1~2年生レベルの知識をつけることだったので、まあ良い判断だったと思う。

natsutan.hatenablog.com

全くわからないなりに、最初に一周したのは良かったです。最近受講しているPhysical AIの講座で紹介されていた動画でも、元ネタはこの本かな、と思うものもあったので、押さえておいて損はないと思います。自分で勉強したいことが分かっている時は、もっとまっすぐ進む方法もあると思う。

これを理解するためにいくつかロボットの本を買って読んでみたが、角度表現が違っていて、さっぱり分かりませんでした。振り返ってみると、ここで勉強したから、論文にSO(2)とか出てきても分かるようになっていたのは良かったと思います。

確率ロボティクス

次はなんとなく『確率ロボティクス』を読みました。なんか凄いことが書いてありそうで、Pythonで何かやるからって所に期待して買いましたが、ちょっとよくわからなかったです。今読んだらもう少しわかりそう。

www.kspub.co.jp

2023年

いったん目の前の仕事が一息ついて、勉強する時間が取れるようになったのがこの頃。RT-1が出てきて、ロボットでも言語モデルをちゃんと勉強しないといけないと思って、勉強を広げています。

点群処理

まずはカメラから取得できる点群関係。『詳解三次元点群処理』が良かったです。とりあえず、どんなことができるのかを知るには、ライブラリのチュートリアルを見るよりも良かったです。

詳解三次元点群処理

natsutan.hatenablog.com

当時はCVIMチュートリアルも役に立ちました。

www.kyoritsu-pub.co.jp

言語モデル

RT-1から、LLMもロボットに搭載されそうということで、こっちも沢山本を読んでいます。

初心者が言語モデルを勉強するための本(2023年6月版)

natsutan.hatenablog.com

軌道生成と把持

軌道生成の勉強はここから。少しロボットの理解が深まっていたので、「ピッキングロボットはこんなことやってないだろ」とか、「そもそも毎回箱の中が変わるのに、正確な地図は無いんじゃ……」とか、疑問を持てるようになりました。

Planning Algorithms

natsutan.hatenablog.com

把持に関してはこれが良かったですね。過去の取り組みやデータの解像度等を知っておくのは、新しい手法を学ぶときに役に立ちます。

Robotic Grasping from Classical to Modern: A Survey

arxiv.org

最新手法についてはこの動画が良かったです。結局、Modern Robotics: Mechanics, Planning, and Controlで出てきた拘束条件とかは使っていないと知って、安心した記憶があります。

MIT Robotics - Ken Goldberg - The New Wave in Robot Grasping

www.youtube.com

この本も読んだけど、あまり記憶に残ってない。

ロボットハンドマニピュレーション

www.kyoritsu-pub.co.jp

ロボット制御の入門書

ロボット制御に関しては、この本が良かったです。Modern Robotics: Mechanics, Planning, and Controlの中から、実際に必要な所をピックアップし、分かりやすく説明してある本です。

実践ロボット制御

www.ohmsha.co.jp

この本も最初の一歩としてはとても良い本でした。自分の担当分以外も簡単に押さえるために、ロボットの開発チームで新しく加わったメンバーには、とりあえず読んでもらいました。

イラストで学ぶ ロボット工学

www.kspub.co.jp

強化学習の最初の一歩

ゼロつくシリーズの強化学習編。次に強化学習を勉強するときにめちゃ役に立ちました。最初の一歩としてお勧め。

ゼロから作るDeep Learning ❹ ―強化学習編

www.oreilly.co.jp

2024年

ちゃんと強化学習を勉強しようと思ったのがこの年です。

Diffusion Policyとシミュレーター

なんとなくDiffusion Policyを動かそうとしているが、どこから始めて良いのか手探りの状態で始めてます。挫折しかけたとき、ワールドトリガーの「刻むんだ」を思いして継続してました。

学習にシミュレーターは不要なのは分かったが、結局、動きを確認するにはシミュレーターが必要と分かるまで遠回りした。夏頃、DOFBOTのカメラの向きを無理矢理変えて、頑張ってデータを集めていた。結局これは無駄になってしまった。良い思い出である。

まっすぐ行くならシミュレーターを用意しないと駄目と分かったのが、この年の収穫。これだけ勉強しながら、地味に中検3級に合格していて偉い。

生成モデルの勉強

Diffusion Policyは名前の通り、拡散モデルの考え方を使っているので、生成モデルについても勉強開始。ロボット、どんなけ勉強せなあかんねん……と絶望していたのがこのころ。ただ、ロボット制御において拡散モデルは避けて通れないので、一冊勉強するならこれが良いと思います。

ゼロから作るDeep Learning ❺ ―生成モデル編

natsutan.hatenablog.com

確率・統計の基礎

強化学習の勉強をしながら、確率・統計をちゃんと勉強した方が良いと気がつき、この二冊を読みました。

  • 統計学入門(東京大学出版会)
  • チャート式シリーズ 大学教養 微分積分の基礎

統計学は積分だらけで、積分を理解するには微分が分からないと駄目、そのために極限の所まで戻りました。この年の夏は、受験生並みに勉強してたと思う。

この年に読んだ本には、こちらもあります。

ロボットの確率・統計 ―製作・競技・知能研究で役立つ考え方と計算法

natsutan.hatenablog.com

Courseraで強化学習

Courseraにちょうど良いコースがあったので、始めてみる。

強化学習(第2版)とCourseraの強化学習コースをやった

natsutan.hatenablog.com

講座の教科書です。基本の一冊。

強化学習(第2版)

こっちもソースコード付きで分かりやすい。

機械学習スタートアップシリーズ Pythonで学ぶ強化学習

強化学習の発展と応用

Courseraの続きのトピックはこれ。強化学習と模倣学習はアプローチが違うことが分かってきた。

詳解 強化学習の発展と応用

natsutan.hatenablog.com

生成モデルの勉強を続ける

生成Deep Learning 第2版

natsutan.hatenablog.com

その他に読んだ本

  • Pythonで学ぶベイズフィルタとカルマンフィルタ

  • ROSロボットで学ぶ次世代のIoTアーキテクチャ

  • 医療AIの知識と技術

2025年

Genesisでシミュレーション環境を作る

いろいろあって興味がGenesisへ。Genesisでシミュレーション環境を作って色々やる。

できないことをAIに相談すると、まだAIがあまり賢くなく、「Gazeboではこう書きます」を連発してきて困った記憶がある。今ならGenesisでも十分使えると思う。

Diffusion Policyがシミュレーター内で動く

8月にようやくシミュレーター内でDiffusion Policyが動く。実機はまだ。

Diffusion Policyを動かしたときの記事

natsutan.hatenablog.com

この時はここまで来るのに1年かかったが、翌年にはライブラリの整備とAIの進化で、1週間くらいで動くようになる。

その他に勉強した本

  • 線形代数セミナー

natsutan.hatenablog.com

  カメラ行列まで出てくるので、ロボットを勉強しながら線形代数を勉強したい人にお勧め。

  • Pythonで学ぶ画像生成

natsutan.hatenablog.com

  この本は本当に良かった。お勧め。

  • 機械学習を解釈する技術

natsutan.hatenablog.com

  • 基盤モデルとロボットの融合 僕は日経ロボティクスを読みまくっていたので全然知らない話は少なかったのですが、当時の最新情報が漏れなくまとまっていておすすめです。

  • An Algorithmic Perspective on Imitation Learning

natsutan.hatenablog.com

  • まるごと学べる異常検知の実践知

  • LLMのプロンプトエンジニアリング

natsutan.hatenablog.com

  • Data-centric AI

  • Artificial Intelligence for Robotics

2026年

Isaac Simの環境づくり

4月頃はWindows 11でIsaac Simの環境を作っていたが、ちょっと上手く行かず挫折。7月から環境を全部UbuntuにしてIsaac Simを開始。AIが賢くなっていて、簡単に動く。

今までの失敗が、動くまでの最短距離を教えてくれていて、試行錯誤が無駄ではなかったと信じたい。

Physical AI講座

松尾研のPhysical AI講座を社会人枠で受講。これだけ勉強して、実務でもロボットを使っていたので、さすがに知っていることが多かったですが、復習とモチベーションアップには最高でした。

シミュレーターでのピックから実機動作まで

そして、Isaac Simでピック成功。

Isaac Simでピックに成功したときの記事

natsutan.hatenablog.com

AIに聞いて、ACTという模倣学習が動く。AIすごい。

ACTを動かしたときの記事

natsutan.hatenablog.com

データセットはそのままでDiffusion Policyの学習を行い、実機動作も完了。長かった……。

Diffusion Policyの実機動作(Xの投稿)

これをPhysical AI講座の課題にしたいので、雑なリポジトリを作成。

Dofbot_diffusion_policy(GitHub)

その他に勉強した本

[ゼロから作るDeep Learning ⑥]

natsutan.hatenablog.com

拡散モデルをちゃんと勉強しようと思って『確率の半歩先 予測・拡散モデルに挑む前の30話』を読んだが、正直よく分からなかった。

natsutan.hatenablog.com

  • Humanoid Robots with AI and Simulation

  • 模仿学习简洁教程

  • フィジカルAIの教科書

  • AI based Robot Safe Learning and Control

AIロボット持ち込み勉強会in大阪

木曜日に行われたAIロボット持ち込み勉強会in大阪に行ってきました。

ai-robot-japan.connpass.com

当日の様子はローカルのTVでも取り上げられたようです。 しれっと僕も映ってます。

www.youtube.com

AI Robot Japan

スローガンはこの3つ。

  • 越境せよ
  • 手を動かせ
  • リスペクトせよ

東京、名古屋、大阪ときて、次は北海道へ活動を広げるようです。発表だけの勉強会とちがい、ロボットを持ってこないといけないので大変だと思うけど、応援していきたい。

後から見れるように発表資料は公開して欲しいなと思います。

関西電力株式会社

UniTreeの四足ロボットが動いている所が見れました。 発電所という強くセキュリティが求められるところで動くロボットの大変さの説明と、Unitree社のサポート的な話が聞けて良かったです。

Physical AIを支えている企業の一つは電力会社であることは間違いない。もっと感謝しようと思いました。

パナソニックホールディングス株式会社

神奈川県藤沢市で行われている公道を走るロボットのPoCの説明を聞きました。ロボットの技術的な面よりも、国内法との兼ね合いが難しそうで、そこをごまかさずにしっかりと対応しているところに流石パナソニックだなと感じました。 藤沢市には公道にサーフボードが落ちてるとか、小ネタを入れつつ楽しい発表でした。ロボットの監視ソフトについても上手くAIが使われていて、監視する人の負担を減らす工夫があって実戦投入されているロボットは違うなと感じます。

UniTreeのロボットが若干怖い感じがするのに対して、道を走っていても応援したくなるようなロボットでした。

株式会社Thinker

触覚を使ったハンドの現状から課題までを広く聞くことができました。 人間の手は不思議でほとんど見なくても物を取れるんだけど、ロボットハンドはそこまで行っておらずやることはいっぱいありそうです。少し聞いた事がある話もあって、多分アカデミックの方の発表を聞いたんだと思う。 突き指問題はどこも同じだと思うので、できるだけシンプルに安く製造できる必要はありそう。

またこういうハンドはシミュレーションが難しく、定量評価には時間をかけていろいろやっていると聞きました。これは整理しておきたいです。

LT

発表してきました。 AI使えば、模倣学習やVLAの最初の一歩は簡単ですよって内容です。

speakerdeck.com

全体感想

ロボットが来る発表会はロボットが主役で、懇親会の時もロボットに人が集まってました。スーツの人はほとんどいなかったので、次回の開催時もラフな格好で良いと思います。

Ugo(読み方はユーゴー)のロボットも見れて、ハードとしては全然完成したのでなんか上手い導入先があればすぐにでも使えそうでした。移動する、リモートでコミュニケーション取れる、少しなら物を運べるで、夢が広がりそうなロボットでした。

ロボットを持ち込んでくださった皆様、会場提供をしていただいた関西電力様に感謝です。

Raspberry Pi 4 + DOFBOT に ROS 2 Jazzy を入れた話

Yofboom公式のDOFBOTイメージから始める。

これはUbuntu 20.04 + ROS Noeticが入っていて、普通にJazzyを入れようとするとUbuntuを上げる必要がある。ただ、Ubuntu24.04へ上げるとDOFBOTのLED等がつかなくなったのでこちらは駄目。20.04のままROS2 jazzyを入れる。

手順はこう。細かいことはChatGPTに聞けば教えてくれる。

  • ROS Noeticを削除
  • ROS 2 Jazzyをソースから取得
  • 不要なGUI・デモ系を除外
    • DOFBOT側はheadless運用とし、OpenCVデモ、Qt/rqt/RViz系などは必要に応じてビルド対象から外した。
  • CMakeを3.28へ更新
  • Pythonは3.8ではなく3.11を採用
    • Ubuntu/Yahboom用のPython 3.8は残し、ROS 2専用にPython 3.11を別インストールした。
    • Python 3.11用venvを作り、ROS 2全体を再ビルドした。
    • Pythonはshared library有効でビルドする必要があった。

これくらいで最後までbuildが出来て、ラズパイ単体でtopicのやりとりを確認できた。

イメージはここ。ネットワークの設定は修正必要。 ログイン名、パスワードはデフォルトのままです。

https://drive.google.com/file/d/19QNL3cxoFD40sgbrNpPt85dag1UO9hES/view?usp=sharing

確率の半歩先 予測・拡散モデルに挑む前の30話

www.kodansha.co.jp

Diffusion Policyのようなロボットで使う拡散モデルに興味があって、なんとなく簡単そうに見えたので読んでみました。タイトルには半歩先と書いてありましたが、その半歩先が沼で僕では全くわからないという事が分かりました。この本の内容を理解していなくても拡散モデルは使えるじゃないかと思います。

僕が感じた難易度は、第一部がなんとなく言いたいことは分かるレベルで、二部、三部と進むにつれて何のために何をしているのかも分からなくなってしまいました。圧倒的に数学力の足りなさを感じました。

よくわからないなりに理解できたのはこの3つです。

  • 拡散モデルでは微分できないギザギザが出てくる
  • 伊藤積分とルベール積分という少し違う微分がある
  • 無限の扱いは素人には無理

これだけだど単にnot for meに見えますが、説明は丁寧で、箱から玉を取り出すような具体的な話題から入り、抽象的が続かないようになっています。図もカラーで見やすく、必ず丁寧な説明もついていて学習者になんとか説明しようという気持ちは伝わります。それでも分からない物は分からないのが残念でした。いろんな用語は目を通したので、いったん本棚に並べておき、必要が出てくれば取り出してまた読んでみたいです。

VLA動いた

AIに任せておけば3日くらいで動く。 以下スペック。

  • ChatGPT GPT5.6 sol
  • Lerobot v0.5.1
  • SmolVLA

シミュレーション環境を作って、学習データを自動生成し、SmolVLAの学習の後、動作確認まで全部やってくれる。

指示した色の箱を取ってくれないがVLAでLが効かないのはよくあることらしい。 自動で作った学習データから、ピックに失敗したエピソードは学習から除いてます。 その結果、ピックが簡単な学習データが集まり、一番取りやすい箱を取ると学習していると思う。

まあ、最初の一歩は突破。

DOFBOT+ROS2環境で模倣学習ACTを動かした話

シミュレータはisaac-sim、ROS2をインターフェイスとして、模倣学習のライブラリははLerobotを使った。作業の手順だけまとめておく。

結論:ほとんどAIに任せたら動く。去年に比べてChatGPTの性能が目に見えて上がっていて、ChatGPTの言うとおりでほぼ動く。

最初の一歩

UbuntuPCを用意する。ChatGPTはWIndows+WSL2でも動きそうな事を言ってくるが、諦めてUbuntu PCを用意してそこに環境を作った方が良い。この記事の数少ない有益情報。

URDFを読み込む

DOFBOTの配布ファイルの中にURDFがあるので、それを持ってくる。一度isaac-simで読み込んで、URDFとして再度保存すると、シミュレーションに必要なデフォルト値が勝手に入る。いろいろやって、最終的にはmimicを外すことで上手く行った。

natsutan.hatenablog.com

isaac-simとROS2をインストールする。

ChatGPTの言うがままでOK。

座標決め打ちで取れるようにする

isaac-simでロボと箱を配置する。箱の場所は分かっているので、そこめがけてGripperを移動させて、取れるようにする。ChatGPTのソースコードで人手で修正したのは、箱の重さを1/10にしただけ。 このソースがこの後のリファレンスに成る。

natsutan.hatenablog.com

実際には試行錯誤はここで終わり。後はChatGPTの指示通りで一直線に進む。

学習データを作る

ランダムで箱を配置し、ロボットはその座標を既知として取りに行く。ピックの成功失敗含めて、ロボの姿勢や初期位置を記録していく。ChatGPTに聞いたら一から作ってくれたけど、先に作ったのと少し違ったので、上のソースを与えてこれベースで作ってくださいとお願いしたら、これも一発で作ってくれた。

isaac-sim側のAPI、やりたいことを満たすためのROS2のメッセージ定義、ピック成功の判定ルーチンなども、全部上手くいくものを一発で作ってきた。逆に泣きたくなってきた。

学習データは230エピソードくらいで、ピックに成功したのは170エピソード。

LeRobot環境を作る

ChatGPTがこんなんどう?って言ってきた構成が~/に展開しすぎ、複雑すぎなので、こうシンプルにしたいという指示を出した。一応、これが僕の最後の意思表示でした。

LoRobot用学習データを作る

これも一発で変換のPythonを作ってきたので、実行しておしまい。

ACTの学習をする

学習も一つもPythonを書くことなく、このコマンドでOK。もちろんChatGPTの言うがまま。

cd ~/robot/lerobot

RUN_DIR=~/dofbot/train_outputs/act_state_v1_$(date +%Y%m%d_%H%M%S)

uv run lerobot-train \
  --dataset.repo_id=local/dofbot_pick_state \
  --dataset.root=/home/natu/dofbot/train_data_lerobot/dofbot_pick_state \
  --policy.type=act \
  --policy.device=cuda \
  --policy.push_to_hub=false \
  --policy.chunk_size=50 \
  --policy.n_action_steps=10 \
  --output_dir="$RUN_DIR" \
  --job_name=act_dofbot_state_v1 \
  --steps=50000 \
  --batch_size=32 \
  --num_workers=4 \
  --log_freq=100 \
  --save_freq=5000 \
  --eval_freq=0 \
  --wandb.enable=false \
  2>&1 | tee ~/dofbot/act_state_v1_train.log

echo "$RUN_DIR" | tee ~/dofbot/latest_act_run.txt

学習したモデルを動かし、結果を見る

これもChatGPTの言うがままでOK。

学習したモデルで箱を取れるようになりました

アートオブ機械学習

気になっていたアートオブ機械学習読みました。

www.kyoritsu-pub.co.jp

前半は面白い事が書いてあって丁寧に読んでいましたが、後半からはだんだん面白い事が減っていって最後のニューラルネットワークの所は無くても良いんじゃないかというレベルでした。癖が強い本ではあるので、ちょっと機械学習を勉強したいって人にはお勧めしません。

最初はkNNから入って、kNNを中盤くらいまで引っ張ります。ここは知らない事が多くて面白かったです。

解説文はコードと同じくらい重要である。数式やコードやグラフが一切掲載されていない、解説文だけのページは特に重要な内容を扱っている可能性がある

最初にこう書いてあるとおり、Rのコードはたいした事してなくて、その結果を見るのにどこに注意するべきかという所が良いです。

最初の回帰モデルでもずっとkNNを使います。求めたい値に対して特徴量が近いデータの平均値を取って回帰モデルとして使います。当然、単純なkNNでは上手く行かないケースが出てくるので、ハイパーパラメータ、バリアンスとバイアス、ホールドアウト等、大事な概念の説明が丁寧に出てきます。この辺は自信が無い人は面白く読めると思う。特にデータセットのサンプリングが変わることでモデルが大きく影響をうけるバリアンス問題については、他の本に比べて詳しく書いてあります。

分類問題も回帰と同じように扱うのも考え方としては学ぶことはありました。

不均衡データの扱いもこの本ならではの観点がありました。一般に、不均衡データについてはアンダーサンプリングやアッパーサンプリングを行ってバランスを取ろうと書いてあることが多いです。この本とか。

natsutan.hatenablog.com

アートオブ機械学習では、不均衡データはそのまま使ってしきい値と人手で捌けと紹介してあって、これはこれで面白い。

いずれにしても重要なのは、意思決定の権限は本来あるべきポジション、つまりデータのエンドユーザーに委ねられているということである。単にデータの量を人為的に調整することは、そのような権限をユーザーから奪うこととと同じである。

正直よくわからんが、癖があるのは感じます。

後半に進むにつれkNNから離れていき、癖の強さがなくなっていくのが残念でした。