Generate a Semi-Constrained Trajectory

In this exercise, we’ll be creating a Descartes trajectory from an array of cartesian poses. Each point will have rotational freedom about the z axis of the tool.

Locate exercise source file

  • Go to the main application source file located in plan_and_run/src/plan_and_run_node.cpp.
  • In the main program, locate the function call to application.generateTrajectory().
  • Go to the source file for that function located in the plan_and_run/src/tasks/generate_trajectory.cpp.
    • Alternatively, in QTCreator, click on any part of the function and press “F2” to bring up that file.
  • Comment out the first line containing the ROS_ERROR_STREAM( ... entry so that the function doesn’t quit immediately.

Complete Code

  • Observe how the ‘createLemniscate()’ is invoked in order to generate all the poses of the tool for the trajectory. The poses from it are then used to create the Descartes Trajectory.
  • Use the AxialSymmetric constructor to specify a point with rotational freedom about the z-axis.
  • The AxialSymmetricPt::FreeAxis::Z_AXIS enumeration constant allows you to specify the Z as the free rotational axis
  • Find comment block that starts with /* Fill Code: and complete as described .
  • Replace every instance of [ COMPLETE HERE ] accordingly.

Build Code and Run

  • CD into your catkin workspace and run catkin build
  • The run the application launch file
roslaunch plan_and_run demo_run.launch