Catkin 常用命令

一、Catkin 概述

Catkin 是 ROS(Robot Operating System)的官方构建系统,用于组织、编译和管理 ROS 包。它基于 CMake 并提供了更便捷的工作流,支持多包并行编译、依赖解析和环境配置。本文将详细介绍 Catkin 的常用命令及其应用场景。

二、工作空间初始化命令

1. 创建工作空间

代码解读

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src catkin_init_workspace # 初始化 src 目录为 Catkin 工作空间

cd ~/catkin_ws catkin_make # 编译工作空间(生成 devel 和 build 目录)

  • 说明catkin_init_workspace 会在 src 目录下生成 CMakeLists.txt 链接文件,标记该目录为 Catkin 工作空间。
2. 创建 Catkin 包

cd ~/catkin_ws/src

catkin_create_pkg my_package roscpp rospy std_msgs # 创建名为 my_package 的包,依赖 roscpp、rospy、std_msgs

  • 参数catkin_create_pkg <包名> [依赖1] [依赖2] ...
  • 作用 :自动生成包的基本结构(package.xmlCMakeLists.txt)。

三、编译与构建命令

1. 编译工作空间

cd ~/catkin_ws catkin_make # 编译整个工作空间

  • 常用选项
    catkin_make -j4 # 使用 4 个线程并行编译(加快速度) catkin_make -DCMAKE_BUILD_TYPE=Release # 设置编译类型为 Release(优化性能) catkin_make --only-pkg-with-deps my_package # 仅编译 my_package 及其依赖
2. 增量编译

catkin_make --pkg my_package # 仅编译指定包

catkin_make --force-cmake # 强制重新运行 CMake 配置(修改 CMakeLists.txt 后需要)

3. 安装编译结果

catkin_make install # 将编译结果安装到 install 目录

  • 注意 :安装后需通过 source install/setup.bash 更新环境变量。

四、包管理命令

1. 列出工作空间中的包

catkin list # 列出所有包及其状态(已编译/未编译)

catkin list --unbuilt # 仅显示未编译的包

catkin list --quiet # 仅显示包名(无状态信息)

2. 查看包依赖关系

catkin list --deps # 显示包及其依赖关系 catkin graph # 生成依赖关系图(文本形式) catkin graph --dot > deps.dot # 生成 DOT 格式依赖图,可转换为 PDF 可视化

3. 过滤编译包

# 白名单:仅编译指定包

catkin_make -DCATKIN_WHITELIST_PACKAGES="pkg1;pkg2"

# 黑名单:跳过指定包

catkin_make -DCATKIN_BLACKLIST_PACKAGES="pkg3;pkg4"

五、环境配置命令

1. 设置环境变量

source devel/setup.bash # 临时设置当前终端的 ROS 环境变量

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc # 永久设置

  • 验证echo $ROS_PACKAGE_PATH 应显示工作空间路径。
2. 检查环境信息前工作空间路径 catkin locate --shell-verbs # 显示环境设置命令

六、高级工具命令

1. 使用 catkin_tools(推荐替代方案)

安装

sudo apt install python3-catkin-tools

配置工作空间使用 catkin_tools

cd ~/catkin_ws

catkin config --init --mkdirs # 初始化配置

catkin build # 编译工作空间(替代 catkin_make)

  • 优势:并行编译速度更快,支持多配置管理。
2. 清理编译结果

catkin clean # 清理所有编译结果

catkin clean -b # 仅删除 build 目录

catkin clean -d # 仅删除 devel 目录

七、实战场景示例

1. 创建并编译新包

cd ~/catkin_ws/src catkin_create_pkg my_robot roscpp sensor_msgs

cd ~/catkin_ws catkin_make source devel/setup.bash

2. 仅更新特定包

修改了 my_package 后

cd ~/catkin_ws catkin_make --pkg my_package

3. 可视化依赖关系

cd ~/catkin_ws

catkin graph --dot > deps.dot

dot -Tpdf deps.dot -o deps.pdf

evince deps.pdf # 打开 PDF 查看依赖图

八、常见问题与解决

  1. 编译错误

    catkin_make -DCMAKE_BUILD_TYPE=Debug # 生成调试信息 catkin_make clean && catkin_make # 彻底重新编译

  2. 包找不到

    source devel/setup.bash # 刷新环境变量 catkin_make --force-cmake # 重新生成包索引

  3. 依赖冲突

    rosdep install --from-paths src --ignore-src -r -y # 自动安装依赖

九、总结

Catkin 命令是 ROS 开发的基础工具,掌握以下核心命令即可应对大多数场景:

  • 初始化 :catkin_init_workspace、catkin_create_pkg
  • 编译 :catkin_make、catkin build
  • 包管理 :catkin list、catkin graph
  • 环境配置 :source devel/setup.bash

建议结合 catkin_tools 工具提升开发效率,遇到问题时优先检查环境变量和依赖关系。

相关推荐
可编程芯片开发11 小时前
基于模糊PID控制的六步逆变器供电无刷直流电机调速simulink仿真
算法
北冥you鱼12 小时前
Go语言大数(big.Int)比较大小:原理、方法与最佳实践
开发语言·后端·golang
宁之明起(B服)12 小时前
Java 反序列化漏洞-xmldecoder/SnakeYAM
java·开发语言
imperialeast12 小时前
WinAXP音乐播放器8月4日更新
windows·算法·ui
xcLeigh12 小时前
Go入门:零值与变量默认初始化机制
开发语言·后端·golang
ZhouDevin12 小时前
算法论文/模型微调1——CNN架构做lora微调训练
人工智能·深度学习·算法·架构·cnn
deviant-ART12 小时前
java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException
java·开发语言
小月土星12 小时前
LeetCode 21. 合并两个有序链表 超详细题解(虚拟头结点 + 逐行代码拆解)
算法
oier_Asad.Chen12 小时前
【OI学习笔记】Floyed-Warshall算法解决传递闭包问题
c++·笔记·学习·算法·图论·最短路·传递闭包
国科安芯12 小时前
卫星星务计算机数据管理中SEU容错机制的技术实现研究——以AS32S601存储器ECC架构为例
网络·单片机·算法·fpga开发·架构·云计算·risc-v