Stable Baselines と Raspberry Pi によるホッケーロボットの強化学習
「AI・人工知能EXPO 2020 【秋】」の「ギリア」ブースにて、「Stable Baselines」 と「Raspberry Pi」によるホッケーロボットの強化学習を展示しました。
Webカメラの映像を入力として使って、「Raspberry Pi」上で「Stable Baselines」による推論を行い、ロボットアームの操作して、ホッケーロボットの対戦を実現させています。
今回は、「Stable Baselines」と「Raspberry Pi」によるホッケーロボットの強化学習の作成の流れを紹介します。
【ステップ1】 ロボットアームとホッケー台の選定
はじめに、ロボットアームをいろいろ試してみて、KHRシリーズで有名な近藤科学の「KXR-A5」を選びましました。ホッケーするのに十分なサーボ速度、長時間動く耐久性、1台38,000円という値段の安さが決め手になりました。
ホッケー台はAmazonでサイズと値段で手頃なものを選びました。
【ステップ2】 Raspberry Piによるロボットアームを制御
次に、「Raspberry Pi」を使って、ロボットアームをキーボードで操作できるようにしました。
「KXR-A5」のコントロールボードは「RCB-4mini」のため、「Raspberry Pi」上のPythonスクリプトから「RCB-4 Library for Python」を使って、ロボットアームのサーボモーターを操作できます。
詳しくは、以下の資料が参考になります。
具体的には、キーボード操作(上下左右)に応じて、ロボットアームが持つラケットの位置を切り替えられるようにしました。これによって、人間 vs 人間が操作するホッケーロボで、対戦できるようになりました。
【ステップ3】 学習用の人間の操作ログの収集
「強化学習」は、人工知能が試行錯誤によって行動を学ぶ学習方法ですが、無学習状態からの試行錯誤はロボットには負荷が高すぎるので、「人間の操作ログ」に近いほど報酬を与える強化学習である「模倣学習」を行うことにしました。
入力となる「Webカメラの映像」と、出力となる「キーボード操作」(0:無、1:上、2:下、3:左、4:右)をペアで保存するPythonスクリプトを作成して、30分ほどの「人間の操作ログ」を収集しました。
この画像では、左が人間、右が人間が操作するホッケーロボになります。
【ステップ4】 Stable Baselinesによる深層学習モデルの学習
次に、収集した「人間の操作ログ」を使って、「Webカメラの映像」から「キーボード操作」を推論する深層学習モデルを作成しました。
この時、パック位置の特徴を捉えやすいように、「OpenCV」を使って「Webカメラの映像」を「パックのXY座標」に変換してから、深層学習モデルに渡すようにしました。
模倣学習は、「OpenAI Baselines」をベースにした、強化学習アルゴリズムの実装セットの改良版である「Stable Baselines」の「Behavior Cloning」を使って学習しました。
「Stable Baselines」の使い方は、以下で紹介しています。
【ステップ5】 Rasberry Piによる深層学習モデルの推論
次に、学習した深層学習モデルを使って、ロボットアームを操作できるようにしました。
「Raspberry Pi」上で「Stable Baselines」で学習した深層学習モデルを推論する方法は、以下で紹介しています。
【ステップ6】 人間の操作と深層学習の推論のギャップの調整
最後に、人間の操作と深層学習の推論のロボットアームの動作を目視で確認して、異なる点を調べ、同じになるように調整します。
・ホッケー台の角にパックがハマる
→ スポンジを貼り付ける
・パックが中央で止まるとロボットアームが届かなくなる
→ エアーファンを強力なのもに交換してパックを滑りやすくする
・赤いラケットが赤いパックと誤認識されやすい
→ ラケットを緑に塗る
・ロボットアームの動くタイミングが遅れ気味
→ 推論速度のチューニングとフレームレートの調整
ホッケー台には、強力なエアーファンだけでなく、展示用にアダプタとトグルスイッチ(元は電池ボックス)も追加しました。
これで、完成になります。
関連
この記事が気に入ったらサポートをしてみませんか?