Deep Robotic Learning(4)Deep Reinforcement Learning for Grasping 深度強化學習+抓取
引言
ICRA 2018 前幾天結束了,我們發現,之前一直都是路徑規劃/運動規劃排在第一位,而這次
機器人中的深度學習
首次獲得論文錄取榜榜首:
說明這玩意還是可以解決實際問題的,嗯,搞科研還是要抱著一顆寬放的心態,不用逢deep learning必反,但也不要認為它能解決一切問題。
正文
如今從模擬器中學習技能隨著一些開源模擬器的成熟漸漸地引起了很多科研人員的注意。比如:pybullet,gazebo,vrep等等。而在模擬器中,那就是各種高深的深度強化學習演算法大顯身手的時候。
最近有篇論文挺有意思的:
Tan,Jie,et al。 “Sim-to-Real:Learning Agile Locomotion For Quadruped Robots。” arXiv
preprint arXiv:1804。10332
(2018)。
https://www。zhihu。com/video/986903089068167168
https://www。zhihu。com/video/986903323122892800
這是透過在模擬器中讓機器人自主學習行走能力,而後再將這個能力運用到實際機器人上。值得注意的是,這還是
開環的。
再一個非常好的例子就是今年ICRA上的一篇論文(其實今年ICRA這方面論文也不少,大家可以去youtube上看看,有些還是挺震撼的):
Sim-To-Real Transfer of Robotic Control with Dynamics Randomization
模擬環境由於動力學等等因素與真實環境不同,無法進行直接的技能轉移
但是如果在模擬環境中就學會了對真實環境進行泛化,那想必就可以運動在不同動力學的真實環境中了
那如何泛化呢:
在模擬環境中隊機械臂的阻尼,質量,物體的阻尼,質量,高度觀測噪聲,行動噪聲等等進行引數隨機化
然後作者又提出下面這個網路對這些泛化的引數進行學習:
效果如下,好像還挺不錯的(從中我們也可以看出直接用模擬器中學習好的技能來用的話效果有多麼差勁):
https://www。zhihu。com/video/986906727865954304
據此我也開始對“用模擬器學習機器人技能”研究了一陣子,下面是我自己的內容,與大家分享一下:
目標很簡單,就是讓機器人學習去抓一個綠色的棒子,機器人的運動過程就是參考sergey levine IJRR中提出的那個運動過程(
Learning Hand-Eye Coordination for Robotic Grasping with Deep Learning and Large-Scale Data Collection
)
獎勵就是機器人抓到則給個10000,反之就-1000
首先,這是一個
稀疏reward問題。
(我們這先不考慮模仿學習或者learn from demonstration)
直接用強化學習中的BP演算法可能有兩個弊端:
1)抓到物體前,機器人得不到任何獎勵,未來的獎勵(成功抓到物體)的梯度對目前動作的影響微不足道,也就是說存在
梯度彌散
2)神經網路固有存在區域性極小值
所以採用的演算法也很簡單,就是
進化策略
,具體來說應該是
協方差矩陣適應性進化策略(CMA-ES),
這個演算法應該算是作為無梯度最佳化演算法中最流行的演算法之一,唯一的缺點就是太慢了。
我們這些用8執行緒來學習
https://www。zhihu。com/video/986907395330822144
學了好久,算是學到了,但學的不好:
https://www。zhihu。com/video/986910090426982400
當然,sergey levine用的這種運動方式算是step by step的,不是continous的,
所以我重新試了一個continous policy的,也就是機器人運動是連續的
https://www。zhihu。com/video/986911122313781248
但我感覺效果還是不好,我個人認為可能是pybullet這個模擬器模擬的有點過頭,使得機器人的pid運動過程對gripper的運動也產生了影響,所以後面,我去掉了機器人:
https://www。zhihu。com/video/986911529744343040
大家可以仔細看看這個影片,
機器人在抓的時候,我是特意加了人為擾動的!