Skip to content

ROS 1 + MoveIt 1¤

The ROS 1 + MoveIt 1 back-end is the legacy planning stack for compas_fab. For new projects we recommend the ROS 2 + MoveIt 2 back-end — ROS 1 reached end of life on Noetic and receives no further upstream updates.

When to use¤

  • You already have a ROS 1 workspace or a robot that only ships ROS 1 drivers.
  • You are reproducing a legacy compas_fab example or paper.
  • For anything new, prefer ROS 2 + MoveIt 2.

Trade-offs¤

What you get What you give up
Full motion planning via MoveIt (with collision checking, trajectory smoothing) Requires Docker + a per-robot compose stack
Per-robot demo stacks shipped with the repo ROS 1 is EOL — no new features, only bug fixes
Works from any host OS (Docker Desktop on Mac/Windows is enough) Slower iteration than in-process backends like PyBullet

Architecture¤

compas_fab talks to ROS over rosbridge, a WebSocket bridge that translates JSON messages to ROS topics, services and actions. The back-end runs inside Docker; your Python code (in any front-end) connects to it as a client.

Setup¤

Per-robot Docker compose stacks live under docs/installation/docker_files/. Each demo bundles ROS 1, MoveIt 1, a robot driver and rosbridge_server.

Start, for example, the UR10e demo:

cd docs/installation/docker_files/ur10e-demo
docker compose up

First example¤

Connect from Python and verify the bridge:

from compas_fab.backends import RosClient

with RosClient() as client:
    print("Connected: ", client.is_connected)

More examples¤

Setup:

Kinematics:

Motion planning:

Topics / pubsub:

API reference¤