Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
36 changes: 36 additions & 0 deletions PythonClient/airsim/tests/test_magnetometer_covariance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import unittest

import numpy as np

# Import without full client stack when msgpackrpc missing
try:
from airsim.types import MagnetometerData, Vector3r
except Exception:
import sys, types
from pathlib import Path
root = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(root))
if 'msgpackrpc' not in sys.modules:
sys.modules['msgpackrpc'] = types.ModuleType('msgpackrpc')
from airsim.types import MagnetometerData, Vector3r


class MagnetometerCovarianceTests(unittest.TestCase):
def test_default_is_list(self):
m = MagnetometerData()
self.assertIsInstance(m.magnetic_field_covariance, list)
self.assertEqual(m.magnetic_field_covariance, [])

def test_from_msgpack_list(self):
payload = {
'time_stamp': np.uint64(1),
'magnetic_field_body': {'x_val': 0.0, 'y_val': 0.0, 'z_val': 0.1},
'magnetic_field_covariance': [1.0] * 9,
}
m = MagnetometerData.from_msgpack(payload)
self.assertEqual(len(m.magnetic_field_covariance), 9)
self.assertIsInstance(m.magnetic_field_covariance, list)


if __name__ == '__main__':
unittest.main()
3 changes: 2 additions & 1 deletion PythonClient/airsim/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,8 @@ class BarometerData(MsgpackMixin):
class MagnetometerData(MsgpackMixin):
time_stamp = np.uint64(0)
magnetic_field_body = Vector3r()
magnetic_field_covariance = 0.0
# C++ MagnetometerBase::Output uses vector<real_T> (3x3, 9 elements)
magnetic_field_covariance = []

class GnssFixType(MsgpackMixin):
GNSS_FIX_NO_FIX = 0
Expand Down