首页 > 其他分享 >ego-planner开源代码之数据流分析

ego-planner开源代码之数据流分析

时间:2024-09-17 11:48:37浏览次数:11  
标签:planner float64 话题 bag ego rostopic 测试 源代码 rosbag

ego-planner开源代码之数据流分析

1. 源由

《Ardupilot开源飞控之FollowMe验证平台》改进的飞机马上要回来了。

鉴于实际原因,我们需要加速数据流分析:

  1. 工期的排程比较赶了;
  2. 前面介绍了灰盒测试角度分析,这次直接从白盒角度切入;
  3. ego-planner 看了下除了模拟部分外,输入/输出貌似接口不是非常复杂;

因此,后续 ego-planner 的相关数据流分析采用白盒、或者灰盒整理出来。

本章将是一个汇总文件,后续逐步将数据流分析 或者 其他参数配置的理解分门别类的整理出来。

2. 测试策略

黑盒测试、灰盒测试和白盒测试是软件测试中的三种不同策略,主要区别在于测试人员对系统内部结构的了解程度。


测试类型测试人员了解程度测试对象关注点
黑盒测试不了解系统内部实现功能接口功能性、外部行为
灰盒测试了解部分内部结构功能接口+内部实现功能性与部分内部流程
白盒测试完全了解系统内部实现源代码代码逻辑、实现细节、效率

这三种测试方法各有优缺点,通常会结合使用,以确保软件的各个层面都能得到充分的测试。

2.1 黑盒测试(Black Box Testing)

黑盒测试是一种不考虑内部实现的测试方法,测试人员只需要知道输入和期望的输出,而不关注代码的具体实现细节。测试的重点是验证系统的功能和行为是否符合预期。

特点:

  • 测试者不需要了解代码实现或系统内部结构。
  • 主要关注的是功能测试,以确保软件按照需求规范运行。
  • 常用的测试技术包括等价类划分边界值分析错误推测等。

适用场景:

  • 用户界面测试、功能测试、集成测试等。

优点:

  • 测试覆盖了实际使用场景,能有效找到功能性缺陷。

缺点:

  • 无法发现系统内部的设计缺陷或效率问题。

示例:
在黑盒测试中,测试人员输入不同的用户名和密码组合来测试登录功能是否正确工作,而无需关心背后的验证逻辑如何实现。

2.2 灰盒测试(Gray Box Testing)

灰盒测试是一种介于黑盒和白盒之间的测试方法。测试人员部分了解系统的内部结构,并使用这些信息来设计测试用例。这种测试方法既考虑系统的功能,也会在一定程度上关注内部流程和数据流。

特点:

  • 测试者了解部分内部实现,但不深入到每个细节。
  • 结合功能测试结构测试的优点,通过了解系统内部来设计更具针对性的测试用例。

适用场景:

  • 安全测试、集成测试、回归测试等场景。

优点:

  • 通过了解系统内部状态,能够设计更高效的测试用例。
  • 能够找到一些深层次的缺陷,比如边界条件问题。

缺点:

  • 比黑盒测试更复杂,需要测试者具备一定的系统知识。

示例:
测试人员通过了解系统的数据库结构,结合输入数据,设计测试用例以确保系统能正确处理异常的数据库输入。

2.3 白盒测试(White Box Testing)

白盒测试是基于系统内部实现的测试方法。测试人员需要了解系统的源代码,并根据代码逻辑进行详细的测试。测试的目标是覆盖代码中的每条语句、分支和路径,以确保系统内部的逻辑和实现是正确的。

特点:

  • 测试者完全了解代码的结构和实现。
  • 主要进行代码级别的测试,如语句覆盖、分支覆盖和路径覆盖。
  • 关注代码的正确性、性能和安全性。

适用场景:

  • 单元测试、代码审查、性能优化等。

优点:

  • 能够发现隐藏的代码缺陷、逻辑错误和安全漏洞。
  • 覆盖了系统内部的实现细节,测试更全面。

缺点:

  • 测试需要高度的技术能力,测试用例维护成本较高。
  • 可能忽略系统外部的集成和使用场景。

示例:
白盒测试人员可能会通过单元测试工具,直接测试代码中的每个函数、条件分支、循环等,确保系统内部逻辑无误。

3. 后续汇总

4. 参考资料

【1】Ardupilot开源飞控之FollowMe验证平台搭建
【2】VINS-Fusion开源代码之vins_node数据流分析
【3】VINS-Fusion开源代码之loop_fusion_node数据流分析

5. 附录

