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

BlueROV2(client[, name])

An implementation of the BlueROV2 Heavy vehicle from Blue Robotics.

ControlSchemes()

All allowed control schemes.

CougUV(client[, name])

CougUV is based off the torpedo, a simple foward motion autonomous underwater vehicle.

FixedWing(client[, name])

Fixed Wing Agent

HoloOceanAgent(client[, name])

A learning agent in HoloOcean

HoveringAUV(client[, name])

A simple autonomous underwater vehicle.

ScubaDiver(client[, name])

A copy of HoveringAUV with scuba diver mesh.

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.

Args:

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

Args:
client (holoocean.holooceanclient.HoloOceanClient): HoloOceanClient agent is

associated with

agent_def (AgentDefinition): Definition of the agent to instantiate

Returns:

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

An implementation of the BlueROV2 Heavy vehicle from Blue Robotics.

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] #. PID 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.

These variables are the constants used in the C++ for “Thruster” and “PD” control schemes. Editing them in python will not change the vehicle behavior. If using the “custom dynamics” control scheme, these values are ignored, and any desired dynamics parameters must be defined separately in your dynamics implementation. Instructions for implemeting parameters for Thor Fossen dynamics are given in the corresponding fossen dynamics documentation.

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:
(str, ActionSpace):

Each tuple contains a short description and the 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.

Attributes:

ANDROID_TORQUES (int): Default Android control scheme. Specify a torque for each joint. CONTINUOUS_SPHERE_DEFAULT (int): Default ContinuousSphere control scheme.

Takes two commands, [forward_delta, turn_delta].

DISCRETE_SPHERE_DEFAULT (int): Default DiscreteSphere control scheme. Takes a value, 0-4,

which corresponds with forward, backward, right, and left.

NAV_TARGET_LOCATION (int): Default NavAgent control scheme. Takes a target xyz coordinate. UAV_TORQUES (int): Default UAV control scheme. Takes torques for roll, pitch, and yaw, as

well as thrust.

UAV_ROLL_PITCH_YAW_RATE_ALT (int): Control scheme for UAV. Takes roll, pitch, yaw rate, and

altitude targets.

HAND_AGENT_MAX_TORQUES (int): Default Android control scheme. Specify a torque for each joint. AUV_THRUSTERS (int): Default HoveringAUV control scheme. Specify 8-vector of forces for each thruster. AUV_CONTROL (int): Implemented PD controller. Specify 6-vector of position and roll,pitch,yaw to go too. AUV_FORCES (int): 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.

TAUV_FINS (int): Default TorpedoAUV control scheme. Specify 5-vector of fin rotations in degrees and propeller value in Newtons. TAUV_FORCES (int): 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.

SV_THRUSTERS (int): Default SurfaceVessel control scheme. Specify 2-vector of forces for left and right thruster. SV_CONTROL (int): Implemented PD controller. Specify 2-vector of x and y position to go too. SV_FORCES (int): 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.

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

CougUV is based off the torpedo, a simple foward motion autonomous underwater vehicle.

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.

These variables are the constants used in the C++ for “Thruster” and “PD” control schemes. Editing them in python will not change the vehicle behavior. If using the “custom dynamics” control scheme, these values are ignored, and any desired dynamics parameters must be defined separately in your dynamics implementation. Instructions for implemeting parameters for Thor Fossen dynamics are given in the corresponding fossen dynamics documentation.

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:
(str, ActionSpace):

Each tuple contains a short description and the 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.FixedWing(client, name='DefaultAgent')

Fixed Wing Agent

This agent is a WIP and is currently just a copy of the Hovering AUV agent. It is not yet ready for public use.

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.

These variables are the constants used in the C++ for “Thruster” and “PD” control schemes. Editing them in python will not change the vehicle behavior. If using the “custom dynamics” control scheme, these values are ignored, and any desired dynamics parameters must be defined separately in your dynamics implementation. Instructions for implemeting parameters for Thor Fossen dynamics are given in the corresponding fossen dynamics documentation.

