Tech & productVerified by Kopik: Official sources reviewed and answers tested by Kopik

Migrate from ROS 1 to ROS 2: catkin to colcon, packages and ros1_bridge

Moving a ROS 1 codebase to ROS 2 changes the build tool, package files, launch files and parameters. The assistant answers step by step from the official migration guides.

Ask your question

Free account required

Each question stands alone Β· 1 free a month, then with a subscription.

Answers are written by a language model solely from this base's documents, with numbered sources. They can be wrong and aren't legal, medical or financial advice: check the sources before any important decision.

Building: colcon and the missing devel space

Instead of catkin_make, catkin_make_isolated or catkin build, ROS 2 uses colcon to build and install packages. There is no equivalent to the devel space in ROS 2, so a missing devel folder is expected, and references such as CATKIN_DEVEL_PREFIX should be removed.

Symbolic link installation, enabled with colcon build --symlink-install, essentially replaces the devel space: you can edit Python code and configuration files without rerunning the install step. In CMakeLists.txt, replace find_package(catkin ...) with individual calls for each dependency, since ROS 2 packages use ament_cmake_ros instead of catkin.

Bridging with ROS 1 on Ubuntu 22.04

Humble on Ubuntu 22.04 is the first ROS 2 release on a platform with no official ROS 1 release. To bridge with the upstream ROS 1 packages from Debian and Ubuntu, the documentation explains that installing ROS 2 from deb packages does not work because of a conflict over catkin-pkg-modules, so the documented route is to build ROS 2 from source and then build ros1_bridge.

Frequently asked questions

Are there tools to automate the migration?

The documentation lists several, noting they are not exhaustive: the Magical ROS 2 Conversion Tool, a launch file migrator that turns ROS 1 XML launch files into ROS 2 Python launch files, and rospy2, which converts rospy calls to rclpy calls.

Do ROS 1 launch files carry over?

ROS 1 launch files are always XML, while ROS 2 supports XML, YAML and Python. The migration guide maps ROS 1 tags such as launch, node and param to their ROS 2 equivalents.

How do ROS 1 TCPROS and UDPROS map to ROS 2?

The reliable policy is akin to TCPROS and best effort to UDPROS, although even reliable delivery in ROS 2 runs over UDP. History plus depth replaces the ROS 1 queue size.

For developers and agents

Embed / API / MCP

Connect this base to Claude, Cursor, ChatGPT or your own app. Each API or MCP request costs €0.10, charged to your Kopik credit (not charged if nothing is found). You need an API key: create one from your dashboard.

MCP for your agents

This base's MCP server URL (tools ask_base and search_base):

MCP URL
https://kopik.io/api/mcp?base=ros2-robotics-documentation
Claude Code, Cursor and other clients
Claude Code
claude mcp add --transport http kopik-ros2-robotics-documentation "https://kopik.io/api/mcp?base=ros2-robotics-documentation" --header "Authorization: Bearer kpk_…"
JSON config (mcpServers)
{
  "mcpServers": {
    "kopik-ros2-robotics-documentation": {
      "url": "https://kopik.io/api/mcp?base=ros2-robotics-documentation",
      "headers": {
        "Authorization": "Bearer kpk_…"
      }
    }
  }
}

REST API for your apps

mode is "answer" (written answer + sources) or "passages" (raw passages only). Add an optional maxPriceCents to cap the price: if the base costs more, the call is refused and nothing is charged.

curl
curl -X POST https://kopik.io/api/v1/bases/ros2-robotics-documentation/query \
  -H "Authorization: Bearer kpk_…" \
  -H "Content-Type: application/json" \
  -d '{"question": "Your question here", "mode": "answer"}'

Getting started

  1. Create a key in your dashboard and top up your credit.
  2. Replace kpk_… with your key.
  3. Full details (responses, errors, JS and Python examples): developer docs.