problems.multi_object_search.domain package

Submodules

problems.multi_object_search.domain.action module

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

Action space:

Motion \(\cup\) Look \(\cup\) Find

  • Motion Actions scheme 1: South, East, West, North.

  • Motion Actions scheme 2: Left 45deg, Right 45deg, Forward

  • Look: Interprets sensor input as observation

  • Find: Marks objects observed in the last Look action as (differs from original paper; reduces action space)

It is possible to force “Look” after every N/S/E/W action; then the Look action could be dropped. This is optional behavior.

class problems.multi_object_search.domain.action.Action(name)[source]

Bases: Action

Mos action; Simple named action.

class problems.multi_object_search.domain.action.MotionAction(motion, scheme='xy', distance_cost=1, motion_name=None)[source]

Bases: Action

SCHEME_XYTH = 'xyth'
EAST = (1, 0, 0)
WEST = (-1, 0, 3.141592653589793)
NORTH = (0, -1, 4.71238898038469)
SOUTH = (0, 1, 1.5707963267948966)
SCHEME_VW = 'vw'
FORWARD = (1, 0)
BACKWARD = (-1, 0)
LEFT = (0, -0.7853981633974483)
RIGHT = (0, 0.7853981633974483)
SCHEME_XY = 'xy'
EAST2D = (1, 0)
WEST2D = (-1, 0)
NORTH2D = (0, -1)
SOUTH2D = (0, 1)
SCHEMES = {'vw', 'xy', 'xyth'}
class problems.multi_object_search.domain.action.LookAction[source]

Bases: Action

class problems.multi_object_search.domain.action.FindAction[source]

Bases: Action

problems.multi_object_search.domain.observation module

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

Origin: Multi-Object Search using Object-Oriented POMDPs (ICRA 2019) (extensions: action space changes, different sensor model, gridworld instead of topological graph)

Observation:

{objid : pose(x,y) or NULL}. The sensor model could vary; it could be a fan-shaped model as the original paper, or it could be something else. But the resulting observation should be a map from object id to observed pose or NULL (not observed).

class problems.multi_object_search.domain.observation.ObjectObservation(objid, pose)[source]

Bases: Observation

The xy pose of the object is observed; or NULL if not observed

NULL = None
class problems.multi_object_search.domain.observation.MosOOObservation(objposes)[source]

Bases: OOObservation

Observation for Mos that can be factored by objects; thus this is an OOObservation.

for_obj(objid)[source]
factor(next_state, *params, **kwargs)[source]

Factor this OO-observation by objects

classmethod merge(object_observations, next_state, *params, **kwargs)[source]

Merge object_observations into a single OOObservation object;

object_observation (dict): Maps from objid to ObjectObservation

problems.multi_object_search.domain.state module

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

Origin: Multi-Object Search using Object-Oriented POMDPs (ICRA 2019) (extensions: action space changes, different sensor model, gridworld instead of topological graph)

Description: Multi-Object Search in a 2D grid world.

State space:

\(S_1 \times S_2 \times ... S_n \times S_r\) where \(S_i (1\leq i\leq n)\) is the object state, with attribute “pose” \((x,y)\) and Sr is the state of the robot, with attribute “pose” \((x,y)\) and “objects_found” (set).

class problems.multi_object_search.domain.state.ObjectState(objid, objclass, pose)[source]

Bases: ObjectState

property pose
property objid
class problems.multi_object_search.domain.state.RobotState(robot_id, pose, objects_found, camera_direction)[source]

Bases: ObjectState

property pose
property robot_pose
property objects_found
class problems.multi_object_search.domain.state.MosOOState(object_states)[source]

Bases: OOState

object_pose(objid)[source]
pose(objid)[source]
property object_poses

Module contents

Defines state, action and observation