欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Isaac Gym 來(lái)強(qiáng)化學(xué)習(xí)mycobot 抓取任務(wù)

大象機(jī)器人科技 ? 來(lái)源:大象機(jī)器人科技 ? 作者:大象機(jī)器人科技 ? 2023-04-11 14:57 ? 次閱讀

我現(xiàn)在將介紹一個(gè)利用myCobot的實(shí)驗(yàn)。這一次,實(shí)驗(yàn)將使用模擬器而不是物理機(jī)器進(jìn)行。當(dāng)嘗試使用機(jī)器人進(jìn)行深度強(qiáng)化學(xué)習(xí)時(shí),在物理機(jī)器上準(zhǔn)備大量訓(xùn)練數(shù)據(jù)可能具有挑戰(zhàn)性。但是,使用模擬器,很容易收集大量數(shù)據(jù)集。然而,對(duì)于那些不熟悉它們的人來(lái)說(shuō),模擬器可能看起來(lái)令人生畏。因此,我們嘗試使用由 Nvidia 開發(fā)的 Isaac Gym,它使我們能夠?qū)崿F(xiàn)從創(chuàng)建實(shí)驗(yàn)環(huán)境到僅使用 Python 代碼進(jìn)行強(qiáng)化學(xué)習(xí)的所有目標(biāo)。在這篇文章中,我將介紹我們使用的方法。

1. 簡(jiǎn)介

1.1 什么是Isaac Gym?

Isaac Gym是Nvidia為強(qiáng)化學(xué)習(xí)開發(fā)的物理模擬環(huán)境。基于 OpenAI Gym 庫(kù),物理計(jì)算在 GPU 上進(jìn)行,結(jié)果可以作為 Pytorch GPU 張量接收,從而實(shí)現(xiàn)快速模擬和學(xué)習(xí)。物理模擬是使用 PhysX 進(jìn)行的,它還支持使用 FleX 的軟體模擬(盡管使用 FleX 時(shí)某些功能受到限制)。

截至 2023 年 4 月的最新版本是預(yù)覽版 3。雖然早期版本有明顯的錯(cuò)誤,但版本 6000 及更高版本已經(jīng)看到了改進(jìn)和添加功能,使其成為一個(gè)非常有吸引力的模擬環(huán)境。計(jì)劃與Isaac Sim集成的Omniverse Isaac Gym的未來(lái)版本。但是,Isaac Gym本身是獨(dú)立的,可用于Python中的實(shí)驗(yàn)。在之前的博客文章(“GPU 服務(wù)器擴(kuò)展和 A<> 基準(zhǔn)測(cè)試”)中,提到使用 Omniverse Isaac 模擬器的研究和開發(fā)已經(jīng)開始,但 Isaac Gym 被優(yōu)先用于強(qiáng)化學(xué)習(xí)模擬。將Isaac Gym與Omniverse集成的最大好處可能是能夠使用逼真的視覺(jué)效果進(jìn)行圖像識(shí)別和高精度連續(xù)身體模擬,例如光線追蹤。看到未來(lái)如何發(fā)展將是令人興奮的。

PhysX 是由 Nvidia 開發(fā)的物理引擎,可在模擬器的 GPU 上進(jìn)行實(shí)時(shí)物理計(jì)算。雖然 Isaac Gym 使用的版本尚未在公開的 arXiv 或文檔中指定,但考慮到它的發(fā)布時(shí)間和與 FleX 的分離,它很可能基于 PhysX 4。在 Omniverse 中,使用 PhysX 5 并集成了 FleX。

FleX 也是 Nvidia 開發(fā)的物理引擎,但與 PhysX 的剛體模擬相比,它能夠使用基于粒子的模擬來(lái)表示軟體和流體。

1.2 本文的目的

我將告訴您我如何使用Isaac Gym輕松創(chuàng)建和學(xué)習(xí)強(qiáng)化學(xué)習(xí)任務(wù)。作為實(shí)際的測(cè)試用例

1.3 環(huán)境

PC1: Ubuntu 20.04, Python 3.8.10, Nvidia RTX A6000

PC2: Ubuntu 18.04, Python 3.8.0, Nvidia RTX 3060Ti

請(qǐng)注意,需要 Nvidia Driver 470 或更高版本。

2.安裝

在本章中,我們將安裝 Isaac Gym 和 IsaacGymEnvs。推薦環(huán)境為 Ubuntu 18.04、20.04、Python 3.6~3.8、Nvidia Driver==470。請(qǐng)注意,由于 python_requires<3.9 在 Isaac Gym 的 setup.py 中有描述,因此不能按 3.9 及更高版本的原樣使用。尚未在 Ubuntu 22.04 上進(jìn)行測(cè)試,但可能沒(méi)問(wèn)題。

2.1 Isaac Gym

您可以從 Nvidia的開發(fā)人員頁(yè)面免費(fèi)下載Isaac Gym主軟件包。文檔以HTML格式保存在軟件包的“docs”目錄中(請(qǐng)注意,網(wǎng)站上沒(méi)有)。下載后,您可以使用以下命令安裝它:

$ cd isaacgym/python$ pip install -e .

但是,由于 PyTorch 被指定為“torch ==1.8.0”和“torchvision ==0.9.0”,因此在使用 GPU 時(shí),您應(yīng)該首先從與您的環(huán)境匹配的官方頁(yè)面安裝它。Docker 和 Conda 虛擬環(huán)境設(shè)置文件也可用。由于我使用 venv 來(lái)管理我的 Python 虛擬環(huán)境,所以我將繼續(xù)使用 pip。請(qǐng)注意,由于代碼塊問(wèn)題,我用全角字符寫了“>”

2.2IsaacGymEnvs

