README.md
 1  # Cartesian Controller Handles
 2  This package provides graphical click-and-drop handles (interactive markers) for
 3  RViz to be used in conjunction with the `cartesian_motion_controller` and the `cartesian_compliance_controller`.
 4  
 5  The markers can be used to control the robot end-effector manually through RViz, which is
 6  especially handy for testing scenarios and Cartesian trajectory teaching.
 7  
 8  ![Motion control handles](resources/images/motion_control_handle.png)
 9  
10  ## Getting started
11  The controller handles are implemented as ROS2 controllers and are managed by the *controller_manager*.
12  Here are the typical entries in an example `controller_manager.yaml`:
13  
14  ```yaml
15  controller_manager:
16    ros__parameters:
17      update_rate: 100  # Hz
18  
19      motion_control_handle:
20        type: cartesian_controller_handles/MotionControlHandle
21  
22      # More controller instances here
23      # ...
24  
25  motion_control_handle:
26    ros__parameters:
27      end_effector_link: "tool0"
28      robot_base_link: "base_link"
29      joints:
30        - joint1
31        - joint2
32        - joint3
33        - joint4
34        - joint5
35        - joint6
36  
37  # More controller specifications here
38  # ...
39  ```
40  
41  When active, the `motion_control_handle` from above will publish a `geometry_msgs/PoseStamped` to the `/target_frame` topic with the coordinates of the interactive marker in RViz.
42  You can then use this topic to steer controllers of both the `cartesian_motion_controller/CartesianMotionController` and the `cartesian_compliance_controller/CartesianComplianceController` type.
43  Conventional ROS2 topic remappings will help you setup your preferred configuration with various controllers and handles.
44  
45  ---
46  
47  **Note**: The motion control handles publish their target frames continuously,
48  even if you don't touch the interactive marker in RViz. If you want to send
49  targets to the controllers via scripts (productive use case), make sure to *deactivate* the
50  `motion_control_handle` through the controller manager so that it does not compete with your script.
51  
52  ---
53  
54  Also have a look at the `cartesian_controller_simulation` package for an example setup in simulation.
55  
56  ## RViz
57  You need to create a visualization in RViz to see and interact with the colored handles. Add *InteractiveMarkers* to your *Displays* menu and point it to the right *Update Topic*.
58  The interactive handle only gets visualized if your `motion control handle` is *active*. If you still see no handles, try toggling the *Interactive Markers*'s checkbox.