← Back to packages

Package intrinsic_proto.motion_planning.v1

Service MotionPlannerService

Message BlendingParameters

Message CartesianBlendingParameters

Message CheckCollisionsRequest

Message CheckCollisionsResponse

Message ComputeIkDebugInformation

Message ConstraintIntersection

Message DynamicCartesianLimits

Message FkRequest

Message FkResponse

Message GeometricConstraint

Message IkRequest

Message IkResponse

Message IkSolution

Message JointBlendingParameters

Message JointConfigurationValidationResult

Message JointIds

Message JointLimitsUpdate

Message JointPositionEquality

Message JointPositionLimits

Message JointPositionSumLimit

Message LoadMotionCommand

Message LockMotionConfiguration

Message MotionPlannerConfiguration

Message MotionPlanningRequest

Message MotionSegment

Message MotionSpecification

Message PathConstraint

Message PointAt

Message PoseEquality

Message PositionBoundingBox

Message PositionEllipsoid

Message PositionEquality

Message PositionFrustum

Message RelativePoseEquality

Message RelativePositionEquality

Message RelativeRotationEquality

Message RobotReference

Message RobotSpecification

Message RotationBall

Message RotationCone

Message RotationEquality

Message SaveMotionCommand

Message TrajectoryPlanningResponse

Message UniformGeometricConstraint

Message UniformGeometricConstraintIntersection

Enum JointSign

Enum MotionType

Enum ValidationStatus

Services

service MotionPlannerService intrinsic/motion_planning/proto/v1/motion_planner_service.proto

The Motion Planner Service provides motion planning and related operations, such as kinematics and collision checking. It is used by skills such as Move Robot and is available by thid party skills and services.

Plans a trajectory that fulfills the defined motion specification in the MotionPlannerRequest. Requests are cached in a volatile cache, if the service encounters identical requests it will return previously cached solutions. The cache can be cleared by either restarting the service or calling ClearCache.

Computes the Inverse Kinematics (IK) for the robot, i.e. the robots joint configuration that satisfy the set of Cartesian constraints.

Computes the Forward Kinematic (FK), i.e., the Cartesian pose of a target frame with respect to a reference, for a given joint configuration of a robot.

PlanTrajectory uses caching to speed up repeated similar planning calls. Clear cache for PlanTrajectory.

Messages

message BlendingParameters intrinsic/motion_planning/proto/v1/motion_blending_parameter.proto

Field Type Description
1 cartesian_blending optional intrinsic_proto.motion_planning.v1.CartesianBlendingParameters
2 joint_blending optional intrinsic_proto.motion_planning.v1.JointBlendingParameters

message CartesianBlendingParameters intrinsic/motion_planning/proto/v1/motion_blending_parameter.proto

Blending parameters for Cartesian linear trajectory generation.

Field Type Description
1 translation_corner_rounding optional double

Cartesian radius of the circular blend around a Cartesian waypoint corner.

2 rotational_corner_rounding optional double

Radius of the circular blend around a waypoint corner (max angles-axis deviation).

message CheckCollisionsRequest intrinsic/motion_planning/proto/v1/motion_planner_service.proto

Field Type Description
1 world_id string

The id of the world to be used for the collision check.

2 robot_reference intrinsic_proto.motion_planning.v1.RobotReference

Specification of what robot is being controlled.

3 waypoint repeated intrinsic_proto.icon.JointVec

The path of the robot specified in robot_reference to be collision checked. We assume the robot travels linearly (in joint space) between each of the specified waypoints. If you want to collision check a non-point-to-point trajectory with this function, you must discritize it finely enough.

4 collision_settings intrinsic_proto.world.CollisionSettings

Collision settings to applied during collision checking. If not defined, the default setting with zero margin will be applied.

message CheckCollisionsResponse intrinsic/motion_planning/proto/v1/motion_planner_service.proto

Field Type Description
1 has_collision bool

Whether the checked path is in collision or not.

2 collision_debug_msg string

Message to help the caller understand the collision that occurred. Note, that this message only lists the first collision encountered. There may be more collisions.

message ComputeIkDebugInformation intrinsic/motion_planning/proto/v1/compute_ik.proto

Contains debug information from inverse kinematics (IK) computations. Each message consist of a set of ik solution and each ik solution contains a joint configuration and the validation result that details which tests failed. If configuration were rejected due to collision, the collision pairs will be contained in the collision_checking_debug_info. If no ik solution are contained in the message, it usually means that no ik solution for the defined problem exist and the Cartesian pose was not reachable.

