Skip to main content
Version: 7

Configure Pose Jog

Required Version
This feature will not be released until MoveIt Pro version 8.0.0.

MoveIt Pro includes a powerful Cartesian teleoperation mode, called PoseJog. It's one of the teleoperation modes available in the Teleoperate tab of the MoveIt Pro UI. PoseJog offers a range of advanced features, such as:

  • Multi-group control: You can switch between different planning groups and controllers, allowing for complex teleoperation applications.
  • Stable control at singularities and workspace limits: The Behavior is designed to handle singularities gracefully, providing smooth control even in challenging situations.
  • Configurability: You can configure the teleoperation mode to suit your specific needs, including adjusting the Cartesian speed and acceleration limits for different planning groups.
  • Improved safety: The Behavior takes into account the group-configured velocity and acceleration limits to compute the minimum-time stopping distances and make sure the robot starts decelerating in time to avoid collisions.
  • Control fidelity: PoseJog controls true Cartesian velocities and accelerations, making it easier to control the robot's motion in a more intuitive way.
  • Collision escape: The Behavior is designed to handle collision avoidance more effectively, providing a more satisfying teleoperation experience.
  • Simplified configuration: PoseJog is easy to configure and set up, making it more accessible for users.

This document describes how to configure PoseJog in your MoveIt Pro configuration.

Add Velocity-Force controllers for the groups you wish to teleoperate

PoseJog adds a collision-checking layer on top of a 'Velocity-Force Controller' (VFC). Therefore you need a functional VFC configuration for the groups you wish to teleoperate.

The VFC is a ros2_control controller that allows you to control the robot's motion using Cartesian velocities and forces (see this guide for more info). You will need to add a VFC controller to your ros2_control.yaml file for each group you want to control with PoseJog.

Check out our lab_sim config for an example of a VFC configuration, and a description of the configurable control parameters.

PoseJog configuration file

The PoseJog Behavior is configured with a YAML file, e.g. pose_jog.yaml:

# Planning groups to use in PoseJog, and their corresponding VFC controllers.
# The number of elements in `planning_groups` and `controllers` must match.
planning_groups: ['manipulator']
controllers: ['velocity_force_controller']

This file includes the list of planning groups you wish to control, and the corresponding VFC controllers that can control each group. In this case, we have a single planning group called manipulator, and its corresponding VFC controller is called velocity_force_controller. You can add more planning groups and controllers to the list as needed. The UI will read from this file to populate the list of available planning groups and controllers when you teleoperate in PoseJog mode.

You need to include this file in your main config.yaml file, under moveit_params so that it's known to the system:

moveit_params:
...
pose_jog:
package: "your_package_name"
path: "config/moveit/pose_jog.yaml"
...

Again, check out our lab_sim config for a real example.

Using PoseJog in Teleoperate

Teleoperation in MoveIt Pro works via an Objective called Request Teleoperation (defined by the request_teleoperation.xml file). If you are using the 'core' Request Teleoperation Objective that MoveIt Pro ships after release 8.0.0, you don't need to do anything else.

If you are updating from a previous release, or have your custom Request Teleoperation Objective, it needs to be updated to use the new PoseJog Behavior, instead of the old TeleoperateTwist Behavior. Otherwise, teleoperation will not be functional, since the UI in 8.0.0 is not compatible with the old TeleoperateTwist Behavior. Feel free to copy and adapt the request_teleoperation.xml file from the public lab_sim config.

Using PoseJog beyond Teleoperate

PoseJog can be used in any Objective, not just Teleoperate. You can use it in any Objective that requires streaming Cartesian velocities to the robot. Just use it like any other Behavior. For instance, check out the Grapple Moving Satellite with Fuse Objective in our space_satellite_sim config, for an example of how to intercept a moving satellite using PoseJog!