Ejemplo n.º 1
0
    def dump_sequence(self, output_path, seq_id):
        sink = DirectorySource(output_path)
        writer = XVIZGLBWriter(sink,
                               image_encoding='JPEG',
                               use_xviz_extension=False)
        writer.write_message(self.get_metadata(seq_id))

        for frame_idx in trange(self._loader.sequence_sizes[seq_id]):
            builder = XVIZBuilder(self._metadata,
                                  update_type=StateUpdate.UpdateType.SNAPSHOT)
            idx_tuple = (seq_id, frame_idx)
            timestamp = self._loader.timestamp(idx_tuple) / 1e6

            self.add_pose(builder, idx_tuple, timestamp)
            self.add_lidars(builder, idx_tuple)
            self.add_cameras(builder, idx_tuple)
            self.add_objects(builder, idx_tuple)
            builder.time_series("/vehicle/autonomy_state")\
                .timestamp(timestamp)\
                .value("autonomous")

            data = builder.get_message()
            writer.write_message(data)

        writer.close()
Ejemplo n.º 2
0
class TestTimeSeriesBuilder(unittest.TestCase):
    def setUp(self):
        self.builder = XVIZBuilder()
        setup_pose(self.builder)

    def test_null(self):
        builder = XVIZTimeSeriesBuilder(None)
        data = builder.stream('/test').get_data()

        assert not data

    def test_single_entry(self):
        self.builder = XVIZBuilder()
        setup_pose(self.builder)

        self.builder.time_series('/test')\
            .timestamp(20.)\
            .value(1.)

        expected = [{
            'timestamp': 20.,
            'streams': ['/test'],
            'values': {
                'doubles': [1.]
            }
        }]
        data = self.builder.get_data().to_object()
        assert json.dumps(data['time_series'],
                          sort_keys=True) == json.dumps(expected,
                                                        sort_keys=True)

    def test_multiple_entries(self):
        self.builder.time_series('/test')\
            .timestamp(20.)\
            .value(1.)

        self.builder.time_series('/foo')\
            .timestamp(20.)\
            .value(2.)

        expected = [{
            'timestamp': 20.,
            'streams': ['/test', '/foo'],
            'values': {
                'doubles': [1., 2.]
            }
        }]
        data = self.builder.get_data().to_object()
        assert json.dumps(data['time_series'],
                          sort_keys=True) == json.dumps(expected,
                                                        sort_keys=True)