IsaacGymEnvs是一個(gè)Python軟件包,用于在Isaac Gym中測(cè)試強(qiáng)化學(xué)習(xí)環(huán)境。通過(guò)參考實(shí)現(xiàn)的任務(wù),可以使用 rl-games 中實(shí)現(xiàn)的強(qiáng)化學(xué)習(xí)算法輕松構(gòu)建強(qiáng)化學(xué)習(xí)環(huán)境。即使對(duì)于那些計(jì)劃編寫自己的強(qiáng)化學(xué)習(xí)算法的人,也建議嘗試使用此軟件包與 Isaac Gym 一起學(xué)習(xí)。它最初包含在 Isaac Gym 中,在 Preview3 中分離出來(lái),現(xiàn)在在 GitHub 上公開可用。

$ git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git$ cd IsaacGymEnvs$ pip install –e .

這樣,必要的安裝現(xiàn)在就完成了。

3. 演示

當(dāng)您安裝 Isaac Gym 并查看軟件包內(nèi)部時(shí),您會(huì)發(fā)現(xiàn)有許多示例環(huán)境可用。這些也出現(xiàn)在文檔中,但在本文中,我們將在第 4 章中重點(diǎn)介紹一些與創(chuàng)建自定義強(qiáng)化學(xué)習(xí)環(huán)境相關(guān)的示例。如果已設(shè)置環(huán)境,最好嘗試運(yùn)行其中一些示例,看看它們可以執(zhí)行哪些操作。您甚至可能會(huì)發(fā)現(xiàn)它們提供了有關(guān)如何使用 API 完成您有興趣嘗試的事情的一些指導(dǎo)(如果您仍然不確定,請(qǐng)隨時(shí)通讀文檔)。

3.1.Isaac Gym

截至預(yù)覽版 4,有 27 個(gè)示例環(huán)境可用。

● “1080_balls_of_solitude.py”

“1080_balls_of_solitude.py”腳本生成一組金字塔形的球,這些球會(huì)掉下來(lái)。在沒(méi)有選項(xiàng)的情況下運(yùn)行腳本只允許同一環(huán)境(即在同一金字塔內(nèi))內(nèi)球之間的碰撞?!?-all_collisions”選項(xiàng)允許與其他環(huán)境中的球發(fā)生碰撞,而“--no_collisions”選項(xiàng)可禁用同一環(huán)境中物體之間的碰撞。此腳本還演示如何配置“create_actor”函數(shù)的參數(shù)以將對(duì)象添加到環(huán)境中。

● “dof_controls.py”

該腳本具有一個(gè)以3D方式移動(dòng)的Actor,這是OpenAI Gym中眾所周知的Cartpole問(wèn)題的變體。它演示了如何為機(jī)器人的每個(gè)自由度 (DOF) 設(shè)置控制方法,可以是位置、速度或力。一旦設(shè)置,這些控制方法在模擬過(guò)程中無(wú)法更改,并且只能通過(guò)所選方法控制Actor。忘記設(shè)置這些控制方法可能會(huì)導(dǎo)致執(zhí)行組件無(wú)法移動(dòng)。

● “franka_nut_bolt_ik_osc.py”

這個(gè)腳本展示了Franka Robotics的多關(guān)節(jié)機(jī)器人手臂Panda拿起一個(gè)螺母并將其擰到螺栓上。手臂使用反向運(yùn)動(dòng)學(xué)(IK)進(jìn)行控制。文件名包括“OSC”,但此腳本中未實(shí)現(xiàn) OSC 控制。但是,腳本“franka_cube_ik_osc.py”包括 OSC 控制。

通過(guò)在預(yù)覽版 4 中添加 SDF 碰撞,可以加載高分辨率碰撞文件,從而可以在螺母和螺栓槽之間精確計(jì)算碰撞(圖 1)。雖然初始 SDF 加載可能需要一些時(shí)間,但后續(xù)加載會(huì)緩存并快速啟動(dòng)。

poYBAGQ08u2AVMcpAAGwJQN8EOg569.png

圖 1:熊貓臂將螺母驅(qū)動(dòng)到螺栓上的模擬

● interop_torch.py

此腳本演示如何使用函數(shù)get_camera_image_gpu_tensor直接從 GPU 上的相機(jī)獲取傳感器數(shù)據(jù)。獲得的數(shù)據(jù)可以使用OpenCV輸出為圖像文件,就像常規(guī)物理相機(jī)一樣。執(zhí)行時(shí),該腳本會(huì)創(chuàng)建一個(gè)名為 interop_images 的目錄,并將相機(jī)圖像保存在該目錄。由于仿真數(shù)據(jù)不在GPU和CPU之間交換,因此可以快速處理圖像。但是,如果使用多 GPU 環(huán)境,則可能會(huì)發(fā)生錯(cuò)誤。論壇上建議的一種解決方案 是將 GPU 使用率限制為 CUDA_VISIBLE_DEVICES=0,但這在用于此腳本的環(huán)境中不起作用。

3.2.Isaac Gym環(huán)境

實(shí)現(xiàn)了 14 個(gè)強(qiáng)化學(xué)習(xí)任務(wù),可以使用任務(wù)目錄中的腳本執(zhí)行基準(zhǔn)測(cè)試。

● 關(guān)于配置文件

為每個(gè)任務(wù)準(zhǔn)備一個(gè)用 YAML 編寫的配置文件。常用設(shè)置位于 cfg 目錄的 config.yaml 中,可以使用 Hydra 使用命令行選項(xiàng)更改設(shè)置,而無(wú)需更改 YAML 文件。每個(gè)任務(wù)環(huán)境和 PhysX 的詳細(xì)設(shè)置都存儲(chǔ)在 cfg/task/ 目錄中,算法選擇和結(jié)構(gòu)存儲(chǔ)在 cfg/train/ 目錄中。

● 關(guān)于算法實(shí)現(xiàn)

