rosbag-checker 4.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. rosbag_checker-4.3.0/.gitignore +65 -0
  2. rosbag_checker-4.3.0/PKG-INFO +385 -0
  3. rosbag_checker-4.3.0/README.md +355 -0
  4. rosbag_checker-4.3.0/bin/__init__.py +1 -0
  5. rosbag_checker-4.3.0/bin/run_complete_tests.py +316 -0
  6. rosbag_checker-4.3.0/bin/upload.py +187 -0
  7. rosbag_checker-4.3.0/config/tests_config.yaml +718 -0
  8. rosbag_checker-4.3.0/msg/ActivateNotification.msg +2 -0
  9. rosbag_checker-4.3.0/msg/AdjustStatus.msg +9 -0
  10. rosbag_checker-4.3.0/msg/AdjustType.msg +10 -0
  11. rosbag_checker-4.3.0/msg/AdmittanceCmd.msg +10 -0
  12. rosbag_checker-4.3.0/msg/AlgoTaskStatus.msg +2 -0
  13. rosbag_checker-4.3.0/msg/AudioPlay.msg +112 -0
  14. rosbag_checker-4.3.0/msg/AudioPlayExtend.msg +4 -0
  15. rosbag_checker-4.3.0/msg/AudioStatus.msg +5 -0
  16. rosbag_checker-4.3.0/msg/AudioVoiceprintResult.msg +2 -0
  17. rosbag_checker-4.3.0/msg/AuthToken.msg +4 -0
  18. rosbag_checker-4.3.0/msg/BLEInfo.msg +6 -0
  19. rosbag_checker-4.3.0/msg/BagSlice.msg +4 -0
  20. rosbag_checker-4.3.0/msg/Base.msg +2 -0
  21. rosbag_checker-4.3.0/msg/BasePose.msg +2 -0
  22. rosbag_checker-4.3.0/msg/BmsStatus.msg +22 -0
  23. rosbag_checker-4.3.0/msg/BondStatus.msg +2 -0
  24. rosbag_checker-4.3.0/msg/Check.msg +2 -0
  25. rosbag_checker-4.3.0/msg/CloudState.msg +7 -0
  26. rosbag_checker-4.3.0/msg/Connect.msg +2 -0
  27. rosbag_checker-4.3.0/msg/CurrentState.msg +3 -0
  28. rosbag_checker-4.3.0/msg/Data.msg +2 -0
  29. rosbag_checker-4.3.0/msg/DeviceInfo.msg +2 -0
  30. rosbag_checker-4.3.0/msg/DexterousHandMotor.msg +2 -0
  31. rosbag_checker-4.3.0/msg/E2ENavActStatus.msg +7 -0
  32. rosbag_checker-4.3.0/msg/E2ENavViNTStatus.msg +10 -0
  33. rosbag_checker-4.3.0/msg/EndToEndModel.msg +39 -0
  34. rosbag_checker-4.3.0/msg/ExceptionStateFeedback.msg +11 -0
  35. rosbag_checker-4.3.0/msg/FeishuNotify.msg +15 -0
  36. rosbag_checker-4.3.0/msg/ForceInfo.msg +3 -0
  37. rosbag_checker-4.3.0/msg/FsmSignal.msg +41 -0
  38. rosbag_checker-4.3.0/msg/FsmState.msg +40 -0
  39. rosbag_checker-4.3.0/msg/GraspPostureCmd.msg +3 -0
  40. rosbag_checker-4.3.0/msg/GraspTarget.msg +7 -0
  41. rosbag_checker-4.3.0/msg/HandInfo.msg +5 -0
  42. rosbag_checker-4.3.0/msg/HandMode.msg +5 -0
  43. rosbag_checker-4.3.0/msg/HazardStatus.msg +11 -0
  44. rosbag_checker-4.3.0/msg/HazardStatusStamped.msg +2 -0
  45. rosbag_checker-4.3.0/msg/Heartbeats.msg +4 -0
  46. rosbag_checker-4.3.0/msg/ImportantSubState.msg +11 -0
  47. rosbag_checker-4.3.0/msg/Imu.msg +11 -0
  48. rosbag_checker-4.3.0/msg/Joint.msg +3 -0
  49. rosbag_checker-4.3.0/msg/Label.msg +9 -0
  50. rosbag_checker-4.3.0/msg/LocationInfo.msg +5 -0
  51. rosbag_checker-4.3.0/msg/LocoCmd.msg +7 -0
  52. rosbag_checker-4.3.0/msg/ManiCmd.msg +8 -0
  53. rosbag_checker-4.3.0/msg/ManiPose.msg +11 -0
  54. rosbag_checker-4.3.0/msg/ManipulationStatus.msg +4 -0
  55. rosbag_checker-4.3.0/msg/MapLabel.msg +9 -0
  56. rosbag_checker-4.3.0/msg/MapLabelId.msg +2 -0
  57. rosbag_checker-4.3.0/msg/MapMetaData.msg +5 -0
  58. rosbag_checker-4.3.0/msg/MarkerPose.msg +3 -0
  59. rosbag_checker-4.3.0/msg/MobileBaseServoCmd.msg +12 -0
  60. rosbag_checker-4.3.0/msg/MotionBlock.msg +15 -0
  61. rosbag_checker-4.3.0/msg/MotionHeartBeat.msg +2 -0
  62. rosbag_checker-4.3.0/msg/MotionID.msg +0 -0
  63. rosbag_checker-4.3.0/msg/MotionServoCmd.msg +10 -0
  64. rosbag_checker-4.3.0/msg/MotionServoResponse.msg +1 -0
  65. rosbag_checker-4.3.0/msg/MotionStatus.msg +2 -0
  66. rosbag_checker-4.3.0/msg/MotorStatus.msg +2 -0
  67. rosbag_checker-4.3.0/msg/NavStatus.msg +8 -0
  68. rosbag_checker-4.3.0/msg/NavType.msg +6 -0
  69. rosbag_checker-4.3.0/msg/NodeStatu.msg +2 -0
  70. rosbag_checker-4.3.0/msg/ObjectInfoCarLogoBase.msg +8 -0
  71. rosbag_checker-4.3.0/msg/ObjectInfoHand.msg +5 -0
  72. rosbag_checker-4.3.0/msg/ObjectInfoPose.msg +11 -0
  73. rosbag_checker-4.3.0/msg/ObjectInfoPoseSingleCam.msg +3 -0
  74. rosbag_checker-4.3.0/msg/ObjectInfoSeg.msg +5 -0
  75. rosbag_checker-4.3.0/msg/ObjectInfoSegAddRaw.msg +7 -0
  76. rosbag_checker-4.3.0/msg/ObjectInfoSegArray.msg +3 -0
  77. rosbag_checker-4.3.0/msg/ObjectInfoState.msg +8 -0
  78. rosbag_checker-4.3.0/msg/ObjectInfoStateArray.msg +5 -0
  79. rosbag_checker-4.3.0/msg/ObjectState.msg +46 -0
  80. rosbag_checker-4.3.0/msg/ObstacleObjectCmd.msg +8 -0
  81. rosbag_checker-4.3.0/msg/OccupancyGrid.msg +4 -0
  82. rosbag_checker-4.3.0/msg/OdometerStatus.msg +4 -0
  83. rosbag_checker-4.3.0/msg/Odometry.msg +3 -0
  84. rosbag_checker-4.3.0/msg/PNCPhase.msg +3 -0
  85. rosbag_checker-4.3.0/msg/Parameter.msg +5 -0
  86. rosbag_checker-4.3.0/msg/ParameterList.msg +4 -0
  87. rosbag_checker-4.3.0/msg/PerformanceMonitorDataMos.msg +1 -0
  88. rosbag_checker-4.3.0/msg/PerformanceMonitorDataPos.msg +1 -0
  89. rosbag_checker-4.3.0/msg/PerformanceMonitorDataSos.msg +1 -0
  90. rosbag_checker-4.3.0/msg/PlacePostureCmd.msg +4 -0
  91. rosbag_checker-4.3.0/msg/Point2d.msg +2 -0
  92. rosbag_checker-4.3.0/msg/Pose.msg +7 -0
  93. rosbag_checker-4.3.0/msg/PoseEuler.msg +6 -0
  94. rosbag_checker-4.3.0/msg/PowerBoardInfo.msg +17 -0
  95. rosbag_checker-4.3.0/msg/PowerBoardInfoU.msg +33 -0
  96. rosbag_checker-4.3.0/msg/PowerCurrentInfo.msg +4 -0
  97. rosbag_checker-4.3.0/msg/PowerManagerNotification.msg +5 -0
  98. rosbag_checker-4.3.0/msg/PowerSensorCurrTemInfo.msg +4 -0
  99. rosbag_checker-4.3.0/msg/PowerSensorCurrentInfo.msg +4 -0
  100. rosbag_checker-4.3.0/msg/QuadrupleImage.msg +1 -0
  101. rosbag_checker-4.3.0/msg/ReadCharacteristic.msg +1 -0
  102. rosbag_checker-4.3.0/msg/RemoteControl.msg +8 -0
  103. rosbag_checker-4.3.0/msg/RobotControlCmd.msg +5 -0
  104. rosbag_checker-4.3.0/msg/RobotControlResponse.msg +8 -0
  105. rosbag_checker-4.3.0/msg/RobotControlState.msg +60 -0
  106. rosbag_checker-4.3.0/msg/RobotState.msg +12 -0
  107. rosbag_checker-4.3.0/msg/RobotTransition.msg +16 -0
  108. rosbag_checker-4.3.0/msg/SceneId.msg +13 -0
  109. rosbag_checker-4.3.0/msg/ScenesObject.msg +22 -0
  110. rosbag_checker-4.3.0/msg/SegInfo.msg +8 -0
  111. rosbag_checker-4.3.0/msg/SegInfoArray.msg +2 -0
  112. rosbag_checker-4.3.0/msg/SegmentPlaneCmd.msg +4 -0
  113. rosbag_checker-4.3.0/msg/SignedDistanceFieldCmd.msg +4 -0
  114. rosbag_checker-4.3.0/msg/SimpleMotionCmd.msg +3 -0
  115. rosbag_checker-4.3.0/msg/SimpleSensorFeedback.msg +22 -0
  116. rosbag_checker-4.3.0/msg/State.msg +122 -0
  117. rosbag_checker-4.3.0/msg/Status.msg +15 -0
  118. rosbag_checker-4.3.0/msg/StatusList.msg +2 -0
  119. rosbag_checker-4.3.0/msg/SubState.msg +9 -0
  120. rosbag_checker-4.3.0/msg/TactileSensor.msg +2 -0
  121. rosbag_checker-4.3.0/msg/TargetPostureCmd.msg +4 -0
  122. rosbag_checker-4.3.0/msg/TaskControlResponse.msg +4 -0
  123. rosbag_checker-4.3.0/msg/TaskOperate.msg +142 -0
  124. rosbag_checker-4.3.0/msg/TaskRequest.msg +5 -0
  125. rosbag_checker-4.3.0/msg/TaskResponse.msg +4 -0
  126. rosbag_checker-4.3.0/msg/TaskRunningState.msg +40 -0
  127. rosbag_checker-4.3.0/msg/TaskState.msg +58 -0
  128. rosbag_checker-4.3.0/msg/TaskStateTuple.msg +13 -0
  129. rosbag_checker-4.3.0/msg/TeleoperationCommand.msg +39 -0
  130. rosbag_checker-4.3.0/msg/TrainPlan.msg +3 -0
  131. rosbag_checker-4.3.0/msg/TransitionEvent.msg +2 -0
  132. rosbag_checker-4.3.0/msg/TwistUserDefined.msg +6 -0
  133. rosbag_checker-4.3.0/msg/UserInformation.msg +4 -0
  134. rosbag_checker-4.3.0/msg/VisualProgrammingOperate.msg +80 -0
  135. rosbag_checker-4.3.0/msg/VisualizationData.msg +11 -0
  136. rosbag_checker-4.3.0/msg/VoicePrint.msg +2 -0
  137. rosbag_checker-4.3.0/msg/VoicePrints.msg +1 -0
  138. rosbag_checker-4.3.0/msg/WalkStatus.msg +13 -0
  139. rosbag_checker-4.3.0/msg/WifiConnect.msg +3 -0
  140. rosbag_checker-4.3.0/msg/WifiStatus.msg +4 -0
  141. rosbag_checker-4.3.0/msg/WriteCharacteristic.msg +3 -0
  142. rosbag_checker-4.3.0/msg/XsensData.msg +64 -0
  143. rosbag_checker-4.3.0/pyproject.toml +87 -0
  144. rosbag_checker-4.3.0/requirements.txt +7 -0
  145. rosbag_checker-4.3.0/test_framework/__init__.py +1 -0
  146. rosbag_checker-4.3.0/test_framework/protocol_loader.py +84 -0
  147. rosbag_checker-4.3.0/test_framework/protocol_tests.py +721 -0
  148. rosbag_checker-4.3.0/test_framework/runner.py +114 -0
  149. rosbag_checker-4.3.0/test_framework/specialized_tests.py +3002 -0
  150. rosbag_checker-4.3.0/test_framework/test_case.py +203 -0
  151. rosbag_checker-4.3.0/test_framework/test_registry.py +103 -0
  152. rosbag_checker-4.3.0/utils/__init__.py +1 -0
  153. rosbag_checker-4.3.0/utils/bag_reader.py +177 -0
  154. rosbag_checker-4.3.0/utils/checker_adapter.py +204 -0
  155. rosbag_checker-4.3.0/utils/colored_reporter.py +400 -0
  156. rosbag_checker-4.3.0/utils/config_loader.py +327 -0
  157. rosbag_checker-4.3.0/utils/html_reporter.py +755 -0
  158. rosbag_checker-4.3.0/utils/message_utils.py +114 -0
  159. rosbag_checker-4.3.0/utils/paths.py +40 -0
  160. rosbag_checker-4.3.0/utils/performance.py +55 -0
  161. rosbag_checker-4.3.0/utils/protocol_message_register.py +154 -0
  162. rosbag_checker-4.3.0/utils/report_generator.py +150 -0
  163. rosbag_checker-4.3.0/utils/stats_analyzer.py +339 -0
  164. rosbag_checker-4.3.0/utils/xsens_message_register.py +45 -0
  165. rosbag_checker-4.3.0/validators/__init__.py +1 -0
  166. rosbag_checker-4.3.0/validators/advanced_stats_checker.py +316 -0
  167. rosbag_checker-4.3.0/validators/base.py +212 -0
  168. rosbag_checker-4.3.0/validators/camera_info_checker.py +313 -0
  169. rosbag_checker-4.3.0/validators/diagnostics_checker.py +140 -0
  170. rosbag_checker-4.3.0/validators/field_checker.py +289 -0
  171. rosbag_checker-4.3.0/validators/imu_checker.py +162 -0
  172. rosbag_checker-4.3.0/validators/joint_states_checker.py +289 -0
  173. rosbag_checker-4.3.0/validators/mobile_base_servo_cmd_checker.py +309 -0
  174. rosbag_checker-4.3.0/validators/robot_control_state_checker.py +384 -0
  175. rosbag_checker-4.3.0/validators/tf_checker.py +499 -0
  176. rosbag_checker-4.3.0/validators/timestamp_checker.py +96 -0
  177. rosbag_checker-4.3.0/validators/topic_checker.py +159 -0
  178. rosbag_checker-4.3.0/validators/videoclip_checker.py +273 -0
  179. rosbag_checker-4.3.0/validators/xsens_checker.py +124 -0
