UI-Based Teleoperation
UI-based teleoperation methods are controlled directly through the MoveIt Pro Desktop App using on-screen controls. These methods are ideal for precise movements and don't require additional hardware.
Teleoperation modes can be accessed by selecting Teleoperation from the Mode menu in the top left corner of the MoveIt Pro Desktop App, or by running the Request Teleoperation Objective.
Your robot configuration package must include the Teleoperate Objective. If it is missing, Teleoperation is disabled in the Mode menu. If you reach an unavailable Teleoperation view through a saved URL or another entry point, select Back to Objectives to return to the Objectives sidebar.
At the top of the left sidebar you should see four available teleoperation modes. A robot with a mobile base also shows the Base mode, and a robot whose only teleoperation target is a mobile base shows the Base mode alone; see Mobile Base Teleop Mode.
The Teleoperation Speed control appears directly below the mode tabs. It shows the selected mode’s current percentage, from 10% to 100%. Each mode keeps its own speed across reloads. The Desktop App remembers it separately for each Runtime connection, so a speed set for one robot never carries over to another, and another open window on the same connection picks up the change for the modes it is not using. Changing Pose speed does not change Joint, IMarker, Waypoints, or Base speed.
This control applies to teleoperation. Objective motion uses the speed settings of its individual Behaviors. Controller-side time scaling, such as JTAC's time_scale_percentage, applies only to motion executed through a supporting controller. See Control End-Effector Speed for the different mechanisms.
| Method | Best For | Precision | Setup Required |
|---|---|---|---|
| Interactive Marker | Visual positioning, trajectory preview | Medium | None |
| Pose Teleop | Cartesian movements, end-effector positioning | High | None |
| Joint Teleop | Joint-specific movements, singularity avoidance | High | None |
| Waypoints | Returning to a pose you already saved | Exact | A saved waypoint |
| Mobile Base | Driving a mobile base forward, back, and around | Medium | moveit_params.base_jog |
| Game Controllers | Familiar interface to many users | Medium | Plug in USB |
| Meta Quest VR | Intuitive hardware-based teleop | Medium | Setup Guide |
For hardware-based teleoperation, see the Gamepad Setup Guide or Meta Quest Setup Guide.
Interactive Marker Control
The Interactive Marker (IMarker) teleoperation mode allows users to move the robot's end effector in 6 degrees of freedom using arrows for translation, and discs for rotation.
- Visual control: Click and drag arrows and discs to move the end-effector.
- Real-time preview: See inverse kinematics solutions before committing to movements.
- Trajectory planning: As the interactive marker is moved, a motion will be automatically planned that moves the end effector from the current pose to a goal pose. A preview of the trajectory will be visualized before execution.
- Visual feedback: If no preview is shown, it means there is no valid inverse kinematics solution for the desired pose. Use the Reset Marker button to fix this situation.
- Collision alerts: If the robot is in self-collision or environment collision, IMarker planning will fail.
To interact with the Interactive Marker, you will need the "3D Visualization" view panel selected.
Some elements of the simulation scene (e.g. the bench) may not be known to the robot for planning purposes, and therefore you can command the robot to collide with those elements, unless they are added to the planning scene. Check out our how-to guide on creating keepout zones and saving/loading a Planning Scene for more information.
Cartesian Pose Teleop Mode
The Pose teleoperation mode enables Cartesian control of the robot's end-effector using directional buttons in the UI.
- Cartesian control: Translate and rotate the end-effector in Cartesian space.
- Control frame selection: Jog relative to the end-effector frame or the planning group's base frame.
- Multi-group support: Switch between different planning groups and controllers.
- Singularity handling: Stable control even at singularities and workspace limits.
- Collision avoidance: Advanced collision detection with automatic escape capabilities.
- Collision alerts: If the robot is in self-collision or environment collision, pose jogging will name and visualize colliding entities.
- Configurable limits: Adjustable Cartesian speed and acceleration limits.
To use this mode most effectively, we recommend you switch your largest view pane to the /wrist_camera/color since the controls are mapped to the coordinate frame of the wrist camera.
Pose Teleop Settings
Use Teleoperation Speed below the mode tabs to change Pose speed. The settings icon opens planning-group and control-frame options.
The Control Frame setting selects the frame the jog commands are expressed in: End Effector (the default — commands move relative to the tool) or Base (commands stay fixed to the planning group's base frame as the tool rotates).
The Jog Collision Checking setting turns collision checking off for Pose teleop, so you can drive the end-effector out of a pose the robot would otherwise refuse to leave. The setting is per mode: turning it off here leaves Joint teleop checking as before. Reloading the app turns collision checking back on in every mode.
It's recommended to keep collision checking on unless you move the robot into a collision and need full manual control to get it back into a safe state.
See the Pose Jog configuration guide for further setup details.
Joint Teleop Mode
The Joint teleoperation mode allows you to control individual robot joints.
- Plus Minus +/- buttons allow you to jog the arm slowly.
- Slider bars allow you to automatically move to a setpoint. Releasing the slider moves the robot, or stages the move when Require Approval is on; press
Escbefore releasing to cancel the drag instead. - Text input boxes allow you to type an exact degree or radian setpoint.
- Require Approval toggle at the top of the Joint teleop panel allows you to preview changes on a "ghost" robot before executing them on the real robot, which requires clicking the Approve button. The Interactive Marker panel carries the same toggle.
- Joint limits awareness: Automatically respects joint position, velocity, and acceleration limits.
- Collision alerts: If the robot is in self-collision or environment collision, joint buttons will fail and joint sliders will name the colliding entities.
Joint teleop mode is ideal when you need to move the robot to specific joint configurations or when Cartesian movements are not suitable due to singularities or workspace limits.
Joint Teleop Settings
In the settings menu for Joint teleop:
The Jog Collision Checking can be turned off so that the robot can be teleoperated in situations where the robot's trajectory is in collision with an object. Pose teleop has its own copy of the setting, so turning it off here applies to Joint teleop only.
With collision checking off, Joint teleop moves the arm from the +/- buttons only; the joint position sliders stay disabled, for safety reasons.
The Teleoperation Speed control below the mode tabs controls how fast the robot moves, and applies to both the +/- buttons and the joint position sliders.
It's recommended to keep collision checking on unless you move the robot into a collision and need full manual control to get it back into a safe state.
Mobile Base Teleop Mode
For a robot configuration package that defines moveit_params.base_jog, the Teleoperation workspace drives the mobile base:
- A robot whose only teleoperation target is its mobile base shows one Base tab instead of the four arm tabs.
- A robot with an arm and a mobile base shows the four arm tabs and a Base tab.
The Base tab's pad has four buttons. Forward and Reverse drive along the base's x axis, and Turn Left and Turn Right rotate it about its z axis. Hold a button to drive, and release it to stop. The left stick of a game controller also drives the base.
Opening the Base tab activates the controller set in base_jog, and deactivates any active controller that claims the same command interfaces. At 100% Teleoperation Speed, the base moves at the max_linear_velocity and max_angular_velocity set in base_jog. The BaseJog Behavior clamps every command to these limits, publishes the commands on /cmd_vel, and publishes a zero velocity when teleoperation leaves base control. It sends each command once, and when commands stop for 0.25 seconds while the base is moving, it publishes one zero velocity. Give the base controller a command timeout and acceleration limits, keep the base_jog limits within the controller's own velocity limits, and synchronize the clocks if that controller runs on another computer, since stamped commands are judged by their age. The commands carry no frame, so to see them in the commanded velocity overlay, set nav2CmdVelFrame in the frontend settings to the base frame. Base teleoperation does no collision checking.
If the MoveIt Pro Desktop App sends no updates for 10 seconds while the Base tab is open, for example because its window closed, the Runtime ends the Teleoperate Objective.
A robot configuration package that overrides the Request Teleoperation Objective must copy the mode 8 branch, SwitchController followed by BaseJog, from the core Request Teleoperation Objective into its own copy.
Waypoint Control
Waypoint Control allows you to move the robot to previously saved joint configurations.
- Saved positions: Quick access to frequently used robot poses.
- Planning group flexibility: Save waypoints for individual or combined planning groups.
- Favorites system: Mark commonly used waypoints for quick access.
- Easy management: Add, remove, and organize waypoints through the UI.
- Collision alerts: If the robot is in self-collision or environment collision, waypoint planning will name and visualize colliding entities.
Waypoints are saved joint states that can be reused later in Objectives or standalone.
Waypoint Control is ideal for returning to known good positions or implementing repetitive positioning tasks.
Gripper Control
At the bottom of all the teleop modes are two simple buttons that can be used to open and close the gripper.
Teleoperating the gripper to joint values other than "Open" or "Close" is not currently supported.