Field Type Description
1 ik_solutions repeated intrinsic_proto.motion_planning.v1.IkSolution

All joint configuration of an IK computation and their respective validation results.

message ConstraintIntersection intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Satisfied if all of the contained constraints are satisfied.

Field Type Description
1 constraints repeated intrinsic_proto.motion_planning.v1.GeometricConstraint

Set of constraints that must be jointly satisfied

message DynamicCartesianLimits intrinsic/motion_planning/proto/v1/motion_planning_limits.proto

Field Type Description
2 max_rotational_velocity optional double

Maximum Cartesian rotational velocity. If not specified, the default value defined in the robot limits will be used.

3 max_translational_velocity optional double

Maximum Cartesian translational velocity. The value defines the max translational velocity in the x, y, and z axis. If not specified, the default value defined in the robot limits will be used.

4 max_rotational_acceleration optional double

Maximum Cartesian rotational acceleration limits. If not specified, the default value defined in the robot limits will be used.

5 max_translational_acceleration optional double

Maximum Cartesian translational acceleration limits. The value defines the max translational acceleration in the x, y, and z axis. If not specified, the default value defined in the robot limits will be used.

message FkRequest intrinsic/motion_planning/proto/v1/motion_planner_service.proto

Field Type Description
1 world_id string

The id of the world to be used for the Forward Kinematic (FK) computation.

2 joints intrinsic_proto.icon.JointVec

Joints to set for the robot. If not set, the current position in the world will be used.

3 robot_reference intrinsic_proto.motion_planning.v1.RobotReference

Specification of what robot is being controlled.

4 reference intrinsic_proto.world.TransformNodeReference

The reference frame for which the Cartesian pose is computed. The returned transform is reference_t_target, i.e. the frame of target in the frame of reference. Typically, some of the joints of robot_reference should lie in between these two frames, otherwise you wouldn't see any changes to the returned transform. As an example, reference could be the base link of a robot, and target might be the robot's end-effector.

5 target intrinsic_proto.world.TransformNodeReference

The target frame for which the Cartesian pose is computed. The returned transform is reference_t_target, i.e. the frame of target in the frame of reference. Typically, some of the joints of robot_reference should lie inbetween the these two frames, otherwise you wouldn't see any changes to the returned transform. As an example, reference could be the base link of a robot, and target might be the robot's end-effector.

message FkResponse intrinsic/motion_planning/proto/v1/motion_planner_service.proto

Field Type Description
3 reference_t_target intrinsic_proto.Pose

Cartesian pose of the target frame expressed in the reference frame.

message GeometricConstraint intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Field Type Description
oneof constraint
1 joint_position_limits intrinsic_proto.motion_planning.v1.JointPositionLimits
2 position_equality intrinsic_proto.motion_planning.v1.PositionEquality
6 rotation_equality intrinsic_proto.motion_planning.v1.RotationEquality
7 rotation_cone intrinsic_proto.motion_planning.v1.RotationCone
8 cartesian_pose intrinsic_proto.motion_planning.v1.PoseEquality
9 position_bounding_box intrinsic_proto.motion_planning.v1.PositionBoundingBox
10 constraint_intersection intrinsic_proto.motion_planning.v1.ConstraintIntersection
11 joint_position_sum_limit intrinsic_proto.motion_planning.v1.JointPositionSumLimit
12 point_at intrinsic_proto.motion_planning.v1.PointAt
13 joint_position intrinsic_proto.icon.JointVec

Next ID: 17

14 relative_position_equality intrinsic_proto.motion_planning.v1.RelativePositionEquality
15 relative_rotation_equality intrinsic_proto.motion_planning.v1.RelativeRotationEquality
16 relative_cartesian_pose intrinsic_proto.motion_planning.v1.RelativePoseEquality

message IkRequest intrinsic/motion_planning/proto/v1/motion_planner_service.proto

Field Type Description
1 world_id string

The id of the world to be used for Inverse Kinemetics (IK) computation.

2 target intrinsic_proto.motion_planning.v1.GeometricConstraint

The Cartesian motion target constraint for which we want to compute a joint configuration that satisfies those constraints.

3 starting_joints intrinsic_proto.icon.JointVec

[Optional] Joint configuration, used to seed the Ik. If not set, the current position in the world will be used.

4 robot_reference intrinsic_proto.motion_planning.v1.RobotReference

Specification of what robot is being controlled.

5 max_num_solutions int32