強(qiáng)化學(xué)習(xí)算法在Rl游戲中使用PPO實(shí)現(xiàn)。盡管 docs/rl_examples.md 提到了選擇 SAC 的選項(xiàng),但它目前未包含在存儲(chǔ)庫(kù)中。

NN 層通常是 MLP,某些模型還包括 LSTM 層作為 RNN 層。盡管也可以添加 CNN 圖層,但沒(méi)有包含 CNN 圖層的示例模型。在第 5.2 節(jié)中,我們將討論將 CNN 層添加到模型的經(jīng)驗(yàn)。

示例代碼可以在 train.py 所在的 isaacgymenvs 目錄中執(zhí)行。

● 卡特桿

python train.py task=Cartpole [options]

這是經(jīng)典的推車任務(wù),目標(biāo)是以桿子不會(huì)掉落的方式移動(dòng)推車。默認(rèn)情況下,模型訓(xùn)練 100 個(gè) epoch,在 PC2 RTX 2Ti 環(huán)境中大約需要 3060 分鐘,在無(wú)外設(shè)模式下(沒(méi)有查看器)只需要 15 秒。當(dāng)使用推理測(cè)試模型時(shí),它表現(xiàn)良好,桿子保持直立(經(jīng)過(guò) 30 個(gè)時(shí)期的訓(xùn)練后,模型經(jīng)過(guò)足夠的訓(xùn)練以保持極點(diǎn)直立)。雖然看起來(lái)很簡(jiǎn)單,但模型可以學(xué)習(xí)成功完成此任務(wù)的事實(shí)令人放心。

● 弗蘭卡立方體堆棧

python train.py task=FrankaCubeStack [options]

這是一項(xiàng)使用熊貓手臂堆疊盒子的任務(wù)。7軸臂的關(guān)節(jié)運(yùn)動(dòng)是一步一步學(xué)習(xí)的。默認(rèn)設(shè)置為 10, 000 個(gè)紀(jì)元,但手臂運(yùn)動(dòng)可以在大約 1, 000 個(gè)紀(jì)元內(nèi)學(xué)習(xí)。在 PC1 RTX A6000 環(huán)境中,完成 1, 000 個(gè)時(shí)期的訓(xùn)練大約需要 20-30 分鐘。圖 2 和圖 3 顯示了手臂的前后狀態(tài),從隨機(jī)移動(dòng)到成功抓取和堆疊盒子。

動(dòng)作空間由手臂關(guān)節(jié)的 7 個(gè)維度組成,而觀察空間共有 26 個(gè)維度。獎(jiǎng)勵(lì)函數(shù)旨在針對(duì)涉及靠近盒子、抬起盒子、將盒子彼此靠近以及成功完成堆疊任務(wù)的操作進(jìn)行不同的縮放。

令人驚訝的是,手臂可以如此容易地學(xué)習(xí)這種級(jí)別的任務(wù)。但是,請(qǐng)務(wù)必注意,學(xué)習(xí)假定定義的世界坐標(biāo)系以及對(duì)象的已知位置和方向。因此,將這種學(xué)習(xí)行為應(yīng)用于物理機(jī)器人可能并不那么簡(jiǎn)單。

26維觀測(cè)細(xì)分:

● 7 個(gè)尺寸,用于移動(dòng)盒子的位置和方向

● 從被堆疊的盒子到被移動(dòng)的盒子的矢量的 3 個(gè)維度

● 7 種尺寸,用于夾持器的抓取位置和方向

● 9 種尺寸的手臂關(guān)節(jié)和抓手手指

poYBAGQ09fCAA1YyAAd6Ggd8vFU776.png

圖 2:訓(xùn)練前的 FrankaCubeStack

pYYBAGQ09gmATzVGAAfIfRfljXQ812.png

圖 3:訓(xùn)練后的 FrankaCubeStack

train.py 中的一些常見(jiàn)選項(xiàng)包括:

● 無(wú)頭(默認(rèn)值:假):設(shè)置為 True 時(shí),不會(huì)啟動(dòng)查看器。這對(duì)于繁重的訓(xùn)練或捕獲相機(jī)圖像時(shí)非常有用,因?yàn)橛^看者可能會(huì)顯著減慢該過(guò)程。

● 測(cè)試(默認(rèn)值:False):設(shè)置為 True 時(shí),學(xué)習(xí)模式將關(guān)閉,允許您無(wú)需訓(xùn)練即可運(yùn)行環(huán)境。這對(duì)于生成環(huán)境和檢查學(xué)習(xí)結(jié)果很有用。

● 檢查點(diǎn)(默認(rèn):“):指定要加載的 PyTorch 權(quán)重文件。學(xué)習(xí)結(jié)果保存在 runs//nn/.pth 中,此選項(xiàng)用于恢復(fù)訓(xùn)練或測(cè)試。

● num_envs(默認(rèn):int):指定并行學(xué)習(xí)環(huán)境的數(shù)量。設(shè)置適當(dāng)?shù)臄?shù)字以避免在測(cè)試期間出現(xiàn)大量查看器非常重要(此選項(xiàng)也可以在訓(xùn)練期間設(shè)置,但更改它可能會(huì)導(dǎo)致由于批量大小和干擾而導(dǎo)致錯(cuò)誤)。

請(qǐng)注意,train.py 配置horizon_length和minibatch_size,但batch_size = horizon_length * num_actors * num_agents,并且batch_size必須能被minibatch_size整除。此外,num_actors 和num_agents與num_envs成正比,因此僅更改num_envs可能會(huì)導(dǎo)致錯(cuò)誤。

其他樣本可以在環(huán)境中輕松嘗試,因此請(qǐng)嘗試一些有趣的測(cè)試。

3.3 查看器提示

● 繪制碰撞網(wǎng)格

