Juliacon 2024

'What's the plan?', asked my robot
07-12, 14:30–15:00 (Europe/Amsterdam), Method (1.5)

This talk delves into the challenges of developing task planning languages for robots in complex environments. In this work, we make use of categorical databases and rewriting methods, implemented in Julia, to effectively store and manipulate knowledge bases with large ontologies but sparse data. Julia's multiple dispatch and metaprogramming features have allowed us to develop a concise and scalable task planning system for robotic applications.


As robots become more capable of computing short-horizon motion plans, the question of how to assemble these atomic gestures into more complex, goal-oriented task plans becomes increasingly relevant. In order to orchestrate the execution of motion plans, task planners must be able to reason about knowledge bases with large ontologies but sparse data. For example, in the world where the robot task planner must reason about items in a kitchen-- there are often at least one but no more than a ten, let's say, of a particular type of item in the scene. Contrastingly, these scenes are often rich with relationships between items such as items being next to or on top of other items. Therefore, it is necessary that a task planning system be capable of storing and manipulating such data. To date, there have been few task planning languages that focus on planning within worlds that are described using large ontologies-- a gap this work aims to fill.
Julia's multiple dispatch allows us to efficiently implement new logic for existing interfaces. This has been helpful as we expanded our implementation of ACSets to support dynamic instantiations of data. This is especially useful for our application because we often have to instantiate knowledge bases with facts as new information is obtained, for example when cognitive modules return results at different times. Additionally, Julia's metaprogramming has allowed us to define custom DSLs such that we can concisely structure the actions that manipulate our world state. In this talk, we will present the motivation for an alternate task planning language and show how we have leveraged features of the Julia programming language to express and store actions and world states. This work makes use of the packages-- Catlab.jl, AlgebraicRewriting.jl, and ACSets.jl.