The maximum number of solutions to be returned. If not set (== 0), the underlying implementation has the freedom to choose. Negative values are invalid. Choosing a smaller value may make some implementations faster, but this depends on the underlying implementation and is not guaranteed.

6 collision_settings intrinsic_proto.world.CollisionSettings

If this field is left unset, no collision checking will take place. Otherwise, only collision-free solutions are returned.

7 ensure_same_branch optional bool

Specify whether to compute an IK solution which is on the same kinematic branch as the starting_joints configuration of the robot. Defaults to false.

9 prefer_same_branch optional bool

Optional same branch Ik flag that will prefer solutions on the same kinematic branch over those close to the starting_joints configuration. Defaults to false.

10 disable_error_on_collisions optional bool

Optional flag to disable setting the error status when there are no valid solutions due to collisions. When false, the request will fail if no collision free solution is found. When true, the request will succeed even if no collision free solution is found. This is useful when accessing the collision debug information. Defaults to false.

message IkResponse intrinsic/motion_planning/proto/v1/motion_planner_service.proto

Field Type Description
1 solutions repeated intrinsic_proto.icon.JointVec

Robot joint configuration that satisfy the Cartesian target constraint specified in the request. Solutions will be sorted by distance away from the joint values in the request. If prefer_same_branch is set, the first solution will correspond to the soluiton on the same branch, if such solution exists.

2 ik_debug_information intrinsic_proto.motion_planning.v1.ComputeIkDebugInformation

Contains the debug information from the IK call. This includes all solutions generated from the IK solver and their validation results. It informs a user why specific configurations were excluded from the results. In case of collision, it also provides the collision information to identify the objects in collision.

message IkSolution intrinsic/motion_planning/proto/v1/compute_ik.proto

Contains a joint configuration and the validation result that details which tests failed. If configuration were rejected due to collision, the collision pairs will be contained in the collision_checking_debug_info.

Field Type Description
1 joint_configuration intrinsic_proto.icon.JointVec
2 validation_result intrinsic_proto.motion_planning.v1.JointConfigurationValidationResult
3 collision_checking_debug_info intrinsic_proto.world.CollisionCheckingDebugInformation

message JointBlendingParameters intrinsic/motion_planning/proto/v1/motion_blending_parameter.proto

Single waypoints blending parameter that apply to all joint configuration way points.

Field Type Description
1 desired_tightness_rad optional double

Quantifies how closely the blend must pass by the joint configuration waypoint. It can be interpreted as the coordinate-wise distance at which the blending arc begins.

message JointConfigurationValidationResult intrinsic/motion_planning/proto/v1/compute_ik.proto

Encapsulates all validation results that can be used to validate a joint configuration.

Field Type Description
1 collision_validity_check intrinsic_proto.motion_planning.v1.JointConfigurationValidationResult.ValidationStatus

Defines the result of a collision check. VIOLATED means that a collision was detected. VALID means that no collision was detected.

2 limit_validity_check intrinsic_proto.motion_planning.v1.JointConfigurationValidationResult.ValidationStatus

Defines the result of a joint limit validation check. VIOLATED means that the joint configuration was outside the defined joint limits.

3 constraint_validatity_check intrinsic_proto.motion_planning.v1.JointConfigurationValidationResult.ValidationStatus

Defines the result of a geometric constraint validation check. VIOLATED means that the joint configuration did not satisfy the defined constraints.

message JointIds intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Field Type Description
1 joint_ids repeated uint32

message JointLimitsUpdate intrinsic/motion_planning/proto/v1/motion_planning_limits.proto

Field Type Description
1 min_position optional intrinsic_proto.RepeatedDouble

Lower joint position limits allow to restrict the robot joint movement in joint space. Each joint of the robot has lower (min) and upper (max) limits. The specified limits need to be within the robot application limits.

2 max_position optional intrinsic_proto.RepeatedDouble

Upper joint position limits allow to restrict the robot joint movement in joint space. Each joint of the robot has lower (min) and upper (max) limits. The specified limits need to be within the robot application limits.

3 max_velocity optional intrinsic_proto.RepeatedDouble

Maximum joint velocity limits per joint. Units are in radians or degrees per second. When not specified, the application limits of the robot will be used.

4 max_acceleration optional intrinsic_proto.RepeatedDouble

Max joint acceleration limits per joint. Units are in radians or degrees per second^2. When not specified, the acceleration limits from the robot application limits will be used.

5 max_jerk optional intrinsic_proto.RepeatedDouble

