< >
Home » ROS2与Gazebo11入门教程 » ROS2与Gazebo11入门教程-日志过滤

ROS2与Gazebo11入门教程-日志过滤

说明:

  • 介绍如何使用日志过滤

简介

  • 状态日志是Gazebo中仿真世界状态信息的记录。状态包括所有模型中所有链接的位姿、速度、加速度和施加在它们上面的力。Gazebo只会记录随时间发生变化的模型的状态信息。

  • 状态日志文件包含标题、初始仿真世界描述和状态的时间序列

Gazebo日志命令行工具

  • Gazebo附带了一个日志实用程序,可以通过gz log命令访问该实用程序。

  • 使用以下命令来查看该实用程序的帮助信息:

gz help log
或者
gz log -h

示例用法

第1步:创建状态日志文件

  • 开始前,要删除旧的日志文件,命令为:
rm -rf ~/.gazebo/log/*
  • 下面将会使用PR2仿真世界来创建状态日志文件。

  • 首先以-r命令行选项运行Gazebo服务器,命令为:

gzserver -r worlds/pr2.world
  • 运行几秒钟后,使用Ctrl + C组合键关闭该服务器。

  • 这样,在〜/.gazebo/log目录中应该就会有一个带时间戳的新目录,该目录下有一个子目录和一个state.log文件。

  • 下面是一个示例:

~/.gazebo/log/2013-07-25T07\:29\:05.122275/gzserver/state.log
  • 可以通过在Gazebo中回放该日志文件来验证它,命令为:
gazebo -p ~/.gazebo/log/*/gzserver/state.log

过滤状态日志文件

  • 命令行工具gz log提供一些方法用于逐步浏览日志文件并将日志文件内容回显到屏幕上。

  • 屏幕回显功能可以与过滤器结合使用以生成一个日志文件,该日志文件包含诸如模型和链接的位姿等特定信息。

  • 尝试将记录的状态日志文件回显到屏幕,命令为:

gz log -e -f ~/.gazebo/log/*/gzserver/state.log
  • 这样,就应该会看见许多滚动的信息。

  • 下面来把速度、加速度和力相关的所有信息都从状态日志文件中删除。

  • 这样就会只留下位姿信息。命令为:

gz log -e -f ~/.gazebo/log/*/gzserver/state.log --filter *.pose/*.pose
  • 选项--filter是一个灵活的命令行参数,用于从日志文件中抽取信息。

  • 下面是使用--filter标志的一些准则:

    • 用“/”分隔层次结构中的实体,如<model_name>/<link_name>

    • 用“.”来访问实体的属性,例如<model_name>.pose.y或者<model_name>/<link_name>.velocity

  • 可以访问的属性包括:

    • 模型的位姿(Model: pose)

    • 链接的位姿(pose)、速度、加速度、wrench

    • 位姿、速度、加速度或wrench的x,y,z,r(roll),p(pitch),a(yaw)

  • 用“”作为通配符,例如 .pose或<model_name>/right_ *

  • 用“[]”匹配任何更低层次的属性,如<model_name>/pose.[x,y,a]

  • 也可以使用Hz过滤器基于仿真时间进行过滤。例如,可以使用下面这条命令以30Hz的频率输出状态信息:

gz log -e -f ~/.gazebo/log/*/gzserver/state.log -z 30
  • 这些过滤器可以组合使用并通过管道传输到一个文件中用于回放。 这可能需要花一些时间,具体取决于state.log文件的大小。例如:
gz log -e -f ~/.gazebo/log/*/gzserver/state.log -z 30 --filter *.pose/*.pose > /tmp/filtered_state.log
  • 这样,过滤后的日志文件就可以在Gazebo中进行回放,命令为:
gazebo -p /tmp/filtered_state.log

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与gazebo11入门教程