Agents

For a higher level description of the agents, see HoloOcean Agents.

Definitions for different agents that can be controlled from HoloOcean

Classes:

AgentDefinition(agent_name, agent_type[, ...])

Represents information needed to initialize agent.

AgentFactory()

Creates an agent object

ControlSchemes()

All allowed control schemes.

HoloOceanAgent(client[, name])

A learning agent in HoloOcean

HoveringAUV(client[, name])

A simple autonomous underwater vehicle.

SphereAgent(client[, name])

A basic sphere robot.

SurfaceVessel(client[, name])

A simple surface vessel.

TorpedoAUV(client[, name])

A simple foward motion autonomous underwater vehicle.

TurtleAgent(client[, name])

A simple turtle bot.

UavAgent(client[, name])

A UAV (quadcopter) agent

class holoocean.agents.AgentDefinition(agent_name, agent_type, sensors=None, starting_loc=(0, 0, 0), starting_rot=(0, 0, 0), existing=False, is_main_agent=False)

Represents information needed to initialize agent.

Parameters:
  • agent_name (str) – The name of the agent to control.

  • agent_type (str or type) – The type of HoloOceanAgent to control, string or class reference.

  • sensors (SensorDefinition or class type (if no duplicate sensors)) – A list of HoloOceanSensors to read from this agent.

  • starting_loc (list of float) – Starting [x, y, z] location for agent (see Coordinate System)

  • starting_rot (list of float) – Starting [roll, pitch, yaw] rotation for agent (see Rotations)

  • existing (bool) – If the agent exists in the world or not (deprecated)

class holoocean.agents.AgentFactory

Creates an agent object

Methods:

build_agent(client, agent_def)

Constructs an agent

static build_agent(client, agent_def)

Constructs an agent

Parameters:

Returns:

class holoocean.agents.ControlSchemes

All allowed control schemes.

ANDROID_TORQUES

Default Android control scheme. Specify a torque for each joint.

Type:

int

CONTINUOUS_SPHERE_DEFAULT

Default ContinuousSphere control scheme. Takes two commands, [forward_delta, turn_delta].

Type:

int

DISCRETE_SPHERE_DEFAULT

Default DiscreteSphere control scheme. Takes a value, 0-4, which corresponds with forward, backward, right, and left.

Type:

int

NAV_TARGET_LOCATION

Default NavAgent control scheme. Takes a target xyz coordinate.

Type:

int

UAV_TORQUES

Default UAV control scheme. Takes torques for roll, pitch, and yaw, as well as thrust.

Type:

int

UAV_ROLL_PITCH_YAW_RATE_ALT

Control scheme for UAV. Takes roll, pitch, yaw rate, and altitude targets.

Type:

int

HAND_AGENT_MAX_TORQUES

Default Android control scheme. Specify a torque for each joint.

Type:

int

AUV_THRUSTERS

Default HoveringAUV control scheme. Specify 8-vector of forces for each thruster.

Type:

int

AUV_CONTROL

Implemented PD controller. Specify 6-vector of position and roll,pitch,yaw to go too.

Type:

int

AUV_FORCES

Used for custom dynamics. All internal dynamics (except collisions) are turned off including buoyancy, gravity, and damping. Specify 6-vector of linear and angular acceleration in the global frame.

Type:

int

TAUV_FINS

Default TorpedoAUV control scheme. Specify 5-vector of fin rotations in degrees and propeller value in Newtons.

Type:

int

TAUV_FORCES

Used for custom dynamics. All internal dynamics (except collisions) are turned off including buoyancy, gravity, and damping. Specify 6-vector of linear and angular acceleration in the global frame.

Type:

int

SV_THRUSTERS

Default SurfaceVessel control scheme. Specify 2-vector of forces for left and right thruster.

Type:

int

SV_CONTROL

Implemented PD controller. Specify 2-vector of x and y position to go too.

Type:

int

SV_FORCES

Used for custom dynamics. All internal dynamics (except collisions) are turned off including buoyancy, gravity, and damping. Specify 6-vector of linear and angular acceleration in the global frame.

Type:

int

class holoocean.agents.HoloOceanAgent(client, name='DefaultAgent')

A learning agent in HoloOcean

Agents can act, receive rewards, and receive observations from their sensors. Examples include the Android, UAV, and SphereRobot.

Parameters:
  • client (HoloOceanClient) – The HoloOceanClient that this agent belongs with.

  • name (str, optional) – The name of the agent. Must be unique from other agents in the same environment.

  • sensors (dict of (str, HoloOceanSensor)) – A list of HoloOceanSensors to read from this agent.

name

The name of the agent.

Type:

str

sensors

List of HoloOceanSensors on this agent.

Type:

dict of (string, HoloOceanSensor)

agent_state_dict

A dictionary that maps sensor names to sensor observation data.

Type:

dict

Methods:

act(action)

Sets the command for the agent.

add_sensors(sensor_defs)

Adds a sensor to a particular agent object and attaches an instance of the sensor to the agent in the world.

clear_action()

Sets the action to zeros, effectively removing any previous actions.

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint.