Maximum joint jerk limits for the robot. Units are in radians or degrees per second^3. When not specified, the jerk limits from the robot application limits will be used.

message JointPositionEquality intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires one or more joints to have the given positions

Field Type Description
3 joint_positions intrinsic_proto.icon.JointVec

The desired position, one element per joint.

oneof joint_group
1 object_id intrinsic_proto.world.ObjectReference

message JointPositionLimits intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Defines lower and upper bounds on the positions of joints (e.g. for a robot).

Field Type Description
3 lower_limits repeated double

Either one element per joint or empty, in which case the limits default to those defined in the World in which this constraint is applied

4 upper_limits repeated double

Either one element per joint or empty, in which case the limits default to those defined in the World in which this constraint is applied

oneof joint_group
1 object_id intrinsic_proto.world.ObjectReference

message JointPositionSumLimit intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Defines the limit on the squared of the sum of several selected joints' position.

Field Type Description
3 joint_signs repeated intrinsic_proto.motion_planning.v1.JointPositionSumLimit.JointSign

A vector that indicates the signs of the joint positions in their sum combination. For example, if we want to express the constraint (j0 + j4)^2 <= joint_sum_limit^2, then the joint_signs must be [POSITIVE, UNSPECIFIED, UNSPECIFIED, UNSPECIFIED, POSITIVE, UNSPECIFIED].

4 joint_sum_limit double

The positive square root of the limit on the squared of the sum combination of the joint positions. For an example, please see the comment on joint_signs above.

oneof joint_group
1 object_id intrinsic_proto.world.ObjectReference
2 joint_ids intrinsic_proto.motion_planning.v1.JointIds

message LoadMotionCommand (Nested in intrinsic_proto.motion_planning.v1.LockMotionConfiguration ) intrinsic/motion_planning/proto/v1/motion_planner_config.proto

Field Type Description
1 motion_id string

The motion id to load.

2 replan_motion_segment_ids repeated uint32

The motion segments to replan.

message LockMotionConfiguration intrinsic/motion_planning/proto/v1/motion_planner_config.proto

Contains lock motion specific configurations.

Field Type Description
oneof command
1 save_motion_command intrinsic_proto.motion_planning.v1.LockMotionConfiguration.SaveMotionCommand
2 load_motion_command intrinsic_proto.motion_planning.v1.LockMotionConfiguration.LoadMotionCommand

message MotionPlannerConfiguration intrinsic/motion_planning/proto/v1/motion_planner_config.proto

Contains motion planning specific configurations.

Field Type Description
1 timeout_sec optional google.protobuf.Duration

Maximum time in seconds available for motion planning. Default is 180 seconds.

3 lock_motion_configuration optional intrinsic_proto.motion_planning.v1.LockMotionConfiguration

Configuration for saving or loading this motion.

4 path_planning_step_size optional double
5 skip_fuzzy_cache_check optional bool

If true, the cache will not check for fuzzy matches. Default to false.

message MotionPlanningRequest intrinsic/motion_planning/proto/v1/motion_planner_service.proto

Field Type Description
1 world_id string

The id of the world to be used for motion planning.

2 robot_specification intrinsic_proto.motion_planning.v1.RobotSpecification

Defines the robot for which the motion is planned and its parameters.

3 motion_specification intrinsic_proto.motion_planning.v1.MotionSpecification

Specifies the motion planning problem to be solved.

4 motion_planner_config optional intrinsic_proto.motion_planning.v1.MotionPlannerConfiguration

Planner specific configuration. Default will set a timeout of 90 seconds for the motion planning request.

5 compute_swept_volume bool

If set, a successful plan will also include the swept volume occupied by the robot while performing the motion.

6 caller_id optional string

An ID for identifying which skill/service sends this request.

7 context optional intrinsic_proto.data_logger.Context

The logging context for the skill sending the request.

10 snapshot_world_id string

This id should be set ONLY by the motion planning service, and ONLY for the purpose of logging. As worlds are mutable, we should not assume that the world of world_id will be in the same state that it was at the time of this motion planning call. If logging is turned on, the MotionPlannerService will clone the world world_id and the id of the cloned world will be stored here. Assuming nothing else mutates the cloned world, that world can be used as a reliable way to replicate this planning call.

message MotionSegment intrinsic/motion_planning/proto/v1/motion_specification.proto

Field Type Description
3 path_constraints optional intrinsic_proto.motion_planning.v1.UniformGeometricConstraint

