habitat_sim.utils.common module

Quaternion Math

Quaternion helper functions:

  • quat_from_coeffs()
  • quat_to_coeffs()
  • quat_from_angle_axis()
  • quat_to_angle_axis()
  • quat_from_two_vectors()
  • angle_between_quats()
  • quat_rotate_vector()

Misc

  • colorize_ids()

Functions

def angle_between_quats(q1: quaternion.quaternion.quaternion, q2: quaternion.quaternion.quaternion) -> float
Computes the angular distance between two quaternions
def colorize_ids(ids)
def download_and_unzip(file_url, local_directory)
def quat_from_angle_axis(theta: float, axis: numpy.ndarray) -> quaternion.quaternion.quaternion
Creates a quaternion from angle axis format
def quat_from_coeffs(coeffs: typing.Union[typing.Sequence[float], numpy.ndarray]) -> quaternion.quaternion.quaternion
Creates a quaternion from the coeffs returned by the simulator backend
def quat_from_magnum(quat: magnum.Quaternion) -> quaternion.quaternion.quaternion
def quat_from_two_vectors(v0: numpy.ndarray, v1: numpy.ndarray) -> quaternion.quaternion.quaternion
Creates a quaternion that rotates the first vector onto the second vector
def quat_rotate_vector(q: quaternion.quaternion.quaternion, v: numpy.ndarray) -> numpy.ndarray
Helper function to rotate a vector by a quaternion
def quat_to_angle_axis(quat: quaternion.quaternion.quaternion) -> typing.Tuple[float, numpy.ndarray]
Converts a quaternion to angle axis format
def quat_to_coeffs(quat: quaternion.quaternion.quaternion) -> numpy.ndarray
Converts a quaternion into the coeffs format the backend expects
def quat_to_magnum(quat: quaternion.quaternion.quaternion) -> magnum.Quaternion
def random_quaternion()
Convenience function to sample a random Magnum::Quaternion. See http://planning.cs.uiuc.edu/node198.html.

Data

d3_40_colors_hex: typing.List[str] = …
Color map for semantic ID rendering.
d3_40_colors_rgb: numpy.ndarray = …
Color map for semantic ID rendering.

Function documentation

def habitat_sim.utils.common.angle_between_quats(q1: quaternion.quaternion.quaternion, q2: quaternion.quaternion.quaternion) -> float

Computes the angular distance between two quaternions

Returns The angular distance between q1 and q2 in radians

def habitat_sim.utils.common.quat_from_angle_axis(theta: float, axis: numpy.ndarray) -> quaternion.quaternion.quaternion

Creates a quaternion from angle axis format

Parameters
theta The angle to rotate about the axis by
axis The axis to rotate about
Returns The quaternion

def habitat_sim.utils.common.quat_from_coeffs(coeffs: typing.Union[typing.Sequence[float], numpy.ndarray]) -> quaternion.quaternion.quaternion

Creates a quaternion from the coeffs returned by the simulator backend

Parameters
coeffs Coefficients of a quaternion in [b, c, d, a] format, where q = a + bi + cj + dk
Returns A quaternion from the coeffs

def habitat_sim.utils.common.quat_from_two_vectors(v0: numpy.ndarray, v1: numpy.ndarray) -> quaternion.quaternion.quaternion

Creates a quaternion that rotates the first vector onto the second vector

Parameters
v0 The starting vector, does not need to be a unit vector
v1 The end vector, does not need to be a unit vector
Returns The quaternion

Calculates the quaternion q such that

v1 = quat_rotate_vector(q, v0)

def habitat_sim.utils.common.quat_rotate_vector(q: quaternion.quaternion.quaternion, v: numpy.ndarray) -> numpy.ndarray

Helper function to rotate a vector by a quaternion

Parameters
q The quaternion to rotate the vector with
v The vector to rotate
Returns The rotated vector

Does

v = (q * qt.quaternion(0, *v) * q.inverse()).imag

def habitat_sim.utils.common.quat_to_angle_axis(quat: quaternion.quaternion.quaternion) -> typing.Tuple[float, numpy.ndarray]

Converts a quaternion to angle axis format

Parameters
quat The quaternion
Returns
  • float — The angle to rotate about the axis by
  • numpy.ndarray — The axis to rotate about. If \theta = 0 , then this is hardcoded to be the +x axis

def habitat_sim.utils.common.quat_to_coeffs(quat: quaternion.quaternion.quaternion) -> numpy.ndarray

Converts a quaternion into the coeffs format the backend expects

Parameters
quat The quaternion
Returns Coefficients of a quaternion in [b, c, d, a] format, where q = a + bi + cj + dk

Data documentation

habitat_sim.utils.common.d3_40_colors_hex: typing.List[str]

Color map for semantic ID rendering.

Same as d3_40_colors_rgb, but in a hexadecimal representation.

d3_40_colors_hex: List[str] = [
    "0x1f77b4",
    "0xaec7e8",
    "0xff7f0e",
    "0xffbb78",
    "0x2ca02c",
    "0x98df8a",
    "0xd62728",
    "0xff9896",
    "0x9467bd",
    "0xc5b0d5",
    "0x8c564b",
    "0xc49c94",
    "0xe377c2",
    "0xf7b6d2",
    "0x7f7f7f",
    "0xc7c7c7",
    "0xbcbd22",
    "0xdbdb8d",
    "0x17becf",
    "0x9edae5",
    "0x393b79",
    "0x5254a3",
    "0x6b6ecf",
    "0x9c9ede",
    "0x637939",
    "0x8ca252",
    "0xb5cf6b",
    "0xcedb9c",
    "0x8c6d31",
    "0xbd9e39",
    "0xe7ba52",
    "0xe7cb94",
    "0x843c39",
    "0xad494a",
    "0xd6616b",
    "0xe7969c",
    "0x7b4173",
    "0xa55194",
    "0xce6dbd",
    "0xde9ed6",
]