[Documentation] [TitleIndex] [WordIndex

Note: This tutorial assumes that you have completed the previous tutorials: Creating an Arm Navigation Package for an Industrial Robot.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Utilizing Trajectory Filters with a Generated Arm Navigation Package

Description: Gives an overview of the common industrial trajectory filters and shows how to apply them to an auto-generated arm navigation package

Tutorial Level: INTERMEDIATE

In this tutorial we will give an overview of the more common industrial trajectory filters. We will then show how to apply the filters to an existing auto generated arm navigation package.

Common Industrial Trajectory Filters

Most industrial interfaces work best with uniformly sampled (equally space way-points) trajectories with as few points as possible. The trajectories generated by most ROS planners and smoothers are neither uniform nor sparse. The industrial trajectory filters correct ROS trajectories by first uniformly sampling the trajectory(uniform_sample_filter) and then reducing them to N points(n_point_filter).

Using Industrial Filters in an Arm Navigation Package

In the previous tutorial, an arm navigation package was generated to control your robot. The generated package includes several launch files that are used for launching a system. Be default the generic trajectory filter chain is used, but as was discussed previously this can be problematic for real industrial systems. The following procedure demonstrates how to use custom filter chains:

  1. Edit trajectory_filter_server.launch (substitute <my_robot_pkg> with your robot package name:

    •   change: <rosparam command="load" file="$(find trajectory_filter_server)/config/filters.yaml" />
        to: <rosparam command="load" file="$(find <my_robot_pkg>)/config/filters.yaml" />
  2. Verify the change has been correctly made by launching the following (it should fail and complain about a missing filters.yaml file):
    •   roslaunch <my_robot_pkg> <my_robot_pkg>_planning_environment
  3. Add the desired trajectory filter file (see example below) to <my_robot_pkg>/config/filters.yaml

    •   service_type: FilterJointTrajectoryWithConstraints
        filter_chain:
        # Use of the parabolic spline smoother is recommended
        # Cubic spline shortcutter would fail for fast moves (i.e. low number of points
          -
            name: parabolic_smoother
            type: IterativeParabolicSmootherFilterJointTrajectoryWithConstraints
        # Uniformly sample motion (creates smooth motion on controller)
          -
            name: uniform_sample_filter
            type: IndustrialUniformSampleFilterJointTrajectoryWithConstraints
            params: {sample_duration: 0.010}
        # Limit the number of points sent to the controller
          -
            name: n_point_filter
            type: IndustrialNPointFilterJointTrajectoryWithConstraints
            params: {n_points: 10}
  4. Launch your robot using:
    •   roslaunch <my_robot_pkg> <my_robot_pkg>_planning_environment
  5. Use the arm warehouse visualizer (in rviz) to plan and filters trajectories. The filtered trajectories should be uniform and limited to <N points if the filters are working correctly.


2019-03-16 12:53