PDDLStream é uma estrutura de planejamento composta por uma linguagem de ação e um conjunto de algoritmos para planejamento de Inteligência Artificial (IA) na presença de procedimentos de amostragem. PDDLStream estende a Linguagem de Definição de Domínio de Planejamento (PDDL) introduzindo fluxos, especificações declarativas de procedimentos de amostragem. Os algoritmos PDDLStream são independentes de domínio e resolvem problemas de PDDLStream com apenas uma descrição de caixa preta de cada amostrador. A aplicação motivadora do PDDLStream foi para robôs de uso geral Task and Motion Planning (TAMP).
A ramificação pddlstream padrão (principal) é a mais nova "versão" estável do pddlstream . A ramificação descendente do pddlstream é a versão mais recente e avançada do pddlstream , mas também é um tanto experimental.
Caelan R. Garrett, Tomás Lozano-Pérez, Leslie P. Kaelbling. PDDLStream: Integrando planejadores simbólicos e amostradores de caixa preta via planejamento adaptativo otimista, Conferência Internacional sobre Planejamento e Programação Automatizados (ICAPS), 2020.
Caelan Garrett: [nome de usuário]@csail.mit.edu
PDDLStream é a "terceira versão" da estrutura de planejamento PDDLStream/STRIPStream, destinada a substituir versões anteriores:
PDDLStream faz diversas melhorias representacionais e algorítmicas em relação a essas versões. Mais notavelmente, ele segue as convenções e sintaxe PDDL sempre que possível e contém vários algoritmos novos.
$ git clone --recursive --branch main [email protected]:caelan/pddlstream.git
$ cd pddlstream
pddlstream$ git submodule update --init --recursive
pddlstream$ ./downward/build.py
Se necessário, consulte a documentação do FastDownward para obter instruções de instalação mais detalhadas.
PDDLStream oferece suporte ativo ao python2.7, bem como à versão mais recente do python3.
Certifique-se de atualizar recursivamente os submódulos de pddlstream ao obter novos commits.
pddlstream$ git pull --recurse-submodules
Este repositório contém vários domínios de exemplo PDDLStream robóticos e não robóticos.
Instale o PyBullet no OS X ou Linux usando:
$ pip install pybullet numpy scipy
Exemplos:
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
Consulte https://github.com/caelan/pybullet-planning para obter mais informações sobre minha biblioteca de primitivas de planejamento PyBullet.
Instale numpy e Python TKinter no Linux usando:
$ sudo apt-get install python-tk
$ pip install numpy
Exemplos:
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
Exemplos simples que podem ser executados sem dependências adicionais:
pddlstream$ python -m examples.blocksworld.run
pddlstream$ python -m examples.blocksworld.run_derived
pddlstream$ python -m examples.kitchen.run
Casos de teste ou funcionalidades avançadas (e não documentadas):
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
Exemplos de PDDL IPC não modificados resolvidos usando o tradutor modificado do PDDLStream:
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
Projetos externos que fazem uso do PDDLStream:
PDDLStream é uma estrutura de planejamento composta por uma única linguagem de planejamento, mas por vários algoritmos de planejamento. Alguns dos algoritmos são radicalmente diferentes de outros (por exemplo, Incremental vs Focado) e, portanto, o tempo de planejamento também pode variar substancialmente. O algoritmo Adaptativo normalmente tem melhor desempenho para domínios com muitos caminhos de amostragem possíveis, como domínios de manipulação de robôs.
O meta procedimento solve(...) permite ao usuário alternar entre os algoritmos disponíveis usando o argumento de palavra-chave algoritmo={} .
Descrições de propriedades:
Muitos (mas não todos) algoritmos pddlstream têm uma fase de planejamento discreta que pode ser implementada usando qualquer algoritmo de pesquisa em espaço de estados finito, como Pesquisa em amplitude (BFS) e Pesquisa de custo uniforme (UCS). No entanto, como o pddlstream estende o PDDL, esta fase de planejamento também pode ser implementada por algoritmos de planejamento clássicos de última geração, que aproveitam a estrutura fatorada de linguagens de ação como o PDDL para melhorar enormemente a eficiência do planejamento empírico. Algoritmos de busca heurística do melhor primeiro, que derivam heursíticas automaticamente de maneira independente do domínio , são uma classe de exemplo desses algoritmos.
pddlstream vem pré-empacotado com FastDownward, uma biblioteca prolífica que contém muitos algoritmos de planejamento PDDL de pesquisa heurística do melhor tipo. Pré-configurei um pequeno número de algoritmos de pesquisa gerais e eficazes em SEARCH_OPTIONS, que podem ser alternados usando o argumento de palavra-chave planner=?. Eu os classifiquei aproximadamente em ordem de menos preguiçoso (menor custo) para mais preguiçoso (menor tempo de execução):
O tempo de execução da fase de planejamento discreto varia dependendo do algoritmo de busca selecionado. Para muitos problemas não adversários, esses algoritmos resolverão o problema instantaneamente ou, se não forem gananciosos o suficiente, não serão encerrados em 10 minutos. Eu recomendo começar com uma configuração mais gananciosa e passar para uma menos gananciosa, se desejar.
Qualquer algoritmo de planejamento PDDL poderia ser usado no lugar do FastDownward; no entanto, uma ressalva é que alguns destes planejadores são implementados apenas para apoiar um conjunto limitado de características representacionais (por exemplo, sem efeitos condicionais, sem predicados derivados, etc.), o que pode tornar a modelagem mais difícil e, em última análise, o planejamento menos eficiente em muitos casos reais. -domínios de planejamento mundiais (não IPC). Embora eu recomende fortemente o FastDownward, alguns planejadores PDDL com os quais interagi no passado com algum sucesso incluem:
Planejadores Clássicos
Planejadores Numéricos:
Planejadores Temporais:
Planejadores diversos:
Pastas "desativadas" indicam código que não tem mais suporte contínuo e, portanto, provavelmente está desatualizado.
Instale o Drake no OS X ou Ubuntu seguindo as seguintes instruções: http://drake.mit.edu/installation.html.
Alternativamente, instale o Drake através do docker seguindo as seguintes instruções: http://manipulation.csail.mit.edu/install_drake_docker.html. Use o script docker_run_bash apropriado com a tag docker drake-20181128.
Exemplos:
~/pddlstream$ python -m examples.drake.run
Exemplos adicionais de PDDLStream + Drake podem ser encontrados em: https://github.com/RobotLocomotion/6-881-examples.