模擬器通常會(huì)渲染對(duì)象的視覺(jué)網(wǎng)格,但在 Isaac Gym 的查看器中,您可以更改它以渲染碰撞網(wǎng)格體。為此,請(qǐng)轉(zhuǎn)到菜單窗口中的查看器選項(xiàng)卡,然后選中“渲染碰撞網(wǎng)格”。如果對(duì)象行為異常,最好檢查碰撞網(wǎng)格是否正確加載(有時(shí)視覺(jué)網(wǎng)格和碰撞網(wǎng)格具有不同的方向,或者網(wǎng)格可能未正確加載或在模擬器中沒(méi)有足夠的細(xì)節(jié))。

poYBAGQ09iyAEffNAABZGWXFoJY924.png

圖 4:繪制碰撞網(wǎng)格

● 減少繪圖環(huán)境

您可以將渲染環(huán)境減少到只有一個(gè),而無(wú)需更改任何設(shè)置。通過(guò)在 Actor 菜單中選中“僅顯示選定的環(huán)境”(如圖 5 所示),將僅顯示選定的環(huán)境。如果有任何奇怪的行為,可以通過(guò)輸出環(huán)境編號(hào)并僅呈現(xiàn)該環(huán)境來(lái)進(jìn)行調(diào)試。這也減輕了渲染負(fù)載,并可以提高 FPS。

pYYBAGQ09kKAWUc0AABkzTlR6cY267.png

圖 5:對(duì)繪圖環(huán)境進(jìn)行編號(hào)

● 更改初始相機(jī)位置

初始相機(jī)位置和方向可以使用 gymapi 的viewer_camera_look_at(查看器、middle_env、cam_pos、cam_target)進(jìn)行設(shè)置。在用于訓(xùn)練的任務(wù)腳本中,需要重寫 set_viewer 函數(shù)才能進(jìn)行更改。

4. 原始環(huán)境和任務(wù)創(chuàng)建

終于到了為主要主題創(chuàng)建原始任務(wù)的時(shí)候了。

4.1. 準(zhǔn)備

準(zhǔn)備腳本和配置文件。目標(biāo)是學(xué)習(xí)一個(gè)簡(jiǎn)單的任務(wù),使用Mycobot進(jìn)行物體拾取。因此,我們將繼續(xù)創(chuàng)建一個(gè)名為“MycobotPicking”的任務(wù)。我們需要三個(gè)文件:

● 任務(wù):主 Python 腳本

● cfg/task:環(huán)境和模擬參數(shù)的 YAML 配置文件

● cfg/train:用于學(xué)習(xí)算法、神經(jīng)網(wǎng)絡(luò)層和參數(shù)的 YAML 配置文件。

我們可以參考前面提到的“FrankaCubeStack”任務(wù)并相應(yīng)地創(chuàng)建這些文件。配置文件特別重要,我們可以根據(jù)自己的要求復(fù)制和修改它們。

如演示所示,我們可以使用命令行選項(xiàng)從 train.py 文件加載任務(wù)腳本。因此,我們需要在 tasks 目錄的 init.py 文件中為 task 類添加一個(gè) import 語(yǔ)句,并在傳遞參數(shù)時(shí)添加任務(wù)名稱。

4.2. 環(huán)境創(chuàng)建

任務(wù)類是通過(guò)繼承任務(wù)/基目錄中的 VecTask 類創(chuàng)建的,任務(wù)具有以下結(jié)構(gòu),如圖 6 所示。

pYYBAGQ09mmAM_idAAIYDAptQek744.png

圖 6:任務(wù)配置。帶有橙色框的那些不需要編輯,并且為每個(gè)任務(wù)創(chuàng)建帶有綠色框的那些。

4.2.1. __init__處理

1. 創(chuàng)建模擬器和環(huán)境

● create_sim:此函數(shù)生成模擬器的實(shí)例。過(guò)程本身在父類中定義,屬性在配置文件中設(shè)置,例如重力和步長(zhǎng)時(shí)間。與FrankaCubeStack類似,該函數(shù)使用以下兩個(gè)函數(shù)來(lái)生成接地平面和執(zhí)行組件。

● create_ground_plane:此功能通過(guò)輸入平面的法線方向生成接地平面。如果要?jiǎng)?chuàng)建不平坦的地形,可以參考terrain_creation示例。

● create_envs:此函數(shù)加載并設(shè)置角色文件的屬性,生成執(zhí)行組件并并行化環(huán)境。在這個(gè)任務(wù)中,我們從URDF生成了myCobot,從create_box API生成了目標(biāo)對(duì)象。myCobot 的 URDF 基于之前使用 MoveIt 實(shí)驗(yàn)中使用的 URDF,我們添加了一個(gè)用于揀選的抓手(有關(guān)抓手的詳細(xì)信息在第 5.1 節(jié)中解釋)。

2. 數(shù)據(jù)初始化

● init_data:此函數(shù)從配置文件定義環(huán)境變量,并為 Isaac Gym (PhysX) 處理的數(shù)據(jù)張量準(zhǔn)備緩沖區(qū)。計(jì)算狀態(tài)和獎(jiǎng)勵(lì)的必要數(shù)據(jù)定義為類變量。API 將張量數(shù)據(jù)加載到緩沖區(qū)中,緩沖區(qū)通過(guò)調(diào)用相應(yīng)的刷新函數(shù)每一步更新一次。

4.2.2. 處理步驟

1. 分步處理:

主步驟函數(shù)在父類中定義,不需要修改。但是,以下兩個(gè)步驟作為抽象方法是必需的:

● pre_physics_step:使用動(dòng)作操縱演員。操作的大小在配置中定義為 [“env”][“numActions”]。對(duì)于myCobot的6軸臂和夾持器,我們將其設(shè)置為7維。

● post_physics_step:計(jì)算觀察結(jié)果和獎(jiǎng)勵(lì)。還要檢查是否重置環(huán)境。我們將其設(shè)置為在達(dá)到最大 500 步或成功提升后重置。