has_camera()

Indicatates whether this agent has a camera or not.

remove_sensors(sensor_defs)

Removes a sensor from a particular agent object and detaches it from the agent in the world.

set_control_scheme(index)

Sets the control scheme for the agent.

set_physics_state(location, rotation, ...)

Sets the location, rotation, velocity and angular velocity of an agent.

teleport([location, rotation])

Teleports the agent to a specific location, with a specific rotation.

Attributes:

action_space

Gets the action space for the current agent and control scheme.

control_schemes

A list of all control schemes for the agent.

act(action)

Sets the command for the agent. Action depends on the agent type and current control scheme.

Parameters:

action (np.ndarray) – The action to take.

property action_space

Gets the action space for the current agent and control scheme.

Returns:

The action space for this agent and control

scheme.

Return type:

ActionSpace

add_sensors(sensor_defs)

Adds a sensor to a particular agent object and attaches an instance of the sensor to the agent in the world.

:param sensor_defs (HoloOceanSensor or: list of HoloOceanSensor):

Sensors to add to the agent.

clear_action()

Sets the action to zeros, effectively removing any previous actions.

property control_schemes

A list of all control schemes for the agent. Each list element is a 2-tuple, with the first element containing a short description of the control scheme, and the second element containing the ActionSpace for the control scheme.

Returns:

Each tuple contains a short description and the ActionSpace

Return type:

(str, ActionSpace)

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint. Will return None if the joint does not exist for the agent.

has_camera()

Indicatates whether this agent has a camera or not.

Returns:

If the agent has a sensor or not

Return type:

bool

remove_sensors(sensor_defs)

Removes a sensor from a particular agent object and detaches it from the agent in the world.

:param sensor_defs (HoloOceanSensor or: list of HoloOceanSensor):

Sensors to remove from the agent.

set_control_scheme(index)

Sets the control scheme for the agent. See ControlSchemes.

Parameters:

index (int) – The control scheme to use. Should be set with an enum from ControlSchemes.

set_physics_state(location, rotation, velocity, angular_velocity)

Sets the location, rotation, velocity and angular velocity of an agent.

Parameters:
  • location (np.ndarray) – New location ([x, y, z] (see Coordinate System))

  • rotation (np.ndarray) – New rotation ([roll, pitch, yaw], see (see Rotations))

  • velocity (np.ndarray) – New velocity ([x, y, z] (see Coordinate System))

  • angular_velocity (np.ndarray) – New angular velocity ([x, y, z] in degrees (see Coordinate System))

teleport(location=None, rotation=None)

Teleports the agent to a specific location, with a specific rotation.

Parameters:
  • location (np.ndarray, optional) –

    An array with three elements specifying the target world coordinates [x, y, z] in meters (see Coordinate System).

    If None (default), keeps the current location.

  • rotation (np.ndarray, optional) –

    An array with three elements specifying roll, pitch, and yaw in degrees of the agent.

    If None (default), keeps the current rotation.

class holoocean.agents.HoveringAUV(client, name='DefaultAgent')

A simple autonomous underwater vehicle. All variables are not actually used in simulation, modifying them will have no effect on results. They are exposed for convenience in implementing custom dynamics.

Action Space

Has three possible control schemes, as follows

  1. Thruster Forces: [Vertical Front Starboard, Vertical Front Port, Vertical Back Port, Vertical Back Starboard, Angled Front Starboard, Angled Front Port, Angled Back Port, Angled Back Starboard]

  2. PD Controller: [des_pos_x, des_pos_y, des_pos_z, roll, pitch, yaw]

  3. Accelerations, in global frame: [lin_accel_x, lin_accel_y, lin_accel_z, ang_accel_x, ang_accel_y, ang_accel_x]

Inherits from HoloOceanAgent.

Variables:
  • mass – (float): Mass of the vehicle in kg.

  • water_density – (float): Water density in kg / m^3.

  • volume – (float): Volume of vehicle in m^3.

  • cob – (np.ndarray): 3-vecter Center of buoyancy from the center of mass in m.

  • I – (np.ndarray): 3x3 Inertia matrix.

  • thruster_d – (np.ndarray): 8x3 matrix of unit vectors in the direction of thruster propulsion

  • thruster_p – (np.ndarray): 8x3 matrix of positions in local frame of thrusters positions in m.

Attributes:

control_schemes

A list of all control schemes for the agent.

Methods:

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint.

property control_schemes

A list of all control schemes for the agent. Each list element is a 2-tuple, with the first element containing a short description of the control scheme, and the second element containing the ActionSpace for the control scheme.

Returns:

Each tuple contains a short description and the ActionSpace

Return type:

(str, ActionSpace)

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint. Will return None if the joint does not exist for the agent.

class holoocean.agents.SphereAgent(client, name='DefaultAgent')

A basic sphere robot.

See SphereAgent for more details.

Action Space:

Has two possible control schemes, one discrete and one continuous:

Control Scheme

Value

Action

Discrete (0)

[0]

Move forward

[1]

Move backward

[2]

Turn right

[3]

Turn left

Continuous (1)

