Skip to content

tesseract_robotics.tesseract_common

Common types, utilities, and resource handling.

Eigen arguments take arrays, lists and tuples

Every Eigen::Vector3d, VectorXd, Matrix3d, Matrix4d (and other dense Eigen) parameter accepts a NumPy array, a list or a tuple, nested for a matrix: iso.translate([0.5, 0.2, 0.3]), Isometry3d([x, y, z], q), Quaterniond(R.tolist()). The shape must match exactly ([1, 2] for a Vector3d raises TypeError, nothing is padded or truncated). Integers convert to float64; strings, None, complex numbers and ragged nesting raise TypeError, and an integer parameter (mesh faces) refuses floats. Returned matrices are always NumPy arrays. The exception is a parameter a function writes into (see Frame and error math): it needs the array itself.

Transforms

Isometry3d

Eigen rigid-body transform (rotation + translation). Raw C++ binding.

Python
from tesseract_robotics.tesseract_common import Isometry3d
import numpy as np

# Identity transform
pose = Isometry3d.Identity()

# From a 4x4 matrix
mat = np.eye(4)
mat[:3, 3] = [0.5, 0.2, 0.3]
pose = Isometry3d(mat)

# Access components (read-only properties; each returns a copy)
position = pose.translation  # np.array([x, y, z])
rotation = pose.rotation     # 3x3 rotation matrix
matrix = pose.matrix         # 4x4 homogeneous matrix

# Compose
combined = pose1 * pose2

# Apply to many points at once: (N, 3) in, (N, 3) out, in one call
points = np.random.default_rng(0).normal(size=(1000, 3))
mapped = pose.apply_points(points)       # row i == pose * points[i], bitwise
rotated = pose.apply_directions(points)  # rotation only, no translation

apply_points and apply_directions take an (N, 3) array, including N = 0 and strided views such as a[:, :3], and return a new (N, 3) float64 array. A single point stays pose * p; a (3,) array passed to apply_points raises TypeError. Each row is computed exactly as pose * p computes it, so the results agree bit for bit. A Python loop over pose * p costs about 1 µs per point; apply_points costs about 1 µs per call up to a few dozen points.

Prefer planning.Pose for authoring

For building/serializing transforms in Python, use tesseract_robotics.planning.Pose — it accepts scalar-last quaternions (qx, qy, qz, qw) and offers from_xyz_quat, from_rpy, etc. Convert to an Isometry3d when calling the raw C++ API.

Python
from tesseract_robotics.planning import Pose
pose = Pose.from_xyz_quat(0.5, 0.2, 0.3, 0, 0, 0, 1)
iso = Isometry3d(pose.matrix)

Quaterniond

Eigen quaternion. Project canonical order is scalar-last [qx, qy, qz, qw] — use Quaterniond.from_xyzw(qx, qy, qz, qw) to build and access components via the q.x, q.y, q.z, q.w properties.

Python
from tesseract_robotics.tesseract_common import Quaterniond

q = Quaterniond.from_xyzw(0.0, 0.0, 0.0, 1.0)  # identity: scalar-last

# Component access — properties, not method calls.
print(f"x={q.x}, y={q.y}, z={q.z}, w={q.w}")

# Flat coefficient vector is also scalar-last (Eigen storage order).
qx, qy, qz, qw = q.coeffs()

rotation_matrix = q.toRotationMatrix()

Eigen's 4-double ctor is scalar-first — avoid in Python

Quaterniond(w, x, y, z) exists for direct Eigen interop but is the one signature in the binding that breaks the project convention. Use Quaterniond.from_xyzw(qx, qy, qz, qw) everywhere else.

q.coeffs(), q.vec(), the Quaterniond(Vector4d) ctor, and Pose's quaternion-returning factories all use scalar-last [qx, qy, qz, qw].

AngleAxisd

Axis-angle rotation representation.

Python
from tesseract_robotics.tesseract_common import AngleAxisd
import numpy as np

# 90 degrees around Z axis
aa = AngleAxisd(np.pi/2, np.array([0, 0, 1]))
rotation_matrix = aa.toRotationMatrix()

Frame and error math

Re-base twists and jacobians, and compute pose errors, with tesseract's own math. A twist is a (6,) array [vx, vy, vz, wx, wy, wz]; a jacobian is (6, n).

Python
import numpy as np
from tesseract_robotics.tesseract_common import jacobianChangeBase, jacobianChangeRefPoint

J = joint_group.calcJacobian(q, "tool0")    # (6, n), Fortran order, in the group base frame
jacobianChangeBase(J, T_new_base)           # rotate every column into T_new_base, in place
jacobianChangeRefPoint(J, [0.0, 0.0, 0.1])  # v += ω × p, in place

In place: these functions write into the array you pass

twistChangeRefPoint, twistChangeBase, jacobianChangeBase, jacobianChangeRefPoint and applyTolerances return None and change their first argument, as in C++. They raise TypeError for anything they would have to convert first, since the result would be written into a temporary copy and lost: a list or tuple, float32, read-only or non-contiguous arrays, and C-order (6, n > 1) jacobians. calcJacobian returns Fortran order; convert others with np.asfortranarray.

