恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

livox_ros_driver2 日志系统工作原理解析:DRIVER_INFO/DRIVER_ERROR 宏设计的完整指南

  • 首页
  • 资讯中心
  • /
  • livox_ros_driver2 日志系统工作原理解析:DRIVER_INFO/DRIVER_ERROR 宏设计的完整指南

相关资讯

Atlas 300V部署YOLO全流程指南:环境搭建、模型转换与性能调优 2026/9/20 23:56:33
Atlas 300V 24G部署YOLO全流程:从推理加速卡到CANN工具链实战 2026/9/20 23:56:33
PostHog TMDB 数据源 API 盘点:从认证、分页到限流的接入全解 2026/9/20 23:56:33

最新资讯

软件质量保证方案:分层门禁与缺陷根因驱动的工程闭环
多AI Agent并行改代码,用Git Worktree隔离与Worktrunk管理实现零冲突
Java单元测试自动化:Claude Skills解决方案与实践
AI工具选型实战:从任务拆解到多模型组合提效
CC Switch 接 TaoToken:Claude Code 默认供应商切换结果
Rosweb实战:用浏览器控制ROS机器人,无需安装环境

今日推荐

OneUptime 自定义探针(Custom Probe)部署实战:私网监控、代理配置与断连排障全指南
大众TL52625前端框架材料要求详解:从性能测试到落地执行
TiXL 浮点运算算子库 Lib.numbers.float 完全指南:44 个算子的参数详解、源码原理与实战串联

本周热门

BrewUI:给Homebrew套上图形界面,让macOS软件包管理更简单
BrewUI:让Homebrew包管理变得可视化与高效
公式与文本对齐全攻略:从Word到LaTeX的实用技巧

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

livox_ros_driver2 日志系统工作原理解析:DRIVER_INFO/DRIVER_ERROR 宏设计的完整指南