[forward_speed, rot_speed]

Inherits from HoloOceanAgent.

Attributes:

control_schemes

A list of all control schemes for the agent.

Methods:

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint.

property control_schemes

A list of all control schemes for the agent. Each list element is a 2-tuple, with the first element containing a short description of the control scheme, and the second element containing the ActionSpace for the control scheme.

Returns:

Each tuple contains a short description and the ActionSpace

Return type:

(str, ActionSpace)

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint. Will return None if the joint does not exist for the agent.

class holoocean.agents.SurfaceVessel(client, name='DefaultAgent')

A simple surface vessel. All variables are not actually used in simulation, modifying them will have no effect on results. They are exposed for convenience in implementing custom dynamics.

Action Space

Has three possible control schemes, as follows

  1. Thruster Forces: [Left thruster, Right thruster]

  2. PD Controller: [des_x, des_y, des_yaw]

  3. Accelerations, in global frame: [lin_accel_x, lin_accel_y, lin_accel_z, ang_accel_x, ang_accel_y, ang_accel_x]

Inherits from HoloOceanAgent.

Variables:
  • mass – (float): Mass of the vehicle in kg.

  • water_density – (float): Water density in kg / m^3.

  • volume – (float): Volume of vehicle in m^3.

  • cob – (np.ndarray): 3-vecter Center of buoyancy from the center of mass in m.

  • I – (np.ndarray): 3x3 Inertia matrix.

  • thruster_p – (np.ndarray): 2x3 matrix of positions in local frame of thrusters positions in m.

Attributes:

control_schemes

A list of all control schemes for the agent.

Methods:

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint.

property control_schemes

A list of all control schemes for the agent. Each list element is a 2-tuple, with the first element containing a short description of the control scheme, and the second element containing the ActionSpace for the control scheme.

Returns:

Each tuple contains a short description and the ActionSpace

Return type:

(str, ActionSpace)

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint. Will return None if the joint does not exist for the agent.

class holoocean.agents.TorpedoAUV(client, name='DefaultAgent')

A simple foward motion autonomous underwater vehicle. All variables are not actually used in simulation, modifying them will have no effect on results. They are exposed for convenience in implementing custom dynamics.

Action Space

Has two possible action spaces, as follows:

  1. Fins & Propeller: [left_fin, top_fin, right_fin, bottom_fin, thrust]

  2. Accelerations, in global frame: [lin_accel_x, lin_accel_y, lin_accel_z, ang_accel_x, ang_accel_y, ang_accel_x]

Inherits from HoloOceanAgent.

Variables:
  • mass – (float): Mass of the vehicle in kg.

  • water_density – (float): Water density in kg / m^3.

  • volume – (float): Volume of vehicle in m^3.

  • cob – (np.ndarray): 3-vecter Center of buoyancy from the center of mass in m.

  • I – (np.ndarray): 3x3 Inertia matrix.

  • thruster_p – (np.ndarray): 3 matrix of positions in local frame of propeller position in m.

  • fin_p – (np.ndarray): 4x3 matrix of positions in local frame of fin positions in m.

Attributes:

control_schemes

A list of all control schemes for the agent.

Methods:

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint.

property control_schemes

A list of all control schemes for the agent. Each list element is a 2-tuple, with the first element containing a short description of the control scheme, and the second element containing the ActionSpace for the control scheme.

Returns:

Each tuple contains a short description and the ActionSpace

Return type:

(str, ActionSpace)

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint. Will return None if the joint does not exist for the agent.

class holoocean.agents.TurtleAgent(client, name='DefaultAgent')

A simple turtle bot.

Action Space:

[forward_force, rot_force]

  • forward_force is capped at 160 in either direction

  • rot_force is capped at 35 either direction

Inherits from HoloOceanAgent.

Attributes:

control_schemes

A list of all control schemes for the agent.

Methods:

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint.

property control_schemes

A list of all control schemes for the agent. Each list element is a 2-tuple, with the first element containing a short description of the control scheme, and the second element containing the ActionSpace for the control scheme.

Returns:

Each tuple contains a short description and the ActionSpace

Return type:

(str, ActionSpace)

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint. Will return None if the joint does not exist for the agent.

class holoocean.agents.UavAgent(client, name='DefaultAgent')

A UAV (quadcopter) agent

Action Space:

Has two possible continuous action control schemes

  1. [pitch_torque, roll_torque, yaw_torque, thrust] and

  2. [pitch_target, roll_target, yaw_rate_target, altitude_target]

See UavAgent for more details.

Inherits from HoloOceanAgent.

Attributes:

control_schemes

A list of all control schemes for the agent.

Methods:

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint.

property control_schemes

A list of all control schemes for the agent. Each list element is a 2-tuple, with the first element containing a short description of the control scheme, and the second element containing the ActionSpace for the control scheme.

Returns:

Each tuple contains a short description and the ActionSpace

Return type:

(str, ActionSpace)

get_joint_constraints(joint_name)

Returns the corresponding swing1, swing2 and twist limit values for the specified joint. Will return None if the joint does not exist for the agent.