PDDLStream은 샘플링 절차가 있는 경우 인공 지능(AI) 계획을 위한 동작 언어와 알고리즘 제품군으로 구성된 계획 프레임워크입니다. PDDLStream은 샘플링 절차의 선언적 사양인 스트림을 도입하여 PDDL(계획 도메인 정의 언어)을 확장합니다. PDDLStream 알고리즘은 도메인 독립적이며 각 샘플러의 블랙박스 설명만으로 PDDLStream 문제를 해결합니다. PDDLStream의 동기 부여 적용은 범용 로봇 작업 및 동작 계획(TAMP)이었습니다.
기본 pddlstream 분기(main)는 pddlstream 의 최신 안정 "릴리스"입니다. 하향 pddlstream 분기는 pddlstream 의 가장 최신 고급 버전이지만 다소 실험적이기도 합니다.
Caelan R. Garrett, Tomás Lozano-Pérez, Leslie P. Kaelbling. PDDLStream: 낙관적 적응형 계획을 통한 기호형 플래너 및 블랙박스 샘플러 통합, 자동 계획 및 일정 관리에 관한 국제 회의(ICAPS), 2020.
Caelan Garrett: [사용자 이름]@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 예제 도메인이 포함되어 있습니다.
다음을 사용하여 OS X 또는 Linux에 PyBullet을 설치합니다.
$ 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
내 PyBullet 계획 기본 요소 라이브러리에 대한 자세한 내용은 https://github.com/caelan/pybullet-planning을 참조하세요.
다음을 사용하여 Linux에 numpy 및 Python TKinter를 설치합니다.
$ 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
PDDLStream의 수정된 변환기를 사용하여 해결된 수정되지 않은 PDDL IPC 예:
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
PDDLStream을 사용하는 외부 프로젝트:
PDDLStream은 단일 계획 언어와 여러 계획 알고리즘으로 구성된 계획 프레임워크입니다. 일부 알고리즘은 다른 알고리즘(예: 증분형 vs 집중형)과 근본적으로 다르므로 계획 시간도 크게 다를 수 있습니다. 적응형 알고리즘은 일반적으로 로봇 조작 도메인과 같이 가능한 샘플링 경로가 많은 도메인에서 가장 잘 수행됩니다.
메타 프로시저 Solve(...)를 사용하면 사용자는 키워드 인수 Algorithm={}을 사용하여 사용 가능한 알고리즘 간에 전환할 수 있습니다.
속성 설명:
전부는 아니지만 많은 pddlstream 알고리즘에는 BFS(Breadth-First Search) 및 UCS(Uniform-Cost Search)와 같은 유한 상태공간 검색 알고리즘을 사용하여 구현할 수 있는 개별 계획 단계가 있습니다. 그러나 pddlstream은 PDDL을 확장하므로 이 계획 단계는 PDDL과 같은 동작 언어의 인수 구조를 활용하여 경험적 계획 효율성을 크게 향상시키는 최첨단 기존 계획 알고리즘으로 구현될 수도 있습니다. 도메인 독립적인 방식으로 휴리스틱을 자동으로 도출하는 최고 우선 휴리스틱 검색 알고리즘은 이러한 알고리즘의 한 가지 예입니다.
pddlstream은 Best-First 휴리스틱 검색 PDDL 계획 알고리즘이 많이 포함된 다작 라이브러리인 FastDownward와 함께 사전 패키지로 제공됩니다. 키워드 인수 planner=?를 사용하여 전환할 수 있는 SEARCH_OPTIONS에 소수의 효과적이고 일반적인 검색 알고리즘을 미리 구성했습니다. 가장 게으른 것(가장 낮은 비용)부터 가장 게으른 것(가장 낮은 런타임) 순으로 대략 순위를 매겼습니다.
개별 계획 단계의 실행 시간은 선택한 검색 알고리즘에 따라 달라집니다. 적대적이지 않은 많은 문제의 경우 이러한 알고리즘은 문제를 즉시 해결하거나 욕심이 충분하지 않은 경우 10분 이내에 종료되지 않습니다. 더 욕심이 많은 구성으로 시작하고 원할 경우 덜 욕심이 많은 구성으로 이동하는 것이 좋습니다.
FastDownward 대신 모든 PDDL 계획 알고리즘을 사용할 수 있습니다. 그러나 주의할 점은 이러한 플래너 중 일부는 제한된 표현 기능 세트(예: 조건부 효과 없음, 파생된 조건자 없음 등)를 지원하기 위해서만 구현된다는 것입니다. 이로 인해 모델링이 더 어려워지고 궁극적으로 많은 실제 환경에서 계획의 효율성이 떨어질 수 있습니다. -세계(비IPC) 계획 도메인. 저는 FastDownward를 적극 권장하지만 과거에 제가 인터페이스하여 어느 정도 성공한 일부 PDDL 플래너는 다음과 같습니다.
클래식 기획자
수치 계획자:
시간 계획자:
다양한 기획자:
"사용 중지됨" 폴더는 더 이상 지속적으로 지원되지 않아 오래되었을 가능성이 있는 코드를 나타냅니다.
다음 지침에 따라 OS X 또는 Ubuntu에 Drake를 설치하십시오: http://drake.mit.edu/installation.html.
또는 http://manipulation.csail.mit.edu/install_drake_docker.html 지침에 따라 docker를 통해 Drake를 설치합니다. docker 태그 drake-20181128과 함께 적절한 docker_run_bash 스크립트를 사용하세요.
예:
~/pddlstream$ python -m examples.drake.run
추가 PDDLStream + Drake 예제는 https://github.com/RobotLocomotion/6-881-examples에서 찾을 수 있습니다.