PDDLStream เป็นกรอบการวางแผนที่ประกอบด้วยภาษาการดำเนินการและชุดอัลกอริธึมสำหรับการวางแผนปัญญาประดิษฐ์ (AI) เมื่อมีขั้นตอนการสุ่มตัวอย่าง PDDLStream ขยาย Planning Domain Definition Language (PDDL) โดยการแนะนำสตรีม ข้อกำหนดเฉพาะที่ประกาศของขั้นตอนการสุ่มตัวอย่าง อัลกอริธึม PDDLStream ไม่ขึ้นกับโดเมน และแก้ปัญหา PDDLStream ด้วยคำอธิบาย blackbox ของแต่ละตัวอย่างเท่านั้น แอปพลิเคชั่นที่สร้างแรงบันดาลใจของ PDDLStream นั้นมีไว้สำหรับหุ่นยนต์เอนกประสงค์และการวางแผนการเคลื่อนไหว (TAMP)
สาขา pddlstream เริ่มต้น (หลัก) คือ "release" ที่เสถียรใหม่ล่าสุดของ pddlstream pddlstream สาขา downward เป็นเวอร์ชันล่าสุดและขั้นสูงของ pddlstream แต่ยังอยู่ในช่วงทดลองอีกด้วย
ซีลัน อาร์. การ์เร็ตต์, โทมัส โลซาโน-เปเรซ, เลสลี พี. เคลบลิง PDDLStream: การรวมนักวางแผนเชิงสัญลักษณ์และตัวเก็บตัวอย่าง Blackbox ผ่านการวางแผนการปรับตัวในแง่ดี การประชุมนานาชาติเรื่องการวางแผนและกำหนดเวลาอัตโนมัติ (ICAPS) ปี 2020
ซีลัน การ์เร็ตต์: [ชื่อผู้ใช้]@csail.mit.edu
PDDLStream เป็น "เวอร์ชันที่สาม" ของเฟรมเวิร์กการวางแผน PDDLStream/STRIPStream ซึ่งมีจุดประสงค์เพื่อแทนที่เวอร์ชันก่อนหน้า:
PDDLStream ทำการปรับปรุงการแสดงและอัลกอริธึมหลายประการในเวอร์ชันเหล่านี้ สิ่งที่โดดเด่นที่สุดคือเป็นไปตามแบบแผนและไวยากรณ์ของ PDDL ทุกครั้งที่เป็นไปได้และมีอัลกอริธึมใหม่หลายตัว
$ git clone --recursive --branch main [email protected]:caelan/pddlstream.git
$ cd pddlstream
pddlstream$ git submodule update --init --recursive
pddlstream$ ./downward/build.py
หากจำเป็น โปรดดูเอกสารประกอบของ FastDownward สำหรับคำแนะนำในการติดตั้งโดยละเอียดเพิ่มเติม
PDDLStream รองรับ python2.7 เช่นเดียวกับ python3 เวอร์ชันล่าสุด
ตรวจสอบให้แน่ใจว่าได้อัปเดตโมดูลย่อยของ pddlstream แบบวนซ้ำเมื่อดึงการคอมมิตใหม่
pddlstream$ git pull --recurse-submodules
พื้นที่เก็บข้อมูลนี้มีโดเมนตัวอย่าง PDDLStream ที่เป็นหุ่นยนต์และไม่ใช่หุ่นยนต์หลายรายการ
ติดตั้ง PyBullet บน OS X หรือ Linux โดยใช้:
$ pip install pybullet numpy scipy
ตัวอย่าง:
pddlstream$ python -m examples.pybullet.tamp.run
pddlstream$ python -m examples.pybullet.pr2.run
pddlstream$ python -m examples.pybullet.turtlebot_rovers.run
pddlstream$ python -m examples.pybullet.pr2_rovers.run
pddlstream$ python -m examples.pybullet.pr2_belief.run
pddlstream$ python -m examples.pybullet.kuka.run
ดูhttps://github.com/caelan/pybullet-planningสำหรับข้อมูลเพิ่มเติมเกี่ยวกับไลบรารีพื้นฐานการวางแผน PyBullet ของฉัน
ติดตั้ง numpy และ Python TKinter บน Linux โดยใช้:
$ sudo apt-get install python-tk
$ pip install numpy
ตัวอย่าง:
pddlstream$ python -m examples.continuous_tamp.run
pddlstream$ python -m examples.motion.run
pddlstream$ python -m examples.discrete_tamp.run
pddlstream$ python -m examples.discrete_tamp.run
ตัวอย่างง่ายๆ ที่สามารถทำงานได้โดยไม่ต้องพึ่งพาเพิ่มเติม:
pddlstream$ python -m examples.blocksworld.run
pddlstream$ python -m examples.blocksworld.run_derived
pddlstream$ python -m examples.kitchen.run
กรณีทดสอบหรือฟังก์ชันการทำงานขั้นสูง (และไม่มีเอกสาร):
pddlstream$ python -m examples.advanced.adl.run
pddlstream$ python -m examples.advanced.defer.run
pddlstream$ python -m examples.advanced.exogenous.run
pddlstream$ python -m examples.advanced.fluent.run
pddlstream$ python -m examples.advanced.satisfy.run
pddlstream$ python -m examples.advanced.wild.run
ตัวอย่าง PDDL IPC ที่ไม่ได้แก้ไขแก้ไขได้โดยใช้ตัวแปลที่แก้ไขแล้วของ PDDLStream:
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
โปรเจ็กต์ภายนอกที่ใช้ PDDLStream:
PDDLStream เป็นเฟรมเวิร์กการวางแผนที่ประกอบด้วยภาษาการวางแผน เดียว แต่มีอัลกอริธึมการวางแผน ที่หลากหลาย อัลกอริธึมบางตัวแตกต่างอย่างสิ้นเชิงจากอัลกอริธึมอื่น ๆ (เช่น แบบเพิ่มหน่วยและแบบโฟกัส) ดังนั้นเวลาในการวางแผนจึงอาจแตกต่างกันอย่างมาก โดยทั่วไปอัลกอริทึม แบบปรับเปลี่ยน จะทำงานได้ดีที่สุดสำหรับโดเมนที่มีเส้นทางการสุ่มตัวอย่างที่เป็นไปได้มากมาย เช่น โดเมนการจัดการหุ่นยนต์
เมตาโพรซีเจอร์ solve(...) อนุญาตให้ผู้ใช้สลับระหว่างอัลกอริธึมที่ใช้ได้โดยใช้คีย์เวิร์ด argument Algorithm={}
คำอธิบายทรัพย์สิน:
อัลกอริธึม pddlstream จำนวนมาก (แต่ไม่ใช่ทั้งหมด) มีขั้นตอนการวางแผนแยกกันซึ่งสามารถนำไปใช้ได้โดยใช้อัลกอริธึมการค้นหาพื้นที่สถานะที่มีขอบเขตจำกัด เช่น Breadth-First Search (BFS) และ Uniform-Cost Search (UCS) อย่างไรก็ตาม เนื่องจาก pddlstream ขยาย PDDL ขั้นตอนการวางแผนนี้จึงสามารถนำไปใช้โดยอัลกอริธึมการวางแผนแบบคลาสสิกที่ล้ำสมัย ซึ่งใช้ประโยชน์จากโครงสร้างแยกตัวประกอบของภาษาการดำเนินการ เช่น PDDL เพื่อปรับปรุงประสิทธิภาพการวางแผนเชิงประจักษ์อย่างมหาศาล อัลกอริธึมการค้นหาการศึกษาสำนึกที่ดีที่สุดอันดับแรก ซึ่งรับมาจากการวิเคราะห์พฤติกรรมโดยอัตโนมัติในลักษณะ ที่ไม่ขึ้นกับโดเมน คือคลาสตัวอย่างหนึ่งของอัลกอริธึมเหล่านี้
pddlstream มาพร้อมกับ FastDownward ซึ่งเป็นไลบรารี่ที่อุดมสมบูรณ์ซึ่งมีอัลกอริธึมการวางแผน PDDL การค้นหาแบบฮิวริสติกที่ดีที่สุดจำนวนมาก ฉันได้กำหนดค่าอัลกอริทึมการค้นหาทั่วไปที่มีประสิทธิภาพไว้ล่วงหน้าจำนวนเล็กน้อยใน SEARCH_OPTIONS ซึ่งสามารถสลับได้โดยใช้คำหลัก argument planner=? ฉันได้จัดอันดับคร่าวๆ ตามลำดับจากขี้เกียจน้อยที่สุด (ต้นทุนต่ำสุด) ถึงขี้เกียจที่สุด (รันไทม์ต่ำสุด):
รันไทม์ของระยะการวางแผนแยกจะแตกต่างกันไปขึ้นอยู่กับอัลกอริธึมการค้นหาที่เลือก สำหรับปัญหาที่ไม่ใช่ปฏิปักษ์หลายๆ ปัญหา อัลกอริธึมเหล่านี้จะแก้ปัญหาได้ทันที หรือหากไม่โลภพอ จะไม่ยุติภายใน 10 นาที ฉันขอแนะนำให้เริ่มต้นด้วยการกำหนดค่าที่มีความโลภมากกว่าและเคลื่อนไปสู่การกำหนดค่าที่มีความโลภน้อยกว่าหากต้องการ
อัลกอริธึมการวางแผน PDDL ใดๆ สามารถใช้แทน FastDownward ได้ อย่างไรก็ตาม คำเตือนก็คือว่านักวางแผนเหล่านี้บางส่วนถูกนำไปใช้เพื่อสนับสนุนชุดคุณสมบัติการนำเสนอที่จำกัดเท่านั้น (เช่น ไม่มีผลกระทบตามเงื่อนไข ไม่มีภาคแสดงที่ได้รับ เป็นต้น) ซึ่งทำให้การสร้างแบบจำลองทั้งสองยากขึ้นและท้ายที่สุดแล้วการวางแผนมีประสิทธิภาพน้อยลงในหลาย ๆ ความเป็นจริง - โดเมนการวางแผนโลก (ไม่ใช่ IPC) แม้ว่าฉันจะแนะนำ FastDownward อย่างมาก แต่นักวางแผน PDDL บางรายที่ฉันเคยติดต่อด้วยในอดีตและประสบความสำเร็จ ได้แก่:
นักวางแผนคลาสสิก
นักวางแผนเชิงตัวเลข:
ผู้วางแผนชั่วคราว:
นักวางแผนที่หลากหลาย:
โฟลเดอร์ "เลิกใช้แล้ว" ระบุโค้ดที่ไม่ได้รับการสนับสนุนอย่างต่อเนื่องอีกต่อไป และอาจล้าสมัย
ติดตั้ง Drake บน OS X หรือ Ubuntu โดยทำตามคำแนะนำต่อไปนี้: http://drake.mit.edu/installation.html
หรือติดตั้ง Drake ผ่าน docker โดยทำตามคำแนะนำต่อไปนี้: http://manipulation.csail.mit.edu/install_drake_docker.html ใช้สคริปต์ docker_run_bash ที่เหมาะสมกับแท็ก docker drake-20181128
ตัวอย่าง:
~/pddlstream$ python -m examples.drake.run
สามารถดูตัวอย่าง PDDLStream + Drake เพิ่มเติมได้ที่: https://github.com/RobotLocomotion/6-881-examples