了解しました!以下に、**「卵を割るロボットアームの強化学習プロジェクト」**のこれまでの進捗を整理・ドキュメント化した内容をまとめました。必要に応じて、MarkdownファイルやPDF形式に変換することも可能です。
卵を割るロボットアーム 強化学習プロジェクト進捗記録(~2025年4月12日)
プロジェクト概要
- 目的:2指グリッパーを用いて、実際の卵を「パカッ」と割る動作を強化学習によって実現する。
- アプローチ:
- 仮想吸着ベースのURDF構成(
egg_L.urdf
,egg_R.urdf
,gripper_L.urdf
,gripper_R.urdf
)を使用。 - 強化学習アルゴリズムには Stable-Baselines3 の PPO を採用。
pybullet
上でシミュレーション環境を構築し、ロボットに割る動作の成功体験を学習させる。
- 仮想吸着ベースのURDF構成(
環境構築
- Python環境:
rl_env
(仮想環境) - 主要ライブラリ:
pybullet
gymnasium
stable-baselines3
numpy
,matplotlib
など
ディレクトリ構成(主な部分)
egg_cracker_rl/
│
├── egg_env/ # URDFファイル格納
│ ├── egg_L.urdf
│ ├── egg_R.urdf
│ ├── gripper_L.urdf
│ └── gripper_R.urdf
│
├── egg_cracker_env/
│ └── egg_crack_env.py # 環境定義(Gym環境継承)
│
├── scripts/
│ ├── train_egg_crack.py # 学習・評価スクリプト
│ └── test_scene.py # 表示テスト用スクリプト
実装状況
egg_crack_env.py
gymnasium.Env
を継承して実装。- 観測空間・行動空間を適切に定義。
reset()
とstep()
関数を適切に更新。reward
は float 型で返却、terminated
/truncated
は boolean 型に対応済み。
train_egg_crack.py
check_env()
による環境バリデーション済み。DummyVecEnv
およびMonitor
で環境ラップ。- ログ・モデル保存機構も追加済み。
- 表示テストループ追加(
model.predict()
→ 可視化)。
学習状況(確認ログより抜粋)
ep_rew_mean
(エピソード平均報酬):0.93程度ep_len_mean
(エピソード平均長):7~10step程度explained_variance
:0.7~0.8以上(安定学習傾向)
️ 主な修正・トラブル対応
pybullet.getBasePositionAndVelocity
→getBasePositionAndOrientation
など、メソッド名の修正。reward
やterminated
の返却型に関するAssertionError
対応。IndentationError
修正。- URDFパスのデバッグログ追加。
- 表示用スレッド終了処理の確認。
今後の予定
- 観測空間を拡張し、より詳細な情報(角度や力)を導入。
- 報酬設計をさらに改善し、割り動作の完成度を高める。
- 実ロボット(Franka Emika など)への転移を想定した検討。
メモ
egg_crack_env_ver1.py
は修正ベースとして有効で、現在の安定動作はこのファイルを中心に実現。- 学習は成功しているため、現状は 問題なし と判断し、次フェーズへ進む予定。
保存形式の希望は?
保存用に以下から選べます。ご希望を教えてください。
- Markdown(
.md
) - PDF(
.pdf
) - テキストファイル(
.txt
) - Word形式(
.docx
)
どう保存・共有したいですか?ご希望に応じてファイルを生成します!