Note:: the STOMP packages were recently removed from this repository. They are hosted over at ros-industrial/stomp_ros now.
Indigo | Jade | Kinetic | |
---|---|---|---|
Branch | indigo-devel |
indigo-devel |
kinetic-devel |
Status | supported | supported | supported |
Version | version | version | version |
Indigo Source | Indigo Debian | Jade Source | Jade Debian | Kinetic Source | Kinetic Debian | |
---|---|---|---|---|---|---|
industrial_moveit |
catkin build
catkin run_tests
catkin run_tests stomp_core
Run the demo
Run the demo.launch file
roslaunch industrial_moveit_test_moveit_config demo.launch
In the Rviz Motion Planning planel, select rail_start_pose from the dropdown menu under "Select Start State" and click Update
In Rviz, select rail_end_pose from the dropdown menu under "Select Goal State" and click Update
Click Plan in order to generate a motion plan.
The STOMP planner works through optimization: it starts with a given trajectory, called the seed, and iteratively attempts to improve it. This seed is set:
The StompPlanner
class works off of the moveit_msgs/MotionPlanRequest
message type which does not provide an interface for seeds. Until that is added, we bastardize the unused MotionPlanRequest::trajectory_constraints
field to serve this purpose. Use the StompPlanner::encodeSeedTrajectory(const trajectory_msgs::JointTrajectory& seed)
static function to do this:
StompPlanner planner = makeStompPlanner(); // However you initialize
planning_interface::MotionPlanRequest request;
// set your nominal goals, start conditions, etc...
trajectory_msgs::JointTrajectory seed_traj; // Look up your seed traj
request.trajectory_constraints = StompPlanner::encodeSeedTrajectory(seed_traj);
// Call the planning service or the planner itself
planner.setMotionPlanRequest(request)
MotionPlanResponse res;
planner.solve(res);
There is no current way to set this through the MoveGroupInterface class.
========================================================================