固定步序,應(yīng)用物理模擬→→觀察獎(jiǎng)勵(lì)計(jì)算的動(dòng)作,傳遞數(shù)據(jù)進(jìn)行學(xué)習(xí)。即使您在這里只寫“pass”,也可以在啟動(dòng)查看器時(shí)檢查環(huán)境。

● reset_idx:將環(huán)境返回到其初始狀態(tài)。當(dāng)然,初始狀態(tài)的隨機(jī)性與學(xué)習(xí)的泛化密切相關(guān)。我們將myCobot設(shè)置為初始姿勢(shì),并隨機(jī)重置目標(biāo)對(duì)象在myCobot可到達(dá)范圍內(nèi)的位置。

2. 狀態(tài)和獎(jiǎng)勵(lì)計(jì)算:

● compute_observation:使用刷新功能更新每個(gè)緩沖區(qū),并將所需的狀態(tài)放入obs_buf。obs_buf的大小在配置中定義為 [“env”][“numObservation”]。

● compute_reward:計(jì)算獎(jiǎng)勵(lì)。當(dāng)抓手接近目標(biāo)物體的抓握位置(手指之間)時(shí),獲得獎(jiǎng)勵(lì),并且隨著目標(biāo)物體高度的增加而獲得更大的獎(jiǎng)勵(lì)。

4.3. 培訓(xùn)的執(zhí)行

現(xiàn)在任務(wù)框架已創(chuàng)建,讓我們訓(xùn)練模型。我們可以使用以下命令開始訓(xùn)練模型:

python train.py task=MycobotPicking --headless

200 個(gè) epoch 后,將保存初始權(quán)重,如果獎(jiǎng)勵(lì)提高,將保存新的權(quán)重。但是,我們創(chuàng)建的任務(wù)可能無(wú)法完美運(yùn)行,訓(xùn)練過(guò)程可能會(huì)停止快速進(jìn)行。在下一節(jié)中,我將討論我對(duì)任務(wù)所做的調(diào)整,以提高其性能。

4.4. 任務(wù)協(xié)調(diào)

通過(guò)使用學(xué)習(xí)的權(quán)重進(jìn)行測(cè)試,您可以調(diào)試訓(xùn)練效果不佳的原因。您運(yùn)行了命令

python train.py task=MycobotPicking test=True checkpoint=runs/MycobotPicking/nn/[checkpoint].pth

以測(cè)試模型。但是,您遇到了夾持器移動(dòng)不佳的問(wèn)題。盡管您努力解決問(wèn)題,但您得出的結(jié)論是 URDF 不支持閉環(huán)結(jié)構(gòu),因此難以準(zhǔn)確模擬夾持器的運(yùn)動(dòng)。因此,您決定使用基于規(guī)則的方法來(lái)控制夾持器的關(guān)閉和提升動(dòng)作。您將夾持器的手指固定在固定鏈接上,并將操作空間從 7 個(gè)維度減少到 6 個(gè)維度。您還注意到,在使用模擬器控制機(jī)器人手臂時(shí),最好使用沒(méi)有閉環(huán)的抓手,例如熊貓手臂。

您面臨的另一個(gè)問(wèn)題是,代理在一定距離處停止接近物體并猶豫是否觸摸它,從而導(dǎo)致獎(jiǎng)勵(lì)降低。您修改了獎(jiǎng)勵(lì)系統(tǒng),方法是使用閾值距離作為階躍函數(shù)增加獎(jiǎng)勵(lì)函數(shù)的值,從而在代理到達(dá)目標(biāo)點(diǎn)時(shí)最大化獎(jiǎng)勵(lì)。您還刪除了任務(wù)完成后的環(huán)境重置,因?yàn)樗鼤?huì)導(dǎo)致代理在達(dá)到實(shí)際目標(biāo)之前停止學(xué)習(xí)。相反,您將最大步驟數(shù)調(diào)整為任務(wù)完成所需的數(shù)量,從而提高了學(xué)習(xí)速度。

你還發(fā)現(xiàn),過(guò)于嚴(yán)厲地懲罰困難的任務(wù)會(huì)使強(qiáng)化學(xué)習(xí)代理過(guò)于保守。這給了智能體更像人類的個(gè)性,使學(xué)習(xí)過(guò)程更加有趣。最后,您在 FrankaCabinet 基準(zhǔn)測(cè)試任務(wù)中遇到了類似的現(xiàn)象,即代理在將抽屜拉到一定距離后會(huì)停止學(xué)習(xí),即使完全拉出抽屜可以獲得更高的獎(jiǎng)勵(lì)。您沒(méi)有解決此問(wèn)題,而是刪除了任務(wù)完成后的環(huán)境重置,并調(diào)整了最大步驟數(shù)以順利完成任務(wù)。

poYBAGQ1A4GALreQAA8dxxeMHSA754.png

圖 7:myCobot 遠(yuǎn)離物體

手臂的自相撞被忽略了。雖然我能夠到達(dá)所需的位置,但手臂現(xiàn)在處于完全忽略自碰撞的位置,就像八字形一樣。我試圖研究是否可以在文檔中設(shè)置自碰撞計(jì)算,但它效果不佳。首先,將提供的URDF中的所有關(guān)節(jié)角度限制都設(shè)置為-3.14~3.14是不現(xiàn)實(shí)的,因此我決定調(diào)整每個(gè)關(guān)節(jié)角度的上限和下限以避免自碰撞。關(guān)節(jié)角度移動(dòng)到最大可能值的原因仍然未知。

poYBAGQ1A5yAZ9c-AAkCoZKqQoA485.png

圖8:忽略事故碰撞的myCobot