jacobianChangeRefPoint takes the point in the jacobian's base frame. To match calcJacobian(q, link, p), whose p is in the link frame, rotate it first: jacobianChangeRefPoint(J, joint_group.calcFwdKin(q)[link].rotation @ p).

Pose errors are [translation, angle-axis rotation] 6-vectors:

Python
from tesseract_robotics.tesseract_common import (
    applyTolerances, calcJacobianTransformErrorDiff, calcRotationalError, calcTransformError,
)

calcRotationalError(R)               # θ·axis, θ in [-π, π]
calcTransformError(t1, t2)           # error of t1.inverse() * t2

# Finite-difference column of a pose-error jacobian. Subtracting two calcTransformError
# results jumps by ~2π near the angle-axis ±π boundary; this does not.
d = calcJacobianTransformErrorDiff(target, source, source_perturbed)
d = calcJacobianTransformErrorDiff(target, target_perturbed, source, source_perturbed)
d = calcJacobianTransformErrorDiff(target, source, source_perturbed, lower_tol, upper_tol)

v = np.array([-2.0, 0.5, 3.0])
applyTolerances(v, np.full(3, -1.0), np.full(3, 1.0))  # v is now [-1., 0., 2.]

The tolerance pair of applyTolerances and of the tolerance overloads of calcJacobianTransformErrorDiff must be both empty (no tolerance) or both of the value's size (6 for the error diff); anything else raises ToleranceSizeMismatchError, a ValueError.

Resource Locators

GeneralResourceLocator

Resolves package:// URLs to file paths.

Python
from tesseract_robotics.tesseract_common import GeneralResourceLocator

locator = GeneralResourceLocator()

# Resolve package URL
resource = locator.locateResource("package://tesseract_support/urdf/abb_irb2400.urdf")
path = resource.getFilePath()

A package is a directory that holds a package.xml; its name is the directory name. The locator finds packages in the directories it is given and in their subdirectories. Without arguments it reads TESSERACT_RESOURCE_PATH, ROS_PACKAGE_PATH and AMENT_PREFIX_PATH. Both other constructors take keyword arguments only, because a positional list[str] could mean either directories or environment variable names:

Python
from pathlib import Path

locator = GeneralResourceLocator(paths=[Path("~/ws/src").expanduser()])  # + the default env vars
locator = GeneralResourceLocator(environment_variables=["MY_RESOURCE_PATH"])

locator.addPath(Path("/opt/robots"))         # False if the directory does not exist
locator.loadEnvironmentVariable("MY_PATHS")  # False if the variable is unset

locateResource returns None when it cannot resolve the url.

BytesResource

In-memory resource from bytes.

Python
from tesseract_robotics.tesseract_common import BytesResource

data = b"<robot name='test'></robot>"
resource = BytesResource("robot.urdf", data)

Every Resource is also a ResourceLocator: resource.locateResource(url) resolves a url relative to the resource, through the parent locator it was built with (None without a parent). BytesResource first asks the parent for the url as given, then for the file next to its own url:

Python
urdf = BytesResource("package://my_robot/urdf/robot.urdf", data, parent=locator)
mesh = urdf.locateResource("base.stl")  # tries "base.stl", then "package://my_robot/urdf/base.stl"

Collision

AllowedCollisionMatrix

Defines which link pairs to skip during collision checking.

Python
from tesseract_robotics.tesseract_common import AllowedCollisionMatrix

acm = AllowedCollisionMatrix()

# Allow collision between links
acm.addAllowedCollision("link_1", "link_2", "Adjacent links")

# Check if allowed
is_allowed = acm.isCollisionAllowed("link_1", "link_2")

# Remove entry
acm.removeAllowedCollision("link_1", "link_2")

# Clear all
acm.clearAllowedCollisions()

An ACM converts to and from its entries, a dict keyed on ordered link pairs. The constructor orders each key, so ("link_b", "link_a") is stored as ("link_a", "link_b"):

Python
from tesseract_robotics.tesseract_common import (
    AllowedCollisionMatrix, getAllowedCollisions, makeOrderedLinkPair,
)

acm = AllowedCollisionMatrix({("link_b", "link_a"): "Adjacent links"})
entries = acm.getAllAllowedCollisions()  # {("link_a", "link_b"): "Adjacent links"}

acm.removeAllowedCollision("link_a")     # drop every entry involving link_a
acm.reserveAllowedCollisionMatrix(100)   # pre-size; entries unchanged
print(acm)                               # one "link=<a> link=<b> reason=<r>" line per entry

makeOrderedLinkPair("link_b", "link_a")  # ("link_a", "link_b")

# Links allowed to collide with any of the given links; each partner once unless
# remove_duplicates=False. The order follows the dict's, so treat it as a set.
getAllowedCollisions(["link_a"], entries)

CollisionMarginData

Configure collision margins per link pair.

Python
from tesseract_robotics.tesseract_common import CollisionMarginData

margins = CollisionMarginData()
margins.setDefaultCollisionMargin(0.025)
margins.setCollisionMargin("link_a", "link_b", 0.05)

default = margins.getDefaultCollisionMargin()
pair_margin = margins.getCollisionMargin("link_a", "link_b")

