motion_planning_interfaces
motion_planning_interfaces defines 37 interface(s).
Messages
AppendCollisionConcept
———————————– # Append collision concept THIS MESSAGE is OPTIONAL and can be left empty ———————————– #
# The workcell can only hold two types of objects.
# WR: Robot Objects from Workcell
# WC: Obstacle Objects from Workcell
# These are unique. Objects in WR cannot be in WC.
# Usually these are defined in the URDF file.
# The motion planning has a different set of groups for collision checking:
# R: Robot Objects
# O: Obstacle Objects
# MR: Manipulables attached to a robot link
# MO: Manipulables attached to the world frame.
# An object can only be in one of the four groups R, O, MR, and MO.
# Objects above can be declared as:
# TL: Touching Links are objects in R that are allowed to collide
# TO: Touching Obstacles are objects in O that are allowed to collide
# as an allowed collision between certain groups of R, O, MR, and MO explained below.
# Collision Checking
# 1. R : R -> Self check collision of R
# 2. (R - TL) : MR -> Check collision R with MR with allowed collision of TL
# 3. (R - TL) : MO -> Check collision R with MO with allowed collision of TL
# 4. MR : (O - TO) -> Check collision of MR with O with allowed collision of TO
# 5. R : O-> Check collision R with O
# THIS MESSAGE modifies groups WR and WC defined in workcell to the collision check groups
# R, O, MR, and MO, with the TL, and TO for motion planning.
# ----------------------------------- #
# First, WR automatically becomes R, and WO automatically becomes O
# MANIPULABLES from Workcell
# Define manipulables MR or MO, from any object defined in R or O from workcell
# Objects defined here gets removed from groups R or O.
# Look into ManipulableFromWorkcell.msg for details.
ManipulableFromWorkcell[] manipulables_from_workcell
# TL: See definition above
# Any links part of the robot R
string[] touching_links
# TO: See definition above
# Any objects part of the obstacles O
string[] touching_obstacles
# Note: Any added objects below must have unique name
# not previously defined in R or O
# Add additional objects to the MR group
# frame_id must be an object in R
common_msgs/Object[] r_manipulables
# Add additional objects to the MO group
# frame_id must be "world_frame"
common_msgs/Object[] o_manipulables
# Add additional objects to the R group
# frame_id must be an object in R
common_msgs/Object[] r_objects
# Add additional objects to the O group
# frame_id must be "world_frame"
common_msgs/Object[] o_objects
# Add additional object settings
ObjectSettings[] object_settings
CartesianInterpolateConfig
Interpolate the translation and rotation separately.
uint8 R3XSO3 = 1
# Interpolate in SE3 (translation and rotation together)
uint8 SE3 = 2
uint8 type 1
# Number of points in a cartesian interpolated path is determined by this function
# std::max((int)(cart_space_->distance(se3_start, se3_goal) * 10), n_points)
# If n_points is -1, then the number of points will be set by above expression
# If we set n_points, and that is larger than the compared number, then the path will be n_points long
# If n_points is less than the compared number, then the planning will fail with a specific error code
int32 n_points -1
ContactInfo
Signed distance value to represent penetration depth of two objects in collision
float64 signed_distance
# The normal direction of the penetration wrt World frame
geometry_msgs/Vector3 normal
# The names of the two objects in collision
string[] collided_object_pair
ErrorCodes
@radian: Copied from moveit_msgs https://github.com/ros-planning/moveit_msgs
int32 val
# overall behavior
int32 SUCCESS=1
int32 PARTIAL_SUCCESS=2
int32 FAILURE=99999
int32 PLANNING_FAILED=-1
int32 MOTION_PLAN_INVALIDATED_BY_ENVIRONMENT_CHANGE=-3
int32 TIMED_OUT=-6
int32 GOALS_AND_PLAN_TYPES_SIZE_NOT_EQUAL = -7
# planning & kinematics request errors
int32 CART_INTP_RETURNS_MORE_THAN_N_POINTS=-9
int32 START_STATE_IN_COLLISION=-10
int32 START_STATE_VIOLATES_PATH_CONSTRAINTS=-11
int32 COUPLED_START_STATE_NOT_VALID = -12
int32 COUPLED_START_STATE_IN_COLLISION =-13
int32 GOAL_IN_COLLISION=-14
int32 GOAL_VIOLATES_PATH_CONSTRAINTS=-15
# invalid inputs
int32 INVALID_JOINT_CONSTRAINT = -16
int32 INVALID_ROBOT_STATE=-17
int32 INVALID_LINK_NAME=-18
int32 INVALID_OBJECT_NAME=-19
int32 INVALID_GOAL_TYPE = -20
int32 UNSPECIFIED_GOAL_TYPE = -21
int32 INVALID_PATH = -22
int32 INVALID_INPUT_TYPE = -40
int32 START_AND_GOAL_STATE_TOO_CLOSE = -23
int32 START_AND_GOAL_POSE_TOO_CLOSE = -24
# parameterization errors
int32 PARAMETERIZATION_FAILED = -25
# kinematics errors
int32 NO_IK_SOLUTION=-31
# workcell related
int32 FAILED_TO_UPDATE_OBJECTS = -36
int32 SERVER_POOL_EXHAUSTED = -37
Goal
— Use — Specify robot_state
common_msgs/RobotState robot_state
# --- OR ---
# Specify a pose waypoint
# tip frame is tf.child_frame_id
# root frame is tf.header.frame_id
geometry_msgs/TransformStamped tf
# -----------
uint8 ROBOT_STATE = 1
uint8 TRANSFORM = 2
uint8 type
IKConfig
uint8 MANIPULABILITY1 = 1
uint8 MANIPULABILITY2 = 2
uint8 DISTANCE = 3
uint8 type 3
# True to check_collision of the output joint states.
bool check_collision 1
# The maximum output of the return solutions of the IK
uint16 max_output_num 5
# Maximum allowed time for IK calculation
float64 timeout_sec 0.1
IntRange
A range of int. Example: [0, 4]
int32 lower
int32 upper
IptpConfig
— IPTP ONLY —-
uint16 max_iteration 1000
float64 max_time_change_per_iteration 0.001
JointCoupledPlanConfig
JointCouplingMatrix joint_coupling_matrix
JointCouplingMatrix
The joint coupling matrix is an augmented matrix in the form of [A_mxn | b_m], where m is the number of all joints, n is the number of joints to plan and m > n. So the matrix actually has the size of mx(n+1) During the planning, we use this equation to get the complete joint states of the robot: q_m = A_mxn * q_n + b_m
# For example, the joint coupling matrix for palletting using vertically installed GP180 is:
# | 1, 0, 0, 0, 0 |
# | 0, 1, 0, 0, 0 |
# | 0, 0, 1, 0, 0 |
# | 0, 0, 0, 0, 0 |
# | 0, 1, -1, 0, -0.5*M_PI |
# | 0, 0, 0, 1, 0 |
#, which is a 6x5 matrix.
# This matrix forces the joint 4 to be zero and couples the joint 2, 3, 5 together.
# With this matrix, we can plan the path in the R4 space instead of R6.
# That is we can just plan for the joint 1, 2, 3, 6 and get the joint 4 and joint 5 values
# through this matrix and the equation above.
uint16 num_rows
uint16 num_cols
#rows then columns
float64[] values
# A 3x2 example:
# num_rows = 3;
# num_cols = 2;
# values: [a11 a12 a21 a22 a31 a32]
JointPlanConfig
OPTIONAL Specify constraints on the path
PathConstraint path_constraint
ManipulableFromWorkcell
Refer to AppendCollisionConcept.msg for the abbreviation meanings
# The name of the object. Must have been defined in R or O (WR or WO)
string name
# If left empty, an object in R, becomes MR, an object in O, becomes MO.
# Use .header.frame_id to override the reference frame of the object
# If .header.frame_id is an object in R, this object becomes MR
# If .header.frame_id is "world_frame", this object becomes MO
# Other values are not valid.
# .pose is the pose of the object wrt .header.frame_id.
geometry_msgs/PoseStamped[<=1] override_pose_stamped
ObjectSettings
Object name
string name
# This collision object should be farther away to other objects it is collision checked with by a min_signed_dtance.
# So valid_signed_distance is signed_distance > min_signed_distance.
# A negative number for min_signed_distance means that it is allowed to penetrate into
# that object up to that value. Please use the negative values carefully.
float64 min_signed_distance
OrientationConstraint
@radian: Copied from moveit_msgs https://github.com/ros-planning/moveit_msgs
# All is wrt to world frame
# The desired orientation of the robot link specified as a quaternion
geometry_msgs/Quaternion orientation
# The robot link this constraint refers to
string link_name
# axis-angle error tolerances
float64 absolute_x_axis_tolerance
float64 absolute_y_axis_tolerance
float64 absolute_z_axis_tolerance
ParameterizeConfig
uint8 TOTG = 1
uint8 TOPPRA = 2
uint8 IPTP = 3
uint8 type 1
# REQUIRED Set with correct values lower than joint_limit.velocity
# from GetJointLimit.srv of workcell_description.
# Must be size of DOF of arm with correct joint names in order of root to tip.
common_msgs/RealVectorConstraint joint_velocity_constraint
# REQUIRED Set with correct values lower than joint_limit.acceleration
# from GetJointLimit.srv of workcell_description. If joint_limit.acceleration
# was not defined by workcell_decription (joint_limit.acceleration = [ALL ZEROS]),
# users can define any value.
# Must be size of DOF of arm with correct joint names in order of root to tip.
common_msgs/RealVectorConstraint joint_acceleration_constraint
# The output trajectory is sampled with a fixed time between points.
# Note: the second to last point is deleted.
# Example:
# Sampled trajectory time stamps: [0.0 0.1 0.2 0.3 0.4 0.50 0.51]
# Output trajectory time stamps: [0.0 0.1 0.2 0.3 0.4 0.51]
float64 time_increment 0.02
# The maximum path deviation from the original input in [rad].
# This is because parameterize does path smoothing at the corners.
float64 max_path_deviation 5
ToppraConfig toppra_config
IptpConfig iptp_config
PathConstraint
All points of the path must constrain a certain link position within a 3d cartesian box volume wrt to world frame
PositionConstraint[] position_constraints
# All points of the path must constrain a certain link orientation within
# a desired orientation and tolerances
OrientationConstraint[] orientation_constraints
Payload
bool use 0
# Mass [Kg]
float64 mass
# Inertia Tensor [kg-m^2]
# | ixx ixy ixz |
# I = | ixy iyy iyz |
# | ixz iyz izz |
float64 ixx
float64 ixy
float64 iyy
float64 iyz
float64 izz
float64 ixz
# Center of mass transform.
# pose_stamped.header.frame_id is the link reference frame
# specified in URDF that the payload is attached to
geometry_msgs/PoseStamped com
PlannerParams
@radian: Copied from moveit_msgs https://github.com/ros-planning/moveit_msgs
# parameter names (same size as values)
string[] keys
# parameter values (same size as keys)
string[] values
# parameter description (can be empty)
string[] descriptions
PositionConstraint
@radian: Copied from moveit_msgs BoundingVolume was changed with the contents of WorkspaceParameters.msg https://github.com/ros-planning/moveit_msgs
# All is wrt to world frame
# The robot link this constraint refers to
string link_name
# The offset (in the link frame) for the target point on the link we are planning for
geometry_msgs/Vector3 target_point_offset
# The minimum corner of the box, with respect to the robot starting pose
geometry_msgs/Vector3 min_corner
# The maximum corner of the box, with respect to the robot starting pose
geometry_msgs/Vector3 max_corner
RobotStateVec
common_msgs/RobotState[] goal_states
ToppraConfig
The cartesian acceleration limit referenced in constrained_tip_name’s coordinate frame [x, y, z, rotation x, rotation y, rotation z] limits. README: Think hard a long before doing this. The acceleration on Earth with gravity of a non-moving frame xyz where z is facing up is [0, 0, 9.81, 0, 0, 0]; Therefore constraining az < 9.81 (ax or ay < 9.81 and your end effector x or y axis at one point faces gravity) will report failure in this algorithm.
TwistConstraint[] frame_acceleration_constraints
# Joint torque contraints only work if there is a Hb Matrix for you robot arm
# AND you have identified the dynamic parameters (base_parm vector)
TorqueConstraint torque_constraint
# Base force wrench limit referenced in base frame.
# Note: If the robot.urdf does not have correct Mass and Inertia parameters,
# this calculation will be incorrect.
WrenchConstraint base_wrench_constraint
# The discretization number of the algorithm. This is used to calculate the constraints
# and the solving the lp2d problem to adhere to the constraints in a time optimal fashion.
# uint16 algorithm_discretization_num 200
# If the previous algorithm_discretization_num fails, it will be increased until a maximum of
# max_tries.
# uint16 max_tries 5
TorqueConstraint
User must have specified a inverse_dynamics_config json file during initialization of motion planning The json file specifies the base_params values and the so file of the inverse_dynamics_package which has the Hb matrix
# Torque constraint explanation:
# predicted_torque = calc_torque(q, qd, qdd)
# = Hb(q, qd, qdd) * b
# torque equals the Hb matrix with input values of joint positions, q, joint velocities, qd,
# and joint accelerations, qdd, multiplied by the vector of lumped dynamic parameters, b (base_params).
# This predicted_torque is used to design a trajectory during parameterization which is below the torque limit.
# User must specify 1 to use the torque constraint
bool use 0
# Add a payload to correct the base_params values.
# You must have a base_param_correction function in the inverse_dynamics package
# for the type chosen, otherwise this will return false.
# Note!! In this implementation, the payload is always attached to last link of the robot_arm.
# t_link for motoman. payload.com.header.frame_id does nothing.
Payload payload
# The torque limit is the values which causes motor saturation. Feel free to set the limit
# to anything near or below those values
# Only max is used. The torque limit size must be the same size of number of joints in the robot arm.
# [Nm] if you provided the gearbox ratio in robot_dynamics_identification_toolbox
# If you did not provide the gearbox ratio, these values are anything you used to obtain
# the torque data and saturation. For example, number of pulses, control box percent torque,
# voltages V, etc.
common_msgs/RealVectorConstraint limit
TwistConstraint
The link name for which this constraint is applied to. The link must be defined in <robot>.urdf
string name
geometry_msgs/Twist max
geometry_msgs/Twist min
WrenchConstraint
string name
geometry_msgs/Wrench max
geometry_msgs/Wrench min
Services
CheckPathCollision
Check collision of a path between ROBOT group and other groups. Groups should be defined and set from WorkcellDescription. Checks self collision of “ROBOT” objects.
# Update the objects from WorkcellDescription node before calculating this service.
# Calls GetAllObjects.srv
bool update_objects 1
# Append extra objects and definitions on top of the objects obtained from the WorkcellDescription.
# Everything defined here only last for this service call (stateless)
AppendCollisionConcept append_collision_concept
# A valid path has a minimal of two points with the
# position[] fields filled.
trajectory_msgs/JointTrajectory path
# CHECK_ALL_POINTS will check collision of all points of the trajectory
# CHECK_UNTIL_COLLISION will check a collision of a path from start to end, and stop
# if a collision is found or if it reached the end of the path
uint8 CHECK_ALL_POINTS = 1
uint8 CHECK_UNTIL_COLLISION = 2
uint8 type 1
---
# The point indexes in collision expressed in a vector of ranges.
# Example: A path with 10 points. Index starts at 0 and end at 9
# index_ranges_in_collision = {[1, 2], [4, 6]} points with index 1, 2, 4, 5, and 6 are in collision.
# Example: Same path above with 10 points. quick_check = 1
# index_ranges_in_collision = {[1, -1]}. -1 means an unknown range which means the rest of the points were not checked
# Example: A path with no collisions
# index_ranges_in_collision = {}. Is empty
# Example: A path with 10 points. A range with only one point in collision
# index_ranges_in_collision = {[6, 6]}
IntRange[] index_ranges_in_collision
ErrorCodes error_code
CheckRobotCollision
Check collision between ROBOT group and other groups. Groups should be defined and set from WorkcellDescription. Checks self collision of “ROBOT” objects.
# Update the objects from WorkcellDescription node before calculating this service.
# Calls GetAllObjects.srv
bool update_objects 1
# Append extra objects and definitions on top of the objects obtained from the WorkcellDescription.
# Everything defined here only last for this service call (stateless)
AppendCollisionConcept append_collision_concept
# Input the robot_state to determine ROBOT object poses
common_msgs/RobotState robot_state
bool get_contact_infos 0
---
# True if one or more objects is in collision
bool is_in_collision
# The collision info
ContactInfo[] contact_infos
ErrorCodes error_code
ComputeFK
Service to calculate the forward kinematics between two link frames specified in the <robot>.urdf.
# Specify the robot_state
# Only position[] in JointState is used
# Temporary: Fill out multi_dof_joint_state.transforms with
# 1 transform for mobile robot base_pose
common_msgs/RobotState robot_state
# Specify the root_frame. Must be defined in <robot>.urdf
string root_frame
# Specify the tip_frame. Must be defined in <robot>.urdf
string tip_frame
---
# The output transform. The root_frame and tip_frame fields are filled inside.
geometry_msgs/TransformStamped tf
ErrorCodes error_code
ComputeFKBatch
Service to calculate the forward kinematics(FK) between two link frames specified in the <robot>.urdf.
# ----------- Input -----------
# A vector of robot states can be described with a JointTrajectory
# we use JointTrajectory for ease of use with ComputeMotionPlan.srv
trajectory_msgs/JointTrajectory trajectory
# A vector of robot states
common_msgs/RobotState[] robot_states
# Input can be a trajectory or robot_states
uint8 TRAJECTORY = 1
uint8 ROBOT_STATES = 2
uint8 type 1
# -----------------------------
# Specify the root_frame. Must be defined in <robot>.urdf
string root_frame
# Specify the tip_frame. Must be defined in <robot>.urdf
string tip_frame
# Input must have positions filled
bool do_fk_position 1
# Input must have positions and velocities filled
bool do_fk_velocity 0
# Input must have positions, velocities, and accelerations filled
bool do_fk_acceleration 0
---
string root_frame
string tip_frame
# All these vectors below will have the same size as
# the size of points in input (trajectory.points or robot_states)
# Will be filled if do_fk_position = 1
geometry_msgs/Transform[] transforms
# Will be filled if do_fk_velocity = 1
geometry_msgs/Twist[] cartesian_velocities
# Will be filled if do_fk_acceleration = 1
geometry_msgs/Twist[] cartesian_accelerations
# return SUCCESS if all input points successfully compute all of the do_fk_xxx computations
ErrorCodes error_code
ComputeIK
A service call to carry out an inverse kinematics computation between any two link frames from <robot>.urdf
# Update the objects from WorkcellDescription node before calculating this service.
# Calls GetAllObjects.srv
bool update_objects 1
# Append extra objects and definitions on top of the objects obtained from the WorkcellDescription.
# Everything defined here only last for this service call (stateless)
AppendCollisionConcept append_collision_concept
# Specify the transform to calculate the IK.
# root_frame and tip_frame must be specified inside.
geometry_msgs/TransformStamped root_to_tip_tf
# OPTIONAL A reference_state to sort the goal_states solution.
# If empty, will use 0.0, 0.0, 0.0 ... to sort
# Temporary: Fill out multi_dof_joint_state.transforms with
# 1 transform for mobile robot base_pose
common_msgs/RobotState reference_state
# OPTIONAL Specify joints that are fixed, the position[] field will be used as fixed values in this service.
common_msgs/RobotState fixed_state
# If empty, will use joint limit from GetJointLimit.srv of workcell_description
common_msgs/RealVectorConstraint joint_position_constraint
IKConfig config
---
# Multiple goal_states are returned as a solution
common_msgs/RobotState[] goal_states
ErrorCodes error_code
ComputeIKBatch
A service call to carry out an inverse kinematics computation between any two link frames from <robot>.urdf
# Update the objects from WorkcellDescription node before calculating this service.
# Calls GetAllObjects.srv
bool update_objects 1
# Append extra objects and definitions on top of the objects obtained from the WorkcellDescription.
# Everything defined here only last for this service call (stateless)
AppendCollisionConcept append_collision_concept
# Specify the transforms to calculate the IK.
# root_frame and tip_frame must be specified inside.
geometry_msgs/TransformStamped[] root_to_tip_tfs
# OPTIONAL A reference_state to sort the goal_states solution.
# If empty, will use 0.0, 0.0, 0.0 ... to sort
# Temporary: Fill out multi_dof_joint_state.transforms with
# 1 transform for mobile robot base_pose
common_msgs/RobotState reference_state
# OPTIONAL Specify joints that are fixed, the position[] field will be used as fixed values in this service.
common_msgs/RobotState fixed_state
# If empty, will use joint limit from GetJointLimit.srv of workcell_description
common_msgs/RealVectorConstraint joint_position_constraint
IKConfig config
---
# For each tf in root_to_tip_tfs a vector of goal states is returned. If the IK computation fails for a tf,
# the corresponding element in goal_states_vec will be an empty vector. goal_states_vec will be of the same
# length as root_to_tip_tfs
RobotStateVec[] goal_states_vec
# Returns SUCCESS if all tfs return successful IK results, PARTIAL_SUCCESS if some tfs have successfully IK
# computation and FAILURE if all tfs fail IK computation.
ErrorCodes error_code
ComputeMotionPlan
This service calculates a path/trajectory given a start_state and list of goals. A goal can either be a pose of a link or a robot_state. This means that this service, if given a pose, does IK, then does either joint plan, cartesian interpolate, or joint coupled plan, then appends the paths, and if do_parameterize, parameterizes for you.
# Update the objects from WorkcellDescription node before calculating this service.
# Calls GetAllObjects.srv
bool update_objects 1
# Append extra objects and definitions on top of the objects obtained from the WorkcellDescription.
# Everything defined here only last for this service call (stateless)
AppendCollisionConcept append_collision_concept
# Specify the start
# Temporary: Fill out multi_dof_joint_state.transforms with
# 1 transform for mobile robot base_pose
common_msgs/RobotState start_state
# Specify the goals which the path needs to sequentially go to.
Goal[] goals
# For each goal state, define the path plan type.
# This means if path_plan_types[0] = JOINT_PLAN, then from start_state to goals[0] will be a JOINT_PLAN.
# Of course this means that the size of path_plan_types must equal to the size of goals.
uint8[] path_plan_types
uint8 JOINT_PLAN = 1
uint8 CARTESIAN_INTERPOLATE = 2
uint8 JOINT_COUPLED_PLAN = 3
# OPTIONAL Specify joints that are fixed, the position[] field will be used as a fixed value in this service.
common_msgs/RobotState fixed_state
# If empty, will use joint_limit from GetJointLimit.srv of workcell_description
common_msgs/RealVectorConstraint joint_position_constraint
# If parameterization fails, it will still return the path. error_code = PARAMETERIZATION_FAILED
bool do_parameterize 1
# ---- These have default values ----
IKConfig ik_config # This service always checks collision in ik.
JointPlanConfig joint_plan_config
CartesianInterpolateConfig cartesian_interpolate_config
JointCoupledPlanConfig joint_coupled_plan_config
#if do_parameterize = 1, you MUST specify joint_velocity_constraint and joint_acceleration_constraint
# inside parameterize_config
ParameterizeConfig parameterize_config
---
# Appends paths between goal_states.
# Returns a path if do_parameterize = 0.
trajectory_msgs/JointTrajectory trajectory
# This service still returns a path/trajectory even if it stopped prematurely at x reached_goals.
# Success should have reached_goals == goals.size()
uint16 reached_goals
# The final goal state of the path/trajectory. If its partial trajectory, returns the last state of that trajectory.
common_msgs/RobotState goal_state
# Overall service error code should return SUCCESS. If PARTIAL_SUCCESS, that means only part of the path/trajectory
# is calculated and you can check the planning_error_code for what went wrong.
ErrorCodes error_code
# If error_code == PARTIAL_SUCCESS, you can check planning_error_code
# to see what went wrong in the planning part.
ErrorCodes planning_error_code
ComputeParameterize
Update the objects from WorkcellDescription node before calculating this service. Calls GetAllObjects.srv
bool update_objects 1
# Append extra objects and definitions on top of the objects obtained from the WorkcellDescription.
# Everything defined here only last for this service call (stateless)
AppendCollisionConcept append_collision_concept
# Specify a path to parameterize. A valid path has a minimal of two points with the
# position[] fields filled.
trajectory_msgs/JointTrajectory path
# Temporary: base pose for collision checking. Must be size 1 to work.
geometry_msgs/Transform[<=1] base_tfs
ParameterizeConfig config
---
# Returns a trajectory which is properly parameterized (time stamps, positions, and velocities filled out)
trajectory_msgs/JointTrajectory trajectory
ErrorCodes error_code
GetManipulability
Now can only use robot_state.joint_state
common_msgs/RobotState robot_state
# Manipulability is calculated (not only) with how close the robot state is to the position limit
# TODO: Add position limit for robot_state.multi_dof_joint_state
common_msgs/RealVectorConstraint joint_position_limit
---
float64 manipulability
RemovePlanner
This service removes a planner by id
uint16 planner_id
---
# True if successful
bool is_success
ReplacePlanner
This service replaces planner_params of a already set planner.
# Specify the planner_id
uint16 planner_id
# Specify the PlannerParams. Any unsuccessful ones will be handled and result will be printed.
PlannerParams planner_params
---
# True if successful.
bool is_success
SetPlanner
This service sets up a planner
# Valid fields are:
# RTConnect, RRTSTAR, KPIECE
# This changes based on the different implementations in dr_arm_planning
string planner_name
# Specify the planner_id
uint16 planner_id
# The number of identical planners to set for parallel planning.
uint16 number_of_planners
# Specify the PlannerParams. Any unsuccessful ones will be handled and result will be printed.
PlannerParams planner_params
---
# True if successful.
bool is_success
UpdateObjects
This service calls GetAllObjects.srv from WorkcellDescription node.
---
# True if successful
bool is_success