实现输出VTD仿真过程的RDB数据(例如车辆位置等)到csv文件中

很多像我一样初学VTD的同学都可能遇到过只会使用rdbSniffer去打印当前的车辆位置信息,但是有时候将数据输出到excel或者csv文件里面来画图或者来做算法输入。这里将介绍一种最简单的方法。

首先打开VTD/Develop/Communication/RDBClientSample文件夹,里面会有很多.cpp文件和cpp转可执行文件的.sh文件,打开最基础的ExampleConsole.cpp文件,然后在488行的函数下面加上如下代码,可以将数据导出到文件夹中

#include <iostream>
#include <fstream>

void handleRDBitem(const double& simTime, const unsigned int& simFrame, RDB_OBJECT_STATE_t& item, bool isExtended) {
//下面是加入的代码,当前只是输出坐标,你也可以输出速度
    std::ofstream outFile("output.csv", std::ios::app); // 打开一个名为output.csv的文件,以追加模式写入数据
    if (!outFile.is_open()) {
        std::cerr << "Error: Unable to open output file!" << std::endl;
        return;
    }

    if (item.base.id == 1 || item.base.id == 2){
        outFile << item.base.id << "," << item.base.pos.x << "," << item.base.pos.y << "," << item.base.pos.z << "\n";
    }
    outFile.close(); // 关闭文件,其中id是车辆的id,如果不需要输出特定的车辆就不需要id,一般id=1是主车,然后输出的格式可以参考我这个,也可以自己改
}

改完之后,创建一个.sh文件,代码如下:


#!/bin/bash

compile the RDB client example
g++ -o sample(自己输出的可执行文件) ../VtdFramework/VtdToolkit/src/Common/RDBHandler.cc CollisionTraPkg.cpp(修改后的cpp文件名) -I../VtdFramework/VtdToolkit/include

运行./sh文件,生成可执行文件sample。然后再运行VTD,同步运行./sample。会生成output.csv文件,打印效果如下:

想输出速度,加速度这些就直接改代码输出的参数就行,速度加速度的参数可以看前面的代码,也可以自己去RDB_OBJECT_STATE_t里面看。

(补充:VTD有自带的数据录入工具RDBViewer,也在tools里面,操作相对简单,但自己写的话可控性更强,有任何问题欢迎联系修改)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值