模块:常用工具箱 (Utils)
ros_base.utils 中的工具数量有限,但实用性较高。当前代码仓中较值得直接复用的主要包括以下几组。
1. profile_latency
位置:
它会在函数调用时统计两类延迟:
cycle latency: 两次调用之间隔了多久processing latency: 这次函数本身跑了多久
还可以在输入是 ROS 消息时,检查 header.stamp 到当前时刻的 capture latency。
示例:
@profile_latency(
cycle_threshold_ms=100.0,
process_threshold_ms=50.0,
log_interval_s=3.0,
debug=True,
)
def step(self):
...
适合放在:
- 高频 Agent 的
step() - Node 的关键 callback
- 滤波或控制模块的主更新函数
2. CustomLogger
位置:
这是一个基于 loguru 的轻量封装,兼容了很多 ROS 风格用法:
infowarningwarnerrorlog_oncelog_throttleimportant
例如:
self.logger.info("Camera stream ready", once=True)
self.logger.log_throttle("Waiting for VLM...", seconds=2.0)
self.logger.important("Entering State: navigation")
在 BaseManager 中可以通过 custom_logger=CustomLogger 注入。
3. CameraTrans
位置:
这个类偏几何计算,适合做:
- base frame -> camera frame
- camera frame -> image plane
- image + depth -> 反投影
它依赖 CameraProfile,适合在视觉仿真、投影校验、坐标变换验证里单独使用。
4. math_utils
常用函数和类包括:
CircularBufferVectorLPFilterwarp2piquat_to_rpyrpy_to_quattrans_ros_frame_to_opt_frametrans_opt_to_ros_frame
其中 CircularBuffer 已经在 quad_deploy 的 BaseRLAgent 里直接用来维护观测历史:
5. 调试入口辅助
很多独立脚本都在用:
它的作用是帮脚本快速接入调试参数,便于独立运行单个节点或入口脚本。
6. 使用建议
对于初次接入 ros_base 的项目,通常建议优先使用:
CustomLoggerprofile_latencyCircularBuffer
这三样基本能覆盖:
- 日志规范化
- 性能定位
- 高频控制历史缓存