卵を割るロボットアーム 強化学習プロジェクト進捗記録(~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(仮想環境) - 主要ライブラリ:
pybulletgymnasiumstable-baselines3numpy,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)
どう保存・共有したいですか?ご希望に応じてファイルを生成します!