The following parameters are defined in the C++ code and are not used in the python code. They are provided here for convenience in implementing custom dynamics. :cvar mass: (float): Mass of the vehicle in kg. :cvar water_density: (float): Water density in kg / m^3. :cvar volume: (float): Volume of vehicle in m^3. :cvar cob: (np.ndarray): 3-vecter Center of buoyancy from the center of mass in m. :cvar I: (np.ndarray): 3x3 Inertia matrix. :cvar thruster_d: (np.ndarray): 8x3 matrix of unit vectors in the direction of thruster propulsion :cvar 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:
(str, ActionSpace):

Each tuple contains a short description and the 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.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.

Args:
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.

Attributes:

name (str): The name of the agent. sensors (dict of (string, HoloOceanSensor)): List of

HoloOceanSensors on this agent.

agent_state_dict (dict): A dictionary that maps sensor names to sensor observation data.

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.

Args:

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

property action_space

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

Returns:
ActionSpace: The action space for this agent and control

scheme.

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.

Args:
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:
(str, ActionSpace):

Each tuple contains a short description and the 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:

bool: If the agent has a sensor or not

remove_sensors(sensor_defs)

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

Args:
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.

Args:
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.

Args:

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

teleport(location=None, rotation=None)

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

Args:
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. PID 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.

These variables are the constants used in the C++ for “Thruster” and “PD” control schemes. Editing them in python will not change the vehicle behavior. If using the “custom dynamics” control scheme, these values are ignored, and any desired dynamics parameters must be defined separately in your dynamics implementation.

The following parameters are defined in the C++ code and are not used in the python code. They are provided here for convenience in implementing custom dynamics. :cvar mass: (float): Mass of the vehicle in kg. :cvar water_density: (float): Water density in kg / m^3. :cvar volume: (float): Volume of vehicle in m^3. :cvar cob: (np.ndarray): 3-vecter Center of buoyancy from the center of mass in m. :cvar I: (np.ndarray): 3x3 Inertia matrix. :cvar thruster_d: (np.ndarray): 8x3 matrix of unit vectors in the direction of thruster propulsion :cvar 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:
(str, ActionSpace):

Each tuple contains a short description and the 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

  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.

These variables are the constants used in the C++ for “Thruster” and “PD” control schemes. Editing them in python will not change the vehicle behavior. If using the “custom dynamics” control scheme, these values are ignored, and any desired dynamics parameters must be defined separately in your dynamics implementation.

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:
(str, ActionSpace):

Each tuple contains a short description and the 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:
(str, ActionSpace):

Each tuple contains a short description and the 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.

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.

These variables are the constants used in the C++ for “Thruster” and “PD” control schemes. Editing them in python will not change the vehicle behavior. If using the “custom dynamics” control scheme, these values are ignored, and any desired dynamics parameters must be defined separately in your dynamics implementation.

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:
(str, ActionSpace):

Each tuple contains a short description and the 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.

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.

These variables are the constants used in the C++ for “Thruster” and “PD” control schemes. Editing them in python will not change the vehicle behavior. If using the “custom dynamics” control scheme, these values are ignored, and any desired dynamics parameters must be defined separately in your dynamics implementation. Instructions for implemeting parameters for Thor Fossen dynamics are given in the corresponding fossen dynamics documentation. :cvar mass: (float): Mass of the vehicle in kg. :cvar water_density: (float): Water density in kg / m^3. :cvar volume: (float): Volume of vehicle in m^3. :cvar cob: (np.ndarray): 3-vecter Center of buoyancy from the center of mass in m. :cvar I: (np.ndarray): 3x3 Inertia matrix. :cvar thruster_p: (np.ndarray): 3 matrix of positions in local frame of propeller position in m. :cvar 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:
(str, ActionSpace):

Each tuple contains a short description and the 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:
(str, ActionSpace):

Each tuple contains a short description and the 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 UAV Agent 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:
(str, ActionSpace):

Each tuple contains a short description and the 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.