5.1 rosbag命令操作详细解释和举例

rosbag 是 ROS(Robot Operating System)中的一个工具,用来记录、播放和管理机器人传感器数据和消息。它可以将 ROS 的话题数据保存为文件,也可以从文件中回放这些数据,非常适合调试和数据分析。

以下是一些常用的 rosbag 命令及其详细解释和示例。

1. 记录数据:rosbag record

rosbag record 命令用于记录 ROS 系统中的消息。你可以指定想要记录的特定话题,也可以记录所有话题的数据。

常用选项:

  • -a:记录所有话题。
  • -O <filename>:将输出文件命名为 <filename>.bag
  • -e <regex>:通过正则表达式匹配话题并记录。
  • --duration=<seconds>:指定录制持续的时间。
  • --split:根据设定的文件大小或持续时间,将录制内容分割为多个bag文件。

示例:

  1. 记录所有话题:

    rosbag record -a
    

    该命令将记录所有话题,并生成一个 .bag 文件。

  2. 记录特定话题:

    rosbag record -O my_bag /camera/image_raw /odom
    

    该命令记录 /camera/image_raw/odom 两个话题,并将输出保存为 my_bag.bag 文件。

  3. 通过正则表达式匹配并记录话题:

    rosbag record -e "/camera/.*"
    

    该命令会记录所有匹配 /camera/.* 的话题。

  4. 记录一段时间:

    rosbag record -a --duration=60
    

    该命令记录所有话题,持续时间为 60 秒。

2. 播放数据:rosbag play

rosbag play 命令用于回放 .bag 文件中保存的消息。它将数据重新发布到 ROS 话题上。

常用选项:

  • -r <factor>:改变回放速率(例如 2 表示 2 倍速播放,0.5 表示半速播放)。
  • -s <seconds>:从指定时间开始播放。
  • -l:循环播放。
  • -q:静默模式,不输出控制信息。

示例:

  1. 简单回放 bag 文件:

    rosbag play my_bag.bag
    

    该命令将回放 my_bag.bag 文件中的所有消息。

  2. 2 倍速回放:

    rosbag play -r 2 my_bag.bag
    

    该命令将以 2 倍速率回放 my_bag.bag 文件。

  3. 从第 10 秒开始播放:

    rosbag play -s 10 my_bag.bag
    

    该命令从 my_bag.bag 文件的第 10 秒开始播放。

  4. 循环播放:

    rosbag play -l my_bag.bag
    

    该命令将循环播放 my_bag.bag 文件中的数据。

3. 查看 bag 文件信息:rosbag info

rosbag info 命令用于查看 .bag 文件的概要信息,例如记录的话题、消息数量、文件大小和时间范围等。

示例:
查看 bag 文件信息:

rosbag info my_bag.bag

该命令将显示 my_bag.bag 文件的概要信息。

4. 过滤和导出 bag 文件:rosbag filterrosbag decompress/compress

  • rosbag filter:用于根据条件筛选 bag 文件中的消息,生成新的 bag 文件。

示例:
过滤 /odom 话题:

rosbag filter input.bag output.bag 'topic == "/odom"'

该命令会将 input.bag/odom 话题的消息提取到 output.bag

5. 压缩和解压 bag 文件:

  • 压缩
    rosbag compress 用于压缩 .bag 文件,减小文件大小。
    rosbag compress my_bag.bag
    
  • 解压
    rosbag decompress 用于解压 .bag 文件。
    rosbag decompress my_bag.bag
    

5.2 rostopic 接口参数查询

在 ROS 中,rostopic 是一个非常有用的命令行工具,用于与 ROS 话题进行交互,例如查看话题的信息、发布数据或查看消息的流动。要查看话题的参数结构,即话题的消息类型和各个字段的详细信息,常用以下几种命令:

  • rostopic type <topic>:获取话题的消息类型。
  • rosmsg show <msg_type>:查看消息类型的具体结构。
  • rostopic echo <topic>:查看实时消息的内容。

1. rostopic type

rostopic type 命令用于显示某个话题的消息类型。

示例:

rostopic type /odom

这个命令会显示 /odom 话题的消息类型,例如 nav_msgs/Odometry

2. rosmsg show

一旦知道话题的消息类型,可以使用 rosmsg show 命令来查看该类型的具体结构,包括所有字段及其数据类型。

示例:

rosmsg show nav_msgs/Odometry

这个命令会输出 nav_msgs/Odometry 消息的完整结构,例如:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
geometry_msgs/PoseWithCovariance pose
  geometry_msgs/Pose pose
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
  float64[36] covariance
