Ravens คือชุดของงานจำลองใน PyBullet สำหรับการเรียนรู้การจัดการหุ่นยนต์ด้วยการมองเห็น โดยเน้นที่การเลือกและวาง มันมี API ที่เหมือนยิมพร้อมงานการจัดเรียงบนโต๊ะใหม่ 10 งาน โดยแต่ละงานมี (i) ออราเคิลแบบมีสคริปต์ที่ให้การสาธิตโดยผู้เชี่ยวชาญ (สำหรับการเรียนรู้แบบเลียนแบบ) และ (ii) ฟังก์ชันรางวัลที่ให้เครดิตบางส่วน (สำหรับการเรียนรู้แบบเสริมกำลัง)
(a) การแทรกบล็อก : หยิบบล็อกสีแดงรูปตัว L ขึ้นมาแล้ววางลงในฟิกซ์เจอร์รูปตัว L
(b) วางสีแดงในสีเขียว : หยิบบล็อกสีแดงและวางลงในชามสีเขียวท่ามกลางสิ่งของอื่น ๆ
(c) หอคอยแห่งฮานอย : ย้ายดิสก์จากหอคอยหนึ่งไปยังอีกหอคอยหนึ่งตามลำดับ - มีเพียงดิสก์ที่เล็กกว่าเท่านั้นที่สามารถวางทับบนหอคอยที่ใหญ่กว่าได้
(d) align-box-corner : หยิบกล่องขนาดสุ่มขึ้นมาและจัดมุมด้านใดด้านหนึ่งให้ตรงกับเครื่องหมายรูปตัว L บนโต๊ะ
(e) stack-block-pyramid : เรียงบล็อก 6 บล็อกตามลำดับเป็นพีระมิดขนาด 3-2-1 โดยเรียงตามลำดับสีรุ้ง
(f) กล่องจัดวางบนพาเลท : หยิบกล่องที่มีขนาดคงที่ที่เป็นเนื้อเดียวกันแล้วเรียงซ้อนกันเป็นชั้น ๆ บนพาเลท
(g) ชุดประกอบ : หยิบวัตถุต่าง ๆ และจัดเรียงไว้บนกระดานที่มีสัญลักษณ์เงาที่สอดคล้องกัน
(ซ) กล่องบรรจุ : หยิบกล่องขนาดสุ่มมาใส่ในภาชนะให้แน่น
(i) เชือกบิด : จัดเรียงเชือกที่เปลี่ยนรูปได้ใหม่โดยให้เชื่อมต่อจุดปลายทั้งสองของสี่เหลี่ยมจัตุรัส 3 ด้าน
(ญ) เสาเข็มกวาด : ผลักกองสิ่งของขนาดเล็กเข้าไปในเขตเป้าหมายที่ทำเครื่องหมายไว้บนโต๊ะ
งานบางอย่างจำเป็นต้องมีการวางนัยทั่วไปให้กับวัตถุที่มองไม่เห็น (d,g,h) หรือการเรียงลำดับหลายขั้นตอนพร้อมข้อเสนอแนะแบบวงปิด (c,e,f,h,i,j)
ทีม: พื้นที่เก็บข้อมูลนี้ได้รับการพัฒนาและดูแลโดย Andy Zeng, Pete Florence, Daniel Seita, Jonathan Tompson และ Ayzaan Wahid นี่คือแหล่งเก็บข้อมูลอ้างอิงสำหรับบทความนี้:
เว็บไซต์โครงการ • PDF • การประชุมการเรียนรู้หุ่นยนต์ (CoRL) 2020
แอนดี้ เซง, พีท ฟลอเรนซ์, โจนาธาน ทอมป์สัน, สเตฟาน เวลเกอร์, โจนาธาน เชียน, มาเรีย แอตทาเรียน, ทราวิส อาร์มสตรอง,
อีวาน คราซิน, ดัน เดือง, วิกัส สินธวานี, จอห์นนี่ ลี
เชิงนามธรรม. การยักย้ายด้วยหุ่นยนต์สามารถกำหนดสูตรเป็นการกระตุ้นลำดับของการกระจัดเชิงพื้นที่ โดยที่พื้นที่ที่ถูกเคลื่อนย้ายสามารถล้อมรอบวัตถุ ส่วนหนึ่งของวัตถุ หรือเอนด์เอฟเฟกต์ ในงานนี้ เราขอเสนอ Transporter Network ซึ่งเป็นสถาปัตยกรรมแบบจำลองง่ายๆ ที่จัดเรียงคุณลักษณะเชิงลึกใหม่เพื่ออนุมานการกระจัดเชิงพื้นที่จากการป้อนข้อมูลด้วยภาพ ซึ่งสามารถกำหนดพารามิเตอร์การกระทำของหุ่นยนต์ได้ มันไม่มีสมมติฐานเกี่ยวกับความเป็นวัตถุ (เช่น ท่าทางตามแบบบัญญัติ แบบจำลอง หรือจุดสำคัญ) มันใช้ประโยชน์จากสมมาตรเชิงพื้นที่ และเป็นกลุ่มตัวอย่างที่มีขนาดมีประสิทธิภาพมากกว่าทางเลือกที่เป็นเกณฑ์มาตรฐานของเราในการเรียนรู้งานการจัดการตามการมองเห็น ตั้งแต่การซ้อนพีระมิดของบล็อก ไปจนถึง การประกอบชุดอุปกรณ์ด้วยวัตถุที่มองไม่เห็น ตั้งแต่การจัดการเชือกที่เปลี่ยนรูปได้ ไปจนถึงการดันกองสิ่งของขนาดเล็กด้วยการตอบสนองแบบวงปิด วิธีการของเราสามารถแสดงถึงการกระจายนโยบายหลายรูปแบบที่ซับซ้อน และสรุปงานตามลำดับหลายขั้นตอน เช่นเดียวกับการเลือกและวาง 6DoF การทดลองกับงานจำลอง 10 งานแสดงให้เห็นว่าสามารถเรียนรู้ได้เร็วกว่าและสรุปได้ดีกว่างานพื้นฐานแบบ end-to-end ที่หลากหลาย รวมถึงนโยบายที่ใช้ท่าทางวัตถุจริง เราตรวจสอบวิธีการของเรากับฮาร์ดแวร์ในโลกแห่งความเป็นจริง
ขั้นตอนที่ 1 แนะนำ: ติดตั้ง Miniconda ด้วย Python 3.7
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -u
echo $' n export PATH=~/miniconda3/bin:"${PATH}" n ' >> ~ /.profile # Add Conda to PATH.
source ~ /.profile
conda init
ขั้นตอนที่ 2 สร้างและเปิดใช้งานสภาพแวดล้อม Conda จากนั้นติดตั้งแพ็คเกจ GCC และ Python
cd ~ /ravens
conda create --name ravens python=3.7 -y
conda activate ravens
sudo apt-get update
sudo apt-get -y install gcc libgl1-mesa-dev
pip install -r requirements.txt
python setup.py install --user
ขั้นตอนที่ 3 แนะนำ: ติดตั้งการเร่งความเร็ว GPU ด้วย NVIDIA CUDA 10.1 และ cuDNN 7.6.5 สำหรับ Tensorflow
./oss_scripts/install_cuda.sh # For Ubuntu 16.04 and 18.04.
conda install cudatoolkit==10.1.243 -y
conda install cudnn==7.6.5 -y
pip
บริสุทธิ์เป็นตัวอย่างสำหรับ Ubuntu 18.04:
./oss_scipts/install_cuda.sh # For Ubuntu 16.04 and 18.04.
sudo apt install gcc libgl1-mesa-dev python3.8-venv
python3.8 -m venv ./venv
source ./venv/bin/activate
pip install -U pip
pip install scikit-build
pip install -r ./requirements.txt
export PYTHONPATH= ${PWD}
ขั้นตอนที่ 1 สร้างข้อมูลการฝึกอบรมและการทดสอบ (บันทึกไว้ในเครื่อง) หมายเหตุ: ลบ --disp
สำหรับโหมดหัวขาด
python ravens/demos.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --mode=train --n=10
python ravens/demos.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --mode=test --n=100
หากต้องการรันด้วยหน่วยความจำที่ใช้ร่วมกัน ให้เปิดหน้าต่างเทอร์มินัลแยกต่างหากแล้วรัน python3 -m pybullet_utils.runServer
จากนั้นเพิ่ม --shared_memory
flag ให้กับคำสั่งด้านบน
ขั้นตอนที่ 2 ฝึกโมเดล เช่น โมเดล Transporter Networks จุดตรวจโมเดลจะถูกบันทึกไว้ในไดเร็กทอรี checkpoints
ทางเลือก: คุณอาจออกจากการฝึกก่อนเวลาอันควรหลังจากวนซ้ำ 1,000 ครั้งเพื่อข้ามไปยังขั้นตอนถัดไป
python ravens/train.py --task=block-insertion --agent=transporter --n_demos=10
ขั้นตอนที่ 3 ประเมินตัวแทน Transporter Networks โดยใช้โมเดลที่ได้รับการฝึกอบรมสำหรับการวนซ้ำ 1,000 ครั้ง ผลลัพธ์จะถูกบันทึกไว้ในไฟล์ .pkl
ในเครื่อง
python ravens/test.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --agent=transporter --n_demos=10 --n_steps=1000
ขั้นตอนที่ 4 ลงจุดและพิมพ์ผลลัพธ์
python ravens/plot.py --disp=True --task=block-insertion --agent=transporter --n_demos=10
ไม่จำเป็น. ติดตามการสูญเสียการฝึกอบรมและการตรวจสอบความถูกต้องด้วย Tensorboard
python -m tensorboard.main --logdir=logs # Open the browser to where it tells you to.
ดาวน์โหลดชุดข้อมูลการฝึกและการทดสอบที่สร้างขึ้นของเรา และโมเดลที่ได้รับการฝึกล่วงหน้า
wget https://storage.googleapis.com/ravens-assets/checkpoints.zip
wget https://storage.googleapis.com/ravens-assets/block-insertion.zip
wget https://storage.googleapis.com/ravens-assets/place-red-in-green.zip
wget https://storage.googleapis.com/ravens-assets/towers-of-hanoi.zip
wget https://storage.googleapis.com/ravens-assets/align-box-corner.zip
wget https://storage.googleapis.com/ravens-assets/stack-block-pyramid.zip
wget https://storage.googleapis.com/ravens-assets/palletizing-boxes.zip
wget https://storage.googleapis.com/ravens-assets/assembling-kits.zip
wget https://storage.googleapis.com/ravens-assets/packing-boxes.zip
wget https://storage.googleapis.com/ravens-assets/manipulating-rope.zip
wget https://storage.googleapis.com/ravens-assets/sweeping-piles.zip
สูตร MDP สำหรับแต่ละงานใช้การเปลี่ยนผ่านที่มีโครงสร้างต่อไปนี้:
ข้อสังเกต: ภาพ RGB-D แบบดิบและพารามิเตอร์ของกล้อง (ท่าทางและภายใน)
การดำเนินการ: ฟังก์ชันดั้งเดิม (ที่หุ่นยนต์จะเรียก) และพารามิเตอร์
รางวัล: ผลรวมของรางวัลสำหรับตอนที่ประสบความสำเร็จควรเป็น = 1
ข้อมูล: ท่า 6D ขนาด และสีของวัตถุ