# pomdp_problems.multi_object_search package¶

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

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]

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]

### pomdp_problems.multi_object_search.example_worlds module¶

This file has some examples of world string.

pomdp_problems.multi_object_search.example_worlds.random_world(width, length, num_obj, num_obstacles, robot_char='r')[source]