Lab 4: Interpolation of motion¶
Scope:¶
This laboratory consist of two parts:
- A short introduction.
- Writing your own ROS package.
The task:¶
- Develop the system from the previous laboratory by either copying the package or modyfying it.
- Create ROS node jint that interpolates trajectory in configuration space.
- The node uses ROS service (Remote Procedure Call - RPC) of type jint_control_srv. You should create this service type.
- The node jint gets desired joint position and other required parameters (e.g. duration) as input.
- The node answers interpolation status that can be sent after the interpolation is complete or immediately, if there are errors in the input parameters (e.g. zero or negative duration).
- The RPC can be executed directly from terminal or by a dedicated node jcmd.
- After reception of valid command, the node jint publishes interpolated positions on ROS topic and sends it to robot_state_publiher node.
- At first, use linear interpolation.
- Next, add more sophisticated method, e.g. trapezoid velocity profile or spline interpolation (please refer to: https://en.wikipedia.org/wiki/Spline_interpolation#Algorithm_to_find_the_interpolating_cubic_spline). You can assume zero velocity at the beginning and at the end of motion.
- All interpolation modes should be implemented in one ROS node and can be selected in jint_control_srv.
- Visualize behaviour of the system in RVIZ. Visualize the followed trajectory.
- The node uses ROS service (Remote Procedure Call - RPC) of type jint_control_srv. You should create this service type.
- Create a similar ROS node oint, that generates interpolation of a reference frame in Cartesian space.
- In this task the frame is not related to the robot nor to its end effector.
- Use pose marker in RVIZ and set its shape as axes.
- The message sent to RVIZ is of type PoseStamped from geometry_msgs package.
- At first, interpolate position only and keep orientation constant.
- Next, interpolate orientation.
- The command for node oint is sent through ROS service of type oint_control_srv from terminal or from a dedicated node ocmd.
- Visualize behavior of the system in RVIZ. Draw the trajectory of the frame.
- Add wiki page to your repository (the documentation). The page should contain description of source files, instruction for launching and description of tests.
- On all graphs of structure of the system topics and services should be shown differently.
- The plots of variables from topics should contain outputs of interpolators. The outputs should be continuous.
- Use separate roslaunch files for:
- roscore and RVIZ (it should be running until URDF file is modified).
- The rest of the system.
- Test the system and show it to the tutor.