Configuration

class compas_fab.robots.Configuration(joint_values=None, joint_types=None, joint_names=None)[source]

Bases: object

Represents the configuration of a robot based on the state of its joints. If the names of joints are also provided, the configuration behaves as a dictionary of joint name-value pairs.

This concept is also refered to as “Joint State”.

Parameters
  • joint_values (list of float) – Joint values expressed in radians or meters, depending on the respective type.

  • joint_types (list of compas.robots.Joint.SUPPORTED_TYPES) – Joint types, e.g. a list of compas.robots.Joint.REVOLUTE for revolute joints.

  • joint_names (list of str, optional) – List of joint names.

Attributes
  • joint_values (list of float) – Joint values expressed in radians or meters, depending on the respective type.

  • joint_types (list of compas.robots.Joint.SUPPORTED_TYPES) – Joint types, e.g. a list of compas.robots.Joint.REVOLUTE for revolute joints.

  • joint_names (list of str) – List of joint names.

  • data (dict) – The data representing the configuration.

  • prismatic_values (list of float) – Prismatic joint values in meters.

  • revolute_values (list of float) – Revolute joint values in radians.

Examples

>>> config = Configuration.from_revolute_values([math.pi/2, 0., 0.])
>>> config.joint_values
[1.5707963267948966, 0.0, 0.0]
>>> from compas_fab.robots import Configuration
>>> config = Configuration.from_prismatic_and_revolute_values([8.312], [math.pi/2, 0., 0., 0., 2*math.pi, 0.8])
>>> str(config)
'Configuration((8.312, 1.571, 0.000, 0.000, 0.000, 6.283, 0.800), (2, 0, 0, 0, 0, 0, 0))'
>>> from compas_fab.robots import Configuration
>>> from compas.robots import Joint
>>> config = Configuration([math.pi/2, 3., 0.1], [Joint.REVOLUTE, Joint.PRISMATIC, Joint.PLANAR])
>>> str(config)
'Configuration((1.571, 3.000, 0.100), (0, 2, 5))'

Methods

__init__([joint_values, joint_types, …])

Initialize self.

check_joint_names()

Raises an error if there is not a joint name for every value.

close_to(other[, tol])

Returns True if the other Configuration’s joint_values are within a certain range.

copy()

Create a copy of this Configuration.

from_data(data)

Construct a configuration from its data representation.

from_prismatic_and_revolute_values(…[, …])

Construct a configuration from prismatic and revolute joint values.

from_revolute_values(values[, joint_names])

Construct a configuration from revolute joint values in radians.

get(key[, default])

items()

iter_differences(other)

Generator over the differences to another Configuration’s joint_values.

keys()

max_difference(other)

Returns the maximum difference to another Configuration’s joint values.

merge(other)

Merge the configuration with another configuration in place along joint names.

merged(other)

Get a new Configuration with this configuration merged with another configuration.

scale(scale_factor)

Scales the joint positions of the current configuration.

scaled(scale_factor)

Return a scaled copy of this configuration.

to_data()

Get the data dictionary that represents the configuration.

values()

Attributes

data

The data representing the configuration.

has_joint_names

Returns True when there is a joint name for every value.

joint_dict

A dictionary of joint values by joint name.

joint_names

“List of joint names.

joint_types

Joint joint_types, e.g.

joint_values

Joint values expressed in radians or meters, depending on the respective type.

prismatic_values

Prismatic joint values in meters.

revolute_values

Revolute joint values in radians.

type_dict

A dictionary of joint types by joint name.