Overview

This package contains an implementation of an action that will attempt to follow desired trajectories in a collision free manner, i.e. the action will execute desired trajectories but abort them if there is a possibility of a collision. The action has a simple action client interface, similar to the interface for the JointTrajectoryAction. If the first point in the desired trajectory is far away from the current state of the robot, the action will create a trajectory segment between the current state of the robot and the first point in the trajectory. This trajectory segment will obey velocity and acceleration limits specified in the filter yaml configuration. The action will then attempt to follow the rest of the desired trajectory as best as it can without filtering it, i.e. the onus is on the user to provide a trajectory that the action will be able to follow.

ROS API

API Stability

  • The ROS API is UNREVIEWED and UNSTABLE

Action API

The collision_free_arm_trajectory_controller node provides an implementation of a SimpleActionServer (see actionlib documentation), that takes in goals containing pr2_controllers_msgs/JointTrajectoryAction messages. The recommended way to send goals to this node if you care about tracking their status is by using the SimpleActionClient. Please see actionlib documentation for more information. Also, see the tutorials for this package for a better idea on how to use the interface.

Action Subscribed Topics

[collision_free_arm_trajectory_action_]+group_name/goal (pr2_controllers_msgs/JointTrajectoryGoal)

  • The desired trajectory for the controller to follow.
[collision_free_arm_trajectory_action_]+group_name/cancel (actionlib_msgs/GoalID)
  • A request to cancel a specific trajectory.

Action Published Topics

[collision_free_arm_trajectory_action_]+group_name/feedback (pr2_controllers_msgs/JointTrajectoryFeedback)

  • Feedback is empty
[collision_free_arm_trajectory_action_]+group_name/status (actionlib_msgs/GoalStatusArray)
  • Provides status information on the goals that are sent to the action.
[collision_free_arm_trajectory_action_]+group_name/status (pr2_controllers_msgs/JointTrajectoryActionResult)
  • Result contains information about the status of the controller when its done.

Parameters

~group_name (string, default: "")
  • The name of the group on which the node is acting. A group is a collection of joints (and corresponding links). Groups are specified using a yaml file. See planning environment YAML configuration for more details on how to specify groups.
~traj_action_name (string, default: /r_arm_controller/joint_trajectory_action/)
  • This node interfaces to controllers through a simple action client. This parameter specifies the name of the action server corresponding to the controller.

Services

get_execution_safety (planning_environment_msgs/GetJointTrajectoryValidity)
  • This services allows the node to determine if the execution of the trajectory is safe. The server node checks for collisions along the part of the trajectory that is yet to be traversed. Internally, it computes the closest state on the trajectory to the current state of the robot and uses this state to compute the part of the trajectory that it still needs to check.
get_robot_state (planning_environment_msgs/GetRobotState)
  • This services allows the node to get the complete state of the robot as a motion_planning_msgs/RobotState message. This message contains information about the joint positions of all the (real) joints on the robot.
filter_trajectory (motion_planning_msgs/FilterJointTrajectory)
  • The action uses this service to filter trajectories if required. If the first point in the desired trajectory is far away from the current state of the robot, the action will use this service to create a trajectory segment between the current state of the robot and the first point in the trajectory. This trajectory segment will obey velocity and acceleration limits specified in the filter yaml configuration. The action will then attempt to follow the rest of the desired trajectory as best as it can without filtering it, i.e. the onus is on the user to provide a trajectory that the action will be able to follow.

Additional Configuration Details

Additional configuration details are provided on the collision_free_arm_trajectory_controller/Configuration page.

Wiki: collision_free_arm_trajectory_controller (last edited 2010-03-13 06:14:59 by SachinChitta)