CollisionMarginPairData holds the pair margins alone. Both types build from pair data, shift and scale every margin, and merge another set of pair margins:

Python
from tesseract_robotics.tesseract_common import (
    CollisionMarginData,
    CollisionMarginPairData,
    CollisionMarginPairOverrideType,
)

pairs = CollisionMarginPairData({("link_a", "link_b"): 0.05, ("link_a", "link_c"): 0.02})
margins = CollisionMarginData(0.025, pairs)  # or CollisionMarginData(pairs): default 0.0

margins.incrementMargins(0.01)  # default and every pair margin +0.01 m
margins.scaleMargins(2.0)       # then x2

# MODIFY sets the given pairs and keeps the rest; REPLACE keeps only the given pairs.
margins.apply(CollisionMarginPairData({("link_b", "link_d"): 0.07}), CollisionMarginPairOverrideType.MODIFY)

margins.getMaxCollisionMargin()          # largest margin overall
margins.getMaxCollisionMargin("link_a")  # largest margin involving link_a (at least the default)
pairs.getMaxCollisionMargin("link_z")    # None: no pair margin involves link_z

State

JointState

Joint positions and velocities.

Python
from tesseract_robotics.tesseract_common import JointState

state = JointState()
state.joint_names = ["j1", "j2", "j3"]
state.position = np.array([0.0, 0.5, -0.5])
state.velocity = np.array([0.0, 0.0, 0.0])

JointTrajectory

A sequence of JointStates with a description and a uuid (its canonical string; a malformed string raises ValueError). It behaves like a list of states: len, indexing (negative indices count from the end; out of range raises IndexError), assignment and iteration, plus push_back, pop_back, front, back, at, clear and empty.

Python
from tesseract_robotics.tesseract_common import JointState, JointTrajectory

names = ["j1", "j2", "j3"]
traj = JointTrajectory([JointState(names, np.zeros(3))], "approach")
traj.push_back(JointState(names, np.array([0.0, 0.5, -0.5])))

js = traj[-1]
js.time = 1.0
traj[-1] = js  # write back: element access returns a copy

Element access returns a copy

traj[i], front(), back(), at(i), iteration and the states list are copies, so traj[0].time = 1.0 changes nothing. Assign the edited state back with traj[0] = js, or assign a whole new list to traj.states. A reference into the underlying vector would dangle as soon as push_back reallocated it.

Trajectories compare by value (== compares uuid, description and states) and are unhashable.

KinematicLimits

Joint position, velocity, acceleration limits.

Python
from tesseract_robotics.tesseract_common import KinematicLimits

limits = kin_group.getLimits()
print(f"Position min: {limits.joint_limits[:, 0]}")
print(f"Position max: {limits.joint_limits[:, 1]}")
print(f"Velocity: {limits.velocity_limits}")
print(f"Acceleration: {limits.acceleration_limits}")
print(f"Jerk: {limits.jerk_limits}")

Each field is an (n, 2) array of [lower, upper] rows. limits.resize(n) resizes all four to (n, 2); their values are unset afterwards, so assign them before use.

Three free functions check or clamp joint values against an (n, 2) limit array:

Python
import numpy as np
from tesseract_robotics.tesseract_common import enforceLimits, isWithinLimits, satisfiesLimits

limits = np.array([[-1.0, 1.0], [-2.0, 2.0]])
isWithinLimits(np.array([0.5, -1.5]), limits)   # True: inside or on the bounds, no tolerance
satisfiesLimits(np.array([1.0 + 1e-7, 0.0]), limits)  # True: within the 1e-6 default max_diff
enforceLimits(np.array([1.5, -3.0]), limits)    # array([ 1., -2.]): a clamped copy

enforceLimits returns a new array and leaves its input unchanged (C++ clamps in place). isWithinLimits and enforceLimits raise LimitsSizeMismatchError (a ValueError) when the number of values differs from the number of limit rows.

Manipulator Info

ManipulatorInfo

Describes a kinematic group configuration.

Python
from tesseract_robotics.tesseract_common import ManipulatorInfo

info = ManipulatorInfo()
info.manipulator = "manipulator"        # group name
info.working_frame = "base_link"        # reference frame
info.tcp_frame = "tool0"                # tool center point
info.tcp_offset = Isometry3d.Identity() # optional TCP offset

# or all at once; tcp_offset (a link name or an Isometry3d) defaults to the identity
info = ManipulatorInfo("manipulator", "base_link", "tool0")

tcp_offset holds a str (a link name) or an Isometry3d; any other type raises TypeError. Reading it returns a copy, so assign a new value instead of editing it in place.

info.empty() is True unless manipulator, working_frame and tcp_frame are all set. base.getCombined(override) returns a copy of base with every non-empty field of override; an overriding tcp_frame brings override.tcp_offset along with it:

Python
override = ManipulatorInfo()
override.tcp_frame = "tool1"
combined = info.getCombined(override)  # tcp_frame "tool1", tcp_offset from override

Plugin Info

Plugin configuration for the four plugin loaders: KinematicsPluginInfo, ContactManagersPluginInfo, ProfilesPluginInfo and TaskComposerPluginInfo. Each has search_paths, search_libraries, insert(other), clear(), empty() and a read-only CONFIG_KEY (its key in a tesseract YAML config, e.g. "contact_manager_plugins").

