This is my sample code.
def read_heading(path):
input_type = sl.InputType()
if isinstance(path, str):
input_type.set_from_svo_file(path)
else:
input_type.set_from_svo_file(str(path))
print('reading file:', path)
init = sl.InitParameters(input_t=input_type, svo_real_time_mode=False, coordinate_units=sl.UNIT.METER)
cam = sl.Camera()
status = cam.open(init)
if status != sl.ERROR_CODE.SUCCESS:
print(repr(status))
return None
n_frame = cam.get_svo_number_of_frames()
headings = []
sensors_data = sl.SensorsData()
for idx in tqdm(range(0, 20, 1)):
# cam.set_svo_position(idx)
status = cam.grab()
if status != sl.ERROR_CODE.SUCCESS:
return
cam.get_sensors_data(sensors_data, sl.TIME_REFERENCE.IMAGE)
# imu_data = sensors_data.get_imu_data()
# pose = imu_data.get_pose()
magnetometer_data = sensors_data.get_magnetometer_data()
headings.append(magnetometer_data.magnetic_heading)
cam.close()
return headings
I read the API ref. and see that the sensors_data.get_magnetometer_data()
is not marked as unreadable from svo file.
however, the return data is all zeros 0.0
.