Specifies geometric constraints that will be applied to the motion of the robot. This will also add the constraint to the start and end configuration of the robot.

5 target intrinsic_proto.motion_planning.v1.GeometricConstraint

The motion target of the segment defines the final robot configuration for this segment. The target is defined as a set of constraints that can be specified in terms of either joint position or Cartesian constraints like a pose.

15 motion_type intrinsic_proto.motion_planning.v1.MotionSegment.MotionType

Allows setting the motion type. ANY is the default motion type that enables arbitrary collision free paths in configuration space. LINEAR enforces Cartesian linear trajectories. JOINT enforces joint space interpolation. A planning failure error will be returned if a motion cannot be found of the given type.

16 collision_settings optional intrinsic_proto.world.CollisionSettings

Local collision settings for the individual segments. If not defined, segment will use the global collision settings if defined or the default collision settings with zero margin if none are set.

17 joint_limits optional intrinsic_proto.motion_planning.v1.JointLimitsUpdate

Robot joint limits that allow to update the lower and upper position limits, velocity, acceleration, and jerk for the motion segment. If not defined, the application limits of the robot will be used.

18 cartesian_limits optional intrinsic_proto.motion_planning.v1.DynamicCartesianLimits

Cartesian limit constraints allow to restrict the Cartesian velocity and acceleration of the robot motion. If not defined, the default limits defined for the robot will be used for Cartesian linear motions and unlimited limits will be used for all other motions. The limit constraints apply to the origin of the moving frame defined in the motion target.

message MotionSpecification intrinsic/motion_planning/proto/v1/motion_specification.proto

Field Type Description
1 motion_segments repeated intrinsic_proto.motion_planning.v1.MotionSegment

The motion is divided into segments, where each motion segment defines a single motion target as well as optional path and dynamic limit constraints. Note: Currently it is not possible to combine motion segments with linear Cartesian motion requirements with those without linear Cartesian motion requirement. We also do not currently support different joint limits for different segments.

3 curve_parameters optional intrinsic_proto.motion_planning.v1.BlendingParameters

The curve waypoint fitting parameters that will be applied during trajectory generation if multiple motion segments have been defined. Use Cartesian blending parameter for linear Cartesian motion requests and joint blending parameter otherwise.

message PathConstraint intrinsic/motion_planning/proto/v1/motion_specification.proto

Field Type Description
1 collision_settings optional intrinsic_proto.world.CollisionSettings

Local collision settings for the individual segments. If not defined, segment will use the global collision settings if defined or the default collision settings with zero margin if none are set.

5 uniform_geometric_constraint optional intrinsic_proto.motion_planning.v1.UniformGeometricConstraint

Specifies geometric constraints that will be applied to the motion of the robot.

6 motion_type optional intrinsic_proto.motion_planning.v1.MotionSegment.MotionType

Allows setting the motion type. ANY is the default motion type that enables arbitrary collision free paths in configuration space. LINEAR enforces Cartesian linear trajectories. JOINT enforces joint space interpolation. A planning failure error will be returned if a motion cannot be found of the given type.

message PointAt intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Constrains a point and axis attached to moving_frame to point at target point. Increase tolerance to reduce the required precision. This may increase the number of possible solutions. This is especially useful if the constraint is used as a path constraint.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Frame for moving_frame_offset, which will be constrained to point at the target point.

2 target_frame intrinsic_proto.world.TransformNodeReference

Frame for target_frame_offset, which will be pointed at.

3 moving_axis optional intrinsic_proto.Point

Axis used as direction from moving_frame to point at target_frame. If unset, defaults to the z-axis of moving_frame. Does not need to be normalized.

4 moving_frame_offset optional intrinsic_proto.Point

The point defined relative to moving_frame that will be constrained together with moving_axis to point at the target point. Defaults to (0, 0, 0) if unset.

5 target_frame_offset optional intrinsic_proto.Point

The point defined relative to target_frame that will be pointed at. Defaults to (0, 0, 0) if unset.

6 tolerance optional double

The maximum distance between the closest point of the ray and the target point represented by the target_frame and target_frame_offset that is allowed to satisfy the constraint. This can be used if it is not necessary to constrain the point exactly to the target point to give the solver some flexibility in solving the constraint. If unset, defaults to 1e-6, which is also the smallest value that can be set.

7 min_distance optional double

The minimum distance between the moving_frame plus moving_frame_offset and the target point represented by the target_frame and target_frame_offset that is allowed to satisfy the constraint. If unset, the moving frame can be positioned arbitrarily close to the target point.