Python
from tesseract_robotics.tesseract_common import (
    ContactManagersPluginInfo, PluginInfo, PluginInfoContainer,
)

bullet = PluginInfo()
bullet.class_name = "BulletDiscreteBVHManagerFactory"

info = ContactManagersPluginInfo()
info.search_libraries = ["tesseract_collision_bullet_factories"]
info.discrete_plugin_infos.default_plugin = "BulletDiscreteBVHManager"
info.discrete_plugin_infos.plugins = {"BulletDiscreteBVHManager": bullet}

Note

A PluginInfoContainer field (discrete_plugin_infos, continuous_plugin_infos, executor_plugin_infos, task_plugin_infos) is a reference: editing it in place persists. A dict field (PluginInfoContainer.plugins, ProfilesPluginInfo.plugin_infos, KinematicsPluginInfo.fwd_plugin_infos) converts to a fresh dict on every access: assign the whole field, since info.plugin_infos["x"] = ... edits a copy.

Calibration Info

CalibrationInfo holds calibrated joint origins: for each joint name in joints, the environment replaces that joint's origin (a ChangeJointOriginCommand). An SRDF carries one through its <calibration_config> file, read into SRDFModel.calibration_info.

Python
from tesseract_robotics.tesseract_common import CalibrationInfo, Isometry3d

info = CalibrationInfo()
info.joints = {"joint_a1": Isometry3d.Identity()}  # assign the whole dict
other = CalibrationInfo()
other.joints = {"joint_a2": Isometry3d.Identity()}
info.insert(other)  # overwrites by joint name
assert CalibrationInfo.CONFIG_KEY == "calibration"

Note

joints converts to a fresh dict on every access: info.joints["j"] = t edits a copy. Equality is upstream's: each transform compares with isApprox(1e-5).

Every class on this page whose C++ type declares operator== compares by value (==, with the C++ tolerances) and is unhashable, except ResourceLocator and Resource, which compare by identity (their C++ operator== is always true). KinematicLimits of different shapes are unequal.

Logging

Control console_bridge logging level.

Python
from tesseract_robotics.tesseract_common import (
    getLogLevel, setLogLevel,
    LogLevel,
)

# Suppress warnings
setLogLevel(LogLevel.CONSOLE_BRIDGE_LOG_ERROR)

# Enable debug output
setLogLevel(LogLevel.CONSOLE_BRIDGE_LOG_DEBUG)

Container Types

Type Description
TransformMap dict[str, Isometry3d] - link name to transform
VectorIsometry3d list[Isometry3d]
VectorVector3d list[np.ndarray] - list of 3D points

Auto-generated API Reference

tesseract_common Python bindings (nanobind)

EIGEN_DEFAULT_PREC module-attribute

Python
EIGEN_DEFAULT_PREC: float = 1e-12

Isometry3d

matrix property

Python
matrix: Annotated[NDArray[float64], dict(shape=(4, 4), order=F)]

translation property

Python
translation: Annotated[NDArray[float64], dict(shape=3, order=C)]

rotation property

Python
rotation: Annotated[NDArray[float64], dict(shape=(3, 3), order=F)]

linear property

Python
linear: Annotated[NDArray[float64], dict(shape=(3, 3), order=F)]

Identity staticmethod

Python
Identity() -> Isometry3d

setIdentity

Python
setIdentity() -> None

inverse

Python
inverse() -> Isometry3d

apply_points

Python
apply_points(points: Annotated[NDArray[float64], dict(shape=(None, 3), writable=False)] | Sequence[Sequence[float]]) -> Annotated[NDArray[numpy.float64], dict(shape=(None, 3), order=C)]

apply_directions

Python
apply_directions(vectors: Annotated[NDArray[float64], dict(shape=(None, 3), writable=False)] | Sequence[Sequence[float]]) -> Annotated[NDArray[numpy.float64], dict(shape=(None, 3), order=C)]

translate

