reBotArm B601 DM / ROS 2 工程文件架构逐文件注释本文档按“运行依赖 → ROS 2 包 → 硬件驱动 → 运动学/MoveIt → 示例 → 上位机”的顺序说明工程。实际 ROS 2 工程位于当前工作区中的reBotArmController_ROS2-main/子目录不要把上层工作区中的 Word、QA 和生成脚本当作机械臂运行时依赖。1. 运行时总链路CAN/串口/电机 ↓ reBotArm_control_py第三方硬件 SDK ↓ rebotarmcontroller/hardware_manager.py ↓ rebotarm_controller.py ├── /rebotarm/joint_states ├── /rebotarm/arm_status ├── ROS services ├── ROS actions └── low-level command topics ↓ MoveIt 2 / 视觉抓取 / 上位机最重要的原则hardware_manager.py是硬件安全边界ROS、MoveIt、视觉程序都不应该绕过它直接操作电机。2. 工作区根目录这些文件位于工程父目录主要是教程、方案、测试输出和文档生成工具不参与colcon build。文件/目录作用reBotArmController_ROS2-main/真正的 ROS 2 源码工作区。garbage_sorting_dashboard/垃圾分拣上位机源码独立于机械臂 ROS 2 包。build_*.py生成教程、方案或部署手册的 Python 脚本。create_rdkx5_ubuntu_guide.py生成 RDK X5 部署指南。qa/Word/HTML/PDF 渲染和视觉检查产物不参与机器人运行。docx_render/文档渲染产生的页面图片和 PDF。outputs/视觉分拣脚本、配置和方案图片等输出文件。tools/文档提取、转换、联系图生成等辅助工具。*.docx学习教程、故障手册、RDK 方案和部署手册。*.zip已打包的上位机源码不是 ROS 2 驱动依赖。3. ROS 2 工作区根文件目录reBotArmController_ROS2-main/文件注释.gitignoreGit 忽略规则通常忽略build/、install/、log/等编译产物。README.md英文项目说明、编译和启动入口。README_zh.md中文项目说明适合第一次部署。API_zh.mdROS 2 topic、service、action、消息类型和参数的接口文档。media/rebot_arm_b601.pngREADME 使用的机械臂图片不参与运行。src/ROS 2 源码包目录。4.rebotarm_msgs自定义ROS接口包目录src/rebotarm_msgs/这个包只定义通信接口不负责连接电机。修改.msg、.srv、.action后必须重新colcon build。包文件文件注释package.xml声明 ROS 2 构建和运行依赖。CMakeLists.txt使用rosidl_generate_interfaces生成 Python/C 接口代码。消息msg/文件注释ArmStatus.msg发布整机模式、使能状态、控制循环、状态机和错误码。JointMotorState.msg发布单个关节/夹爪的位置、速度、力矩和电机状态码。JointMitCmd.msg单关节或夹爪 MIT 控制命令位置、速度、Kp、Kd、力矩。JointPosVelCmd.msg单关节或夹爪位置-速度控制命令。服务srv/文件注释GripperCommand.srv开合夹爪并等待到位包含位置、超时和反馈。MoveToPoseIK.srv给定末端 Pose执行一次 IK并返回解。SetGripper.srv直接设置夹爪目标位置。SetZero.srv设置单个关节或整机零点必须谨慎使用。动作action/文件注释MoveToPose.action末端位姿轨迹动作支持反馈、取消和结果。5.rebotarmcontroller核心硬件控制包目录src/rebotarmcontroller/这是整个机械臂的核心包职责是加载硬件配置、创建第三方 SDK 对象、管理控制模式、发布反馈、提供 service/action并阻止互相冲突的命令。包装文件文件注释package.xml声明rclpy、消息包、控制消息、几何消息等依赖。setup.pyPython 包安装和 console script 入口。setup.cfgsetuptools 安装配置。resource/rebotarmcontrollerROS 2 Python 包索引资源文件。rebotarmcontroller/__init__.pyPython 包初始化。核心Python文件文件作用rebotarm_controller.pyROS 2 Node 总入口。创建HardwareManager、发布器、服务、动作和底层命令订阅器。hardware_manager.py硬件安全边界。封装RebotArm、arm/gripper group、连接、使能、失能、归位、轨迹、IK、MIT、PosVel、重力补偿和状态机。hardware_config.py找到第三方 SDK、加载 SDK YAML并把 ROS 选择的model/channel覆盖到最终硬件配置。conversions.pyROSPose与 XYZ/RPY、旋转矩阵、四元数之间的转换。ros_publishers.py定时发布/rebotarm/joint_states、每关节状态、夹爪状态和锁存的/rebotarm/arm_status。ros_services.py注册 enable、disable、safe_home、set_zero、IK、夹爪和重力补偿等 service。ros_actions.py注册 MoveToPose、FollowJointTrajectory、GripperCommand action并处理反馈、取消、超时。motor_passthrough.py订阅低层 MIT/PosVel topic把指定关节的低层命令转给硬件同时执行命令仲裁。rebotarmcontroller/examples/文件注释move_to.py关节空间目标示例输入六个关节角和持续时间。move_to_pose.py末端位姿目标示例调用 MoveToPose 服务或动作。gripper_control.py交互式打开、闭合和退出夹爪示例。gravity_compensation.py启动和停止重力补偿的示例。__init__.py示例脚本目录初始化。6.rebotarm_bringup启动、配置和模型资源包目录src/rebotarm_bringup/这个包负责把控制节点、机器人描述、RViz 和参数组合成可启动的系统。包文件文件注释package.xml声明启动文件、描述文件和运行时依赖。setup.py安装 Python launch 文件、配置、描述和 RViz 资源。setup.cfgsetuptools 配置。resource/rebotarm_bringupROS 2 包索引资源。配置config/文件注释rebotarm_hardware.yamlDM/RS 型号、通信通道、关节组、夹爪范围、控制模式、MIT 增益、重力补偿参数。driver_params.yamlROS 控制节点参数示例例如发布频率、命名空间、QoS相关设置。DM B601 的关键配置通常包括default_model:dmchannel:/dev/ttyACM0groups:arm:joints:[joint1,joint2,joint3,joint4,joint5,joint6]gripper:joints:[gripper]启动文件launch/文件注释driver.launch.py主要启动文件只启动机械臂控制器。真实硬件测试优先使用它。bringup.launch.py更完整的启动入口可同时启动机器人描述、状态发布器、控制器和可选 RViz。机器人描述description/urdf/文件注释reBot-DevArm_fixend.urdfDM 机械臂主体和末端固定结构的 URDF。reBot_B601_DM_with_gripper.urdfB601 DM 机械臂加夹爪的完整 URDF仿真和显示常用。00-arm-rs_asm-v3.urdfRS 版本机械臂的 URDF。DM模型网格description/meshes/文件注释base_link.STL底座外观/碰撞网格。link1.STLlink6.STL六个机械臂连杆的网格。end_link.STLDM 末端连接件网格。B601夹爪网格description/meshes_b601_gripper/文件注释base_link.STL夹爪安装底座。link1.STLlink6.STL夹爪内部联动结构网格。gripper_link.STL夹爪主体。gripper_left.STL左指。gripper_right.STL右指。RS模型网格description/meshes_rs/文件注释base_link.STLRS底座。link1.STLlink6.STLRS六个连杆。motor_2_3.STL、motor_4.STL、motor_5.STL、motor_6.STL、motor_7.STLRS各电机外观。cnc2.STL、cnc3.STL、cnc4.STL、cnc5.STL、cnc7.STLRS加工件。gripper_end.STLRS末端连接件。gripper_left.STL、gripper_right.STLRS夹爪指。pla2_black.STL、pla2_green.STL、pla3_black.STL、pla3_green.STL、pla5_green.STL、pla7_green.STLRS塑料外壳。pla_left.STL、pla_right.STLRS夹爪塑料件。RViz文件注释rviz/rebotarm.rviz机器人状态和TF可视化配置。7.rebotarm_moveit_configMoveIt 2配置包目录src/rebotarm_moveit_config/这个包负责运动规划、IK、碰撞检测、规划组和轨迹控制器配置。它不直接实现电机通信。包和元文件文件注释package.xmlMoveIt、ros2_control、TF、Xacro等依赖。CMakeLists.txt安装配置、URDF/Xacro和MoveIt资源。.setup_assistantMoveIt Setup Assistant 生成的配置记录。config/文件注释rebotarm.urdf.xacroDM版本机器人模型入口通常引用bringup中的URDF/网格。rebotarm_rs.urdf.xacroRS版本模型入口。rebotarm.srdfDM的MoveIt planning group、末端执行器和默认状态。rebotarm_rs.srdfRS的SRDF配置。rebotarm.ros2_control.xacroDM的ros2_control虚拟/硬件控制接口。rebotarm_rs.ros2_control.xacroRS的ros2_control接口。kinematics.yamlMoveIt IK求解器配置。joint_limits.yamlMoveIt使用的关节速度、加速度和角度限制。initial_positions.yaml仿真控制器初始关节位置。ros2_controllers.yaml仿真或控制器管理器中的joint/gripper controller。moveit_controllers.yamlMoveIt轨迹执行器与ROS控制器的映射。moveit_hardware_controllers.yaml连接真实控制节点时使用的MoveIt控制器映射。ompl_planning.yamlOMPL规划器、采样和规划时间参数。launch/文件注释demo.launch.py启动MoveIt仿真环境、move_group、RViz和虚拟控制器。hardware.launch.py在真实机械臂控制器已经启动后连接MoveIt。moveit_launch_common.py两个launch文件共用的参数、robot description和MoveIt构造逻辑。demo_view.rvizMoveIt仿真界面配置。moveit.rvizMoveIt规划界面配置。8.rebotarm_moveit_demosMoveIt示例包目录src/rebotarm_moveit_demos/包文件文件注释package.xmlMoveIt demo依赖。setup.py注册draw_square和pick_place等Python入口。setup.cfgsetuptools配置。resource/rebotarm_moveit_demosROS 2包索引资源。rebotarm_moveit_demos/__init__.pyPython包初始化。参数config/文件注释draw_square.yamlDM画矩形轨迹的起始点、矩形尺寸、TCP姿态和速度参数。draw_square_rs.yamlRS画矩形轨迹参数。pick_place.yamlDM固定物体抓取放置参数。pick_place_rs.yamlRS抓取放置参数。启动和程序文件注释launch/draw_square.launch.py启动画矩形demo。launch/pick_place.launch.py启动固定物体pick-place demo。rebotarm_moveit_demos/demo_common.py两个demo共用的MoveIt连接、规划和执行辅助函数。rebotarm_moveit_demos/draw_square.py生成矩形四个角点并请求轨迹。rebotarm_moveit_demos/pick_place.py依次执行预抓取、抓取、抬升、放置和释放。9. 垃圾分拣上位机目录garbage_sorting_dashboard/它是独立的Python标准库服务不是ROS 2控制器。默认提供HTTP、SSE、SQLite、CSV导出和可选ROS 2状态桥接。文件注释README.md上位机启动、配置、API和RDK部署说明。requirements.txt可选依赖说明基础HTTP/SQLite功能主要使用Python标准库。config/dashboard.env.exampleRDK上的环境变量模板。dashboard/config.py环境变量和服务配置加载。dashboard/database.pySQLite建表、事件去重、统计、CSV导出和会话管理。dashboard/broker.pySSE客户端订阅和事件广播。dashboard/app.pyHTTP API路由、事件写入、控制命令和静态文件响应。dashboard/server.pyThreadingHTTPServer启动入口。dashboard/client.py上位机客户端事件上报封装。dashboard/ros_bridge.py可选ROS 2桥接读取机械臂健康状态和发布分拣控制命令。dashboard/__init__.pyPython包初始化。static/index.html上位机页面结构。static/styles.css深色工业风页面样式和响应式布局。static/app.jsSSE实时刷新、统计卡片、事件列表、控制按钮和CSV导出。examples/sort_waste_integration.py将视觉分拣脚本接入事件上报器的示例。examples/publish_demo_events.py不接真机时发布演示事件的脚本。scripts/run_dashboard.sh手动启动上位机服务。scripts/install_rdk.sh将服务安装到RDK X5的/opt、/var/lib、/etc和systemd。systemd/garbage-dashboard.service上位机开机自启动服务单元。tests/test_database.py数据库去重、会话、统计和重试逻辑测试。tests/test_http.pyAPI、静态页面、SSE、健康状态和控制接口测试。10. 启动时各文件如何协作真实硬件driver.launch.py ↓ reBotArmController ↓ HardwareManager.__init__() ↓ hardware_config.py 找到 SDK 和 YAML ↓ RebotArm.connect() ↓ JointStatePublisher 定时发布反馈 ArmServices 提供 service ArmActions 提供 action MotorPassthrough 接收低层命令典型命令source/opt/ros/humble/setup.bashsource~/rebotarm_ros2/install/setup.bash ros2 launch rebotarm_bringup driver.launch.py model:dm channel:slcan0MoveIt仿真demo.launch.py ↓ Xacro URDF SRDF ↓ robot_state_publisher ↓ move_group OMPL RViz ↓ 虚拟 ros2_control controller视觉抓取相机帧 → YOLO/颜色检测 → 深度反投影 → 相机坐标 → 手眼变换 → base_link目标位姿 → IK/轨迹 → HardwareManager11. 建议学习顺序先读rebotarm_msgs理解所有ROS接口。再读hardware_config.py理解配置如何选择 DM/RS。重点读hardware_manager.py理解连接、状态机、模式切换和安全归位。读ros_publishers.py确认/joint_states和/arm_status的来源。读ros_services.py与ros_actions.py理解上层如何下发命令。用rebotarm_bringup先运行RViz/MoveIt仿真。再做真实硬件只读反馈。最后才测试低速运动、夹爪、视觉和分拣。12. 不应直接修改的文件以下文件修改前应先备份hardware_manager.pyrebotarm_hardware.yamlrebotarm.urdf.xacrojoint_limits.yamlkinematics.yamlros2_controllers.yaml尤其不要为了“让IK成功”随意增大关节限制也不要为了“让夹爪归位”直接修改零点。应先确认机械零点、坐标系、URDF轴方向和真实硬件反馈。13. 编译和验证入口cd~/rebotarm_ros2source/opt/ros/humble/setup.bash colcon build --symlink-installsourceinstall/setup.bash ros2 pkg executables rebotarmcontroller ros2 topic list|greprebotarm ros2servicelist|greprebotarm真实硬件与仿真必须分开验证。任何真实运动测试前都应先完成RViz模型、关节限制、TCP坐标和急停检查。
reBotArm B601 DM / ROS 2 工程文件架构
reBotArm B601 DM / ROS 2 工程文件架构逐文件注释本文档按“运行依赖 → ROS 2 包 → 硬件驱动 → 运动学/MoveIt → 示例 → 上位机”的顺序说明工程。实际 ROS 2 工程位于当前工作区中的reBotArmController_ROS2-main/子目录不要把上层工作区中的 Word、QA 和生成脚本当作机械臂运行时依赖。1. 运行时总链路CAN/串口/电机 ↓ reBotArm_control_py第三方硬件 SDK ↓ rebotarmcontroller/hardware_manager.py ↓ rebotarm_controller.py ├── /rebotarm/joint_states ├── /rebotarm/arm_status ├── ROS services ├── ROS actions └── low-level command topics ↓ MoveIt 2 / 视觉抓取 / 上位机最重要的原则hardware_manager.py是硬件安全边界ROS、MoveIt、视觉程序都不应该绕过它直接操作电机。2. 工作区根目录这些文件位于工程父目录主要是教程、方案、测试输出和文档生成工具不参与colcon build。文件/目录作用reBotArmController_ROS2-main/真正的 ROS 2 源码工作区。garbage_sorting_dashboard/垃圾分拣上位机源码独立于机械臂 ROS 2 包。build_*.py生成教程、方案或部署手册的 Python 脚本。create_rdkx5_ubuntu_guide.py生成 RDK X5 部署指南。qa/Word/HTML/PDF 渲染和视觉检查产物不参与机器人运行。docx_render/文档渲染产生的页面图片和 PDF。outputs/视觉分拣脚本、配置和方案图片等输出文件。tools/文档提取、转换、联系图生成等辅助工具。*.docx学习教程、故障手册、RDK 方案和部署手册。*.zip已打包的上位机源码不是 ROS 2 驱动依赖。3. ROS 2 工作区根文件目录reBotArmController_ROS2-main/文件注释.gitignoreGit 忽略规则通常忽略build/、install/、log/等编译产物。README.md英文项目说明、编译和启动入口。README_zh.md中文项目说明适合第一次部署。API_zh.mdROS 2 topic、service、action、消息类型和参数的接口文档。media/rebot_arm_b601.pngREADME 使用的机械臂图片不参与运行。src/ROS 2 源码包目录。4.rebotarm_msgs自定义ROS接口包目录src/rebotarm_msgs/这个包只定义通信接口不负责连接电机。修改.msg、.srv、.action后必须重新colcon build。包文件文件注释package.xml声明 ROS 2 构建和运行依赖。CMakeLists.txt使用rosidl_generate_interfaces生成 Python/C 接口代码。消息msg/文件注释ArmStatus.msg发布整机模式、使能状态、控制循环、状态机和错误码。JointMotorState.msg发布单个关节/夹爪的位置、速度、力矩和电机状态码。JointMitCmd.msg单关节或夹爪 MIT 控制命令位置、速度、Kp、Kd、力矩。JointPosVelCmd.msg单关节或夹爪位置-速度控制命令。服务srv/文件注释GripperCommand.srv开合夹爪并等待到位包含位置、超时和反馈。MoveToPoseIK.srv给定末端 Pose执行一次 IK并返回解。SetGripper.srv直接设置夹爪目标位置。SetZero.srv设置单个关节或整机零点必须谨慎使用。动作action/文件注释MoveToPose.action末端位姿轨迹动作支持反馈、取消和结果。5.rebotarmcontroller核心硬件控制包目录src/rebotarmcontroller/这是整个机械臂的核心包职责是加载硬件配置、创建第三方 SDK 对象、管理控制模式、发布反馈、提供 service/action并阻止互相冲突的命令。包装文件文件注释package.xml声明rclpy、消息包、控制消息、几何消息等依赖。setup.pyPython 包安装和 console script 入口。setup.cfgsetuptools 安装配置。resource/rebotarmcontrollerROS 2 Python 包索引资源文件。rebotarmcontroller/__init__.pyPython 包初始化。核心Python文件文件作用rebotarm_controller.pyROS 2 Node 总入口。创建HardwareManager、发布器、服务、动作和底层命令订阅器。hardware_manager.py硬件安全边界。封装RebotArm、arm/gripper group、连接、使能、失能、归位、轨迹、IK、MIT、PosVel、重力补偿和状态机。hardware_config.py找到第三方 SDK、加载 SDK YAML并把 ROS 选择的model/channel覆盖到最终硬件配置。conversions.pyROSPose与 XYZ/RPY、旋转矩阵、四元数之间的转换。ros_publishers.py定时发布/rebotarm/joint_states、每关节状态、夹爪状态和锁存的/rebotarm/arm_status。ros_services.py注册 enable、disable、safe_home、set_zero、IK、夹爪和重力补偿等 service。ros_actions.py注册 MoveToPose、FollowJointTrajectory、GripperCommand action并处理反馈、取消、超时。motor_passthrough.py订阅低层 MIT/PosVel topic把指定关节的低层命令转给硬件同时执行命令仲裁。rebotarmcontroller/examples/文件注释move_to.py关节空间目标示例输入六个关节角和持续时间。move_to_pose.py末端位姿目标示例调用 MoveToPose 服务或动作。gripper_control.py交互式打开、闭合和退出夹爪示例。gravity_compensation.py启动和停止重力补偿的示例。__init__.py示例脚本目录初始化。6.rebotarm_bringup启动、配置和模型资源包目录src/rebotarm_bringup/这个包负责把控制节点、机器人描述、RViz 和参数组合成可启动的系统。包文件文件注释package.xml声明启动文件、描述文件和运行时依赖。setup.py安装 Python launch 文件、配置、描述和 RViz 资源。setup.cfgsetuptools 配置。resource/rebotarm_bringupROS 2 包索引资源。配置config/文件注释rebotarm_hardware.yamlDM/RS 型号、通信通道、关节组、夹爪范围、控制模式、MIT 增益、重力补偿参数。driver_params.yamlROS 控制节点参数示例例如发布频率、命名空间、QoS相关设置。DM B601 的关键配置通常包括default_model:dmchannel:/dev/ttyACM0groups:arm:joints:[joint1,joint2,joint3,joint4,joint5,joint6]gripper:joints:[gripper]启动文件launch/文件注释driver.launch.py主要启动文件只启动机械臂控制器。真实硬件测试优先使用它。bringup.launch.py更完整的启动入口可同时启动机器人描述、状态发布器、控制器和可选 RViz。机器人描述description/urdf/文件注释reBot-DevArm_fixend.urdfDM 机械臂主体和末端固定结构的 URDF。reBot_B601_DM_with_gripper.urdfB601 DM 机械臂加夹爪的完整 URDF仿真和显示常用。00-arm-rs_asm-v3.urdfRS 版本机械臂的 URDF。DM模型网格description/meshes/文件注释base_link.STL底座外观/碰撞网格。link1.STLlink6.STL六个机械臂连杆的网格。end_link.STLDM 末端连接件网格。B601夹爪网格description/meshes_b601_gripper/文件注释base_link.STL夹爪安装底座。link1.STLlink6.STL夹爪内部联动结构网格。gripper_link.STL夹爪主体。gripper_left.STL左指。gripper_right.STL右指。RS模型网格description/meshes_rs/文件注释base_link.STLRS底座。link1.STLlink6.STLRS六个连杆。motor_2_3.STL、motor_4.STL、motor_5.STL、motor_6.STL、motor_7.STLRS各电机外观。cnc2.STL、cnc3.STL、cnc4.STL、cnc5.STL、cnc7.STLRS加工件。gripper_end.STLRS末端连接件。gripper_left.STL、gripper_right.STLRS夹爪指。pla2_black.STL、pla2_green.STL、pla3_black.STL、pla3_green.STL、pla5_green.STL、pla7_green.STLRS塑料外壳。pla_left.STL、pla_right.STLRS夹爪塑料件。RViz文件注释rviz/rebotarm.rviz机器人状态和TF可视化配置。7.rebotarm_moveit_configMoveIt 2配置包目录src/rebotarm_moveit_config/这个包负责运动规划、IK、碰撞检测、规划组和轨迹控制器配置。它不直接实现电机通信。包和元文件文件注释package.xmlMoveIt、ros2_control、TF、Xacro等依赖。CMakeLists.txt安装配置、URDF/Xacro和MoveIt资源。.setup_assistantMoveIt Setup Assistant 生成的配置记录。config/文件注释rebotarm.urdf.xacroDM版本机器人模型入口通常引用bringup中的URDF/网格。rebotarm_rs.urdf.xacroRS版本模型入口。rebotarm.srdfDM的MoveIt planning group、末端执行器和默认状态。rebotarm_rs.srdfRS的SRDF配置。rebotarm.ros2_control.xacroDM的ros2_control虚拟/硬件控制接口。rebotarm_rs.ros2_control.xacroRS的ros2_control接口。kinematics.yamlMoveIt IK求解器配置。joint_limits.yamlMoveIt使用的关节速度、加速度和角度限制。initial_positions.yaml仿真控制器初始关节位置。ros2_controllers.yaml仿真或控制器管理器中的joint/gripper controller。moveit_controllers.yamlMoveIt轨迹执行器与ROS控制器的映射。moveit_hardware_controllers.yaml连接真实控制节点时使用的MoveIt控制器映射。ompl_planning.yamlOMPL规划器、采样和规划时间参数。launch/文件注释demo.launch.py启动MoveIt仿真环境、move_group、RViz和虚拟控制器。hardware.launch.py在真实机械臂控制器已经启动后连接MoveIt。moveit_launch_common.py两个launch文件共用的参数、robot description和MoveIt构造逻辑。demo_view.rvizMoveIt仿真界面配置。moveit.rvizMoveIt规划界面配置。8.rebotarm_moveit_demosMoveIt示例包目录src/rebotarm_moveit_demos/包文件文件注释package.xmlMoveIt demo依赖。setup.py注册draw_square和pick_place等Python入口。setup.cfgsetuptools配置。resource/rebotarm_moveit_demosROS 2包索引资源。rebotarm_moveit_demos/__init__.pyPython包初始化。参数config/文件注释draw_square.yamlDM画矩形轨迹的起始点、矩形尺寸、TCP姿态和速度参数。draw_square_rs.yamlRS画矩形轨迹参数。pick_place.yamlDM固定物体抓取放置参数。pick_place_rs.yamlRS抓取放置参数。启动和程序文件注释launch/draw_square.launch.py启动画矩形demo。launch/pick_place.launch.py启动固定物体pick-place demo。rebotarm_moveit_demos/demo_common.py两个demo共用的MoveIt连接、规划和执行辅助函数。rebotarm_moveit_demos/draw_square.py生成矩形四个角点并请求轨迹。rebotarm_moveit_demos/pick_place.py依次执行预抓取、抓取、抬升、放置和释放。9. 垃圾分拣上位机目录garbage_sorting_dashboard/它是独立的Python标准库服务不是ROS 2控制器。默认提供HTTP、SSE、SQLite、CSV导出和可选ROS 2状态桥接。文件注释README.md上位机启动、配置、API和RDK部署说明。requirements.txt可选依赖说明基础HTTP/SQLite功能主要使用Python标准库。config/dashboard.env.exampleRDK上的环境变量模板。dashboard/config.py环境变量和服务配置加载。dashboard/database.pySQLite建表、事件去重、统计、CSV导出和会话管理。dashboard/broker.pySSE客户端订阅和事件广播。dashboard/app.pyHTTP API路由、事件写入、控制命令和静态文件响应。dashboard/server.pyThreadingHTTPServer启动入口。dashboard/client.py上位机客户端事件上报封装。dashboard/ros_bridge.py可选ROS 2桥接读取机械臂健康状态和发布分拣控制命令。dashboard/__init__.pyPython包初始化。static/index.html上位机页面结构。static/styles.css深色工业风页面样式和响应式布局。static/app.jsSSE实时刷新、统计卡片、事件列表、控制按钮和CSV导出。examples/sort_waste_integration.py将视觉分拣脚本接入事件上报器的示例。examples/publish_demo_events.py不接真机时发布演示事件的脚本。scripts/run_dashboard.sh手动启动上位机服务。scripts/install_rdk.sh将服务安装到RDK X5的/opt、/var/lib、/etc和systemd。systemd/garbage-dashboard.service上位机开机自启动服务单元。tests/test_database.py数据库去重、会话、统计和重试逻辑测试。tests/test_http.pyAPI、静态页面、SSE、健康状态和控制接口测试。10. 启动时各文件如何协作真实硬件driver.launch.py ↓ reBotArmController ↓ HardwareManager.__init__() ↓ hardware_config.py 找到 SDK 和 YAML ↓ RebotArm.connect() ↓ JointStatePublisher 定时发布反馈 ArmServices 提供 service ArmActions 提供 action MotorPassthrough 接收低层命令典型命令source/opt/ros/humble/setup.bashsource~/rebotarm_ros2/install/setup.bash ros2 launch rebotarm_bringup driver.launch.py model:dm channel:slcan0MoveIt仿真demo.launch.py ↓ Xacro URDF SRDF ↓ robot_state_publisher ↓ move_group OMPL RViz ↓ 虚拟 ros2_control controller视觉抓取相机帧 → YOLO/颜色检测 → 深度反投影 → 相机坐标 → 手眼变换 → base_link目标位姿 → IK/轨迹 → HardwareManager11. 建议学习顺序先读rebotarm_msgs理解所有ROS接口。再读hardware_config.py理解配置如何选择 DM/RS。重点读hardware_manager.py理解连接、状态机、模式切换和安全归位。读ros_publishers.py确认/joint_states和/arm_status的来源。读ros_services.py与ros_actions.py理解上层如何下发命令。用rebotarm_bringup先运行RViz/MoveIt仿真。再做真实硬件只读反馈。最后才测试低速运动、夹爪、视觉和分拣。12. 不应直接修改的文件以下文件修改前应先备份hardware_manager.pyrebotarm_hardware.yamlrebotarm.urdf.xacrojoint_limits.yamlkinematics.yamlros2_controllers.yaml尤其不要为了“让IK成功”随意增大关节限制也不要为了“让夹爪归位”直接修改零点。应先确认机械零点、坐标系、URDF轴方向和真实硬件反馈。13. 编译和验证入口cd~/rebotarm_ros2source/opt/ros/humble/setup.bash colcon build --symlink-installsourceinstall/setup.bash ros2 pkg executables rebotarmcontroller ros2 topic list|greprebotarm ros2servicelist|greprebotarm真实硬件与仿真必须分开验证。任何真实运动测试前都应先完成RViz模型、关节限制、TCP坐标和急停检查。