8 max_distance optional double

The maximum distance between the moving_frame plus moving_frame_offset and the target point represented by the target_frame and target_frame_offset that is allowed to satisfy the constraint. If unset, the moving frame can be positioned arbitrarily far from the target point.

message PoseEquality intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires moving_frame and target_frame to have a fixed relative pose at the end pose.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Moving frame that will be constrained to have a fixed relative pose to the reference frame. This typically is a tool or tip frame.

2 target_frame intrinsic_proto.world.TransformNodeReference

Reference frame that will be constrained to have fixed relative pose to the moving frame. For relative motions this typically equals the moving frame. For absolute motions it can be any useful reference frame.

3 target_frame_offset optional intrinsic_proto.Pose

The required relative pose between moving_frame and target_frame. If unset, defaults to the identity pose. Always set both, position and orientation of the offset. To specify only one, use the identify for the other, i.e., (x=y=z=0) for position or (w=1, x=y=z=0) for orientation.

message PositionBoundingBox intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Constrains a point attached to moving_frame to remain within a bounding box of positions defined in the target_frame. This constraint does not limit the rotation between the frames.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Frame for moving_frame_offset, which will be constrained to lie in the bounding box.

2 target_frame intrinsic_proto.world.TransformNodeReference

Frame for bounding box. This must be the base of a kinematic chain leading to moving_frame, with >= one non-fixed DOF between them in the kinematic chain.

3 moving_frame_offset optional intrinsic_proto.Point

The point defined relative to moving_frame whose position must remain within the bounding box attached to the target_frame. If unset, defaults to (0, 0, 0), the origin of moving_frame.

4 target_bounding_box_center optional intrinsic_proto.Pose

Defines the center position and rotation of the bounding box relative to the target_frame. If unset, defaults to an identity pose, in which case the bounding box corners are defined relative to target_frame

5 lower_bounds optional intrinsic_proto.Point

Defines the (x, y, z) lower bounds in the center frame (i.e., defines a corner of the bounding box). If not set, defaults to having no lower bound, so the bounding box extends to -infinity in every dimension. Elements of the point may also be -infinity to indicate that there is no lower bound on a particular dimension.

6 upper_bounds optional intrinsic_proto.Point

Defines the (x, y, z) upper bounds in the center frame (i.e., defines a corner of the bounding box). If not set, defaults to having no upper bound, so the bounding box extends to +infinity in every dimension. Elements of the point may also be +infinity to indicate that there is no upper bound on a particular dimension.

message PositionEllipsoid intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires a point attached to moving_frame to remain within an ellipsoid of positions defined in the target_frame. This constraint does not limit the rotation between the frames. The ellipsoid half-axes are defined with respect to the ellipsoid center frame, which may be translated and rotated relative to the target_frame.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Frame for moving_frame_offset which will be constrained to lie in the ellipsoid.

2 target_frame intrinsic_proto.world.TransformNodeReference

Reference frame for the ellipsoid.

3 rx double

The x-radius of the ellipsoid

4 ry optional double

The y-radius of the ellipsoid. If unset, defaults to rx.

5 rz optional double

The z-radius of the ellipsoid. If unset, defaults to rx.

6 moving_frame_offset optional intrinsic_proto.Point

The point defined relative to moving_frame whose position must remain within the ellipsoid attached to the target_frame. If unset, defaults to (0, 0, 0), the origin of moving_frame.

7 target_ellipsoid_center optional intrinsic_proto.Pose

Defines the center position and rotation of the ellipsoid relative to the target_frame. If unset, defaults to an identity pose, in which case the ellipsoid axes are defined in the target_frame.

message PositionEquality intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires a point attached to moving_frame to have the same position as a point attached to the target_frame, regardless of the orientation of the frames.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Frame for moving_frame_offset, which will be constrained to be equal to target_frame_offset. This typically is a tool or tcp frame.

2 target_frame intrinsic_proto.world.TransformNodeReference

Frame for target_frame_offset, which will be constrained to be equal to moving_frame_offset. For relative motions this typically equals the moving frame. For absolute motions it can be any useful reference frame.

3 moving_frame_offset optional intrinsic_proto.Point

The point attached to moving_frame. Defaults to (0, 0, 0) if unset.

4 target_frame_offset optional intrinsic_proto.Point

The point attached to the target_frame. Defaults to (0, 0, 0) if unset.

