Skip to main content
Version: 9

Programmatic SDKs Overview

External system diagram

MoveIt Pro exposes the same ROS 2 surface to all programmatic clients. Whatever transport you choose, the available endpoints, message types, and runtime semantics are identical — only the client library and connection mechanics differ.

This section is organized by feature. Each feature page shows the same workflow in every supported transport, switchable through tabs.

Choose a Transport

Two transports are supported:

  • Native ROS 2 Client Libraries (RCL)rclpy (Python) or rclcpp (C++). The client process joins the ROS 2 graph directly via DDS.
  • Websocket Client Librariesroslibpy (Python), roslibjs (JavaScript), rossharp (C#), roslibrust (Rust), jrosbridge (Java), and others. The client speaks the rosbridge JSON protocol over a websocket to MoveIt Pro's rosbridge_server.
Native RCLWebsocket via rosbridge
Client requirementsROS 2 install matching the MoveIt Pro distro (Humble or Jazzy). Same DDS network.Any language with a websocket library. No ROS 2 install required.
TransportDDS over the local network.TCP/WebSocket to port 3201 on the robot.
Network friendlinessDDS multicast can be finicky across subnets / VPNs.Single TCP port — easier to firewall and proxy.
LatencyLower — direct DDS.Higher — JSON serialization and websocket hop.
Best forROS-native applications, on-robot integrations.Browser apps, mobile apps, fleet managers, or any non-ROS process.
CancellationGoal handle is a first-class ROS 2 type.Goal ID returned by send_goal — must be retained to cancel.

If your client is already a ROS 2 node, use RCL. If it is anything else — a browser, a fleet manager, a process on a different OS — use the websocket transport.

What You Can Do

Each guide below shows the workflow with rclpy and roslibpy side by side:

Setup

Native RCL

Install ROS 2 matching the distro that MoveIt Pro is running (Humble for Ubuntu 22.04, Jazzy for Ubuntu 24.04) and source its setup script before running your client. Add moveit_studio_sdk_msgs to your package.xml so the action and service definitions are available.

Websocket via rosbridge

The MoveIt Pro Runtime runs a rosbridge server listening on port 3201. To connect across the network, expose that port in the robot's firewall settings.

roslibpy's ROS 2 action support is only on the GitHub main branch as of this writing — install accordingly:

python3 -m venv ~/roslibpy_venv
source ~/roslibpy_venv/bin/activate
pip install git+https://github.com/RobotWebTools/roslibpy.git@main

Activate the venv (source ~/roslibpy_venv/bin/activate) before running scripts that use roslibpy.

Through the rosbridge protocol you have access to the full ROS messaging system inside MoveIt Pro.