【ROS2】常用命令
1、目录结构
在 ROS 2 包中,launch
、urdf
、rviz
(通常指 RViz 配置文件)、config
等文件夹应直接放在包的根目录下(与 robot_arm/
Python 模块目录同级)。这是 ROS 2 社区的通用约定,便于工具(如 ros2 launch
、rviz2
)自动查找资源。
推荐目录结构
ros2_ws/src/robot_arm/
├── config/ # 配置文件(如 YAML 参数、控制器配置)
├── launch/ # Launch 文件(.launch.py 或 .xml)
├── rviz/ # RViz 配置文件(.rviz)
├── urdf/ # URDF/XACRO 机器人模型文件
├── robot_arm/ # Python 模块目录(核心代码)
│ ├── __init__.py
│ └── robot_arm.py # 主节点
├── package.xml
├── setup.py
└── ... # 其他默认文件
编译后install结构:
ros2_ws/install/
├── robot_arm/ # 与包同名的根目录
│ ├── lib/ # 存放编译生成的库和可执行文件
│ │ ├── python3.10/ # Python 模块目录(Python 版本可能不同)
│ │ │ └── site-packages/
│ │ │ └── robot_arm/ # Python 模块代码(与包同名)
│ │ │ ├── __init__.py
│ │ │ └── robot_arm.py # 节点入口文件
│ │ └── robot_arm/ # C++ 可执行文件(如果存在)
│ │ └── robot_arm_node # C++ 编译生成的可执行文件
│ ├── share/ # 存放资源文件和配置
│ │ ├── robot_arm/ # 包资源目录
│ │ │ ├── config/ # 配置文件(如 YAML 参数)
│ │ │ │ └── robot_params.yaml
│ │ │ ├── launch/ # Launch 文件
│ │ │ │ └── arm_control.launch.py
│ │ │ ├── rviz/ # RViz 配置文件
│ │ │ │ └── arm_display.rviz
│ │ │ └── urdf/ # URDF/XACRO 文件
│ │ │ └── robot_arm.urdf.xacro
│ │ └── ament_cmake_core/ # CMake 构建元数据(自动生成)
│ └── setup.bash # 环境变量脚本(局部生效)
├── setup.bash # 全局环境变量脚本(激活工作空间)
└── local_setup.bash # 局部环境变量脚本(仅当前包)
2、编译:
colcon build --packages-select robot_arm --symlink-install
--packages-select 只编译更新指定的包,并将编译结果保存到install文件夹中
--symlink-install
是可选但推荐的,它会创建符号链接,修改 Python 文件后无需重新构建。
开发建议:如何让修改立即生效?
方式 1(推荐开发时使用):使用 --symlink-install
第一次构建时使用:
colcon build --symlink-install
效果:
install/robot_arm/share/robot_arm/launch/display.launch.py
会是一个符号链接(symlink),指向src/robot_arm/robot_arm/launch/display.launch.py
- 你修改
src
中的文件,install
中的内容自动更新 - 无需每次
colcon build
,改完就能运行
ROS 2 不会自动安装 rviz/
、launch/
、urdf/
等目录下的文件!
即使你用了 --symlink-install
,也必须通过 setup.py
明确告诉 ROS 2 哪些文件需要安装。
否则,colcon build
只会安装 Python 包、可执行脚本等默认内容,而不会安装 rviz/
、launch/
、meshes/
等资源文件。
正确解决方案:修改 setup.py
你需要编辑你的 robot_arm
包中的 setup.py
文件,添加 data_files
配置,告诉 colcon
把 rviz/
、launch/
、urdf/
、meshes/
等目录复制到 install/
。
3
、清理
colcon clean workspace