geometry_msgs/TwistWithCovariance twist
  geometry_msgs/Twist twist
    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z
  float64[36] covariance

这会显示 Odometry 消息的结构,包括每个字段的数据类型以及嵌套的消息类型。

3. 综合步骤:查看话题的参数结构

可以通过以下步骤查看任意话题的参数结构:

  1. 使用 rostopic list 查看当前活动的话题列表:

    rostopic list
    
  2. 使用 rostopic type <topic> 获取某个话题的消息类型:

    rostopic type /camera/image_raw
    
  3. 使用 rosmsg show <msg_type> 查看该消息类型的详细结构:

    rosmsg show sensor_msgs/Image
    

4. 直接查看话题的消息数据:rostopic echo

如果想查看话题的实时数据,使用 rostopic echo 命令可以打印出消息的具体内容。

示例:

rostopic echo /odom

这个命令会打印出 /odom 话题的实时消息内容,展示消息中的每个字段及其对应的值。

标签:planner,float64,话题,bag,ego,rostopic,测试,源代码,rosbag
From: https://blog.csdn.net/lida2003/article/details/142311860

相关文章

  • 1030-基于51单片机的SPWM波(数码管)原理图、流程图、物料清单、仿真图、源代码
    1030-基于51单片机的SPWM波(数码管)原理图、流程图、物料清单、仿真图、源代码功能介绍:要求能够输出SPWM并且测量输入正弦波的频率并显示。直流电压通过DC-AC电路转为方波,搭建检测电路进行滤波和调节,得到正弦波,单片机采集该正弦波的频率,并显示。有哪些资料:1、仿真工程文......
  • 基于微信美食菜谱点评小程序系统毕业设计 源代码作品源码成品
      博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书......
  • 关键字检索分析-案例2:开源代码分析
    第一次拿来分析一下开源代码,上效果图代码和文件地址具体内容参考我前面一篇博客spring-frameworkredis,redis单个文件非常大mybatis我实话我没有看过这些源码。之前的博客里的脚本,bug挺多的。可以以gitee这里为主(链接在最上面)。......
  • Java+Vue开发的固定资产管理系统(项目源代码分享)
      前言:资产设备管理系统旨在实现对企业资产和设备的全面管理,通过信息化手段提升管理效率,确保资产和设备的有效利用和安全性。以下是该系统的主要功能模块及其详细描述:一、个人中心用户登录与权限管理:实现用户身份验证和权限分配,确保系统数据的安全性。个人信息管理:允许用......
  • python毕业设计可视化主题:python体育用品销售电商数据可视化系统毕业设计源代码作品和
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • 简单有趣的python小程序(涵源代码)
    目录tkinter计算器2.计算题练习猜数字烦人的程序无法拒绝的请假条。。。爬虫你想看豆瓣评分前十的电影?WXpython记事本(可保存)​编辑数字逻辑解方程tkinter计算器importtkinterastkimporttkinter.messageboxasmroot=tk.Tk()root.title("计算器")......
  • SpringBoot+Neo4j+Vue+Es集成ES全文检索、Neo4J知识图谱、Activiti工作流的知识库管理
     在数字化高度普及的时代,企事业机关单位在日常工作中会产生大量的文档,例如医院制度汇编,企业知识共享库等。针对这些文档性的东西,手工纸质化去管理是非常消耗工作量的,并且纸质化查阅难,易损耗,所以电子化管理显得尤为重要。【springboot+elasticsearch+neo4j+vue+activiti】实现......
  • JAVA毕业设计171—基于Java+Springboot+vue3+小程序的宠物店小程序系统(源代码+数据库
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue3+小程序的宠物店小程序系统(源代码+数据库)171一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、店员、管理员三种角色1、用户:注册、登录、宠物购买(评论......
  • JAVA毕业设计174—基于Java+Springboot+vue3+小程序的农产品社区团购小程序系统(源代
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue3+小程序的农产品社区团购小程序系统(源代码+数据库+开题+万字论文)174一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、管理员两种角色1、用户:注册、登......
  • AI带货直播插件的五大基础功能和源代码!
    随着人工智能技术的飞速发展,AI带货直播插件已成为电商领域的重要工具,这类插件通过集成先进的人工智能技术,不仅提升了直播的效率和互动性,还大大增强了用户体验和转化率。一、AI带货直播插件的五大基础功能1、自动化内容生成:a、利用深度学习算法,自动生成直播内容,如文本、图像和视频。......