pomdp_problems.multi_object_search package

Multi-Object Search (MOS) Task

This task is based on the Multi-Object Search (MOS) task described in the following paper

Multi-Object Search using Object-Oriented POMDPs (ICRA 2019)

In this implementation, we consider a different (simpler) motion action scheme, instead of based on topological graph and room connectivity.

problem

2D Multi-Object Search (MOS) Task.

example_worlds

This file has some examples of world string.

env

The Environment

domain

Defines state, action and observation

state

Defines the State for the 2D Multi-Object Search domain;

action

Defines the Action for the 2D Multi-Object Search domain;

observation

Defines the Observation for the 2D Multi-Object Search domain;

models

Defines models, including transition, observation, reward, policy; Also includes additional components such as the sensor model and grid map.

transition_model

Defines the TransitionModel for the 2D Multi-Object Search domain.

observation_model

Defines the ObservationModel for the 2D Multi-Object Search domain.

reward_model

Reward model for 2D Multi-object Search domain

policy_model

Policy model for 2D Multi-Object Search domain.

sensor

Sensor model (for example, laser scanner)

grid_map

Optional grid map to assist collision avoidance during planning.

pomdp_problems.multi_object_search.problem module

2D Multi-Object Search (MOS) Task. Uses the domain, models, and agent/environment to actually define the POMDP problem for multi-object search. Then, solve it using POUCT or POMCP.

class pomdp_problems.multi_object_search.problem.MosOOPOMDP(robot_id, env=None, grid_map=None, sensors=None, sigma=0.01, epsilon=1, belief_rep='histogram', prior={}, num_particles=100, agent_has_map=False)[source]

Bases: pomdp_py.framework.oopomdp.OOPOMDP

A MosOOPOMDP is instantiated given a string description of the search world, sensor descriptions for robots, and the necessary parameters for the agent’s models.

Note: This is of course a simulation, where you can generate a world and know where the target objects are and then construct the Environment object. But in the real robot scenario, you don’t know where the objects are. In that case, as I have done it in the past, you could construct an Environment object and give None to the object poses.

pomdp_problems.multi_object_search.problem.belief_update(agent, real_action, real_observation, next_robot_state, planner)[source]

Updates the agent’s belief; The belief update may happen through planner update (e.g. when planner is POMCP).

pomdp_problems.multi_object_search.problem.solve(problem, max_depth=10, discount_factor=0.99, planning_time=1.0, exploration_const=1000, visualize=True, max_time=120, max_steps=500)[source]

This function terminates when: - maximum time (max_time) reached; This time includes planning and updates - agent has planned max_steps number of steps - agent has taken n FindAction(s) where n = number of target objects.

Parameters

visualize (bool) –

pomdp_problems.multi_object_search.problem.unittest()[source]