@@ -0,0 +1,65 @@
1
+ # Ignore rosbag data files
2
+ rosbag/
3
+ *.mcap
4
+ *.db3
5
+ rosbag2_*/
6
+
7
+ # Python
8
+ __pycache__/
9
+ *.py[cod]
10
+ *$py.class
11
+ *.so
12
+ .Python
13
+ *.egg-info/
14
+ dist/
15
+ build/
16
+
17
+ # UV/Virtual Environment
18
+ .venv/
19
+ uv.lock
20
+
21
+ # IDE
22
+ .vscode/
23
+ .idea/
24
+ *.swp
25
+ *.swo
26
+
27
+ # Reports
28
+ report_*.json
29
+ report_*.html
30
+
31
+ # Temp files
32
+ .sisyphus/drafts/
33
+ *.tmp
34
+
35
+ # 生成的报告
36
+ *.html
37
+
38
+ # Python 缓存
39
+ __pycache__/
40
+ *.py[cod]
41
+ *$py.class
42
+ *.so
43
+ .Python
44
+
45
+ # 测试缓存
46
+ .pytest_cache/
47
+ .ruff_cache/
48
+ .coverage
49
+ htmlcov/
50
+
51
+ # IDE
52
+ .vscode/
53
+ .idea/
54
+ *.swp
55
+ *.swo
56
+
57
+ # 测试数据 (大文件)
58
+ rosbag/
59
+ *.db3
60
+ *.mcap
61
+
62
+ # 临时文件
63
+ *.log
64
+ *.tmp
65
+ .DS_Store
@@ -0,0 +1,385 @@
1
+ Metadata-Version: 2.4
2
+ Name: rosbag-checker
3
+ Version: 4.3.0
4
+ Summary: ROS2 Bag 录制规范检查工具
5
+ Author: ROS2 Bag Checker Team
6
+ License: MIT
7
+ Keywords: ros2,rosbag,testing,validation
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.8
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Requires-Python: >=3.10
17
+ Requires-Dist: av>=10.0.0
18
+ Requires-Dist: galaxy-fds-sdk>=1.4.44
19
+ Requires-Dist: mcap>=1.0.0
20
+ Requires-Dist: numpy>=1.21.0
21
+ Requires-Dist: pyyaml>=6.0
22
+ Requires-Dist: rich>=13.0.0
23
+ Requires-Dist: rosbags>=0.10.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: black>=23.0.0; extra == 'dev'
26
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
27
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
28
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
29
+ Description-Content-Type: text/markdown
30
+
31
+ # ROS2 Bag 录制规范检查工具
32
+
33
+ 全面验证 ROS2 bag 录制是否符合飞书文档规范要求的 Python 检查工具。
34
+
35
+ [![Python](https://img.shields.io/badge/Python-3.10%2B-blue.svg)](https://www.python.org/)
36
+ [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-orange.svg)](https://docs.ros.org/)
37
+ [![uv](https://img.shields.io/badge/uv-enabled-green.svg)](https://github.com/astral-sh/uv)
38
+ [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
39
+
40
+ ## 📊 项目概览
41
+
42
+ | 项目 | 说明 |
43
+ |------|------|
44
+ | **当前版本** | v4.3.0 |
45
+ | **测试框架** | 配置驱动架构 |
46
+ | **测试用例** | 100+ 项 (图像 36 + 运动状态 34 + 运动指令 24 + 传感器 5 + TF 7 + 诊断 5) |
47
+ | **性能** | 20秒 bag 文件 ~10秒 完成检查 |
48
+ | **包管理** | uv (现代化 Python 包管理) |
49
+ | **Python 版本** | 3.10+ |
50
+
51
+ ---
52
+
53
+ ## 📖 文档导航
54
+
55
+ ### 核心文档
56
+ - 📘 **[使用指南](docs/guides/USAGE_GUIDE.md)** - 快速开始、结果解读、常见问题
57
+ - 📋 **[测试用例文档](docs/specs/test_cases.md)** - 完整的110+测试用例定义 (P0/P1/P2分级)
58
+ - 📊 **[测试覆盖率分析](docs/specs/TEST_COVERAGE_ANALYSIS.md)** - 已实现vs文档定义的对比分析
59
+ - 📚 **[完整文档索引](docs/DOCS_INDEX.md)** - 所有文档导航
60
+
61
+ ### 技术文档
62
+ - 🏗️ **[测试框架架构](docs/architecture/NEW_FRAMEWORK_SUMMARY.md)** - 测试框架设计说明
63
+ - 🔧 **[测试规范](docs/specs/ROSBAG_TEST_SPECIFICATION.md)** - 从飞书文档提取的完整规范
64
+ - 🚀 **[开发路线图](docs/development/ROADMAP.md)** - 项目发展规划
65
+ - 🔬 **[ROS2扩展指南](docs/development/ROS2_EXTENSION_GUIDE.md)** - 高级开发文档
66
+
67
+ ### 参考
68
+ - 🔗 **[飞书规范文档](https://mi.feishu.cn/wiki/QZ44wwD1KiNWlukOSWrcSekxnlc)** - 官方测试规范
69
+
70
+ ## 🎯 核心特性
71
+
72
+ ### 配置驱动测试框架
73
+
74
+ - ✅ **YAML 配置驱动** - 无需修改代码即可添加/修改测试
75
+ - ✅ **4 种测试状态** - PASS/FAIL/WARN/SKIP,简化状态系统
76
+ - ✅ **灵活测试控制** - 每项测试支持独立的 `SKIP`/`WARN` 参数配置
77
+ - ✅ **代码量大幅减少** - 667行硬编码 → 101行配置加载
78
+
79
+ ### 测试覆盖范围 (100+ 项)
80
+
81
+ | 测试类别 | 测试项数 | 主要内容 |
82
+ |---------|---------|---------|
83
+ | **图像数据** | 36 项 | 6相机 × 6测试 (帧率/质量/camera_info/时间戳同步等) |
84
+ | **运动状态** | 34 项 | joint_states + robot_control_state(8关节组) + 位姿(4组) + 力传感器(6组) + xsens |
85
+ | **运动指令** | 24 项 | mobile_base_servo_cmd 末端执行器(4组) + 关节(8组) + 导纳控制(左右2项) |
86
+ | **传感器数据** | 5 项 | IMU 完整检查(时间戳/角速度/加速度/四元数/帧率稳定性) |
87
+ | **TF 坐标变换** | 7 项 | /tf 存在性/时间戳有效性 + TF 树连通性 + /tf_static 完整性 |
88
+ | **诊断信息** | 5 项 | diagnostics ERROR 检测 + robot_description |
89
+
90
+ ### 测试结果状态
91
+
92
+ | 状态 | 含义 | 颜色 |
93
+ |------|------|------|
94
+ | ✓ **PASS** | 测试完全符合规范 | 🟢 绿色 |
95
+ | ✗ **FAIL** | 发现明确问题,需要修复 | 🔴 红色 |
96
+ | ⚠ **WARN** | 测试失败但配置为警告级别(不阻塞) | 🟡 黄色 |
97
+ | ○ **SKIP** | 通过配置跳过的测试 | ⚪ 灰色 |
98
+
99
+ ## 🚀 快速开始
100
+
101
+ ### 1. 安装 uv 包管理器
102
+
103
+ ```bash
104
+ # macOS/Linux
105
+ curl -LsSf https://astral.sh/uv/install.sh | sh
106
+
107
+ # Windows
108
+ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
109
+
110
+ # 或使用 pip
111
+ pip install uv
112
+ ```
113
+
114
+ ### 2. 克隆项目并安装依赖
115
+
116
+ ```bash
117
+ git clone git@git.n.xiaomi.com:ad_test/robot-test/rosbag_checker.git
118
+ cd rosbag_checker
119
+
120
+ # 同步依赖并创建虚拟环境
121
+ uv sync
122
+ ```
123
+
124
+ ### 3. 选择安装方式
125
+
126
+ ```bash
127
+ # 方式 1: 可编辑安装(推荐开发使用)
128
+ uv tool install -e .
129
+
130
+ # 方式 2: 系统安装(推荐个人使用)
131
+ uv tool install .
132
+
133
+ # 方式 3: 打包后安装(推荐分发给他人)
134
+ uv build
135
+ pip install dist/rosbag_checker-*-py3-none-any.whl
136
+ ```
137
+
138
+ ### 4. 运行检查
139
+
140
+ ```bash
141
+ # 基本用法
142
+ rosbag-check /path/to/bag_directory/
143
+
144
+ # 查看帮助
145
+ rosbag-check --help
146
+
147
+ # 查看版本
148
+ rosbag-check --version
149
+
150
+ # 查看配置文件路径
151
+ rosbag-check --config
152
+ ```
153
+
154
+ ### 5. 输出示例
155
+
156
+ ```
157
+ =================== ROS2 Bag 检查报告 ===================
158
+ 📁 Bag: rosbag2_2026_01_22-11_40_19
159
+ 📊 测试统计:
160
+ ✓ 通过: 85项 (85.0%)
161
+ ✗ 失败: 8项 (8.0%)
162
+ ⚠ 警告: 5项 (5.0%)
163
+ ○ 跳过: 2项 (2.0%)
164
+
165
+ 🎯 综合判定: PASS (警告不阻塞)
166
+ 📄 HTML报告: complete_test_rosbag2_2026_01_22-11_40_19.html
167
+ ```
168
+
169
+ 运行后会自动生成:
170
+ - **彩色终端报告** - 实时显示在控制台
171
+ - **HTML 报告** - 保存为 `complete_test_<bag_name>.html`,可在浏览器中打开查看
172
+
173
+ ## ⚙️ 配置文件
174
+
175
+ ### 查看配置文件路径
176
+
177
+ ```bash
178
+ rosbag-check --config
179
+ ```
180
+
181
+ 输出示例:
182
+ ```
183
+ 测试配置文件路径: /path/to/config/tests_config.yaml
184
+ 配置文件包含 6 个测试类别:
185
+ - image_tests
186
+ - motion_state_tests
187
+ - motion_command_tests
188
+ - sensor_tests
189
+ - tf_tests
190
+ - diagnostics_tests
191
+ ```
192
+
193
+ ### 修改测试配置
194
+
195
+ 编辑 `config/tests_config.yaml` 文件(安装后路径见 `rosbag-check --config` 输出):
196
+
197
+ ```yaml
198
+ # 跳过某项测试
199
+ - id: 1.1.1-wrist_left
200
+ SKIP: true
201
+
202
+ # 将失败降级为警告(不阻塞整体通过)
203
+ - id: 3.2.12
204
+ WARN: true
205
+
206
+ # 修改测试参数
207
+ - id: 2.2.15
208
+ params:
209
+ joint_group: waist
210
+ threshold: 0.1
211
+ ```
212
+
213
+ ### 添加自定义测试
214
+
215
+ 1. 在 `config/tests_config.yaml` 添加测试配置
216
+ 2. 指定测试类 (`test_class`) 和参数 (`params`)
217
+ 3. 无需修改代码,配置即生效
218
+
219
+ 详见 [测试框架架构文档](docs/architecture/NEW_FRAMEWORK_SUMMARY.md)
220
+
221
+ ## 📊 性能指标
222
+
223
+ **测试环境**: 73MB MCAP 文件,24634 条消息,20 秒录制
224
+
225
+ | 指标 | 数值 |
226
+ |------|------|
227
+ | 测试执行时间 | ~10 秒 |
228
+ | 测试用例数 | 100+ 项 |
229
+ | 吞吐量 | ~7.3 MB/s |
230
+
231
+ **性能预估**:
232
+ - 小文件 (<100MB): 5-15 秒
233
+ - 中等文件 (100-500MB): 15-60 秒
234
+ - 大文件 (>500MB): 60-180 秒
235
+
236
+ ## 📁 项目结构
237
+
238
+ ```
239
+ rosbag_checker/
240
+ ├── bin/ # 可执行脚本
241
+ │ └── run_complete_tests.py # 主测试程序
242
+ ├── test_framework/ # 测试框架核心
243
+ │ ├── test_case.py # 测试用例基类
244
+ │ ├── specialized_tests.py # 专门测试实现
245
+ │ ├── test_registry.py # 测试注册表
246
+ │ ├── runner.py # 测试执行引擎
247
+ │ └── protocol_loader.py # 协议加载器
248
+ ├── validators/ # 检查器实现 (14个)
249
+ │ ├── videoclip_checker.py
250
+ │ ├── camera_info_checker.py
251
+ │ ├── joint_states_checker.py
252
+ │ ├── robot_control_state_checker.py
253
+ │ ├── mobile_base_servo_cmd_checker.py
254
+ │ ├── imu_checker.py
255
+ │ ├── xsens_checker.py
256
+ │ ├── tf_checker.py
257
+ │ └── diagnostics_checker.py
258
+ ├── utils/ # 工具模块
259
+ │ ├── bag_reader.py # MCAP 读取封装
260
+ │ ├── colored_reporter.py # 彩色终端报告
261
+ │ ├── html_reporter.py # HTML 报告生成
262
+ │ └── config_loader.py # 配置加载器
263
+ ├── config/ # 配置文件
264
+ │ └── tests_config.yaml # 测试用例配置 (100+ 项)
265
+ ├── docs/ # 文档目录
266
+ ├── tests/ # 测试目录
267
+ ├── msg/ # 自定义消息定义
268
+ ├── pyproject.toml # 项目配置
269
+ ├── uv.lock # uv 依赖锁文件
270
+ └── README.md # 项目文档
271
+ ```
272
+
273
+ ## 🔧 高级用法
274
+
275
+ ### 开发环境设置
276
+
277
+ ```bash
278
+ # 克隆仓库
279
+ git clone git@git.n.xiaomi.com:ad_test/robot-test/rosbag_checker.git
280
+ cd rosbag_checker
281
+
282
+ # 安装开发依赖
283
+ uv sync --extra dev
284
+
285
+ # 代码格式化
286
+ uv run black .
287
+ uv run ruff check .
288
+ ```
289
+
290
+ ### 添加自定义测试
291
+
292
+ **配置驱动方式(推荐)**:
293
+ 1. 在 `config/tests_config.yaml` 添加测试配置
294
+ 2. 指定测试类 (`test_class`) 和参数 (`params`)
295
+ 3. 无需修改代码即可生效
296
+
297
+ **代码方式**:
298
+ 1. 在 `test_framework/specialized_tests.py` 创建新 TestCase 类
299
+ 2. 实现 `run()` 方法,返回 TestResult
300
+ 3. 在 `config/tests_config.yaml` 注册测试用例
301
+
302
+ 详见 [测试框架架构](docs/architecture/NEW_FRAMEWORK_SUMMARY.md)
303
+
304
+ ## 📚 文档导航
305
+
306
+ ### 核心文档
307
+ - 📘 [使用指南](docs/guides/USAGE_GUIDE.md) - 快速开始、结果解读、常见问题
308
+ - 📋 [测试用例文档](docs/specs/test_cases.md) - 完整的 110+ 测试用例定义
309
+ - 📊 [测试覆盖率分析](docs/specs/TEST_COVERAGE_ANALYSIS.md) - 已实现 vs 文档定义对比
310
+ - 📚 [完整文档索引](docs/DOCS_INDEX.md) - 所有文档导航
311
+
312
+ ### 技术文档
313
+ - 🏗️ [测试框架架构](docs/architecture/NEW_FRAMEWORK_SUMMARY.md) - 测试框架设计说明
314
+ - 🔧 [测试规范](docs/specs/ROSBAG_TEST_SPECIFICATION.md) - 从飞书文档提取的完整规范
315
+ - 🚀 [开发路线图](docs/development/ROADMAP.md) - 项目发展规划
316
+ - 🔬 [ROS2 扩展指南](docs/development/ROS2_EXTENSION_GUIDE.md) - 高级开发文档
317
+
318
+ ### 参考
319
+ - 🔗 [飞书规范文档](https://mi.feishu.cn/wiki/QZ44wwD1KiNWlukOSWrcSekxnlc) - 官方测试规范
320
+
321
+ ## 🐛 常见问题
322
+
323
+ ### 依赖冲突或环境问题
324
+
325
+ ```bash
326
+ # 重新同步依赖
327
+ uv sync --reinstall
328
+
329
+ # 清理并重建虚拟环境
330
+ rm -rf .venv uv.lock
331
+ uv sync
332
+ ```
333
+
334
+ ### 相机帧率不足
335
+
336
+ **问题**: `videoclip 帧率检查 ✗ - 帧率 1.5 Hz < 29.8 Hz`
337
+
338
+ **解决方案**:
339
+ 1. 检查相机驱动配置文件
340
+ 2. 确认 `frame_rate` 参数 ≥ 30
341
+ 3. 重新录制 bag
342
+
343
+ ### 多相机时间戳不同步
344
+
345
+ **问题**: `多相机时间戳同步检查 ✗ - 偏差 201.6ms > 50ms`
346
+
347
+ **解决方案**:
348
+ 1. 启用硬件时间同步 (PTP/gPTP)
349
+ 2. 验证系统 NTP 配置
350
+ 3. 确认所有相机使用统一时间源
351
+
352
+ 更多问题见 [使用指南](docs/guides/USAGE_GUIDE.md)
353
+
354
+ ## 🤝 贡献与开发路线图
355
+
356
+ 欢迎提交 Issue 和 Pull Request!
357
+
358
+ ### 版本历史
359
+
360
+ | 版本 | 状态 | 主要功能 |
361
+ |------|------|---------|
362
+ | v3.0 | ✅ | 测试框架完整实现 (51 项) |
363
+ | v4.0 | ✅ | 测试框架扩展 (78 项) |
364
+ | v4.1 | ✅ | IMU/TF 完整集成 (82 项) |
365
+ | v4.3 | ✅ | camera_info/xsens/TF_static (87 项) |
366
+ | v5.0 | ✅ | 配置驱动框架 (100+ 项)<br>- 667行硬编码 → 101行配置<br>- 4种状态系统<br>- SKIP/WARN 灵活控制 |
367
+ | v5.1 | 📋 计划中 | 补全所有关节组和传感器测试 |
368
+ | v6.0 | 🚀 规划中 | 性能优化 + 测试报告增强 |
369
+
370
+ ## 📄 许可证与致谢
371
+
372
+ 本项目采用 [MIT License](LICENSE) 开源协议。
373
+
374
+ 感谢所有贡献者对项目的支持!
375
+
376
+ ### 技术规范参考
377
+
378
+ - **官方规范**: [飞书文档 - ROS2 Bag 录制规范](https://mi.feishu.cn/wiki/QZ44wwD1KiNWlukOSWrcSekxnlc)
379
+ - **本地规范**: [ROSBAG_TEST_SPECIFICATION.md](docs/specs/ROSBAG_TEST_SPECIFICATION.md)
380
+
381
+ ---
382
+
383
+ **维护团队**: ROS2 Bag Checker Team
384
+ **最后更新**: 2026-04-30
385
+ **项目状态**: 🟢 活跃维护