Agents
For a higher level description of the agents, see HoloOcean Agents.
Definitions for different agents that can be controlled from HoloOcean
Classes:
|
Represents information needed to initialize agent. |
Creates an agent object |
|
|
BlueROV2 import based on HoveringAUV A simple autonomous underwater vehicle. |
All allowed control schemes. |
|
|
A learning agent in HoloOcean |
|
A simple autonomous underwater vehicle. |
|
A copy of HoveringAUV with scuba diver mesh |
|
A basic sphere robot. |
|
A simple surface vessel. |
|
A simple foward motion autonomous underwater vehicle. |
|
A simple turtle bot. |
|
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
offloat
) – Starting[x, y, z]
location for agent (see Coordinate System)starting_rot (
list
offloat
) – 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:
client (
holoocean.holooceanclient.HoloOceanClient
) – HoloOceanClient agent is associated withagent_def (
AgentDefinition
) – Definition of the agent to instantiate
Returns:
- class holoocean.agents.BlueROV2(client, name='DefaultAgent')
BlueROV2 import based on HoveringAUV 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 #. 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]
#. PD Controller:[des_pos_x, des_pos_y, des_pos_z, roll, pitch, yaw]
#. Accelerations, in global frame:[lin_accel_x, lin_accel_y, lin_accel_z, ang_accel_x, ang_accel_y, ang_accel_x]
Inherits fromHoloOceanAgent
.- 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 propulsionthruster_p – (
np.ndarray
): 8x3 matrix of positions in local frame of thrusters positions in m.
Attributes:
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.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.
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.
Returns the current ocean current velocity for the agent.
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:
Gets the action space for the current agent and control scheme.
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:
- 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 ofHoloOceanSensor
): Sensors to add to the agent.
- :param sensor_defs (
- 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.
- get_ocean_current_velocity()
Returns the current ocean current velocity 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 ofHoloOceanSensor
): Sensors to remove from the agent.
- :param sensor_defs (
- 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 fromControlSchemes
.
- 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
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]
PD Controller:
[des_pos_x, des_pos_y, des_pos_z, roll, pitch, yaw]
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 propulsionthruster_p – (
np.ndarray
): 8x3 matrix of positions in local frame of thrusters positions in m.
Attributes:
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.ScubaDiver(client, name='DefaultAgent')
A copy of HoveringAUV with scuba diver mesh
Action Space
Has three possible control schemes, as follows
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]
PD Controller:
[des_pos_x, des_pos_y, des_pos_z, roll, pitch, yaw]
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 propulsionthruster_p – (
np.ndarray
): 8x3 matrix of positions in local frame of thrusters positions in m.
Attributes:
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:
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
Thruster Forces:
[Left thruster, Right thruster]
PD Controller:
[des_x, des_y, des_yaw]
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:
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:
Fins & Propeller:
[left_fin, top_fin, right_fin, bottom_fin, thrust]
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:
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 directionrot_force
is capped at 35 either direction
Inherits from
HoloOceanAgent
.Attributes:
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
[pitch_torque, roll_torque, yaw_torque, thrust] and
[pitch_target, roll_target, yaw_rate_target, altitude_target]
See UavAgent for more details.
Inherits from
HoloOceanAgent
.Attributes:
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.