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 requiredAnswers 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.
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):
https://kopik.io/api/mcp?base=ros2-robotics-documentationClaude Code, Cursor and other clients
claude mcp add --transport http kopik-ros2-robotics-documentation "https://kopik.io/api/mcp?base=ros2-robotics-documentation" --header "Authorization: Bearer kpk_β¦"{
"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 -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
- Create a key in your dashboard and top up your credit.
- Replace
kpk_β¦with your key. - Full details (responses, errors, JS and Python examples): developer docs.