Configure Pose Jog
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
!