Soup's Blog

Back

ROS2_Moveit2_Ur5e_Grasp项目详解(一):项目文件介绍Blur image

本系列详解的源代码来自github开源项目:github地址

声明:本项目详解仅用于个人学习ROS2,若有表达不对的地方,欢迎交流指正。

关于ROS2的CMake介绍可以参考博客1博客2,视频可以看B站视频

ROS2的编译流程图解: 在这里插入图片描述

学习本项目所需要的基础:ROS2、C++、Python、目标检测YOLO等基础

项目介绍:UR5e Dynamic Grasping System 是一个基于 ROS2 和 MoveIt2 框架开发的智能抓取系统。该项目结合深度相机感知、目标定位、动态环境建图(OctoMap)与路径规划,实现了 UR5e机械臂在动态环境中的实时避障与抓取任务。 系统具备良好的扩展性和开源性,适用于机器人抓取、动态避障、人机协作等场景研究与开发。

在 ROS 2 中,有三个重要的概念和目录: 在这里插入图片描述

  • 源码目录(src) - 这是你的源代码所在的地方,包括 Python 文件、C++ 文件、配置文件等(专注于开发)
  • 构建目录(build) - 这是在编译过程中创建的临时目录(编译过程的临时产物)
  • 安装目录(install) - 这是最终安装包的地方,也是运行时实际使用的目录(最终部署和运行时使用)

src源码目录结构#

在这里插入图片描述

代码功能包说明#

  1. octo_bringup - OctoMap建图模块
  • 负责实时生成环境的三维占据栅格地图
  • 用于动态避障

注意:在本项目中这个并没有用到,暂时可以不进行了解

  1. robotiq_description - Robotiq夹爪描述文件
  • 包含Robotiq夹爪的详细描述文件
  • 包括网格模型、关节参数
  1. robotiq_moveit_config - Robotiq的Moveit2配置包
  • 包含SRDF 配置:

    • 定义了夹爪的运动学组(kinematic group)
    • 定义了夹爪的预设状态(如打开和关闭状态)
    • 定义了碰撞忽略规则(disable_collisions)
  • 包含夹爪组定义:

    • 创建了一个名为 “gripper” 的组,包含了夹爪的所有链接
    • 定义了两个预设状态: “open” 状态:夹爪完全打开 “close” 状态:夹爪闭合到指定位置
  • 包含碰撞忽略规则:

    • 定义了夹爪内部链接之间的碰撞忽略规则
    • 这些规则告诉 MoveIt 哪些链接之间永远不会发生碰撞,从而提高规划效率

注意:这个包里的文件基本都是由Setup Assistant生成的。如果要快速上手的话,个人觉得不需要太深入的了解

  1. sim_models - 仿真模型资源包
  • 包含Gazebo仿真用的模型文件
  • 包括UR5e机械臂、夹爪、深度相机等仿真模型

注意:这些仿真模型,一般都是由产品对应的公司发布的

  1. ur_bringup - 系统启动包
  • 包含启动整个系统的launch文件
    • simulation.launch.py 启动仿真环境、MoveIt配置、视觉模块和OctoMap
    • start_grasp.launch.py 启动抓取演示
  1. ur5e_gripper_control - 机械臂控制包
  • 实现了UR5e机械臂的控制逻辑
  • 包含抓取演示的主逻辑 demo.cpp
  • 核心控制类 ur5e_gripper.h 和 ur5e_gripper.cpp
  1. ur5e_gripper_description - UR5e机械臂和夹爪的URDF描述文件
  • 包含机械臂和夹爪的3D模型描述
  • 用于机器人建模和可视化
  1. ur5e_gripper_moveit_config - MoveIt 2配置包
  • 包含UR5e机械臂在MoveIt中的运动规划配置
  • 定义了规划组、末端执行器设置等
  • 包含运动学配置、规划算法配置、控制器配置等
  1. ur5e_octomap_moveit - OctoMap与MoveIt集成
  • 将OctoMap生成的环境地图集成到MoveIt中
  • 实现基于环境感知的路径规划和避障
  1. vision - 视觉处理模块
  • 负责目标物体检测与三维定位
  • 使用YOLOv11进行目标检测 (obj_detect.py)
  • 实现深度信息处理和目标追踪

系统工作流程#

  1. 启动仿真环境:

    a. 通过 simulation.launch.py 启动Gazebo仿真环境 b. 加载UR5e机械臂和夹爪的URDF模型 c. 启动MoveIt 2运动规划框架 d. 启动视觉处理:

  2. 启动深度相机数据处理模块 a. 使用YOLOv11进行目标检测和定位 b. 将检测结果发布到ROS 2话题 c. 启动抓取演示:

  3. 通过 start_grasp.launch.py 启动抓取演示 a. 读取目标物体的位姿信息 b. 规划机械臂运动路径 c. 控制夹爪执行抓取动作 d. 将物体移动到指定位置并释放

核心技术组件#

  1. MoveIt 2 - 用于运动规划和控制
  2. Gazebo - 用于物理仿真
  3. YOLOv11 - 用于目标检测
  4. OctoMap - 用于环境建图和避障
  5. TF2 - 用于坐标变换
ROS2_Moveit2_Ur5e_Grasp项目详解(一):项目文件介绍
http://www.soupcola.top/blog/ros2_blogs/ros2_blogs-1
Author Soup Cola
Published at 2026年2月3日