发布时间:2026/9/20 23:56:33
livox_ros_driver2 日志系统工作原理解析:DRIVER_INFO/DRIVER_ERROR 宏设计的完整指南 livox_ros_driver2 日志系统工作原理解析DRIVER_INFO/DRIVER_ERROR 宏设计的完整指南【免费下载链接】livox_ros_driver2Livox device driver under Ros(Compatible with ros and ros2), support Lidar HAP and Mid-360.项目地址: https://gitcode.com/GitHub_Trending/li/livox_ros_driver2livox_ros_driver2 是乐鑫Livox官方第二代激光雷达 ROS 驱动同时兼容 ROS 与 ROS2支持 HAP、MID360 等机型。它通过 DRIVER_INFO、DRIVER_ERROR 等日志宏实现统一的日志输出让同一份业务代码在两种框架下无缝编译运行。本文将带你快速看懂这套日志系统的工作原理。一、为什么需要 DRIVER_INFO / DRIVER_ERROR 日志宏ROS1 和 ROS2 的日志 API 完全不同ROS1使用ROS_INFO()、ROS_ERROR()等全局宏底层基于ros::consoleROS2使用RCLCPP_INFO(logger, ...)等宏每条日志都必须绑定一个节点自带的 logger。如果业务代码直接调用原生宏就得为 ROS1/ROS2 各维护一套代码。livox_ros_driver2 的解法很巧妙定义一层DRIVER_前缀的日志宏作为统一日志接口把平台差异全部收进头文件里业务代码一行都不用改。二、日志宏的整体架构3 个头文件的分工日志系统的核心是 src/include/ 下的 3 个头文件文件职责ros_headers.h总入口根据编译开关自动选择 ROS1 或 ROS2 头文件ros1_headers.h定义 ROS1 版的 DRIVER_ 系列日志宏ros2_headers.h定义 ROS2 版的 DRIVER_ 系列日志宏ros_headers.h 的核心逻辑只有几行条件编译#ifdef BUILDING_ROS1 #include ros1_headers.h #elif defined BUILDING_ROS2 #include ros2_headers.h #endif也就是说编译期由BUILDING_ROS1/BUILDING_ROS2这两个开关决定日志宏展开到哪一套 API而业务代码只看到统一的DRIVER_*名称。三、DRIVER_INFO / DRIVER_ERROR 宏在不同平台下的展开方式ros1_headers.h 中的定义非常直接把 node 参数直接忽略掉#define DRIVER_INFO(node, ...) ROS_INFO(__VA_ARGS__) #define DRIVER_ERROR(node, ...) ROS_ERROR(__VA_ARGS__)而 ros2_headers.h 中node 参数派上了用场——取节点的 logger 传给 RCLCPP 宏#define DRIVER_INFO(node, ...) RCLCPP_INFO((node).get_logger(), __VA_ARGS__) #define DRIVER_ERROR(node, ...) RCLCPP_ERROR((node).get_logger(), __VA_ARGS__)这就是同一个调用DRIVER_INFO(livox_node, xxx)在两端都能编译的关键ROS1 端 node 被丢弃ROS2 端 node 被用来获取 logger。EXTRA 变体一次/节流输出技巧两个头文件里还各有一套_EXTRA宏例如 DRIVER_INFO_EXTRA。它利用 C 预处理的##记号拼接能力把中间参数拼进宏名#define DRIVER_INFO_EXTRA(node, EXTRA, ...) RCLCPP_INFO_##EXTRA((node).get_logger(), __VA_ARGS__)这样就能灵活展开成RCLCPP_INFO_ONCE只打印一次、RCLCPP_INFO_THROTTLE节流打印等原生变体非常适合高频数据流中避免日志刷屏的场景。四、编译期开关CMake 如何决定日志走向开关来自 CMakeLists.txt 中的编译定义ROS1 构建时注入-DBUILDING_ROS1见 CMakeLists.txtROS2 构建时注入-DBUILDING_ROS2见 CMakeLists.txt构建脚本根据 ROS1 / ROS2 / humble / jazzy 等不同参数选择分支最终只有对应的日志宏集合生效。整个链路是构建脚本 → CMake 定义宏 → ros_headers.h 条件包含 → 平台专属日志宏 → ROS/ROS2 原生日志系统五、源码中的真实日志调用示例节点类型定义在 driver_node.h 中ROS1 下DriverNode继承ros::NodeHandleROS2 下继承rclcpp::Node——这正是两种平台都能调用.get_logger()的前提。在主入口 livox_ros_driver2.cpp 中能看到典型用法启动时打印版本DRIVER_INFO(livox_node, Livox Ros Driver2 Version: %s, ...)第 51 行打印配置信息DRIVER_INFO(*this, Config file : %s, user_config_path.c_str())第 167 行初始化失败报错DRIVER_ERROR(*this, Init lds lidar fail!);第 178 行参数非法提示DRIVER_ERROR(livox_node, Invalid data src (%d), please check the launch file, data_src);第 105 行另外ROS1 分支在main()开头还会主动把日志级别调高到 Debug第 42-44 行方便用户排查问题时看到更详细的输出。数据分发模块 lddc.cpp 中也大量使用DRIVER_INFO打印 bag 文件创建、多话题模式等状态信息如 第 189 行。六、新手上手建议 看日志级别选型正常状态用DRIVER_INFO可恢复的异常用DRIVER_WARN致命问题用DRIVER_ERROR/DRIVER_FATAL与 ROS 日志级别一一对应高频路径慎用 INFO点云回调中每帧都打印会刷屏可参考_EXTRA变体的思路使用节流或一次性输出排查启动问题程序启动时版本、Config file、Data Source三条 INFO 日志是最快的自检清单任何一条缺失都说明配置或参数有问题阅读源码路径想深入日志设计按 ros_headers.h → ros1_headers.h / ros2_headers.h 的顺序阅读即可全文不超过 100 行。这套统一宏名 条件编译分流的设计是 livox_ros_driver2 能一份源码同时支持 ROS 和 ROS2 的关键技巧之一也很适合你在自己的双框架兼容项目中借鉴。【免费下载链接】livox_ros_driver2Livox device driver under Ros(Compatible with ros and ros2), support Lidar HAP and Mid-360.项目地址: https://gitcode.com/GitHub_Trending/li/livox_ros_driver2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号