
yolo_ros
在 ROS 2 里一行启动 YOLO 检测,图像进结果出
yolo_ros 是把 Ultralytics YOLO 系列模型(YOLOv8/v9/v10/v11/v12)封装成 ROS 2 节点的开源项目,解决机器人开发者需要在 ROS 2 系统中快速接入目标检测、实例分割、姿态估计、OBB 旋转框和 3D 检测等视觉能力的问题。它提供标准化的发布/订阅接口,把图像话题输入直接转成检测结果话题输出,支持多种任务类型和模型切换,省去自己写推理节点、消息转换和参数配置的重复工作。项目用 Python 实现,依赖 Ultralytics 库,可配合深度相机或点云做 3D 检测与人体姿态估计,适合移动机器人、机械臂抓取、自动驾驶感知等场景快速验证。
项目数据
使用教程
环境要求
- ROS 2 环境(README 提供 Humble 分支 main 的构建测试)
- 已配置的 ROS 2 工作空间(README 示例路径为 ~/ros2_ws)
- Python 3 与 pip3(使用旧版 pip/rosdep 安装方式时需要)
- Docker(使用 Docker 方式构建运行容器时需要)
- NVIDIA Container Toolkit 与 CUDA GPU(可选,容器内加速需要)
安装与启动步骤
-
1获取项目源码
把仓库放到 ROS 2 工作空间的 src 目录下,README 中使用的路径是 ~/ros2_ws/src/yolo_ros。
git clone https://github.com/mgonzs13/yolo_ros.git ~/ros2_ws/src/yolo_ros -
2安装 uv 工具
README 推荐的安装方式,用官方脚本安装 uv,并重新加载 shell 配置使其生效。
curl -LsSf https://astral.sh/uv/install.sh | sh source ~/.bashrc -
3同步虚拟环境
进入 yolo_ros 包目录,创建带系统站点包的 .venv,并按 pyproject.toml 同步依赖(不安装项目本身与 dev 依赖)。
cd ~/ros2_ws/src/yolo_ros/yolo_ros uv venv --python python3 --system-site-packages .venv uv sync --no-install-project --no-dev -
4安装 rosdep 依赖
回到工作空间根目录,用 rosdep 安装 apt 安装器对应的系统依赖,-r 忽略错误、-y 自动确认。
cd ~/ros2_ws rosdep install --from-paths src --ignore-src --filter-for-installers "apt" -r -y -
5构建工作空间
在 ~/ros2_ws 下用 colcon build 构建;已装 uv 时会自动管理虚拟环境,未装则用系统 Python。
cd ~/ros2_ws colcon build -
6构建 Docker 镜像
在仓库根目录执行 docker build 生成 yolo_ros 镜像,镜像名与 README 中一致。
docker build -t yolo_ros . -
7运行 Docker 容器
以交互方式启动容器,--rm 退出即删除;用 GPU 需先装 NVIDIA Container Toolkit 并加 --gpus all。
docker run -it --rm --gpus all yolo_ros
如何确认成功
uv sync 与 rosdep 安装无报错、colcon build 构建成功,或 docker run 后成功进入容器交互终端即可。
常见问题
Q:uv 安装和旧的 pip 安装该选哪个?
A:优先用 uv(README 推荐),它会在包源码树内创建并同步隔离虚拟环境;pip 和 rosdep 方式为旧方案,依赖装进系统环境,可能出现 Python 包版本冲突。
Q:不装 uv 时依赖怎么装?
A:在 ~/ros2_ws/src/yolo_ros/yolo_ros 下执行 pip3 install -r requirements.txt --break-system-packages;或用旧 rosdep 方式:先 pip3 install lap,再执行 PIP_BREAK_SYSTEM_PACKAGES=1 rosdep install --from-paths src --ignore
Q:Docker 里怎么启用 GPU?
A:先安装 NVIDIA Container Toolkit,然后在 docker run 时加上 --gpus all 参数,否则容器只能使用 CPU 运行。
注意事项
- uv 是 README 推荐方式,会保证 pyproject.toml 中声明的 Python 依赖版本一致。
- 未安装 uv 时 colcon build 会跳过虚拟环境管理,节点改用系统 Python 解释器运行。
- 旧版 pip 安装需带 --break-system-packages,旧版 rosdep 安装需设置 PIP_BREAK_SYSTEM_PACKAGES=1。
- README 中的 ~/ros2_ws 是示例工作空间路径,请按自己的实际路径替换。
核心亮点
- 覆盖 YOLOv8 到 v12 多版本,检测/分割/姿态/OBB/3D 任务一站式支持
- 标准 ROS 2 话题接口,图像输入检测输出,接入现有机器人系统成本低
- Python 实现依赖 Ultralytics,模型替换和参数调整直观,上手快
不足之处
- Python 推理节点在高帧率或大模型下实时性不如 C++ 方案
- 3D 检测和姿态估计依赖深度/点云输入,配置门槛相对较高
适用场景
- 移动机器人用摄像头做行人、障碍物实时检测
- 机械臂视觉抓取中做目标检测与 OBB 位姿估计
- 服务机器人或巡检机器人做人体姿态与行为感知
替代项目
ros2_yolo、darknet_ros、vision_msgs
项目介绍
同类项目推荐
modlens
开源
给纯文本编码代理装上眼睛,粘贴图片即刻获得结构化视觉证据。
The first vision plugin for DeepSeek Harness, and the vision bridge for every text-o···
opencv
开源
开箱即用的视觉算法库,搞定图像视频处理与识别
Open Source Computer Vision Library
OpenCVTutorials
开源
中文 OpenCV 教程,从入门到实战,边看边跑代码
OpenCV-Python4.1 中文文档
DEIMv2
开源
用DINOv3做实时检测,又快又准,直接落地。
[DEIMv2] Real Time Object Detection Meets DINOv3