我正试图想出一个解决方案来保存不同类型的传感器数据,并按时间顺序进行排序。 例如,我将有:
我需要按时间顺序处理数据。它们是不同的类型/对象。 现在我正在做一些粗俗的事情,比如:
# The actual data structures stored would look something like below
# (with some fields not explicity written out for clarity, the point though is each
# data structure is different).
#
# struct GnssData {
# double time; double latitude; double longitude; };
# struct ImuData {
# double time; double acc_x; double acc_y; };
# struct LidarData {
# double time; double ranges[100]; double angles[100]; };
# We can assume each individual list/array/vector is sorted by time.
# The actual implementation right now is std::vector<LidarData> all_lidar_data; std::vector<GnssData> all_gnss_data; std::vector<ImuData> all_imu_data;
all_lidar_data = [100, 100.1, 100.2, 100.3, 100.4, 100.5]
all_gnss_data = [100, 101, 102, 103]
all_imu_data = [100, 100.01, 100.02, 100.03]
if all_lidar_data[0].time < all_gnss_data[0].time and all_lidar_data[0].time < all_imu_data[0].time:
# process lidar data
# pop all_lidar_data[0]
elif all_gnss_data[0].time < all_lidar_data[0].time and all_gnss_data[0].time < all_imu_data[0.time:
# process gnss data
# pop all_gnss_data[0]
这种方法可以工作,但当没有gnss数据时,它会变得非常混乱,例如,因此列表/数组是空的。因此,在进行时间比较之前,还需要首先检查是否存在gnss数据
理想情况下,我想做的是有一个数组,它按时间顺序包含所有传感器数据,因此
while len(all_sensor_data) > 0:
# process all_sensor_data[0]
# remove all_sensor_data[0]
其中,使用上述示例,所有传感器数据将是:GNSS(100)、IMU(100)、激光雷达(100)、IMU(100.01)。。。惯性测量单元(100.09)、激光雷达(100.1)、惯性测量单元(100.1),…、全球导航卫星系统(101)、惯性测量单元(101)、激光雷达(101)
有没有关于设计模式或数据结构的建议可以解决这个问题?我在C++中编程,但是为了清晰起见,在Python中编写了示例。 编辑:这是一个实时应用程序,因此数据可用时会不断添加
目前没有回答
相关问题 更多 >
编程相关推荐