Split the Python application into a recording part and a visualiser part. Add matplotlib for creating a 3D scatter plot.

This commit is contained in:
HellaJanssen 2025-06-03 18:51:05 +02:00
parent 2a50334473
commit d32433c6a6
5 changed files with 331 additions and 103 deletions

2
.gitignore vendored
View file

@ -194,4 +194,4 @@ cython_debug/
.cursorindexingignore
# Project specific
sensor_data.bin
sensor_recording.bin

View file

@ -6,12 +6,15 @@ name = "pypi"
[packages]
numpy = "*"
scipy = "*"
pyserial = "*"
pymmwave = "*"
pyqtgraph = "*"
pyside6 = "*"
matplotlib = "*"
pyqt5 = "*"
basemap = "*"
mpl-tools = "*"
plotly = "*"
pyserial = "*"
[dev-packages]

306
Pipfile.lock generated
View file

@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "b640a95abf45b1c849908790d83bba056b5090f594b378c220dd83eb80a7383c"
"sha256": "0310dbcb0858095474d9c5adc522dec6c5d9483bc1af3b968a52761d54a10413"
},
"pipfile-spec": 6,
"requires": {
@ -17,6 +17,74 @@
]
},
"default": {
"basemap": {
"hashes": [
"sha256:1cb70fe82ea9f49ee6df2ecafeade1e9ef4d5654a3e5c2b6f1b50bbfcfada33a",
"sha256:20644986a63d57c9d94afb8aba180d5362c1bd08d61d4537aa6221a70e3df762",
"sha256:22793cf731d6cc06e11cf2760fd2875cd18b2980ce1c5ba15f6ebd9e224b1a1d",
"sha256:2985d8d937427a20868dc18cd677bd6a6b4b94efc1b33ab29706d4e0dac418cf",
"sha256:2e198e442bae7ad0d25f529788fcb5802192d844d856fa966f6018a46648a375",
"sha256:353b2d02bd70fd48b3d0e146a028862b7d9e09ffb7995c70151fb80607a2df25",
"sha256:355c984cbde3f098cac49f41e2ab0bbbd49091770eeb58486a001f9ee865f725",
"sha256:3752eec899129a6645170fb1e7a16d0263f8ed2691f9f37916ecb19a2947ab72",
"sha256:427a2050dcfbbde5bb4421f87b3f594852160029f8bbdf8d0fff81ad554de2f4",
"sha256:4fb6763f4f2bb904fea0afbd8194f14af0b01fb52d719be35dd4b423e8d8dca2",
"sha256:500a3d314166057d0b3c065e63147042c996ead1af5d59e319f813b83d4ea220",
"sha256:509bb451ce26f1f7651cc19d27ef049935304c7795a141cfbe05582802554226",
"sha256:51a5e8f2183e7505f4dfbb965048348c2f1e501283b13ad9950409c3da9655f6",
"sha256:5c50fa14a71d115a7614b3a659f14d1e65dbf43dbcbedae0c901058860806f5b",
"sha256:650e9b2170579193cb89bea2c328740fc13c0327b8ea55173490f760d0f04f8c",
"sha256:669d89621f8c7899c061fcf37bc32df24ebeaf5eb0a02b9d9b9896ca6698f6de",
"sha256:6822d3d08c11cdc443e3ed01d61d512e7cf62d4b40bbc1d235f0a898f2c54a7a",
"sha256:6e0a13ba17ca011c55db44fab9210363154bc67482776d3b149a3ef1b4b01bad",
"sha256:7b58e500413dbe655127bbe9da82c9d175eadd130ed66b6a9efea8d46b65881b",
"sha256:7f99f3da41fc3e6bfb726f0fbd3302939a3b03e353ccd2be5ebd7bc09b84c386",
"sha256:84918a6e030adc9aedee92fe622adde8b54cc81051a6ce6723c04987081d92f4",
"sha256:87091beba0e5f6cfc416d1847a582645b2447cd6bf1e8c4ceaabd98d3493ef41",
"sha256:8818fbb5e1133f0955a62ea159a3792124fc06f9b37ea4427612f6def923b711",
"sha256:91d03458343d73f6a5e4d42e79df59cf57eba699094b71ce7c57ec40c8de9f59",
"sha256:a6860ab68a461cd36b6eda5d3973bfa1e3a4fdeaf608e8dd4b324b08e8561eed",
"sha256:a8786f23e3f456ab402b8160efb7b8b1c3780d6b84154dfcfdcd3f0401ef3285",
"sha256:ad169a9ca573752867b136b62ac70cc12ab0ce86e3c69d57e924eaa21b5f5ec7",
"sha256:b196ae9446183deaaedfbd2e757d3edf23225584ce1a47b795cba96febd6acdf",
"sha256:b64f000374a41bf19ac8f8b39cbd2a3b244c79673cd686c9eb507c19daef9e78",
"sha256:b9679c4cacc9af04d9cedb9afd01b9c85bc12df1c8f9685147500e91a33ad5a8",
"sha256:be103ef8c2cb1e7363e3ab48ae633ec2643f0b8a9226d119ec8681096b81335c",
"sha256:c4d80330f00728acfd88be78e0485fd688984db873853f9c75647ec78e653203",
"sha256:c76d77ac21b6fb5008ca0283c6f86d24bf7ed6d0d18867edcfc534748cf348b5",
"sha256:c93beda915b0b68e74a8eec986313e4758a0caa1bd57fee8660362c82f78b26f",
"sha256:d1600576b21a37883992d5bff0c4485e5468a14fe2df7616e08824103b21465d",
"sha256:d273b628adb276200eb9b97f6175f9145b8a280d55d995869ec4bb3c561021c2",
"sha256:d56d7ed588a5ca5d364b42c73c933258d394c10b3c4dc224e7d31bb41a6fbef5",
"sha256:e20adfa6e77f367567d0389fb1da8ed6ea0ca9e871fd9fec7cfdc2de78495b99",
"sha256:e3345544d530248fa4b4fb89f4b9f93219bffa5983b83f00e42b55b5abf615e8",
"sha256:e6b8430a4f73485fcdb766cd2acb9e766cdacc67adca7757e7a2915b685d8461",
"sha256:f448cfeb0090d4f53f1381c8019c3841e621b7b14df3816172ee72385c35b8b0",
"sha256:f88ecab0468121d94e67e9497329cd2207dd2c7bf9a4779433cedc9cf6ab86f4",
"sha256:ff588f63f35d0b58607c9642cc2cf68967b464ee7aa27a6d87db2ec8edc910e2",
"sha256:ff7b29d1920c77da51386d5767674c498bbdea822a1b51fda3d25a3be8c066d2",
"sha256:ffe185bc4be347b0dc8ad68d2085ec699a558357d6019b5daf6465b6bbdf793d"
],
"index": "pypi",
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1' and python_version < '3.13'",
"version": "==1.4.1"
},
"basemap-data": {
"hashes": [
"sha256:0072efd6f12c76e9f35e8fd718360d634b849ba988e74acccaf1ec536275f70b",
"sha256:26e794556c496b26f7714658cdbea5c68cb47d6a8a9fb0e674844fa89c56fc59"
],
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1' and python_version < '4'",
"version": "==1.3.2"
},
"certifi": {
"hashes": [
"sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6",
"sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"
],
"markers": "python_version >= '3.6'",
"version": "==2025.4.26"
},
"contourpy": {
"hashes": [
"sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f",
@ -224,114 +292,106 @@
},
"matplotlib": {
"hashes": [
"sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea",
"sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8",
"sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93",
"sha256:213fadd6348d106ca7db99e113f1bea1e65e383c3ba76e8556ba4a3054b65ae7",
"sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d",
"sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4",
"sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0",
"sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e",
"sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5",
"sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d",
"sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566",
"sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d",
"sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15",
"sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee",
"sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049",
"sha256:86ab63d66bbc83fdb6733471d3bff40897c1e9921cba112accd748eee4bce5e4",
"sha256:8c21ae75651c0231b3ba014b6d5e08fb969c40cdb5a011e33e99ed0c9ea86ecb",
"sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84",
"sha256:a48f9c08bf7444b5d2391a83e75edb464ccda3c380384b36532a0962593a1751",
"sha256:a49e39755580b08e30e3620efc659330eac5d6534ab7eae50fa5e31f53ee4e30",
"sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7",
"sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220",
"sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2",
"sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014",
"sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05",
"sha256:cf4636203e1190871d3a73664dea03d26fb019b66692cbfd642faafdad6208e8",
"sha256:d3bec61cb8221f0ca6313889308326e7bb303d0d302c5cc9e523b2f2e6c73deb",
"sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d",
"sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7",
"sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a",
"sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1",
"sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158",
"sha256:fd5641a9bb9d55f4dd2afe897a53b537c834b9012684c8444cc105895c8c16fd",
"sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b"
"sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67",
"sha256:232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c",
"sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94",
"sha256:50bac6e4d77e4262c4340d7a985c30912054745ec99756ce213bfbc3cb3808eb",
"sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9",
"sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0",
"sha256:6485ac1f2e84676cff22e693eaa4fbed50ef5dc37173ce1f023daef4687df616",
"sha256:6addbd5b488aedb7f9bc19f91cd87ea476206f45d7116fcfe3d31416702a82fa",
"sha256:72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661",
"sha256:7a6769f58ce51791b4cb8b4d7642489df347697cd3e23d88266aaaee93b41d9a",
"sha256:8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae",
"sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6",
"sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea",
"sha256:8f65c9f002d281a6e904976007b2d46a1ee2bcea3a68a8c12dda24709ddc9106",
"sha256:90df07db7b599fe7035d2f74ab7e438b656528c68ba6bb59b7dc46af39ee48ef",
"sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54",
"sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f",
"sha256:abc9d838f93583650c35eca41cfcec65b2e7cb50fd486da6f0c49b5e1ed23014",
"sha256:ac24233e8f2939ac4fd2919eed1e9c0871eac8057666070e94cbf0b33dd9c338",
"sha256:b12ba985837e4899b762b81f5b2845bd1a28f4fdd1a126d9ace64e9c4eb2fb25",
"sha256:b7a2a253d3b36d90c8993b4620183b55665a429da8357a4f621e78cd48b2b30b",
"sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423c9a20fd35",
"sha256:c89ee9314ef48c72fe92ce55c4e95f2f39d70208f9f1d9db4e64079420d8d732",
"sha256:cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71",
"sha256:ce1edd9f5383b504dbc26eeea404ed0a00656c526638129028b758fd43fc5f10",
"sha256:ecd79298550cba13a43c340581a3ec9c707bd895a6a061a78fa2524660482fc0",
"sha256:f51c4c869d4b60d769f7b4406eec39596648d9d70246428745a681c327a8ad30",
"sha256:fb44f53af0a62dc80bba4443d9b27f2fde6acfdac281d95bc872dc148a6509cc"
],
"index": "pypi",
"markers": "python_version >= '3.10'",
"version": "==3.10.3"
"markers": "python_version >= '3.9'",
"version": "==3.8.4"
},
"mpl-tools": {
"hashes": [
"sha256:328dd4a136b4d71ae1872c622928b2de222bfc86b45688beac656ea62c309b30",
"sha256:de49da3ff39fcd226e883dd319198495ec6cd81198b2c619760163217bc3a858"
],
"index": "pypi",
"markers": "python_version >= '3.9' and python_version < '4.0'",
"version": "==0.4.1"
},
"narwhals": {
"hashes": [
"sha256:0ab2e5a1757a19b071e37ca74b53b0b5426789321d68939738337dfddea629b5",
"sha256:d958336b40952e4c4b7aeef259a7074851da0800cf902186a58f2faeff97be02"
],
"markers": "python_version >= '3.8'",
"version": "==1.41.0"
},
"numpy": {
"hashes": [
"sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff",
"sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47",
"sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84",
"sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d",
"sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6",
"sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f",
"sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b",
"sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49",
"sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163",
"sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571",
"sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42",
"sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff",
"sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491",
"sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4",
"sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566",
"sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf",
"sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40",
"sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd",
"sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06",
"sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282",
"sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680",
"sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db",
"sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3",
"sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90",
"sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1",
"sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289",
"sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab",
"sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c",
"sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d",
"sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb",
"sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d",
"sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a",
"sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf",
"sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1",
"sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2",
"sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a",
"sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543",
"sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00",
"sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c",
"sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f",
"sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd",
"sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868",
"sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303",
"sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83",
"sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3",
"sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d",
"sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87",
"sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa",
"sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f",
"sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae",
"sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda",
"sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915",
"sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249",
"sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de",
"sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8"
"sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b",
"sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818",
"sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20",
"sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0",
"sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010",
"sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a",
"sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea",
"sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c",
"sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71",
"sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110",
"sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be",
"sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a",
"sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a",
"sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5",
"sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed",
"sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd",
"sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c",
"sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e",
"sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0",
"sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c",
"sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a",
"sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b",
"sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0",
"sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6",
"sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2",
"sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a",
"sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30",
"sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218",
"sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5",
"sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07",
"sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2",
"sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4",
"sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764",
"sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef",
"sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3",
"sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"
],
"index": "pypi",
"markers": "python_version >= '3.10'",
"version": "==2.2.6"
"markers": "python_version >= '3.9'",
"version": "==1.26.4"
},
"packaging": {
"hashes": [
"sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484",
"sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"
"sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5",
"sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"
],
"markers": "python_version >= '3.8'",
"version": "==25.0"
"markers": "python_version >= '3.7'",
"version": "==23.2"
},
"pillow": {
"hashes": [
@ -420,6 +480,15 @@
"markers": "python_version >= '3.9'",
"version": "==11.2.1"
},
"plotly": {
"hashes": [
"sha256:4fdaa228926ba3e3a213f4d1713287e69dcad1a7e66cf2025bd7d7026d5014b4",
"sha256:f1548a8ed9158d59e03d7fed548c7db5549f3130d9ae19293c8638c202648f6d"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==6.1.2"
},
"pymmwave": {
"hashes": [
"sha256:d622466271beeb3875ed8961589ae0bcb45e00134baec87bff46d49c501222eb"
@ -436,6 +505,39 @@
"markers": "python_version >= '3.9'",
"version": "==3.2.3"
},
"pyproj": {
"hashes": [
"sha256:18faa54a3ca475bfe6255156f2f2874e9a1c8917b0004eee9f664b86ccc513d3",
"sha256:1e9fbaf920f0f9b4ee62aab832be3ae3968f33f24e2e3f7fbb8c6728ef1d9746",
"sha256:2d6ff73cc6dbbce3766b6c0bce70ce070193105d8de17aa2470009463682a8eb",
"sha256:36b64c2cb6ea1cc091f329c5bd34f9c01bb5da8c8e4492c709bda6a09f96808f",
"sha256:38a3361941eb72b82bd9a18f60c78b0df8408416f9340521df442cebfc4306e2",
"sha256:447db19c7efad70ff161e5e46a54ab9cc2399acebb656b6ccf63e4bc4a04b97a",
"sha256:44aa7c704c2b7d8fb3d483bbf75af6cb2350d30a63b144279a09b75fead501bf",
"sha256:4ba1f9b03d04d8cab24d6375609070580a26ce76eaed54631f03bab00a9c737b",
"sha256:4bc0472302919e59114aa140fd7213c2370d848a7249d09704f10f5b062031fe",
"sha256:50100b2726a3ca946906cbaa789dd0749f213abf0cbb877e6de72ca7aa50e1ae",
"sha256:5279586013b8d6582e22b6f9e30c49796966770389a9d5b85e25a4223286cd3f",
"sha256:6420ea8e7d2a88cb148b124429fba8cd2e0fae700a2d96eab7083c0928a85110",
"sha256:65ad699e0c830e2b8565afe42bd58cc972b47d829b2e0e48ad9638386d994915",
"sha256:6d227a865356f225591b6732430b1d1781e946893789a609bb34f59d09b8b0f8",
"sha256:7a27151ddad8e1439ba70c9b4b2b617b290c39395fa9ddb7411ebb0eb86d6fb0",
"sha256:80fafd1f3eb421694857f254a9bdbacd1eb22fc6c24ca74b136679f376f97d35",
"sha256:83039e5ae04e5afc974f7d25ee0870a80a6bd6b7957c3aca5613ccbe0d3e72bf",
"sha256:8b8acc31fb8702c54625f4d5a2a6543557bec3c28a0ef638778b7ab1d1772132",
"sha256:9274880263256f6292ff644ca92c46d96aa7e57a75c6df3f11d636ce845a1877",
"sha256:ab7aa4d9ff3c3acf60d4b285ccec134167a948df02347585fdd934ebad8811b4",
"sha256:c41e80ddee130450dcb8829af7118f1ab69eaf8169c4bf0ee8d52b72f098dc2f",
"sha256:db3aedd458e7f7f21d8176f0a1d924f1ae06d725228302b872885a1c34f3119e",
"sha256:e7e13c40183884ec7f94eb8e0f622f08f1d5716150b8d7a134de48c6110fee85",
"sha256:ebfbdbd0936e178091309f6cd4fcb4decd9eab12aa513cdd9add89efa3ec2882",
"sha256:fd43bd9a9b9239805f406fd82ba6b106bf4838d9ef37c167d3ed70383943ade1",
"sha256:fd93c1a0c6c4aedc77c0fe275a9f2aba4d59b8acf88cebfc19fe3c430cfabf4f",
"sha256:fffb059ba3bced6f6725961ba758649261d85ed6ce670d3e3b0a26e81cf1aa8d"
],
"markers": "python_version >= '3.9'",
"version": "==3.6.1"
},
"pyqt5": {
"hashes": [
"sha256:6cd75628f6e732b1ffcfe709ab833a0716c0445d7aec8046a48d5843352becb6",
@ -501,6 +603,14 @@
"index": "pypi",
"version": "==3.5"
},
"pyshp": {
"hashes": [
"sha256:4caec82fd8dd096feba8217858068bacb2a3b5950f43c048c6dc32a3489d5af1",
"sha256:67024c0ccdc352ba5db777c4e968483782dfa78f8e200672a90d2d30fd8b7b49"
],
"markers": "python_version >= '2.7'",
"version": "==2.3.1"
},
"pyside6": {
"hashes": [
"sha256:0103e5d161696db40d75bfbf4e4b7d4f3372903c1b400c4e3379377b62c50290",

101
recorder.py Normal file
View file

@ -0,0 +1,101 @@
import serial
import time
import datetime
import pickle
from pathlib import Path
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
from parser_mmw_demo import parser_one_mmw_demo_output_packet
# Turning interactive mode on for plotting
plt.ion()
fig = plt.figure()
def configure_sensor(config_file: Path, config_device: serial.Serial):
with config_file.open(mode="rt", encoding="utf-8") as config_fp:
for line in config_fp:
line = line.rstrip("\r\n")
print(f"[CONFIG] writing: '{line}'")
config_device.write((line + "\n").encode())
time.sleep(0.01)
# parser_one_mmw_demo_output_packet extracts only one complete frame at a time
# so call this in a loop till end of file
def parse_frames(data_device: serial.Serial, record_file: Path = Path("sensor_recording.bin")):
sensor_data = bytearray()
bytes_parsed = 0
with record_file.open(mode="wb") as fp:
while True:
read_data = data_device.read(256)
sensor_data += bytearray(read_data)
# parser_one_mmw_demo_output_packet function already prints the
# parsed data to stdio. So showcasing only saving the data to arrays
# here for further custom processing
parser_result, \
headerStartIndex, \
totalPacketNumBytes, \
numDetObj, \
numTlv, \
subFrameNumber, \
detectedX_array, \
detectedY_array, \
detectedZ_array, \
detectedV_array, \
detectedRange_array, \
detectedAzimuth_array, \
detectedElevation_array, \
detectedSNR_array, \
detectedNoise_array = parser_one_mmw_demo_output_packet(sensor_data[bytes_parsed::1], len(sensor_data) - bytes_parsed)
pickle.dump({
"timestamp": datetime.now(),
"parser_result": parser_result,
"header_start_index": headerStartIndex,
"total_packet_size": totalPacketNumBytes,
"detected_objects": numDetObj,
"tlv_count": numTlv,
"sub_frame_number": subFrameNumber,
"detected_points": (detectedX_array,
detectedY_array,
detectedZ_array,
detectedV_array,
detectedRange_array,
detectedAzimuth_array,
detectedElevation_array,
detectedSNR_array,
detectedNoise_array),
}, fp)
# Check the parser result
print ("Parser result: ", parser_result)
if (parser_result == 0):
bytes_parsed += (headerStartIndex+totalPacketNumBytes)
print("totalBytesParsed: ", bytes_parsed)
def main():
config_device = serial.Serial('/dev/ttyACM0', 115200)
data_device = serial.Serial('/dev/ttyACM1', 921600)
configure_sensor(Path("hedgehog.cfg"), config_device)
try:
parse_frames(data_device)
except:
config_device.write("sensorStop\n".encode())
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
exit(0)

20
test.py
View file

@ -2,6 +2,7 @@ import serial
import time
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
from parser_mmw_demo import parser_one_mmw_demo_output_packet
@ -44,7 +45,13 @@ CLIport, Dataport = serialConfig(configFileName) # Enable when reading from sens
def parse_frames():
ax = fig.add_subplot(projection='3d')
ax = fig.add_subplot(projection="3d")
# making the plot axis constant
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_zlim(0, 1)
plt.show()
sensor_data = bytearray()
@ -76,8 +83,15 @@ def parse_frames():
detectedNoise_array = parser_one_mmw_demo_output_packet(sensor_data[bytes_parsed::1], len(sensor_data) - bytes_parsed)
ax.clear()
# Setting axis labels
ax.set_xlabel("X label")
ax.set_ylabel("Y label")
ax.set_zlabel("Z label")
ax.set_autoscale_on(False)
ax.scatter(detectedX_array, detectedY_array, detectedZ_array)
plt.pause(0.1)
plt.pause(0.01)
# Check the parser result
print ("Parser result: ", parser_result)
@ -85,7 +99,7 @@ def parse_frames():
bytes_parsed += (headerStartIndex+totalPacketNumBytes)
print("totalBytesParsed: ", bytes_parsed)
else:
bytes_parsed += 1
# bytes_parsed += 1
continue
if __name__ == "__main__":