message PositionFrustum intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires a point attached to moving_frame to remain within a frustum of positions defined in the target_frame. A frustum is a truncated pyramid in which its tip is cut off by a plane parallel to its base. Frustums can represent the field of view of some cameras. The frustum extends from its tip in the +z direction in the target_frame with its tip at the origin.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Frame for moving_frame_offset, which will be constrained to lie in the frustrum.

2 target_frame intrinsic_proto.world.TransformNodeReference

Reference frame for the frustrum.

3 x_angle double

Angle between frustrum surface plane and x-z plane

4 y_angle double

Angle between frustrum surface plane and y-z plane

5 moving_frame_offset optional intrinsic_proto.Point

The point defined relative to moving_frame whose position must remain within the frustum attached to the target_frame. If unset, defaults to (0, 0, 0), the origin of moving_frame.

6 min_z_distance optional double

The distance in meters between the origin of the target_frame and the plane that cuts the tip of the pyramid to form a surface of the frustum. This plane is parallel to the x-y plane in the target_frame. If unset, defaults to 0. Must be >= 0.

7 max_z_distance optional double

The distance in meters between the origin of the target_frame and the plane that defines the base of the frustum. This plane is parallel to the x-y plane in the target_frame. If unset, defaults to infinity. Must be >= min_z_distance.

message RelativePoseEquality intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires moving_frame to translate and rotate by relative_pose from its starting pose. By default, relative_pose is with respect to starting pose of moving_frame. If optional field reference_frame is set, relative_pose is with respect to reference_frame.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Moving frame that will be constrained to a new pose that is offset by relative_pose from its starting pose. Typically a tool or tip frame.

2 relative_pose intrinsic_proto.Pose

The pose offset to apply to the pose of moving_frame. By default, this is relative to the pose of moving_frame at the start of the motion. If optional field reference_frame is set, then relative_pose is relative to reference_frame.

3 reference_frame optional intrinsic_proto.world.TransformNodeReference

Optional frame that can be used as a reference for relative_pose. This is useful for describing motions where the motion direction does not depend on the starting orientation of moving_frame.

message RelativePositionEquality intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires a point attached to moving_frame to translate by relative_position from its starting position. By default, relative_position is with respect to starting orientation of moving_frame. If optional field reference_frame is set, relative_position is with respect to reference_frame.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Moving frame that will be constrained to a new position that is offset by relative_position from its starting position. Typically a tool or tip frame.

2 relative_position intrinsic_proto.Point

The translation to apply to position of moving_frame. By default, this is relative to the orientation of moving_frame at the start of the motion. If optional field reference_frame is set, then relative_position is relative to reference_frame.

3 reference_frame optional intrinsic_proto.world.TransformNodeReference

Optional frame that can be used as a reference for relative_position. This is useful for describing motions where the motion direction does not depend on the starting orientation of moving_frame.

4 moving_frame_offset optional intrinsic_proto.Point

The point attached to moving_frame. Defaults to (0, 0, 0) if unset.

message RelativeRotationEquality intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires moving_frame to rotate by relative_rotation from its starting pose. By default, relative_rotation is with respect to starting orientation of moving_frame. If optional field reference_frame is set, relative_rotation is with respect to reference_frame.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Moving frame that will be constrained to a new orientation that is offset by relative_rotation from its starting orientation. Typically a tool or tip frame.

2 relative_rotation intrinsic_proto.Quaternion

The rotation to apply to orientation of moving_frame. By default, this is relative to the orientation of moving_frame at the start of the motion. If optional field reference_frame is set, then relative_rotation is relative to reference_frame.

3 reference_frame optional intrinsic_proto.world.TransformNodeReference

Optional frame that can be used as a reference for relative_rotation. This is useful for describing motions where the motion direction does not depend on the starting orientation of moving_frame.

message RobotReference intrinsic/motion_planning/proto/v1/robot_specification.proto

Field Type Description
oneof robot_reference
1 object_id intrinsic_proto.world.ObjectReference

Must have ObjectType==ROBOT_PART.

message RobotSpecification intrinsic/motion_planning/proto/v1/robot_specification.proto

Contains all relevant information to identify the robot that is being controlled and sets robot specific parameters used for planning.

Field Type Description
1 robot_reference intrinsic_proto.motion_planning.v1.RobotReference

Specification of what robot is being controlled.

2 start_configuration optional intrinsic_proto.icon.JointVec

Starting joint configuration of the robot. If not set, the current position in the world will be used.