手臂并沒(méi)有完全停在它應(yīng)該停的地方,而是在它周圍搖擺。我們希望動(dòng)作在到達(dá)目標(biāo)位置時(shí)接近 0,但很難實(shí)現(xiàn),并且手臂在目標(biāo)位置周圍不斷振動(dòng)。我們嘗試通過(guò)精確設(shè)置目標(biāo)位置來(lái)懲罰動(dòng)作并調(diào)整獎(jiǎng)勵(lì),但這并沒(méi)有改善結(jié)果。我們決定不擔(dān)心這個(gè)問(wèn)題,因?yàn)樗梢栽趯?shí)際操作中由基于規(guī)則的控制來(lái)處理。

雖然這不是必備品,但我們希望抓手朝下以獲得更好的外觀。因此,我們?cè)讵?jiǎng)勵(lì)函數(shù)中添加了一個(gè)懲罰項(xiàng),用于懲罰抓手角度。圖 9 顯示了微調(diào)之前的學(xué)習(xí)結(jié)果。

poYBAGQ1A9WAFPwVABeqkpWsyJg202.png

圖 9:在微調(diào)之前學(xué)習(xí)后的 MyCobot

上述調(diào)整的結(jié)果如圖 10 所示。如果可以在實(shí)際機(jī)器人上達(dá)到這種精度水平,它應(yīng)該能夠充分提升物體。

poYBAGQ1BAeAbKJUABTId2OaPZ0135.png

圖 10:微調(diào)后訓(xùn)練后的 MyCobot

5. 其他

我將介紹不好的故事和我想嘗試的故事。

5.1. 自制 URDF 抓手不起作用的故事

myCobot的URDF基于之前嘗試移動(dòng)實(shí)際機(jī)器人時(shí)使用的URDF,但它不包括夾持器。盡管在官方 GitHub 頁(yè)面上有一個(gè)抓手模型,但它只提供了一個(gè)帶有可視化表示的 DAE 文件,如圖 11(a) 所示。要?jiǎng)?chuàng)建可在模擬器中使用的 URDF,需要為每個(gè)關(guān)節(jié)部件提供單獨(dú)的 3D 模型。因此,使用Blender,我們按關(guān)節(jié)劃分零件(圖11(c)),并創(chuàng)建了簡(jiǎn)化的箱形碰撞零件,因?yàn)楹茈y重現(xiàn)復(fù)雜的形狀(圖11(b))。然后,我們?cè)?URDF 文件中描述了鏈接和關(guān)節(jié)的結(jié)構(gòu)以完成模型。但是,由于URDF不支持具有開放式鏈接結(jié)構(gòu)的模型,因此我們從底座上的一個(gè)鏈接中移除了碰撞,并用指尖側(cè)完成了連接。雖然這種方法很粗糙,但我們能夠通過(guò)以相同角度移動(dòng)六個(gè)關(guān)節(jié)來(lái)重現(xiàn)模擬器中實(shí)際機(jī)器人的運(yùn)動(dòng)。圖11(d)顯示了完成的模型和實(shí)際機(jī)器人之間的比較(使用提供的模型,但細(xì)節(jié)完全不同)。但是,當(dāng)我們實(shí)際嘗試移動(dòng)它時(shí),如第 4.4 節(jié)所述,它的效果不佳。原因是在施加外力時(shí)無(wú)法協(xié)調(diào)地移動(dòng)接頭(如果正確實(shí)施扭矩控制,則可能已經(jīng)解決)。

poYBAGQ1BCaAF8H8AAHe2wRqYfA804.png

圖 11:為 myCobot 創(chuàng)建夾持器 (a) 已發(fā)布的夾持器模型 (b) 根據(jù)模型創(chuàng)建的碰撞模型零件 (c) 從夾持器模型拆卸的視覺(jué)模型部件 (d) 艾薩克健身房 圖紙和實(shí)際夾持器的比較

5.2. 使用圖像識(shí)別

在基準(zhǔn)測(cè)試和MycobotPicking任務(wù)中,我們?cè)谟^察中使用對(duì)象位置和方向信息,但在實(shí)際任務(wù)中獲取這些信息并不容易。因此,僅使用2D相機(jī)信息和易于獲取的伺服關(guān)節(jié)角度信息進(jìn)行強(qiáng)化學(xué)習(xí)將更有價(jià)值。

我們?cè)噲D用圖像替換觀察結(jié)果,并在FrankaCubeStack任務(wù)中使用CNN層進(jìn)行學(xué)習(xí)。但是,我們只修改了算法以接受圖像輸入,并且正如預(yù)期的那樣,學(xué)習(xí)效果不佳。沒(méi)有框架將伺服關(guān)節(jié)角度信息作為一維數(shù)據(jù)添加到CNN層,直接在CNN層中使用圖像信息增加了計(jì)算復(fù)雜度,限制了環(huán)境的并行化。此外,我們需要調(diào)整超參數(shù),如學(xué)習(xí)率和剪輯值,但我們沒(méi)有追求這一點(diǎn),因?yàn)樾Ч粔蛴邢M?/p>

在這個(gè)測(cè)試中,我們只確認(rèn)了添加CNN層進(jìn)行學(xué)習(xí)的方法。但是,使用遷移學(xué)習(xí)對(duì)來(lái)自易于使用的對(duì)象識(shí)別模型(如 YOLO 或 ResNet)的抓手和對(duì)象識(shí)別的特征進(jìn)行編碼,然后使用編碼的特征和關(guān)節(jié)角度進(jìn)行強(qiáng)化學(xué)習(xí),而不是直接將 CNN 層與相機(jī)圖像一起使用,可能更有效。

5.3. 在實(shí)際機(jī)器人上使用訓(xùn)練模型