Python
translate(vec: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> Isometry3d

pretranslate

Python
pretranslate(vec: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> Isometry3d

isApprox

Python
isApprox(other: Isometry3d, prec: float = 1e-12) -> bool

__repr__

Python
__repr__() -> str

Translation3d

x property

Python
x: float

y property

Python
y: float

z property

Python
z: float

translation

Python
translation() -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

inverse

Python
inverse() -> Translation3d

isApprox

Python
isApprox(other: Translation3d, prec: float = 1e-12) -> bool

__repr__

Python
__repr__() -> str

Quaterniond

w property

Python
w: float

x property

Python
x: float

y property

Python
y: float

z property

Python
z: float

Identity staticmethod

Python
Identity() -> Quaterniond

FromTwoVectors staticmethod

Python
FromTwoVectors(a: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float], b: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> Quaterniond

from_xyzw staticmethod

Python
from_xyzw(qx: float, qy: float, qz: float, qw: float) -> Quaterniond

coeffs

Python
coeffs() -> Annotated[NDArray[numpy.float64], dict(shape=4, order=C)]

vec

Python
vec() -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

toRotationMatrix

Python
toRotationMatrix() -> Annotated[NDArray[numpy.float64], dict(shape=(3, 3), order=F)]

slerp

Python
slerp(t: float, other: Quaterniond) -> Quaterniond

conjugate

Python
conjugate() -> Quaterniond

inverse

Python
inverse() -> Quaterniond

dot

Python
dot(arg: Quaterniond) -> float

angularDistance

Python
angularDistance(arg: Quaterniond) -> float

norm

Python
norm() -> float

squaredNorm

Python
squaredNorm() -> float

normalize

Python
normalize() -> None

normalized

Python
normalized() -> Quaterniond

setIdentity

Python
setIdentity() -> None

isApprox

Python
isApprox(other: Quaterniond, prec: float = 1e-12) -> bool

to_rpy

Python
to_rpy() -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

eulerAngles

Python
eulerAngles(order: str) -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

__repr__

Python
__repr__() -> str

AngleAxisd

angle property

Python
angle: float

axis property

Python
axis: Annotated[NDArray[float64], dict(shape=3, order=C)]

inverse

Python
inverse() -> AngleAxisd

toRotationMatrix

Python
toRotationMatrix() -> Annotated[NDArray[numpy.float64], dict(shape=(3, 3), order=F)]

isApprox

Python
isApprox(other: AngleAxisd, prec: float = 1e-12) -> bool

__repr__

Python
__repr__() -> str

Hyperplane3d

normal property

Python
normal: Annotated[NDArray[float64], dict(shape=3, order=C)]

offset property

Python
offset: float

Through staticmethod

Python
Through(p0: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float], p1: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float], p2: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> Hyperplane3d

coeffs

Python
coeffs() -> Annotated[NDArray[numpy.float64], dict(shape=4, order=C)]

signedDistance

Python
signedDistance(point: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> float

absDistance

Python
absDistance(point: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> float

projection

Python
projection(point: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

normalize

Python
normalize() -> Hyperplane3d

transform

Python
transform(transform: Isometry3d) -> Hyperplane3d

isApprox

Python
isApprox(other: Hyperplane3d, prec: float = 1e-12) -> bool

__repr__

Python
__repr__() -> str

ParametrizedLine3d

origin property

Python
origin: Annotated[NDArray[float64], dict(shape=3, order=C)]

direction property

Python
direction: Annotated[NDArray[float64], dict(shape=3, order=C)]

__init__

Python
__init__(origin: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float], direction: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> None

Through staticmethod

Python
Through(p0: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float], p1: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> ParametrizedLine3d

distance

Python
distance(point: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> float

squaredDistance

Python
squaredDistance(point: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> float

projection

Python
projection(point: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

pointAt

Python
pointAt(t: float) -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

intersectionParameter

Python
intersectionParameter(plane: Hyperplane3d) -> float

intersectionPoint

Python
intersectionPoint(plane: Hyperplane3d) -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

transform

Python
transform(transform: Isometry3d) -> ParametrizedLine3d

isApprox

Python
isApprox(other: ParametrizedLine3d, prec: float = 1e-12) -> bool

__repr__

Python
__repr__() -> str

ResourceLocator

__init__

Python
__init__() -> None

locateResource

Python
locateResource(url: str) -> Resource | None

GeneralResourceLocator

Bases: ResourceLocator

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

addPath

Python
addPath(path: str | PathLike) -> bool

loadEnvironmentVariable

Python
loadEnvironmentVariable(environment_variable: str) -> bool

__eq__

Python
__eq__(arg: GeneralResourceLocator) -> bool

__ne__

Python
__ne__(arg: GeneralResourceLocator) -> bool

Resource

Bases: ResourceLocator

isFile

Python
isFile() -> bool

getUrl

Python
getUrl() -> str

getFilePath

Python
getFilePath() -> str

getResourceContents

Python
getResourceContents() -> bytes

getResourceContentStream

Python
getResourceContentStream() -> io.BytesIO

BytesResource

Bases: Resource

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__eq__

Python
__eq__(arg: BytesResource) -> bool

__ne__

Python
__ne__(arg: BytesResource) -> bool

SimpleLocatedResource

Bases: Resource

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__eq__

Python
__eq__(arg: SimpleLocatedResource) -> bool

__ne__

Python
__ne__(arg: SimpleLocatedResource) -> bool

ManipulatorInfo

manipulator property writable

Python
manipulator: str

manipulator_ik_solver property writable

Python
manipulator_ik_solver: str

working_frame property writable

Python
working_frame: str

tcp_frame property writable

Python
tcp_frame: str

tcp_offset property writable

Python
tcp_offset: str | Isometry3d

TCP offset: a link name (str) or a pose (Isometry3d). Reading returns a copy.

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

getCombined

Python
getCombined(manip_info_override: ManipulatorInfo) -> ManipulatorInfo

empty

Python
empty() -> bool

__repr__

Python
__repr__() -> str

__eq__

Python
__eq__(arg: ManipulatorInfo) -> bool

__ne__

Python
__ne__(arg: ManipulatorInfo) -> bool

JointState

joint_names property writable

Python
joint_names: list[str]

position property writable

Python
position: Annotated[NDArray[float64], dict(shape=(None,), order=C)]

velocity property writable

Python
velocity: Annotated[NDArray[float64], dict(shape=(None,), order=C)]

acceleration property writable

Python
acceleration: Annotated[NDArray[float64], dict(shape=(None,), order=C)]

effort property writable

Python
effort: Annotated[NDArray[float64], dict(shape=(None,), order=C)]

time property writable

Python
time: float

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__eq__

Python
__eq__(arg: JointState) -> bool

__ne__

Python
__ne__(arg: JointState) -> bool

JointTrajectory

states property writable

Python
states: list[JointState]

description property writable

Python
description: str

uuid property writable

Python
uuid: str

UUID as its canonical string; a malformed string raises ValueError.

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__len__

Python
__len__() -> int

__getitem__

Python
__getitem__(index: int) -> JointState

A copy of the state at index; write back with traj[index] = js.

__setitem__

Python
__setitem__(index: int, state: JointState) -> None

__iter__

Python
__iter__() -> Iterator[JointState]

Iterate over copies of the states.

empty

Python
empty() -> bool

max_size

Python
max_size() -> int

reserve

Python
reserve(n: int) -> None

capacity

Python
capacity() -> int

shrink_to_fit

Python
shrink_to_fit() -> None

front

Python
front() -> JointState

back

Python
back() -> JointState

at

Python
at(n: int) -> JointState

clear

Python
clear() -> None

push_back

Python
push_back(x: JointState) -> None

pop_back

Python
pop_back() -> None

__eq__

Python
__eq__(arg: JointTrajectory) -> bool

__ne__

Python
__ne__(arg: JointTrajectory) -> bool

AllowedCollisionMatrix

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

addAllowedCollision

Python
addAllowedCollision(arg0: str, arg1: str, arg2: str) -> None

isCollisionAllowed

Python
isCollisionAllowed(arg0: str, arg1: str) -> bool

clearAllowedCollisions

Python
clearAllowedCollisions() -> None

getAllAllowedCollisions

Python
getAllAllowedCollisions() -> dict[tuple[str, str], str]

insertAllowedCollisionMatrix

Python
insertAllowedCollisionMatrix(arg: AllowedCollisionMatrix) -> None

reserveAllowedCollisionMatrix

Python
reserveAllowedCollisionMatrix(size: int) -> None

__str__

Python
__str__() -> str

__eq__

Python
__eq__(arg: AllowedCollisionMatrix) -> bool

__ne__

Python
__ne__(arg: AllowedCollisionMatrix) -> bool

ContactAllowedValidator

__call__

Python
__call__(link_name1: str, link_name2: str) -> bool

ACMContactAllowedValidator

CombinedContactAllowedValidatorType

Bases: Enum

AND class-attribute instance-attribute

Python
AND = 0

OR class-attribute instance-attribute

Python
OR = 1

CombinedContactAllowedValidator

CollisionMarginPairOverrideType

Bases: Enum

NONE class-attribute instance-attribute

Python
NONE = 0

REPLACE class-attribute instance-attribute

Python
REPLACE = 1

MODIFY class-attribute instance-attribute

Python
MODIFY = 2

CollisionMarginPairData

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

setCollisionMargin

Python
setCollisionMargin(arg0: str, arg1: str, arg2: float) -> None

getCollisionMargin

Python
getCollisionMargin(arg0: str, arg1: str) -> float | None

getCollisionMargins

Python
getCollisionMargins() -> dict[tuple[str, str], float]

incrementMargins

Python
incrementMargins(increment: float) -> None

scaleMargins

Python
scaleMargins(scale: float) -> None

apply

Python
apply(pair_margin_data: CollisionMarginPairData, override_type: CollisionMarginPairOverrideType) -> None

empty

Python
empty() -> bool

clear

Python
clear() -> None

__eq__

Python
__eq__(arg: CollisionMarginPairData) -> bool

__ne__

Python
__ne__(arg: CollisionMarginPairData) -> bool

CollisionMarginData

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

getDefaultCollisionMargin

Python
getDefaultCollisionMargin() -> float

setDefaultCollisionMargin

Python
setDefaultCollisionMargin(arg: float) -> None

getCollisionMargin

Python
getCollisionMargin(arg0: str, arg1: str) -> float

setCollisionMargin

Python
setCollisionMargin(arg0: str, arg1: str, arg2: float) -> None

getCollisionMarginPairData

Python
getCollisionMarginPairData() -> CollisionMarginPairData

incrementMargins

Python
incrementMargins(increment: float) -> None

scaleMargins

Python
scaleMargins(scale: float) -> None

apply

Python
apply(pair_margin_data: CollisionMarginPairData, override_type: CollisionMarginPairOverrideType) -> None

__eq__

Python
__eq__(arg: CollisionMarginData) -> bool

__ne__

Python
__ne__(arg: CollisionMarginData) -> bool

KinematicLimits

joint_limits property writable

Python
joint_limits: Annotated[NDArray[float64], dict(shape=(None, 2), order=F)]

velocity_limits property writable

Python
velocity_limits: Annotated[NDArray[float64], dict(shape=(None, 2), order=F)]

acceleration_limits property writable

Python
acceleration_limits: Annotated[NDArray[float64], dict(shape=(None, 2), order=F)]

jerk_limits property writable

Python
jerk_limits: Annotated[NDArray[float64], dict(shape=(None, 2), order=F)]

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__init__

Python
__init__() -> None

resize

Python
resize(size: int) -> None

__eq__

Python
__eq__(arg: KinematicLimits) -> bool

__ne__

Python
__ne__(arg: KinematicLimits) -> bool

LimitsSizeMismatchError

Bases: ValueError

isWithinLimits / enforceLimits got values and limits of different lengths.

ToleranceSizeMismatchError

Bases: ValueError

lower_tolerance / upper_tolerance are not both empty or both the expected size.

PluginInfo

class_name property writable

Python
class_name: str

config property writable

Python
config: str

Plugin config as a YAML document string (a YAML::Node in C++).

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__init__

Python
__init__() -> None

getConfigString

Python
getConfigString() -> str

__eq__

Python
__eq__(arg: PluginInfo) -> bool

__ne__

Python
__ne__(arg: PluginInfo) -> bool

PluginInfoContainer

default_plugin property writable

Python
default_plugin: str

plugins property writable

Python
plugins: dict[str, PluginInfo]

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__init__

Python
__init__() -> None

clear

Python
clear() -> None

__eq__

Python
__eq__(arg: PluginInfoContainer) -> bool

__ne__

Python
__ne__(arg: PluginInfoContainer) -> bool

KinematicsPluginInfo

search_paths property writable

Python
search_paths: list[str]

search_libraries property writable

Python
search_libraries: list[str]

fwd_plugin_infos property writable

Python
fwd_plugin_infos: dict[str, PluginInfoContainer]

inv_plugin_infos property writable

Python
inv_plugin_infos: dict[str, PluginInfoContainer]

CONFIG_KEY class-attribute instance-attribute

Python
CONFIG_KEY: str = ...

(arg: object, /) -> str

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__init__

Python
__init__() -> None

insert

Python
insert(other: KinematicsPluginInfo) -> None

clear

Python
clear() -> None

empty

Python
empty() -> bool

__eq__

Python
__eq__(arg: KinematicsPluginInfo) -> bool

__ne__

Python
__ne__(arg: KinematicsPluginInfo) -> bool

ContactManagersPluginInfo

search_paths property writable

Python
search_paths: list[str]

search_libraries property writable

Python
search_libraries: list[str]

discrete_plugin_infos property writable

Python
discrete_plugin_infos: PluginInfoContainer

continuous_plugin_infos property writable

Python
continuous_plugin_infos: PluginInfoContainer

CONFIG_KEY class-attribute instance-attribute

Python
CONFIG_KEY: str = ...

(arg: object, /) -> str

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__init__

Python
__init__() -> None

insert

Python
insert(other: ContactManagersPluginInfo) -> None

clear

Python
clear() -> None

empty

Python
empty() -> bool

__eq__

Python
__eq__(arg: ContactManagersPluginInfo) -> bool

__ne__

Python
__ne__(arg: ContactManagersPluginInfo) -> bool

CalibrationInfo

joints property writable

Python
joints: dict[str, Isometry3d]

Joint name -> calibrated joint origin. A copy on read: assign the whole dict, or use insert.

CONFIG_KEY class-attribute instance-attribute

Python
CONFIG_KEY: str = ...

(arg: object, /) -> str

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__init__

Python
__init__() -> None

insert

Python
insert(other: CalibrationInfo) -> None

clear

Python
clear() -> None

empty

Python
empty() -> bool

__eq__

Python
__eq__(arg: CalibrationInfo) -> bool

__ne__

Python
__ne__(arg: CalibrationInfo) -> bool

TaskComposerPluginInfo

search_paths property writable

Python
search_paths: list[str]

search_libraries property writable

Python
search_libraries: list[str]

executor_plugin_infos property writable

Python
executor_plugin_infos: PluginInfoContainer

task_plugin_infos property writable

Python
task_plugin_infos: PluginInfoContainer

CONFIG_KEY class-attribute instance-attribute

Python
CONFIG_KEY: str = ...

(arg: object, /) -> str

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__init__

Python
__init__() -> None

insert

Python
insert(other: TaskComposerPluginInfo) -> None

clear

Python
clear() -> None

empty

Python
empty() -> bool

__eq__

Python
__eq__(arg: TaskComposerPluginInfo) -> bool

__ne__

Python
__ne__(arg: TaskComposerPluginInfo) -> bool

ProfilesPluginInfo

search_paths property writable

Python
search_paths: list[str]

search_libraries property writable

Python
search_libraries: list[str]

plugin_infos property writable

Python
plugin_infos: dict[str, dict[str, PluginInfo]]

CONFIG_KEY class-attribute instance-attribute

Python
CONFIG_KEY: str = ...

(arg: object, /) -> str

__hash__ class-attribute instance-attribute

Python
__hash__: None = None

__init__

Python
__init__() -> None

insert

Python
insert(other: ProfilesPluginInfo) -> None

clear

Python
clear() -> None

empty

Python
empty() -> bool

__eq__

Python
__eq__(arg: ProfilesPluginInfo) -> bool

__ne__

Python
__ne__(arg: ProfilesPluginInfo) -> bool

LogLevel

Bases: Enum

CONSOLE_BRIDGE_LOG_DEBUG class-attribute instance-attribute

Python
CONSOLE_BRIDGE_LOG_DEBUG = 0

CONSOLE_BRIDGE_LOG_INFO class-attribute instance-attribute

Python
CONSOLE_BRIDGE_LOG_INFO = 1

CONSOLE_BRIDGE_LOG_WARN class-attribute instance-attribute

Python
CONSOLE_BRIDGE_LOG_WARN = 2

CONSOLE_BRIDGE_LOG_ERROR class-attribute instance-attribute

Python
CONSOLE_BRIDGE_LOG_ERROR = 3

CONSOLE_BRIDGE_LOG_NONE class-attribute instance-attribute

Python
CONSOLE_BRIDGE_LOG_NONE = 4

OutputHandler

__init__

Python
__init__() -> None

log

Python
log(arg0: str, arg1: LogLevel, arg2: str, arg3: int) -> None

VectorVector3d

__init__

Python
__init__() -> None

__len__

Python
__len__() -> int

__getitem__

Python
__getitem__(arg: int) -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

__setitem__

Python
__setitem__(arg0: int, arg1: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> None

append

Python
append(arg: Annotated[NDArray[float64], dict(shape=3, order=C)] | Sequence[float]) -> None

clear

Python
clear() -> None

VectorIsometry3d

__init__

Python
__init__() -> None

__len__

Python
__len__() -> int

__getitem__

Python
__getitem__(arg: int) -> Isometry3d

append

Python
append(arg: Isometry3d) -> None

clear

Python
clear() -> None

makeOrderedLinkPair

Python
makeOrderedLinkPair(link_name1: str, link_name2: str) -> tuple[str, str]

The pair with the lexicographically smaller link name first.

getAllowedCollisions

Python
getAllowedCollisions(link_names: Sequence[str], acm_entries: Mapping[tuple[str, str], str], remove_duplicates: bool = True) -> list[str]

isWithinLimits

Python
isWithinLimits(values: Annotated[NDArray[float64], dict(shape=(None,), writable=False)] | Sequence[float], limits: Annotated[NDArray[float64], dict(shape=(None, 2), writable=False)] | Sequence[Sequence[float]]) -> bool

True if every value lies in its [lower, upper] row; no tolerance.

enforceLimits

Python
enforceLimits(values: Annotated[NDArray[float64], dict(shape=(None,), writable=False)] | Sequence[float], limits: Annotated[NDArray[float64], dict(shape=(None, 2), writable=False)] | Sequence[Sequence[float]]) -> Annotated[NDArray[numpy.float64], dict(shape=(None,), order=C)]

values clamped into limits, as a new array; the input is unchanged.

twistChangeRefPoint

Python
twistChangeRefPoint(twist: Annotated[NDArray[float64], dict(shape=6, order=C)], ref_point: Annotated[NDArray[float64], dict(shape=3, writable=False)] | Sequence[float]) -> None

Move the twist's reference point by ref_point (v += ω × ref_point), in place.

twistChangeBase

Python
twistChangeBase(twist: Annotated[NDArray[float64], dict(shape=6, order=C)], change_base: Isometry3d) -> None

Rotate the twist into the frame change_base, in place.

jacobianChangeBase

Python
jacobianChangeBase(jacobian: Annotated[NDArray[float64], dict(shape=(6, None))], change_base: Isometry3d) -> None

Rotate every column of a (6, n) Fortran-order jacobian into change_base, in place.

jacobianChangeRefPoint

Python
jacobianChangeRefPoint(jacobian: Annotated[NDArray[float64], dict(shape=(6, None))], ref_point: Annotated[NDArray[float64], dict(shape=3, writable=False)] | Sequence[float]) -> None

Move the reference point of a (6, n) Fortran-order jacobian by ref_point, in place.

calcRotationalError

Python
calcRotationalError(R: Annotated[NDArray[float64], dict(shape=(3, 3), writable=False)] | Sequence[Sequence[float]]) -> Annotated[NDArray[numpy.float64], dict(shape=3, order=C)]

Angle-axis vector θ·a of the rotation R, with θ in [-π, π].

calcTransformError

Python
calcTransformError(t1: Isometry3d, t2: Isometry3d) -> Annotated[NDArray[numpy.float64], dict(shape=(None,), order=C)]

Error of t1.inverse() * t2 as [translation, angle-axis rotation].

applyTolerances

Python
applyTolerances(v: Annotated[NDArray[float64], dict(shape=(None,), order=C)], lower_tolerance: Annotated[NDArray[float64], dict(shape=(None,), writable=False)] | Sequence[float], upper_tolerance: Annotated[NDArray[float64], dict(shape=(None,), writable=False)] | Sequence[float]) -> None

In place: 0 inside [lower, upper], v - lower below it, v - upper above it; no-op when both are empty.

setLogLevel

Python
setLogLevel(level: LogLevel) -> None

getLogLevel

Python
getLogLevel() -> LogLevel

log

Python
log(filename: str, line: int, level: LogLevel, msg: str) -> None

useOutputHandler

Python
useOutputHandler(handler: OutputHandler) -> None

restorePreviousOutputHandler

Python
restorePreviousOutputHandler() -> None