message RotationBall intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires moving_frame and target_frame to have a relative rotation that is within a given angular distance from a given rotation.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Moving frame that will be constrained to have relative rotation to the reference frame that is within some angular offset of a given rotation.

2 target_frame intrinsic_proto.world.TransformNodeReference

Reference frame that will be constrained to have a relative rotation to the moving frame that is within some angular offset of a given rotation.

3 rotation_offset optional intrinsic_proto.Quaternion

The required relative rotation between moving_frame and target_frame. If unset, defaults to the identity rotation.

4 angular_radius double

The radius of the ball. This is an upper bound on the angular distance between rotation_offset defined below and the relative rotation between the moving_frame and target_frame.

message RotationCone intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires an axis defined in moving_frame to be rotated within a maximum angle from an axis defined in the target_frame. Does not constrain the positions of the frames. Axes are directional, so inverting an axis results in a different rotation cone.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Frame for the moving axis that will be constrained to lie within the cone.

2 target_frame intrinsic_proto.world.TransformNodeReference

Frame for the reference axis that is the center of the cone.

3 moving_axis intrinsic_proto.Vector3

The direction of the axis in moving_frame. Must have non-zero norm.

4 target_axis optional intrinsic_proto.Vector3

The direction of the axis in the target_frame. Must have non-zero norm. If unset, defaults to moving_axis.

5 cone_opening_half_angle optional double

The maximum absolute angle from which the axes are allowed to deviate from parallel. This is equivalent to half of the opening angle of the cone formed from all allowed positions of moving_axis relative to target_axis, which is the axis of the cone. If unset, defaults to 0.

message RotationEquality intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Requires moving_frame and target_frame to have a fixed relative rotation. Does not constrain their positions.

Field Type Description
1 moving_frame intrinsic_proto.world.TransformNodeReference

Moving frame that will be constrained to have a fixed relative rotation to the reference frame.

2 target_frame intrinsic_proto.world.TransformNodeReference

Reference frame that will be constrained to have a fixed relative rotation to the moving frame.

3 rotation_offset optional intrinsic_proto.Quaternion

The required rotation between moving_frame and target_frame. If unset, defaults to the identity rotation.

message SaveMotionCommand (Nested in intrinsic_proto.motion_planning.v1.LockMotionConfiguration ) intrinsic/motion_planning/proto/v1/motion_planner_config.proto

Field Type Description

message TrajectoryPlanningResponse intrinsic/motion_planning/proto/v1/motion_planner_service.proto

Field Type Description
2 swept_volume repeated intrinsic_proto.geometry.TransformedGeometryStorageRefs

If requested, these shapes represent the swept volume generated by the input robot performing the computed trajectory.

3 lock_motion_id optional string

If the motion is locked based on the request, this is the id of the motion for loading later. Note this field is not set if this response is from loading a locked motion.

4 logging_id string

Logging id generated for this request. Can be used to retrieve details about the request for debugging.

oneof trajectory
1 discretized intrinsic_proto.icon.JointTrajectoryPVA

The computed discretized trajectory that can be executed by the input robot.

message UniformGeometricConstraint intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Field Type Description
oneof constraint
3 rotation_cone intrinsic_proto.motion_planning.v1.RotationCone
4 uniform_geometric_constraint_intersection intrinsic_proto.motion_planning.v1.UniformGeometricConstraintIntersection
5 position_bounding_box intrinsic_proto.motion_planning.v1.PositionBoundingBox
6 joint_position_sum_limit intrinsic_proto.motion_planning.v1.JointPositionSumLimit
7 point_at intrinsic_proto.motion_planning.v1.PointAt

message UniformGeometricConstraintIntersection intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Satisfied if all of the contained constraints are satisfied.

Field Type Description
1 constraints repeated intrinsic_proto.motion_planning.v1.UniformGeometricConstraint

Set of constraints that must be jointly satisfied

Enums

enum JointSign intrinsic/motion_planning/proto/v1/geometric_constraints.proto

Name Number Description
UNSPECIFIED 0

means zero

POSITIVE 1

means +1 multiplier

NEGATIVE 2

means -1 multiplier

enum MotionType intrinsic/motion_planning/proto/v1/motion_specification.proto

Name Number Description
ANY 0
LINEAR 1
JOINT 2

enum ValidationStatus intrinsic/motion_planning/proto/v1/compute_ik.proto

Name Number Description
UNKNOWN 0

Means validation test was not performed and is unknown.

VIOLATED 1
VALID 2