如上一篇文章所述,我嘗試使用經(jīng)過(guò)訓(xùn)練的模型以及myCobot和RealSense進(jìn)行空間識(shí)別的Sim2Real實(shí)驗(yàn)。但是,它的效果并不好。雖然伸展運(yùn)動(dòng)在一定程度上起作用,但運(yùn)動(dòng)在接近物體時(shí)變得不穩(wěn)定,并且無(wú)法準(zhǔn)確地移動(dòng)到抓住物體的位置??赡艿膯?wèn)題包括myCobot沒(méi)有足夠的能力來(lái)準(zhǔn)確移動(dòng)到目標(biāo)姿勢(shì),以及由于模擬器在到達(dá)當(dāng)前目標(biāo)姿勢(shì)之前預(yù)測(cè)下一個(gè)目標(biāo)姿勢(shì)而實(shí)際機(jī)器人沒(méi)有,因此積累了微小的差異。關(guān)于前者,本實(shí)驗(yàn)中使用的myCobot是一種廉價(jià)的教育手臂,便攜式重量為250g,因此,如果您想更準(zhǔn)確地移動(dòng),則應(yīng)使用更高端的機(jī)器人手臂,例如用于強(qiáng)化學(xué)習(xí)的機(jī)器人手臂進(jìn)行拾取。制造myCobot的公司Elephantrobotics也銷售具有更強(qiáng)伺服電機(jī)的型號(hào),可以承載高達(dá)1公斤的重量,所以我也想嘗試一下。

6. 總結(jié)

這一次,我使用 Isaac Gym 創(chuàng)建了一個(gè)強(qiáng)化學(xué)習(xí)任務(wù),并實(shí)際訓(xùn)練了模型。我在 3D 物理模擬器中體驗(yàn)了機(jī)器人強(qiáng)化學(xué)習(xí)問(wèn)題的設(shè)計(jì)以及運(yùn)行訓(xùn)練模型時(shí)出現(xiàn)的問(wèn)題。能夠測(cè)試學(xué)習(xí)環(huán)境而不必從頭開始編寫強(qiáng)化學(xué)習(xí)算法很有吸引力。基準(zhǔn)環(huán)境的可用性使得比較和驗(yàn)證新的學(xué)習(xí)算法變得容易,這對(duì)于具有各種專業(yè)背景的研究人員和分析師來(lái)說(shuō)是一個(gè)很大的優(yōu)勢(shì)。

