Ok got 10% cleaning done

pull/2217/head
Gregor Kikelj 5 years ago
parent 33c26cee27
commit 9f5b5e67fd
  1. 6
      selfdrive/locationd/ubloxd_main.cc
  2. 94
      selfdrive/test/replay_learning.py

@ -30,7 +30,6 @@ void set_do_exit(int sig) {
using namespace ublox;
int ubloxd_main(poll_ubloxraw_msg_func poll_func, send_gps_event_func send_func) {
// std::cout<<"Runnning ublox_main"<<std::endl;
LOGW("starting ubloxd");
signal(SIGINT, (sighandler_t) set_do_exit);
signal(SIGTERM, (sighandler_t) set_do_exit);
@ -43,11 +42,8 @@ int ubloxd_main(poll_ubloxraw_msg_func poll_func, send_gps_event_func send_func)
subscriber->setTimeout(100);
PubMaster pm({"ubloxGnss", "gpsLocationExternal"});
int t=0;
while (!do_exit) {
std::cout<<"Got to here on round "<<t++<<std::endl;
Message * msg = subscriber->receive();
std::cout<<msg->getData()<<std::endl;
if (!msg){
if (errno == EINTR) {
do_exit = true;
@ -57,8 +53,6 @@ int ubloxd_main(poll_ubloxraw_msg_func poll_func, send_gps_event_func send_func)
auto amsg = kj::heapArray<capnp::word>((msg->getSize() / sizeof(capnp::word)) + 1);
memcpy(amsg.begin(), msg->getData(), msg->getSize());
std::cout<<"Message is :"<<std::endl;
std::cout<<amsg.begin()<<std::endl;
capnp::FlatArrayMessageReader cmsg(amsg);
cereal::Event::Reader event = cmsg.getRoot<cereal::Event>();
auto ubloxRaw = event.getUbloxRaw();

@ -1,5 +1,4 @@
import os
import sys
import threading
import time
@ -15,15 +14,6 @@ from tools.lib.logreader import LogReader
ProcessConfig = namedtuple('ProcessConfig', ['proc_name', 'pub_sub', 'ignore', 'command', 'path'])
def wait_for_event(evt):
if not evt.wait(20):
if threading.currentThread().getName() == "MainThread":
# tested process likely died. don't let test just hang
raise Exception("Timeout reached. Tested process likely crashed.")
else:
# done testing this process, let it die
sys.exit(0)
class SimplePubMaster():
def __init__(self, services): # pylint: disable=super-init-not-called
self.sock = {}
@ -35,55 +25,6 @@ class SimplePubMaster():
self.sock[s].send(dat.to_bytes())
def fingerprint(msgs, fsm, can_sock):
print("start fingerprinting")
fsm.wait_on_getitem = True
# populate fake socket with data for fingerprinting
canmsgs = [msg for msg in msgs if msg.which() == "can"]
wait_for_event(can_sock.recv_called)
can_sock.recv_called.clear()
can_sock.data = [msg.as_builder().to_bytes() for msg in canmsgs[:300]]
can_sock.recv_ready.set()
can_sock.wait = False
# we know fingerprinting is done when controlsd sets sm['pathPlan'].sensorValid
wait_for_event(fsm.update_called)
fsm.update_called.clear()
fsm.wait_on_getitem = False
can_sock.wait = True
can_sock.data = []
fsm.update_ready.set()
print("finished fingerprinting")
def radar_rcv_callback(msg, CP, cfg, fsm):
if msg.which() != "can":
return [], False
elif CP.radarOffCan:
return ["radarState", "liveTracks"], True
radar_msgs = {"honda": [0x445], "toyota": [0x19f, 0x22f], "gm": [0x474],
"chrysler": [0x2d4]}.get(CP.carName, None)
if radar_msgs is None:
raise NotImplementedError
for m in msg.can:
if m.src == 1 and m.address in radar_msgs:
return ["radarState", "liveTracks"], True
return [], False
def calibration_rcv_callback(msg, CP, cfg, fsm):
# calibrationd publishes 1 calibrationData every 5 cameraOdometry packets.
# should_recv always true to increment frame
recv_socks = []
frame = fsm.frame + 1 # incrementing hasn't happened yet in SubMaster
if frame == 0 or (msg.which() == 'cameraOdometry' and (frame % 5) == 0):
recv_socks = ["liveCalibration"]
return recv_socks, fsm.frame == 0 or msg.which() == 'cameraOdometry'
CONFIGS = [
ProcessConfig(
proc_name="ubloxd",
@ -91,18 +32,9 @@ CONFIGS = [
"ubloxRaw": ["ubloxGnss", "gpsLocationExternal"],
},
ignore=[],
command="./ubloxd & sleep 10; kill $!",
command="./ubloxd & sleep 20; kill $!",
path="../locationd",
),
ProcessConfig(
proc_name="loggerd",
pub_sub={
"ubloxRaw": ["ubloxGnss", "gpsLocationExternal"],
},
ignore=[],
command="./loggerd & sleep 10; kill $!",
path="../loggerd",
),
]
def valgrindlauncher(arg, cwd):
@ -125,23 +57,33 @@ def replay_process(cfg, lr):
print("Sorting logs")
all_msgs = sorted(lr, key=lambda msg: msg.logMonoTime)
pub_msgs = [msg for msg in all_msgs if msg.which() in list(cfg.pub_sub.keys())]
print(len(pub_msgs))
thread = threading.Thread(target=valgrindlauncher, args=(cfg.command, cfg.path))
thread.daemon = True
thread.start()
time.sleep(10) # We give the process time to start
time.sleep(5) # We give the process time to start
for msg in tqdm(pub_msgs):
pm.send(msg.which(), msg.as_builder())
# for s in pub_sockets:
# pm.send(s, b"")
BASE_URL = "https://commadataci.blob.core.windows.net/openpilotci/"
def get_segment(segment_name, original=True):
route_name, segment_num = segment_name.rsplit("--", 1)
if original:
rlog_url = BASE_URL + "%s/%s/rlog.bz2" % (route_name.replace("|", "/"), segment_num)
else:
process_replay_dir = os.path.dirname(os.path.abspath(__file__))
model_ref_commit = open(os.path.join(process_replay_dir, "model_ref_commit")).read().strip()
rlog_url = BASE_URL + "%s/%s/rlog_%s.bz2" % (route_name.replace("|", "/"), segment_num, model_ref_commit)
return rlog_url
URL = "https://commadata2.blob.core.windows.net/commadata2/a74b011b32b51b56/2020-09-21--10-29-15\
/0/rlog.bz2?se=2020-09-29T13%3A13%3A40Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Da74b011b32b51b56_2020-09-21--10-29-15--0--rlog.bz2&sig=iPiuSfthiYo3xL3tDKoKwr8kQH7odHW%2BqGcCqmnY2EY%3D"
if __name__ == "__main__":
cfg = CONFIGS[0]
URL = get_segment("0375fdf7b1ce594d|2019-06-13--08-32-25--3")
print(URL)
lr = LogReader(URL)
print(str(cfg))
replay_process(cfg, lr)
time.sleep(15)
time.sleep(30)

Loading…
Cancel
Save