mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-23 17:23:44 +08:00
Sensor events splitup (#25714)
* PoC of reading sensors via interrupts instead of polling * add Gyro and draft for magn * add more functionality to gpio.cc * change LSM gyro to interrupt * resolve rebase conflict * update BMX accel interrupt impl * add interrupt collector thread to fetch in parallel * change get_event interface to return true on successful read * update BMX gyro interrupt impl * update gpio.h/.cc according to comments * address comments, rename Edgetype enum * Edgetype to EdgeType * update sensor interrupt interface * add error handling, and read fd on trigger * avoid sending empty messages * fix build * use gpiochip * less diff * gpiochip on both edges, but skip falling edge if rising edge is detected * init last_ts with 0 * update sensord testcases * update sensord testsweet * test for pipeline * readd with_process * add null check * move tests update to seperate PR * sensord: improve test coverage (#25683) * update sensord-interrupt testsweet * address review comments * inc stddev threshold * fix format string * add version 0 check again * relax strictness after c3 with bmx tests * relax strictness after tests Co-authored-by: Kurt Nistelberger <kurt.nistelberger@gmail.com> * address PR comments * fix typo * remove 4ms limit, and skip first 0.5sec of data * revert disable_interuppt change to destructor * fix and remove timing skip * make gpiochip generic * sensord port * change from sensorEvents to separated events * fix gyro usage * add splitted sensor tests * modify debug script sensor_data_to_hist.py * refactor get_event interface to remove sensorEvent message type * update locationd to non sensorEvent usage * tmp commit * fix replay * fix accelerometer type * fix sensor to hist debug script * update sensord tests to split events * remove rebase artifacts * port test_sensord.py * small clean up * change cereal to sensorEvents-splitup branch * upate sensorEvents in regen * fix route generation for splitted sensor events * regen cleanUp from sensorEvents change * . * remove light and temp from locationd * add generic init delay per sensor * . * update routes * move bmx gyro/accel to its own channel * adopt sensor tests to bmx channel * remove rebase artifacts * fix sensord test * handle bmx not present * add bmx sockets to regen * . * . * code cleanUp * . * address PR comments * address PR comments * address PR comments * lsm clean up * readd sensorEvents * rever regen.py * . * update replay refs * move channels * fix artifact * bump cereal * update refs * fix timing issue Co-authored-by: Bruce Wayne <batman@workstation-eu-intern2.eu.local> Co-authored-by: gast04 <kurt.nistelberger@gmail.com> Co-authored-by: Willem Melching <willem.melching@gmail.com> Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> old-commit-hash: 29d3ed2ce63a65f793dc0ecb553180a0d0fba03e
This commit is contained in:
committed by
GitHub
parent
90aff8c6fb
commit
fb06d2769f
@@ -7,6 +7,7 @@ get interrupts in a 2kHz rate.
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
import numpy as np
|
||||
from collections import defaultdict
|
||||
|
||||
from tools.lib.logreader import LogReader
|
||||
@@ -23,28 +24,22 @@ def parseEvents(log_reader):
|
||||
lsm_data = defaultdict(list)
|
||||
|
||||
for m in log_reader:
|
||||
# only sensorEvents
|
||||
if m.which() != 'sensorEvents':
|
||||
if m.which() not in ['accelerometer', 'gyroscope']:
|
||||
continue
|
||||
|
||||
for se in m.sensorEvents:
|
||||
# convert data to dictionary
|
||||
d = se.to_dict()
|
||||
d = getattr(m, m.which()).to_dict()
|
||||
|
||||
if d["timestamp"] == 0:
|
||||
continue # empty event?
|
||||
if d["source"] == SRC_BMX and "acceleration" in d:
|
||||
bmx_data["accel"].append(d["timestamp"] / 1e9)
|
||||
|
||||
if d["source"] == SRC_BMX and "acceleration" in d:
|
||||
bmx_data["accel"].append(d["timestamp"] / 1e9)
|
||||
if d["source"] == SRC_BMX and "gyroUncalibrated" in d:
|
||||
bmx_data["gyro"].append(d["timestamp"] / 1e9)
|
||||
|
||||
if d["source"] == SRC_BMX and "gyroUncalibrated" in d:
|
||||
bmx_data["gyro"].append(d["timestamp"] / 1e9)
|
||||
if d["source"] == SRC_LSM and "acceleration" in d:
|
||||
lsm_data["accel"].append(d["timestamp"] / 1e9)
|
||||
|
||||
if d["source"] == SRC_LSM and "acceleration" in d:
|
||||
lsm_data["accel"].append(d["timestamp"] / 1e9)
|
||||
|
||||
if d["source"] == SRC_LSM and "gyroUncalibrated" in d:
|
||||
lsm_data["gyro"].append(d["timestamp"] / 1e9)
|
||||
if d["source"] == SRC_LSM and "gyroUncalibrated" in d:
|
||||
lsm_data["gyro"].append(d["timestamp"] / 1e9)
|
||||
|
||||
return bmx_data, lsm_data
|
||||
|
||||
@@ -54,11 +49,7 @@ def cleanData(data):
|
||||
return [], []
|
||||
|
||||
data.sort()
|
||||
prev = data[0]
|
||||
diffs = []
|
||||
for v in data[1:]:
|
||||
diffs.append(v - prev)
|
||||
prev = v
|
||||
diffs = np.diff(data)
|
||||
return data, diffs
|
||||
|
||||
|
||||
@@ -118,4 +109,3 @@ if __name__ == "__main__":
|
||||
|
||||
print("check plot...")
|
||||
plt.show()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user