ALBERT擁有具有各種專業(yè)背景的研究人員和分析師,他們隨時(shí)準(zhǔn)備協(xié)助任何技術(shù)或業(yè)務(wù)相關(guān)的查詢。請(qǐng)隨時(shí)與我們聯(lián)系。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    211

    文章

    28673

    瀏覽量

    208551
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5078

    瀏覽量

    103772
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是深度強(qiáng)化學(xué)習(xí)?深度強(qiáng)化學(xué)習(xí)算法應(yīng)用分析

    什么是深度強(qiáng)化學(xué)習(xí)? 眾所周知,人類擅長(zhǎng)解決各種挑戰(zhàn)性的問(wèn)題,從低級(jí)的運(yùn)動(dòng)控制(如:步行、跑步、打網(wǎng)球)到高級(jí)的認(rèn)知任務(wù)。
    發(fā)表于 07-01 10:29 ?1534次閱讀
    什么是深度<b class='flag-5'>強(qiáng)化學(xué)習(xí)</b>?深度<b class='flag-5'>強(qiáng)化學(xué)習(xí)</b>算法應(yīng)用分析

    反向強(qiáng)化學(xué)習(xí)的思路

    強(qiáng)化學(xué)習(xí)的另一種策略(二)
    發(fā)表于 04-03 12:10

    深度強(qiáng)化學(xué)習(xí)實(shí)戰(zhàn)

    測(cè)試)三、主講內(nèi)容1:課程一、強(qiáng)化學(xué)習(xí)簡(jiǎn)介課程二、強(qiáng)化學(xué)習(xí)基礎(chǔ)課程三、深度強(qiáng)化學(xué)習(xí)基礎(chǔ)課程四、多智能體深度強(qiáng)化學(xué)習(xí)課程五、多任務(wù)深度
    發(fā)表于 01-10 13:42

    深度學(xué)習(xí)技術(shù)的開發(fā)與應(yīng)用

    /A2C6.DDPG7.PPO8.SAC1.深度強(qiáng)化學(xué)習(xí)訓(xùn)練場(chǎng)-OpenAI Gym 安裝與使用2.Pytorch安裝與使用3.自動(dòng)駕駛賽車任務(wù)4.月球飛船降落任務(wù)實(shí)操解析與訓(xùn)練一實(shí)驗(yàn)
    發(fā)表于 04-21 14:57

    強(qiáng)化學(xué)習(xí)在RoboCup帶球任務(wù)中的應(yīng)用劉飛

    強(qiáng)化學(xué)習(xí)在RoboCup帶球任務(wù)中的應(yīng)用_劉飛
    發(fā)表于 03-14 08:00 ?0次下載

    將深度學(xué)習(xí)強(qiáng)化學(xué)習(xí)相結(jié)合的深度強(qiáng)化學(xué)習(xí)DRL

    深度強(qiáng)化學(xué)習(xí)DRL自提出以來(lái), 已在理論和應(yīng)用方面均取得了顯著的成果。尤其是谷歌DeepMind團(tuán)隊(duì)基于深度強(qiáng)化學(xué)習(xí)DRL研發(fā)的AlphaGo,將深度強(qiáng)化學(xué)習(xí)DRL成推上新的熱點(diǎn)和高度,成為人工智能歷史上一個(gè)新的里程碑。因此,深
    發(fā)表于 06-29 18:36 ?2.8w次閱讀

    人工智能機(jī)器學(xué)習(xí)強(qiáng)化學(xué)習(xí)

    強(qiáng)化學(xué)習(xí)是智能系統(tǒng)從環(huán)境到行為映射的學(xué)習(xí),以使獎(jiǎng)勵(lì)信號(hào)(強(qiáng)化信號(hào))函數(shù)值最大,強(qiáng)化學(xué)習(xí)不同于連接主義學(xué)習(xí)中的監(jiān)督
    發(fā)表于 05-30 06:53 ?1437次閱讀

    什么是強(qiáng)化學(xué)習(xí)?純強(qiáng)化學(xué)習(xí)有意義嗎?強(qiáng)化學(xué)習(xí)有什么的致命缺陷?

    強(qiáng)化學(xué)習(xí)是人工智能基本的子領(lǐng)域之一,在強(qiáng)化學(xué)習(xí)的框架中,智能體通過(guò)與環(huán)境互動(dòng),來(lái)學(xué)習(xí)采取何種動(dòng)作能使其在給定環(huán)境中的長(zhǎng)期獎(jiǎng)勵(lì)最大化,就像在上述的棋盤游戲寓言中,你通過(guò)與棋盤的互動(dòng)
    的頭像 發(fā)表于 07-15 10:56 ?1.8w次閱讀
    什么是<b class='flag-5'>強(qiáng)化學(xué)習(xí)</b>?純<b class='flag-5'>強(qiáng)化學(xué)習(xí)</b>有意義嗎?<b class='flag-5'>強(qiáng)化學(xué)習(xí)</b>有什么的致命缺陷?

    如何構(gòu)建強(qiáng)化學(xué)習(xí)模型來(lái)訓(xùn)練無(wú)人車算法

    本文作者通過(guò)簡(jiǎn)單的方式構(gòu)建了強(qiáng)化學(xué)習(xí)模型來(lái)訓(xùn)練無(wú)人車算法,可以為初學(xué)者提供快速入門的經(jīng)驗(yàn)。
    的頭像 發(fā)表于 11-12 14:47 ?4931次閱讀

    如何使用深度強(qiáng)化學(xué)習(xí)進(jìn)行機(jī)械臂視覺(jué)抓取控制的優(yōu)化方法概述

    針對(duì)提高視覺(jué)圖像特征與優(yōu)化控制之間契合度的問(wèn)題,本文提出一種基于深度強(qiáng)化學(xué)習(xí)的機(jī)械臂視覺(jué)抓取控制優(yōu)化方法,可以自主地從與環(huán)境交互產(chǎn)生的視覺(jué)圖像中不斷學(xué)習(xí)特征提取,直接地將提取的特征應(yīng)用于機(jī)械臂
    發(fā)表于 12-19 15:23 ?22次下載
    如何使用深度<b class='flag-5'>強(qiáng)化學(xué)習(xí)</b>進(jìn)行機(jī)械臂視覺(jué)<b class='flag-5'>抓取</b>控制的優(yōu)化方法概述

    對(duì)NAS任務(wù)強(qiáng)化學(xué)習(xí)的效率進(jìn)行深入思考

    在一些情況下,我們會(huì)用策略函數(shù)(policy, 總得分,也就是搭建的網(wǎng)絡(luò)在測(cè)試集上的精度(accuracy),通過(guò)強(qiáng)化學(xué)習(xí)(Reinforcement Learning)這種通用黑盒算法來(lái)優(yōu)化。然而,因?yàn)?b class='flag-5'>強(qiáng)化學(xué)習(xí)本身具有數(shù)據(jù)利用
    的頭像 發(fā)表于 01-28 09:54 ?5119次閱讀

    強(qiáng)化學(xué)習(xí)在智能對(duì)話上的應(yīng)用介紹

    本文主要介紹深度強(qiáng)化學(xué)習(xí)任務(wù)型對(duì)話上的應(yīng)用,兩者的結(jié)合點(diǎn)主要是將深度強(qiáng)化學(xué)習(xí)應(yīng)用于任務(wù)型對(duì)話的策略學(xué)習(xí)上來(lái)源:騰訊技術(shù)工程微信號(hào)
    的頭像 發(fā)表于 12-10 19:02 ?1092次閱讀

    基于深度強(qiáng)化學(xué)習(xí)的視覺(jué)反饋機(jī)械臂抓取系統(tǒng)

    機(jī)械臂抓取擺放及堆疊物體是智能工廠流水線上常見(jiàn)的工序,可以有效的提升生產(chǎn)效率,本文針對(duì)機(jī)械臂的抓取擺放、抓取堆疊等常見(jiàn)任務(wù),結(jié)合深度強(qiáng)化學(xué)習(xí)
    的頭像 發(fā)表于 06-12 11:25 ?2567次閱讀
    基于深度<b class='flag-5'>強(qiáng)化學(xué)習(xí)</b>的視覺(jué)反饋機(jī)械臂<b class='flag-5'>抓取</b>系統(tǒng)

    NeurIPS 2023 | 擴(kuò)散模型解決多任務(wù)強(qiáng)化學(xué)習(xí)問(wèn)題

    擴(kuò)散模型(diffusion model)在 CV 領(lǐng)域甚至 NLP 領(lǐng)域都已經(jīng)有了令人印象深刻的表現(xiàn)。最近的一些工作開始將 diffusion model 用于強(qiáng)化學(xué)習(xí)(RL)中來(lái)解決序列決策問(wèn)題
    的頭像 發(fā)表于 10-02 10:45 ?915次閱讀
    NeurIPS 2023 | 擴(kuò)散模型解決多<b class='flag-5'>任務(wù)</b><b class='flag-5'>強(qiáng)化學(xué)習(xí)</b>問(wèn)題

    如何使用 PyTorch 進(jìn)行強(qiáng)化學(xué)習(xí)

    強(qiáng)化學(xué)習(xí)(Reinforcement Learning, RL)是一種機(jī)器學(xué)習(xí)方法,它通過(guò)與環(huán)境的交互來(lái)學(xué)習(xí)如何做出決策,以最大化累積獎(jiǎng)勵(lì)。PyTorch 是一個(gè)流行的開源機(jī)器
    的頭像 發(fā)表于 11-05 17:34 ?412次閱讀