gflags和glog在cartographer中的运用

gflags是什么?gflags是google开源的命令行标记处理库;
那么什么是命令行标记呢?顾名思义就是当运行一个可执行文件时,由用户为其指定的标记,形如:

 fgrep -l -f ./test ccc jjj

注意上述命令,-l与-f ./test是命令行标记,而ccc与jjj是命令行参数,因为这两者不是以破折号开头的。

一般的一个可执行文件,允许用户为其传入命令行标记以及参数,如上述例子,-l是一个不带参数的标记,-f是一个带了参数“./test”的标记,而gflags可以解析这些标记以及参数并将其存储在某些数据结构中。

gflags支持主要的一些参数类型包括string, bool, int32, int64, double等

定义参数通过DEFINE_(类型)决定,如DEFINE_bool,该宏的三个参数含义分别为命令行参数名, 参数默认值, 以及参数的帮助信息,帮助信息写入用"..."

当参数被定义后, 通过FLAGS_(名字)就可访问到对应的参数,如FLAGS_collect_metrics.

DEFINE_string(configuration_directory, "","...")

上面这个的参数默认值是留空的,是用launch文件传入的

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory
              $(find cartographer_ros)/configuration_files
          -configuration_basename pr2.lua"
      output="screen">
    <remap from="scan" to="/base_scan" />
  </node>

中间有个-configuration_directory, -表示是命令行标记,和gflags的定义是一样的,后面跟的是传入的内容$(find cartographer_ros)/configuration_files, 并且被赋予到FLAGS_configuration_directory成为一个宏,如果下面的程序需要使用这个变量,则使用FLAGS_configuration_directory就行

同理

DEFINE_string(configuration_basename, "",
              "Basename, i.e. not containing any directory prefix, of the "
              "configuration file.");


-configuration_basename pr2.lua

FLAGS_configuration_basename为pr2.lua这个string,并不代表pr2.lua文件内的内容,只是文件名

glog简介:glog在gflags或者里面似乎include了

Google glog是一个应用级别的日志系统库.它提供基于C++风格的流和各种辅助宏的日志API.支持以下功能:

  • 参数设置, 以命令行参数的方式设置标志参数来控制日志记录行为
  • 严重性分级, 根据日志严重性分级记录日志 - INFO WARNING ERROR FATAL
  • 可有条件地记录日志信息 - LOG_IF LOG_EVERY_N LOG_IF_EVERY_N LOG_FIRST_N
  • 条件中止程序。丰富的条件判定宏, 可预设程序终止条件 - CHECK宏
  • 异常信号处理。程序异常情况, 可自定义异常处理过程
  • 支持debug功能
  • 自定义日志信息
  • 线程安全日志记录方式
  • 系统级日志记录
  • google perror风格日志信息

精简日志字符串信息最终的结果不仅会在屏幕终端显示出来, 同时会将log日志写入到/tmp/...log....这个文件中.

glog在cartographer的CMakeLists里面,不在cartographer_ros的CMakeLists里面.

  • override用于直接明了的告诉编译器该函数用于重载父类的某个虚函数

glog可以自定义消息格式,详见ros_log_sink

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值