From 59b4477fb5c3c24e3d859aa395f1d0c0f0e7ec6d Mon Sep 17 00:00:00 2001 From: Cyrille Nofficial Date: Sun, 17 Oct 2021 19:16:37 +0200 Subject: [PATCH] feat(dkimport): add command to import data from donkey parts --- dkimpt/import.go | 166 ++++++++++++++++++ dkimpt/import_test.go | 87 +++++++++ .../cam/image_array_000000000.jpg | Bin 0 -> 4026 bytes .../cam/image_array_000000001.jpg | Bin 0 -> 3999 bytes .../cam/image_array_000000002.jpg | Bin 0 -> 3476 bytes .../cam/image_array_000000003.jpg | Bin 0 -> 2934 bytes .../cam/image_array_000000004.jpg | Bin 0 -> 2676 bytes .../cam/image_array_000000005.jpg | Bin 0 -> 2529 bytes .../cam/image_array_000000006.jpg | Bin 0 -> 2438 bytes .../20191012_111416/record_000000000.json | 1 + .../20191012_111416/record_000000001.json | 1 + .../20191012_111416/record_000000002.json | 1 + .../20191012_111416/record_000000003.json | 1 + .../20191012_111416/record_000000004.json | 1 + .../20191012_111416/record_000000005.json | 1 + .../20191012_111416/record_000000006.json | 1 + .../cam/image_array_000000000.jpg | Bin 0 -> 6384 bytes .../cam/image_array_000000001.jpg | Bin 0 -> 6355 bytes .../cam/image_array_000000002.jpg | Bin 0 -> 6360 bytes .../cam/image_array_000000003.jpg | Bin 0 -> 6364 bytes .../cam/image_array_000000004.jpg | Bin 0 -> 6355 bytes .../cam/image_array_000000005.jpg | Bin 0 -> 6366 bytes .../cam/image_array_000000006.jpg | Bin 0 -> 6368 bytes .../cam/image_array_000000007.jpg | Bin 0 -> 6353 bytes .../20191012_122633/record_000000000.json | 1 + .../20191012_122633/record_000000001.json | 1 + .../20191012_122633/record_000000002.json | 1 + .../20191012_122633/record_000000003.json | 1 + .../20191012_122633/record_000000004.json | 1 + .../20191012_122633/record_000000005.json | 1 + .../20191012_122633/record_000000006.json | 1 + 31 files changed, 267 insertions(+) create mode 100644 dkimpt/import.go create mode 100644 dkimpt/import_test.go create mode 100644 dkimpt/testdata/20191012_111416/cam/image_array_000000000.jpg create mode 100644 dkimpt/testdata/20191012_111416/cam/image_array_000000001.jpg create mode 100644 dkimpt/testdata/20191012_111416/cam/image_array_000000002.jpg create mode 100644 dkimpt/testdata/20191012_111416/cam/image_array_000000003.jpg create mode 100644 dkimpt/testdata/20191012_111416/cam/image_array_000000004.jpg create mode 100644 dkimpt/testdata/20191012_111416/cam/image_array_000000005.jpg create mode 100644 dkimpt/testdata/20191012_111416/cam/image_array_000000006.jpg create mode 100644 dkimpt/testdata/20191012_111416/record_000000000.json create mode 100644 dkimpt/testdata/20191012_111416/record_000000001.json create mode 100644 dkimpt/testdata/20191012_111416/record_000000002.json create mode 100644 dkimpt/testdata/20191012_111416/record_000000003.json create mode 100644 dkimpt/testdata/20191012_111416/record_000000004.json create mode 100644 dkimpt/testdata/20191012_111416/record_000000005.json create mode 100644 dkimpt/testdata/20191012_111416/record_000000006.json create mode 100644 dkimpt/testdata/20191012_122633/cam/image_array_000000000.jpg create mode 100644 dkimpt/testdata/20191012_122633/cam/image_array_000000001.jpg create mode 100644 dkimpt/testdata/20191012_122633/cam/image_array_000000002.jpg create mode 100644 dkimpt/testdata/20191012_122633/cam/image_array_000000003.jpg create mode 100644 dkimpt/testdata/20191012_122633/cam/image_array_000000004.jpg create mode 100644 dkimpt/testdata/20191012_122633/cam/image_array_000000005.jpg create mode 100644 dkimpt/testdata/20191012_122633/cam/image_array_000000006.jpg create mode 100644 dkimpt/testdata/20191012_122633/cam/image_array_000000007.jpg create mode 100644 dkimpt/testdata/20191012_122633/record_000000000.json create mode 100644 dkimpt/testdata/20191012_122633/record_000000001.json create mode 100644 dkimpt/testdata/20191012_122633/record_000000002.json create mode 100644 dkimpt/testdata/20191012_122633/record_000000003.json create mode 100644 dkimpt/testdata/20191012_122633/record_000000004.json create mode 100644 dkimpt/testdata/20191012_122633/record_000000005.json create mode 100644 dkimpt/testdata/20191012_122633/record_000000006.json diff --git a/dkimpt/import.go b/dkimpt/import.go new file mode 100644 index 0000000..9830db7 --- /dev/null +++ b/dkimpt/import.go @@ -0,0 +1,166 @@ +package dkimpt + +import ( + "encoding/json" + "fmt" + "github.com/cyrilix/robocar-tools/record" + log "github.com/sirupsen/logrus" + "io/ioutil" + "os" + "path" + "regexp" +) + +/* donkey import*/ + +var ( + camSubDir = "cam" + camIndexRegexp *regexp.Regexp + recordIndexRegexp *regexp.Regexp +) + +func ImportDonkeyRecords(basedir string, destDir string) error { + dirItems, err := ioutil.ReadDir(basedir) + if err != nil { + return fmt.Errorf("unable to list directory in %v dir: %v", basedir, err) + } + + imgCams := make([]string, 0) + records := make([]string, 0) + + for _, dirItem := range dirItems { + log.Debugf("process %v directory", dirItem) + camDir := path.Join(destDir, dirItem.Name(), camSubDir) + + err := os.MkdirAll(camDir, os.FileMode(0755)) + if err != nil { + return fmt.Errorf("unable to make dest directories %v: %v", camDir, err) + } + + imgDir := path.Join(basedir, dirItem.Name(), camSubDir) + imgs, err := ioutil.ReadDir(imgDir) + if err != nil { + return fmt.Errorf("unable to list cam images in directory %v: %v", imgDir, err) + } + + for _, img := range imgs { + idx, err := indexFromFile(camIndexRegexp, img.Name()) + if err != nil { + return fmt.Errorf("unable to find index in cam image name %v: %v", img.Name(), err) + } + log.Debugf("found image with index %v", idx) + records = append(records, path.Join(basedir, dirItem.Name(), fmt.Sprintf(record.RecorNameFormat, idx))) + imgCams = append(imgCams, path.Join(basedir, dirItem.Name(), camSubDir, img.Name())) + } + + err = copyToDestdir(destDir, dirItem.Name(), &imgCams, &records) + if err != nil { + log.Warnf("unable to copy files from %v to %v: %v", path.Join(basedir, dirItem.Name()), destDir, err) + continue + } + } + + return nil +} + +func init() { + re, err := regexp.Compile("image_array_(?P[0-9]+)\\.jpg$") + if err != nil { + log.Fatalf("unable to compile regex: %v", err) + } + camIndexRegexp = re + + re, err = regexp.Compile("record_(?P[0-9]+)\\.json$") + if err != nil { + log.Fatalf("unable to compile regex: %v", err) + } + recordIndexRegexp = re +} + +func indexFromFile(regex *regexp.Regexp, fileName string) (string, error) { + matches := findNamedMatches(regex, fileName) + if matches["idx"] == "" { + return "", fmt.Errorf("no index in filename") + } + return matches["idx"], nil +} + +func findNamedMatches(regex *regexp.Regexp, str string) map[string]string { + match := regex.FindStringSubmatch(str) + + results := map[string]string{} + for i, name := range match { + results[regex.SubexpNames()[i]] = name + } + return results +} + +func copyToDestdir(destdir, dirItem string, imgFiles *[]string, recordFiles *[]string) error { + err := copyJsonFiles(destdir, dirItem, recordFiles) + if err != nil { + return fmt.Errorf("unable to copy json files in %v directory: %v", destdir, err) + } + + err = copyCamImages(destdir, dirItem, imgFiles) + if err != nil { + return fmt.Errorf("unable to copy cam files in %v director: %v", destdir, err) + } + + return nil +} + +func copyCamImages(destdir, dirItem string, imgFiles *[]string) error { + for _, img := range *imgFiles { + imgContent, err := ioutil.ReadFile(img) + if err != nil { + return fmt.Errorf("unable to read img: %v", err) + } + + idx, err := indexFromFile(camIndexRegexp, img) + if err != nil { + log.Warningf("unable to extract idx from filename %v: %v", img, err) + continue + } + imgName := path.Join(destdir, dirItem, camSubDir, fmt.Sprintf("image_array_%s_%s.jpg", dirItem, idx)) + + err = ioutil.WriteFile(imgName, imgContent, os.FileMode(0755)) + if err != nil { + return fmt.Errorf("unable to write image %v: %v", imgName, err) + } + } + return nil +} + +func copyJsonFiles(destdir, dirItem string, recordFiles *[]string) error { + for _, r := range *recordFiles { + content, err := ioutil.ReadFile(r) + if err != nil { + return fmt.Errorf("unable to read json content: %v", err) + } + idx, err := indexFromFile(recordIndexRegexp, r) + if err != nil { + log.Warningf("unable to extract idx from filename %v: %v", r, err) + continue + } + + var rcd record.Record + err = json.Unmarshal(content, &rcd) + if err != nil { + return fmt.Errorf("unable to unmarshal record: %v", err) + } + camName := fmt.Sprintf("image_array_%s_%s.jpg", dirItem, idx) + rcd.CamImageArray = path.Join(camSubDir, camName) + + recordBytes, err := json.Marshal(&rcd) + if err != nil { + return fmt.Errorf("unable to marshal %v record: %v", rcd, err) + } + + recordFileName := path.Join(destdir, dirItem, fmt.Sprintf("record_%s_%s.json", dirItem, idx)) + err = ioutil.WriteFile(recordFileName, recordBytes, os.FileMode(0755)) + if err != nil { + return fmt.Errorf("unable to write json record %v: %v", recordFileName, err) + } + } + return nil +} diff --git a/dkimpt/import_test.go b/dkimpt/import_test.go new file mode 100644 index 0000000..8964a7a --- /dev/null +++ b/dkimpt/import_test.go @@ -0,0 +1,87 @@ +package dkimpt + +import ( + "encoding/json" + record2 "github.com/cyrilix/robocar-tools/record" + log "github.com/sirupsen/logrus" + "io/ioutil" + "os" + "path" + "testing" +) + +func TestImportDonkeyRecords(t *testing.T) { + destDir, err := ioutil.TempDir("", "test-import") + if err != nil { + t.Errorf("unable to generate destdir for test") + } + defer func() { + err := os.RemoveAll(destDir) + log.Errorf("unable to delete tmpdir %v: %v", destDir, err) + }() + + err = ImportDonkeyRecords("testdata", destDir) + if err != nil { + t.Errorf("unable to import files: %v", err) + } + + cases := []struct { + setDir string + expectedDir int + expectedRecords int + }{ + {"20191012_111416", 1, 7}, + {"20191012_122633", 1, 8}, + } + + for _, c := range cases { + + files, err := ioutil.ReadDir(path.Join(destDir, c.setDir)) + if err != nil { + t.Errorf("[%v] unable to list %v content: %v", c.setDir, destDir, err) + } + + dirNames := make([]string, 0) + fileNames := make([]string, 0) + for _, f := range files { + if f.IsDir() { + dirNames = append(dirNames, f.Name()) + } else { + fileNames = append(fileNames, f.Name()) + } + } + + if len(dirNames) != c.expectedDir { + t.Errorf("[%v] %v dirs found, wants %v", c.setDir, len(dirNames), 1) + } + if len(fileNames) != c.expectedRecords { + t.Errorf("[%v] %v files found, wants %v", c.setDir, len(fileNames), 15) + } + + for _, jsonFile := range fileNames { + content, err := ioutil.ReadFile(path.Join(destDir, c.setDir, jsonFile)) + if err != nil { + t.Errorf("[%v] unable to read file content of %v: %v", c.setDir, jsonFile, err) + continue + } + var record record2.Record + err = json.Unmarshal(content, &record) + if err != nil { + t.Errorf("[%v] unable to unmarshal file %v with content %v: %v", c.setDir, jsonFile, content, err) + continue + } + if record.UserAngle == 0. { + t.Errorf("[%v] user_angle field not initialized for %v file: %v", c.setDir, jsonFile, content) + } + camPath := path.Join(destDir, c.setDir, record.CamImageArray) + camFile, err := os.Stat(camPath) + if os.IsNotExist(err) { + t.Errorf("[%v] cam image %v doesn't exist for record %v: %v", c.setDir, camPath, jsonFile, err) + continue + } + if camFile.Size() == 0 { + t.Errorf("[%v] cam image %v is empty", c.setDir, camFile.Name()) + } + } + } +} diff --git a/dkimpt/testdata/20191012_111416/cam/image_array_000000000.jpg b/dkimpt/testdata/20191012_111416/cam/image_array_000000000.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec45089d92dbaf28455c003254cf936636eb0b8a GIT binary patch literal 4026 zcmbW3cU03&m&bo0gbtxg4-k~1C@mC0q99d}UZbLP6hZ1kO(-HoAp}7XkzNu3mCmCm zAiXF^mm&gE1f(MbNPe5=efR91vw!XGoip>#+%tDRbLW0%zzOgNz-g>+qz^zK005yi z0GtAJ0VW0pMg|xYBO@a-GZPCNFFPA6E1MuU51dz22q7jaBqAa%bzWLr@*Gk`L`F^a zoPwf?iV8wnz0(VvwsXT3;!trL7~%Uq-A8~R8XpF>KYeyuj=U= z7#bN{S=-p!**iG8xVpJ}czWFp2n-7TD$k_=Loyw5RDA&oZ-~XBQR~mz0(f zNw2DFYU}D78vlOxsja=Ev#YzOcW8KIbZmU$+vME*!q3H}<&|Hn+dI2^`+p7&$w&Wi zK>+B#v1sGJ!Ttvq7mbUKo*qii_zxF^?k`%0a?!&i6dAa$STNr4E|2wdl{}vv?Au$BSZ)6#sHLK3pRK1(_>pry{>lMP9w6J`MrAw%2INf)^9t3Kq$1-Y{FuJl|1k$vhgTR_O3@#JR;!<(kxW|Yev@JH) zs&yHSlHPeW_&d~YV%wHAPJItCcll9Iy^3%ZUJbdH9Vf-E*&fC(PSpZ|bHim6%6p>L z0y^0vG5C9N-tN$8T*r0zil<;$H#5KIi%l6hTqX!OZRclR42()1(z(944<(+w;syba zQ8gS}6A0*1%oJb`QuBW3vT;1`7b!x6fh7_8W~^^vR2*|$5Gg2{z) z=|&J>S#rrj(xU8pET)Hrp*$VcLnj3l&RC2eudV3}7KcU7WaKtDCpTVHnBgUjgyXkf z>uhu`7{1$a6)wV>rzGzk{2@i4N%iU9uW^r6U^fpUJAzNy)=$37%se9|4arE~fjh%1 zF-dtO1Bfy-O5FxgVw0vT4hdl_8+ztG9SkoQN(n7`#7{`!GdPnU^I_zp3iIa)-*S2Aq_>Wi zyKTQq*HnEVC5g)$*s16nUjFSgCql)^fq)WDDAy#7Q?2)LOyq#mP(e2*vH{YQzFZw0 zM|FI$~Z_ zUV{VNCL|W`T-vS4;?UaNKI{w^dK7qw(y!fE}I_`CohJFO3ex$HL?m_fvCK zlds!CY>d9Fv&EnjBfX?O0u=?fqjT-4FF(7isyTT!a>iU$j2J>#jlkR9%-Q)Yb9G5Y zxg|`-j-O=r+1LM0$Vu%e@wFPEHeq?W^;FJ;&PP2F)b{Aw%KuG~JqXCpm|&8j zEqj0~2wZH4K2s<{nRx0+Ev?Sh&z%o_myk-6qEI{t+_2;d`|MXEn%=NXtEX~@{>>GI zx?6n=UR4L?30-s16m}yn@(ey88z2aa91B_d>_fa|j&R0-CR%SJlf{))W-}c}PK`!W z1JkHG)J2%6jUn(x=y!i<3C{ILEw#zo0!Rt++O!{ zG_jn;FR1Y^0TkaKmjtu#{5=O&t@*5}1j#-ItdU(97EQq|+ob%maJwb_kg&gxz&m>3 zBxT&JG7>>xd)U^^>HMA&q5cjC;5qWLN|h*2wr3`rIFuBhAk3(By3RvW{eLV)YH=#^ zl*PSQ(bOKLn+6BWQ{sD-XA>T-KT=LSwVc?TRjj0O26pQwTb!n(SY-|l{nLxkihp{k zx<8T@eymug)Ufagc6BBI1n7|XVGz)HmHo0O*3`f3Ad|7rtbnGju2hwW9&OT7K5kjt z9P_8p(~kaUQR}XhdA9heL2Pr0(LKPB-laej4e6nTkdT(+cHA5j$+&?LYI=)Xe+;Wb z@qnfo%J`esdvz#0+h7;7wR|FX-zb8nkhnevIw}+dM!Yr?FBrq$CF1)*AgWkmEWZob z*KncYgb3Kn24h(jtcs$_(PUb6l2{`^V0kQx+p5o{-V5oBbSj{x_D>YLvUIG@@^3 z!OMtpQlSX5UB4M|&BU!eFw+aSZ^t@NwP`hBGAA~vd%PA*HY3t7Z6n~zSGV`Ncdgc@ zvA8c~N}Q4(%$oAf|!) zv!H-6b;f5Omr2x^>U9?~zk~L!y9YIIc``Mb$&b@rtHKE1MWUu-WK&>L5#P>74uC+# z;HvE?^3JZI|LhSDF7BGd&ItTE`n=iNWx?mWs8|Z^(OL=t0ipXvK51TN+vpXT{M&Xl zp1h{tC#1pBzT29=sqWDn*O5*E+3uU)DFBJ-*B;6V-4sBbK%^Ga7gH9f1N)_cEk}d! zo(Pff1NWU8}`c0_Js-{=ZJxn_P}7$6iZ5^x}mRI{h57FMIk3ja{!w z%Q+A&ztQQEb^cP<2Z{8}dC%IZa0zNv_b&YJ#aH({4**R~2naxK;ReQ@{XEquKY~w> zG`;yqQ5cfK3!|1DnL|a~7Z?ix_{a{f#O|F``{mVYzu%LWxtDx48UFC+>0fZTlE4)w#8kRrS^+ zhnDr$4orhn=Bmt2{N#t{4?H10oLg;GKd6PZKNcaPaFn&d#|e%@ik@T5adf0C#CQkE zU&J@G{eIK7sktdp%3@b`V9xwTi&R4F#PSxY^7@Jm=A$_!+*}D}GLw&P%k(AvvQ6LM zz`@%`!$YC9HF@)WSW%cmw4blwrJbcz_AIjJ=LuJ;PW9sbRKqSx76^2{nN{rz$h(ab zGj*HUP{6ziK8@cgg`Sq~jW)CMrb+z$u7UD4&R;?-&kXzSrW#DD?_f)d>a0{7f-aaB zi=W7F-K*$Yy~qE%;qKcqin26cz4kG}`QA&7r|ten20myjQ-~k_NE6|}i>;HN^1h1x z?Ofi=RG$zwEswUjPhtXr(sT%Y&J68O6Dk)X%w3H|-2j1Zo!MzF<2MZ!li{RN*x^De zF2FjfW8t{+uFMZAL(QVtt-{x)}7IE$zeq8`7*2I+DG8#jIzVFQzW3LT%Wt~113=lYnSrBecMWG z8-@1;?uhc~8U6JfWj|ak&fBdWY3l{Q3Rpq5lE)9Yk2s6A_&Cyv{Vc{K6W}tpvazo;a&uxZb=pdqrL0@ zWFA>(6Q@wcu~m{$YJ(@S)3)xV-*2{GSZNu1$o^4afLK9sFp9%`^@51zya;-n@WEQ4 zvKB2DY54lCD)MH79|*|b=~}$W?Q!SNZO_}LXV>Mhk1Ad7GtQzc=ggj!&GLCMtOaRL gkOYIFkND1ZifQm{6YnhQMzY_~BX>3PMuFe{13jFa`~Uy| literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_111416/cam/image_array_000000001.jpg b/dkimpt/testdata/20191012_111416/cam/image_array_000000001.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae16e31d81b717d7273357feeb625e1dce285ea1 GIT binary patch literal 3999 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 OGCO7rDyw+t-~R&+7MctI literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_111416/cam/image_array_000000002.jpg b/dkimpt/testdata/20191012_111416/cam/image_array_000000002.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62e06376f30e00c5ce81ded945bd438a1b826acc GIT binary patch literal 3476 zcmbW%c|6qLzX$No7-JBP$q+`yGT9YltCW##EM=?-l`JK@vCG#MS!1#*YY0P;?D-0% z$i8No5ZQMc4Tf=jf4}><_wl%Y-Fsi>an3*I{Wy>FJm>LvACDdX1UU4xb+rKy2mnAQ z12`rF8UQmB6O;+U4242jSeRMa5bSKHPO zNXyD8C@7%BE?>KZxq3lf0rSrxAQl!Dwo`08?Cd-kA$}pu|2fAk0Gt^J1@gckVSoV+ z0>eSaZ2;=zo)FN#0{mw{3}8kG6O@^S_0&m04F|vg0)rVC!4L=|<4JYU$v(gchnx|T zyUxUEWCIl@ATVKxub4&DD_gmY2e#1iww_N|Sh>&g@baA(6%&_`R8Uk>zI6GDhNhM_ zPDfYI#MJDT`E3hJJNpL@9UeJ4d3pQz`uPVu4v%;m85JE9o0OcAnwFmN;$?n8;p?K} z5>n~=s_L5By84C>pFX#J`P$y`t#fc_c;x%&*!aZE?60}`g~g@imF=D1l-)nnz5RoK zTp$4aZ`R5BZ`l8E!B1QajErDL=szwHgWt&n!x# zT%S|!kFMa@JtMN4M#-r=Vu=%?CW$)*JP$CF6(1CL^f< z0tHQg(#$wNrgGvmZ0HymwdD9AUxbV?FWG%FuD8DenA7;Ou(_SgZTB^BdpkwRZbT(J5USi`QDc_v` z!jF@mKL7phAV}(Yobf5;wD#~0#q%wk3;<(d3!OUD-(T$~AyDPx;96=WftD4KkmUch z`g1t-j<-|C)@bbc!4!?lj;>yjsJ5KF3Qh0o5f>)ko9>eHxBaMG1+lp$ zee#;~wpX9~=>*YOQ;ijU?_>GmJ6no#oM7@@;oebTcQ@IQvlphmX}Qzz%N=%R~TMIyJmNzCmx%&$@z?miNty%W)!HfcGM+-++$ zcf?921ZU%yq;f(VkIL=n?`P8FD62=0z`@^*{%CoPkO?RglS$RRSb_LNizHQYhD`bf z>DvKojh~R=wPogLP5T$90iCi>1_(c%(%Q}5Yoy*iJ2g%{T4I!EO$HU2Uz?KS$3xyX z`x5lymh0g9lX*4T8?+@*=jr8uh}yGCUY;m-qiIEkM8k&7cy8ZxMLVS0B<>9qcmGwZ z9%#Z#Xlbm*LCEk9}uzI66TGg7Vw##Y;tdE95?oAm%^%?m=hXJep( zw2^4BUZLdq$xh{0loFW^{iry)Mc40(l|>B#HjxI0Wr6+j*M)wgF~w(2qpdBMugaC_ z7TyWUxh2}Ek%iiS7=)|w)Kw|5N}2z)|G?U4)v9&}J@6*l^9=^}8p#$8nHI}Ca*99f z&=;u{e&(J+^X2kfc~BQoc}*&_F)K|!0477*r)Q_{8*3($-Cj`Z*cJm}Hz=r3y7$i( zy!2vzd>K8sdhE_;+acxY=X0i<->T7ebz%o53{rK|NYMbVD%Hsqq$1Lc#`Hs?jawH< z3oSW#N%U8LSFu%b3|NMp6~0SlvKxIF)O$DOv8hr8J<@t4UU$ULp+=Bfv}JW7#)|sl z(CJbiL*dt%149rp5-VfgppxDG@CIM8gJ(#!eMIhuHq*wK`c#-*B1JeXe#lK$gza&B z@rtA&U5gS&R*CBWu6H@X5kWZA-zA-IWcOlhn2Cf9X7J7Yxd#P@TVAZmb*FxRA2WlT zdTU_eO0Ae8E(pwqqKUpO*aUf#yC6)|z50&QGFc4E*@9;y3X8UX2^`e+u}OKe-paA4-5qx?vKLTROkGA%sgd>>NGkI zSkZR#r-K7B!Al_r!>cV<$$>W0$&@_i+I`=F$dzE2V9z+KL9Yb{;QU%#YabH6nc&j$)X~ zRyZEIoK9dRRv4)vYxe`yuFm~I_ z_VsW+2$_6~#4%=k>pXd2b0_YF%Q#&oEMF40u%bw*B3LX<9_`Le5Y8e|L|)$=+|=x> z=+8~lqOY=&Jjf3cj0U0wD*}h<@sXZsmLpmF}=wi!IpfoqnFb{e+BjM{RRp zS$&42_3YQeo#={YF=7NdJZx7XG#(p7DkU~>964?W9|O0NG^i$kiT5_`+dTEF<2HSz z*O6$$a&@+)kNN)>L!8ID)yxGvNA)?yE*t zm&4wi;rAYLbndh9?~`VMbH17DbN5z%%i!F`Rfv-*!8OjC5V86N zlEt&XzqcKBcsA=XS(_>=xfEiXYFmPsTZz2WseJTJF`o( ztTe=^Iz<+!sXMsU9$6{1;GWsD2631Tl;zSX*Ho*~*hL@I%;%_{GQD#bPTQ&`eu`+P@ovG%G7FQ(*Zv|{kd)gzUy zj?(Rqc6TTuOrhtBzRZ7xdE}DHlu7h>ghp8hR!H9|!wfa$LT4yS)tLU&l<2kB&+x&{ zp8|50fM%Df?83{XEPcsHIjUl^ZOFi4)-k}zr>2UU!pjGS8QckYyPRw^=7m%)OUC0r z;A>>h;2VfeFsZ%4t|PU=b04cC%o9VrRU2N5gi(r><%~nN6~1bArQV__bZxf%5XS1F>_nyP!aJl5tTStNKUcilQA$T7^)*sp||Cy;BRFL<;=bW*!w2*yvgR~Etk z4w)o%?x;rQw@wrPJOc3byVk~czb6E>lG>RUC(@Rc$G=gSGI*0cD^W(KH4v=r6Ppn< zZ`pf~m^H_A_~MOv>kU=MXp7MRn*^+&0$W@2JSRNSR*05V`T{0Qb7T4MI{&lKldq br%FOitO=!ltYZm6UM}0RGoy&mp literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_111416/cam/image_array_000000003.jpg b/dkimpt/testdata/20191012_111416/cam/image_array_000000003.jpg new file mode 100644 index 0000000000000000000000000000000000000000..87998f1e6ccc32250a8dab531994ef67df395c9a GIT binary patch literal 2934 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 D=!a3b literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_111416/cam/image_array_000000004.jpg b/dkimpt/testdata/20191012_111416/cam/image_array_000000004.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2d98715e84c3d3fb385aee8d2b0af37d84f5dea GIT binary patch literal 2676 zcmbW!XH?T!8VBHi3WQ+jfq@Wu6hTB12)&9_kskVtlF)*vfFoc)3{}V=5_*$>w1lp} z1Q>N_QY}ayDT9C@AVm-u%E;o(p51fy)9(K6x$l?vJ@?+{+@tZM8Gzr?)WQ@1fdBw> zynv$#z!>1-a-vU=RcXhC(j$mrPkZ|~mE&dq;VSp2xO{CRWh%l6LhAA9@XTp$4Q zH|x0m4f_w5z_AMqg+idPZ!Qox^ms!Apd2z-PC+9(m}iiXEG~)*d7fVMxD76+YQG^& z41UWkf>C>a^7A*^U$XxW7X5$8{ssHD>m7iAfQ~;8A^;cwpUN^XmV;G?w#!Yfe(;`O zv1Xf0PK4PFW|a5_?5v$h?MxP(c&(@<<`~pPu9_n+u=% z4wD{-r51~YRhij2`VRE`I|>OysW$33iooC_Ufri(JZ&vB&CNvRX?|%+AkEel!+71_ zmtb;Hqh;~-&T=W2oX1`B=hCd%d*3@0m2sq}WM03`q9@qvg%gO)A#yR+WS~t?0g+d{ zsVSR*Ic;hnUXSr%^jc({n^0wvl6&o1c$sK{?Q=>j!WUh4Z zjka9k>#XGxu>gpw$S=Fm+z7?%c0)LZI`f2zs!*X%` z$L6ZM(CG*Dd@Dk8}Q3Z}bi-ZGePRKk0OLu&VC z3$tv!lTre^b4`f6T#Hf7pE5IBJE) z;y&k~!wXvexq^|_-wV-=hJaXFmUP5a~v+raA(P3FW_*UdqWs%uN{@{n*zKU_cpWH>iq^OOB_ zI#&R_CTQsuAq(UZzVIk@BQ5D*_&W`>h(sMZp^nN4duBK6JX`<23?9|$6(3mb$KO>iSj0h8J6OMH1k^YLm+~3Fe z;Y%y~J8Y8UJ%s9XWxHiW`35VLv}EoT{@lr9Q=#JhIAUgp`9a64yZU@;M29YakfBKG z`P3_4Dg&OzOI)%|`*59tVhgRsNCa8I*yzRDyOc0lLhnKUrG&K}IfK#ka~UdM=R&^} z64kf0eh8nfar=J#&xz0_TOjz3GrJm7mk*bj*+znjv1i#5amKgL^|SRCssfQ|15TH= z7%hC~#+EEVR`u9!-CWVkz-QDK7p0WkB{mdwBR?lDTbp3HlbrNo51jOdV|!e7sxBOlqp6U7+W03m1e1>{ix2?5B@CgP=QE&ah;LWf}(D zKfz=g^?0u-`c1@LpW=}|J7q2$&Bv;`n8Oy5UQ_w?p~v$qXu&-3Nym*`{4%qAZ-Dv> zYBkBx+As^R%D&-Nd1hW{#W3L{v9F^gf5e=+<*ujt!tLPY;xMYJ<n-7=qf!33oibjsg*&Qmf z)N>kJ6`@+s9ne41uN#b0Tj+s(}l|Nd$`{ zU<^SaHmI)#6tpufde43&C)oAJA1W>dtom1T`(R(Vo}nrLRX7EzBUNfJmlIwHlbLdC zvltT@JbB%{#9#&yy*5Tv*2-h{fZ&K@vC0>(LC9OxsQJL5_u4J zBkpQnF*E2F&wY*V=?hO9jT<*mq>LcDA2K3rWv5y^O{_Z#9|?EC=Bz#23Q0DTu%^OV zW9#LzIGy4}HWDNTMMeJ+IfoBOHfyTbCGBEtIZili(U%S@UJroWD*c1-9znyQ$WGgb zfhL6Xp!|@w%6h&Ojb|5nvv-Nv@bZ+;achmg2pl|bj3Q^(=q1*~B1~(vQC8k7H#7X+ zn2Jfcu~e{{DZHQ#LW0ffvds7Tq>odPjndk34AlW5Yl@Nc=L0-(G7VXSUbuYW~nBo3WIPGDiei##V$(V%8m9*@PV`?M&BfMy9Ezy#$@UDK>S;K#5} zPgNqLv$Q^qH2QP%cNCR$xg-XL>=P1;IZP=UQuo!(dt{9UwkvJK!mqWbJUII8A6!bX A0RR91 literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_111416/cam/image_array_000000005.jpg b/dkimpt/testdata/20191012_111416/cam/image_array_000000005.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c158191fcb45402e1b914adfca36aa5c5ca6eb5 GIT binary patch literal 2529 zcmbW!dpOg59|!Q?Y;)L*=1{{N=gd{k=Q$*7h|q}UP8Kn7+t5MnwmFqOP7{S&Ds5(y zqMVivL`b1n2$isqTT%{5<<@;a*YjN0^Vjn{@6Yx9{`37@pX>9wzMCVP6Tmi4cf30Q z0s#PMtANchz!i`b7ncx+N=isbNJ&Y;q!kd-aJaORoV=`ps zw~EKVb-TWyv8h>b=V5!tqt34G$2|js!WTosBQHnaPEJjW-p$O;ys;PIHUE zn-kFqmt9BMkp;nE(~0HPYP^Vj%4l#%V2p>vL(nUhMn*E}Gz13UkFGJD=^7kjAo8c~ zBmA1fci7Gc;7#-(Q?IK+eH(CC*<>Kgv%Z*;NAWU>4dv$3$fZ3lqwH;`_vh*E+hx&u zQYGFFcB6gmQuL3b_P&lqdoQK69A$&RFpZB-woLE`mZ^Pelat$zIwfl=rl2E+{ z-LquK;U+z94Za}Aw*MaBr39H+3b^iC)y8+}Mhidg%|!qQ_q3nks&#RWMVHpRF53iJ zj&YN)2-1gHH{9)o>EEskY9rzA_;P%EMe{xXHcEf^LW9g*^jzWBPq2 zZ{O|xywDfaV4|Cq7289_Vhtmkb?8{AiwIR*>!9pCEfH;gs z_?5*@9awbfQvm!TM zbM!PJO7sLeUrHN9j3u=3S)vH-L{;9o=PAX24A$`O({3vHNNlSzUT7kLUb_PGKH>N_ zP%E;}oB%5pO?@bT5vSRgf^mMFhHU$0Fr!y~W#w9&$339XVIMeLlX#QlkFJ{Ha!hM| zJSO#J>)#4`0UUmUDNumGO<7e_lTGk9PGOFAKW#suo>8)aG+Ho6%(I#Nao{MU=EKX}1@=2az20 zCk1u^my0GVGCrjZly~Inixo1@^pnfSKd1SOq6Q$Ex9phW2hpIt7wc4`0*VxdMY2_F zu+lB6-C&ahQLQ0#e8S|t-G;C(e~KCA3s=;zo(Tff-v-Z)gx3UNNcG_Ud#1VYde&%V zPM&L@0mjxLug0cJMOuFW?;M5aeuM2czacXxV^7&v z#%TG-O+8Sy#wk2=)q@fyD4l*E zD?@&+)n!86x z_CV)|jRgquB*VCVqz_1%P4O&uYt#5X#D9J%cmMZ6Z#Y|O2j+$$PTR)t^nQI9V{YCb z{5eiN2fWjWl20D3EinF(bXjRJ@U2clZXsP@4|Q9)UM;Xjq}5e7QK?w*80FyKHa4Eo z4+zezDjMDFq48>WVzgIu%VuD-xpOsTI~S9A32Vi9lZw$_+!aHdLv&Wq&!8teKhO+2 zVjinqGDI~WBUIgApQLZw^;D8a6gd_`+e=x)H|(E5{f4ppp34`pT_G92t;)Iv=!w(i z9}IKs6<#{}a{YX=+OwI?1}d3@Uz96PhRgZ|p{Q;I0V-@0U{peXKaNmwPtGm;Kw$72 z7qcjVBOFw0IT(7ooYIA-9)G96uBN_R~{`ZCv(~%{OWoH!tZ^5|@f_-#j zfBmv$Mf>&TH_4g*CF{@&7qCnr%P|fs0sV4 zs+-^s3`PRBW9zu8JO;Wid}v~ckG?++^^s; HHedb;BQ{)H literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_111416/cam/image_array_000000006.jpg b/dkimpt/testdata/20191012_111416/cam/image_array_000000006.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10ad7276197a365c11dcf817ee754a35165f21c2 GIT binary patch literal 2438 zcmbW%dovni2^=E`cDCNR%{6MMg%2poP^U{LiuZ0FXxj2|yVL z(FUOM5KtbnDFigceM&(74B(#ufr2mzNjL&2B`q#!k^`U+5QM@&2?-cXTzyJ>4#4Ck z6tqliB^BL$;o9L!ghWm`0%zCIj;22OpkwM6aTY1HRaph2x?NXKA8$Z3Gv94Nvb5jl zKyh^1?@aTcdmcLMS2**Upa^70F=UaP3A z;_~>_H*YmI-EJ1N-0A2Pc6Imk_Vo`9kBmNjHuik{)$8e***9}<=ihz&^m#?}W%cXY z`VSWb0RLi%^Ix$4aLJ2ZP#6q^!GE|Q&=~OsAmO(SvxMh{8`IAZ;Q3p^judb-1KLlY>N?o*EzJ){mwr4qHneBU z25l-BI~wPMRnJbSBLNBqNl>m?;HzZQXXyPtZ~BYs!sid{>$K>#TKDk%m`%UfU}F zCZ#mD*Lc}&pS%BBrpqXyS9w{zNhhoI>$-FRteIKQ5YQySKC zGoc@tdF85|d>ICfAfM8QdQCQ{@Pw5C!1t&Om)R8&Z|w9+V8SkC-^Qe_1L9ZwrW)T( zHekdkCETfHBdpeG%^H>TL%o=V1)5PlLlwwp%*2n5=}sCSWI_=ORN+|2{dCX_eY=F! zaR7eQlTYc&EiQuMQD=RVQDjRxN&R38j5A)5ML7-^R1pPsFVaoq+J=?JBRNm6W-$G1 zzl|zo$q3Utdel;@v~;3rCC;ToWmzxJkH0X8!-l}Wy22McLcT$Un*h53ul|zz0|n*R zLPMR??L+(C8N7mA9gK%jw!C?y+2^OvQ23R`aanu}OT4|ot+YZ%Cb^q}MI+nO@W+BM zVQ0@Vb42{kEh%lx&ZzLD-Wo&A#n>|Bgceeb@1G}!=iH}TCAkySy=0w%#~OqgnrEP6 z`x5O$UsGaYKy=eX_ll&bRqSMYSCBloDnKUPS0qsLHcw*A)}ae z+${i5m$2Frr#>|&Dx>&02#PX_@i%d2WZfSH$FaD$1-Je(1)DMlIgr0%=IPPTjvrmM zY3Z?dlf$$u*`TT9$?1aq1RiV5M$&QG<9#0Lbfb_?h+Ou39hyx?Do0*Ap;7Cdc+*(i z{ZXrA7LUP&SNdo~je1=}A>IaIq)^RRIxkUY`cpM~#(a3ZZlCc8AnIjZ2?irR;mw(x z-%2X@uM<>L6i}=4v|qF`EQsBZ%Z3xY6>ey^bcBpard6h$F4<>>EY>1Mdz@Qn; znrY19oK-Z+^)|KmPA$~vJyh6_?-bVUN!qe><0eEZYpMfYT40hLG_Ky*f0E*x7@DYI%*U`5>>&D zT#)3XJ_ujEBI2usy=JF#)%X_hi{V51!AK`ud*!9iY4w8cAQeh1cY4-vjb=SR z$hv|7SE{sYP7TTIxV!WVx03uU%qnu@9qb)q-Hq^snl7LVt^H2SHB>jS!?@*qHhP^3 z+PbYVM>IZfRFk&2jJGuVo?Jy2nl3U{b+bV6;9?!`;dz#__O1fVWpXBwLO_bpHg+#_ zNfqCOY4!7;=EloG*zQ`uGpF8Ul8(7DXMK*oz)3}_sn$T+oR-J)k{?Lj_;sW~SEXd6 zflIb9Bk1)zhTF)xcRP^kNsB=jlagFGVc}y#D*Qom*Wsi28tHU9+jV;7^xJqhXi3S) z+rr@X`GXj)M43bw{nmJO^ZS`e%b1#C%J8!$Pfnb6!gd^B`TOwG+I=y2+B07Dm#G;4 zs2Zs%^PZ4y_BLflHA97uE#uZrwI)X1^&vXCzKg+{T02S~j3yL%$j0+Xf*$`vkUotZ zH<>e{*k$_IaT%ATlrFnXK)|^ms(bHl2b+xbq)Up|_+L(z zpSMX-sVPJGH_Y3}Ycoqfr$yGOm=S+Yp5K?6*}+Di{ah4b(6N&;)qm~M$+3;<6O1#K zfNi(wRFa5KXOSq%(bkO%F)wn+eBiYOT(ICaxoc0)>89WmYZ3Nh;-Je41O;#Mv2CIJ SY;IMNSBr2l7XLGw&;I~}q$~{p literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_111416/record_000000000.json b/dkimpt/testdata/20191012_111416/record_000000000.json new file mode 100644 index 0000000..d111dda --- /dev/null +++ b/dkimpt/testdata/20191012_111416/record_000000000.json @@ -0,0 +1 @@ +{"ctrl/record": true, "cfg/throttle/min": 0.52, "user/angle": -0.41764705882352937, "cfg/throttle/max": 0.9, "angle": -0.41764705882352937, "sleep_time": 0.029084730148315432, "cfg/throttle/angle/dangerous": 0.8, "pilot/angle": 0.4830229017469618, "user/throttle": 0.5926680244399185, "rate_htz": 20, "throttle": 0.5926680244399185, "cfg/throttle/compute_from_steering": true, "cam/image_array": "cam-image_array_0_.jpg", "captor/distance": -1, "pilot/throttle": 0.9155570387029685, "img/road_ellipse": "img-road_ellipse_0_.jpg", "road/contour": [[0, 84], [6, 89], [0, 99], [159, 99], [152, 82], [159, 80], [159, 60], [149, 41], [141, 41], [143, 51], [135, 41], [31, 41], [28, 47], [16, 41], [10, 52], [20, 53], [9, 87]], "recording": [0.0, 0.0, "user", false], "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "road/ellipse": [[80, 86], [133.9037322998047, 157.2823944091797], 81.30558776855469, 1.0]} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_111416/record_000000001.json b/dkimpt/testdata/20191012_111416/record_000000001.json new file mode 100644 index 0000000..879e192 --- /dev/null +++ b/dkimpt/testdata/20191012_111416/record_000000001.json @@ -0,0 +1 @@ +{"ctrl/record": true, "cfg/throttle/min": 0.52, "user/angle": -0.49607843137254903, "cfg/throttle/max": 0.9, "angle": -0.49607843137254903, "sleep_time": 0.018878984451293948, "cfg/throttle/angle/dangerous": 0.8, "pilot/angle": 0.12555482652452257, "user/throttle": 0.6069246435845215, "rate_htz": 20, "throttle": 0.6069246435845215, "cfg/throttle/compute_from_steering": true, "cam/image_array": "cam-image_array_1_.jpg", "captor/distance": -1, "pilot/throttle": 0.592365046012554, "img/road_ellipse": "img-road_ellipse_1_.jpg", "road/contour": [[0, 59], [15, 66], [0, 99], [159, 99], [159, 60], [149, 41], [142, 41], [143, 50], [127, 41], [121, 57], [118, 41], [29, 41], [20, 61], [15, 55], [22, 41]], "recording": [0.0, 0.0, "user", false], "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "road/ellipse": [[80, 87], [117.75352478027344, 166.38485717773438], 87.7400131225586, 1.0]} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_111416/record_000000002.json b/dkimpt/testdata/20191012_111416/record_000000002.json new file mode 100644 index 0000000..c69fbd2 --- /dev/null +++ b/dkimpt/testdata/20191012_111416/record_000000002.json @@ -0,0 +1 @@ +{"ctrl/record": true, "cfg/throttle/min": 0.52, "user/angle": -0.5058823529411764, "cfg/throttle/max": 0.9, "angle": -0.5058823529411764, "sleep_time": 0.03089265823364258, "cfg/throttle/angle/dangerous": 0.8, "pilot/angle": 1.0, "user/throttle": 0.6109979633401221, "rate_htz": 20, "throttle": 0.6109979633401221, "cfg/throttle/compute_from_steering": true, "cam/image_array": "cam-image_array_2_.jpg", "captor/distance": -1, "pilot/throttle": 1.0, "img/road_ellipse": "img-road_ellipse_2_.jpg", "road/contour": [[0, 60], [0, 76], [8, 83], [0, 99], [159, 99], [154, 48], [159, 41], [16, 41]], "recording": [0.0, 0.0, "user", false], "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "road/ellipse": [[81, 78], [151.7767791748047, 165.07664489746094], 64.75083923339844, 1.0]} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_111416/record_000000003.json b/dkimpt/testdata/20191012_111416/record_000000003.json new file mode 100644 index 0000000..2e76c2d --- /dev/null +++ b/dkimpt/testdata/20191012_111416/record_000000003.json @@ -0,0 +1 @@ +{"ctrl/record": true, "cfg/throttle/min": 0.52, "user/angle": -0.615686274509804, "cfg/throttle/max": 0.9, "angle": -0.615686274509804, "sleep_time": 0.02732782363891602, "cfg/throttle/angle/dangerous": 0.8, "pilot/angle": 0.5554974873860676, "user/throttle": 0.6578411405295315, "rate_htz": 20, "throttle": 0.6578411405295315, "cfg/throttle/compute_from_steering": true, "cam/image_array": "cam-image_array_3_.jpg", "captor/distance": -1, "pilot/throttle": 0.885990863031913, "img/road_ellipse": "img-road_ellipse_3_.jpg", "road/contour": [[0, 47], [0, 53], [13, 48], [0, 67], [0, 99], [159, 99], [159, 41], [8, 41]], "recording": [0.0, 0.0, "user", false], "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "road/ellipse": [[81, 74], [142.79656982421875, 170.35728454589844], 80.00104522705078, 1.0]} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_111416/record_000000004.json b/dkimpt/testdata/20191012_111416/record_000000004.json new file mode 100644 index 0000000..c79a0d5 --- /dev/null +++ b/dkimpt/testdata/20191012_111416/record_000000004.json @@ -0,0 +1 @@ +{"ctrl/record": true, "cfg/throttle/min": 0.52, "user/angle": -0.792156862745098, "cfg/throttle/max": 0.9, "angle": -0.792156862745098, "sleep_time": 0.033392477035522464, "cfg/throttle/angle/dangerous": 0.8, "pilot/angle": 0.7277487436930339, "user/throttle": 0.6843177189409368, "rate_htz": 20, "throttle": 0.6843177189409368, "cfg/throttle/compute_from_steering": true, "cam/image_array": "cam-image_array_4_.jpg", "captor/distance": -1, "pilot/throttle": 0.6020408128165022, "img/road_ellipse": "img-road_ellipse_4_.jpg", "road/contour": [[0, 41], [0, 65], [11, 64], [0, 80], [0, 99], [159, 99], [159, 41]], "recording": [0.0, 0.0, "user", false], "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "road/ellipse": [[79, 67], [153.01275634765625, 205.82652282714844], 0.48624387383461, 0.9]} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_111416/record_000000005.json b/dkimpt/testdata/20191012_111416/record_000000005.json new file mode 100644 index 0000000..071a932 --- /dev/null +++ b/dkimpt/testdata/20191012_111416/record_000000005.json @@ -0,0 +1 @@ +{"ctrl/record": true, "cfg/throttle/min": 0.52, "user/angle": -0.8274509803921568, "cfg/throttle/max": 0.9, "angle": -0.8274509803921568, "sleep_time": 0.01509957313537598, "cfg/throttle/angle/dangerous": 0.8, "pilot/angle": 1.0, "user/throttle": 0.6863543788187372, "rate_htz": 20, "throttle": 0.6863543788187372, "cfg/throttle/compute_from_steering": true, "cam/image_array": "cam-image_array_5_.jpg", "captor/distance": -1, "pilot/throttle": 1.0, "img/road_ellipse": "img-road_ellipse_5_.jpg", "road/contour": [[0, 41], [0, 87], [9, 85], [0, 99], [159, 99], [159, 41]], "recording": [0.0, 0.0, "user", false], "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "road/ellipse": [[79, 70], [147.05279541015625, 147.92002868652344], 0.0, 1.0]} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_111416/record_000000006.json b/dkimpt/testdata/20191012_111416/record_000000006.json new file mode 100644 index 0000000..fa493e0 --- /dev/null +++ b/dkimpt/testdata/20191012_111416/record_000000006.json @@ -0,0 +1 @@ +{"ctrl/record": true, "cfg/throttle/min": 0.52, "user/angle": -0.8098039215686275, "cfg/throttle/max": 0.9, "angle": -0.8098039215686275, "sleep_time": 0.005940723419189456, "cfg/throttle/angle/dangerous": 0.8, "pilot/angle": 1.0, "user/throttle": 0.6863543788187372, "rate_htz": 20, "throttle": 0.6863543788187372, "cfg/throttle/compute_from_steering": true, "cam/image_array": "cam-image_array_6_.jpg", "captor/distance": -1, "pilot/throttle": 0.52, "img/road_ellipse": "img-road_ellipse_6_.jpg", "road/contour": [[0, 41], [0, 99], [159, 99], [159, 41]], "recording": [0.0, 0.0, "user", false], "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "road/ellipse": [null, null, 90.0, 0.0]} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_122633/cam/image_array_000000000.jpg b/dkimpt/testdata/20191012_122633/cam/image_array_000000000.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d590eb546527839c057c48c6ff8e9273ce9e41a GIT binary patch literal 6384 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 literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_122633/cam/image_array_000000002.jpg b/dkimpt/testdata/20191012_122633/cam/image_array_000000002.jpg new file mode 100644 index 0000000000000000000000000000000000000000..323d52e4f3d8a7b69f997f349053bcd89df5d8a4 GIT binary patch literal 6360 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 literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_122633/cam/image_array_000000006.jpg b/dkimpt/testdata/20191012_122633/cam/image_array_000000006.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cbd70bfe2dc4c433244a854c46412267d9441d51 GIT binary patch literal 6368 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 t8i8Eq>NuamvcY1VQP7fDk&0K){ENBE2aJ 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 literal 0 HcmV?d00001 diff --git a/dkimpt/testdata/20191012_122633/record_000000000.json b/dkimpt/testdata/20191012_122633/record_000000000.json new file mode 100644 index 0000000..3aefa19 --- /dev/null +++ b/dkimpt/testdata/20191012_122633/record_000000000.json @@ -0,0 +1 @@ +{"road/ellipse": [[93, 65], [86.32437133789062, 127.01263427734375], 84.16026306152344, 0.9], "cfg/throttle/min": 0.4, "pilot/angle": -0.2857142857142858, "cfg/throttle/max": 0.6, "recording": [0.0, 0.0, null, false], "user/angle": -1.0, "cfg/throttle/compute_from_steering": true, "angle": -1.0, "rate_htz": 20, "sleep_time": 0.0, "captor/distance": 3191, "cam/image_array": "cam-image_array_0_.jpg", "ctrl/record": true, "throttle": 1.0, "cfg/throttle/angle/dangerous": 0.8, "road/contour": [[18, 65], [24, 74], [42, 64], [50, 80], [31, 77], [45, 87], [55, 82], [47, 94], [38, 85], [35, 99], [137, 99], [142, 89], [133, 80], [159, 72], [156, 58], [141, 60], [146, 42], [157, 47], [152, 41], [43, 41], [52, 54]], "pilot/throttle": 0.4, "img/road_ellipse": "img-road_ellipse_0_.jpg", "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "user/throttle": 1.0} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_122633/record_000000001.json b/dkimpt/testdata/20191012_122633/record_000000001.json new file mode 100644 index 0000000..5329d18 --- /dev/null +++ b/dkimpt/testdata/20191012_122633/record_000000001.json @@ -0,0 +1 @@ +{"road/ellipse": [[78, 71], [99.24079895019531, 158.44842529296875], 83.14945983886719, 1.0], "cfg/throttle/min": 0.4, "pilot/angle": -0.2857142857142858, "cfg/throttle/max": 0.6, "recording": [0.0, 0.0, "user", false], "user/angle": -1.0, "cfg/throttle/compute_from_steering": true, "angle": -1.0, "rate_htz": 20, "sleep_time": -0.7877869129180908, "captor/distance": 3220, "cam/image_array": "cam-image_array_1_.jpg", "ctrl/record": true, "throttle": 1.0, "cfg/throttle/angle/dangerous": 0.8, "road/contour": [[0, 41], [0, 99], [159, 95], [143, 94], [138, 75], [110, 85], [104, 76], [128, 64], [159, 73], [156, 58], [141, 60], [154, 41], [43, 41], [53, 53], [33, 64], [28, 41]], "pilot/throttle": 0.4, "img/road_ellipse": "img-road_ellipse_1_.jpg", "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "user/throttle": 1.0} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_122633/record_000000002.json b/dkimpt/testdata/20191012_122633/record_000000002.json new file mode 100644 index 0000000..73ef8ab --- /dev/null +++ b/dkimpt/testdata/20191012_122633/record_000000002.json @@ -0,0 +1 @@ +{"road/ellipse": [[80, 77], [110.85153198242188, 157.39715576171875], 77.76525115966797, 1.0], "cfg/throttle/min": 0.4, "pilot/angle": -0.2857142857142858, "cfg/throttle/max": 0.6, "recording": [0.0, 0.0, "user", false], "user/angle": -1.0, "cfg/throttle/compute_from_steering": true, "angle": -1.0, "rate_htz": 20, "sleep_time": -0.0079838752746582, "captor/distance": 3237, "cam/image_array": "cam-image_array_2_.jpg", "ctrl/record": true, "throttle": 1.0, "cfg/throttle/angle/dangerous": 0.8, "road/contour": [[0, 41], [0, 99], [159, 95], [149, 95], [152, 87], [141, 95], [133, 84], [140, 72], [159, 73], [156, 58], [141, 60], [146, 42], [158, 47], [152, 41], [43, 41], [53, 53], [39, 53], [33, 64], [22, 51], [28, 41]], "pilot/throttle": 0.4, "img/road_ellipse": "img-road_ellipse_2_.jpg", "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "user/throttle": 1.0} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_122633/record_000000003.json b/dkimpt/testdata/20191012_122633/record_000000003.json new file mode 100644 index 0000000..e890eea --- /dev/null +++ b/dkimpt/testdata/20191012_122633/record_000000003.json @@ -0,0 +1 @@ +{"road/ellipse": [[79, 83], [127.54984283447266, 160.6329803466797], 73.02867126464844, 1.0], "cfg/throttle/min": 0.4, "pilot/angle": -0.2857142857142858, "cfg/throttle/max": 0.6, "recording": [0.0, 0.0, "user", false], "user/angle": -1.0, "cfg/throttle/compute_from_steering": true, "angle": -1.0, "rate_htz": 20, "sleep_time": -0.08004755973815918, "captor/distance": 3175, "cam/image_array": "cam-image_array_3_.jpg", "ctrl/record": true, "throttle": 1.0, "cfg/throttle/angle/dangerous": 0.8, "road/contour": [[0, 41], [0, 99], [156, 96], [133, 84], [140, 72], [159, 73], [156, 58], [141, 60], [146, 42], [158, 47], [154, 41], [43, 41], [53, 53], [33, 64], [22, 51], [28, 41]], "pilot/throttle": 0.4, "img/road_ellipse": "img-road_ellipse_3_.jpg", "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "user/throttle": 1.0} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_122633/record_000000004.json b/dkimpt/testdata/20191012_122633/record_000000004.json new file mode 100644 index 0000000..8f3fb9e --- /dev/null +++ b/dkimpt/testdata/20191012_122633/record_000000004.json @@ -0,0 +1 @@ +{"road/ellipse": [[77, 96], [145.10252380371094, 171.11947631835938], 58.72574996948242, 1.0], "cfg/throttle/min": 0.4, "pilot/angle": -0.2857142857142858, "cfg/throttle/max": 0.6, "recording": [0.0, 0.0, "user", false], "user/angle": -1.0, "cfg/throttle/compute_from_steering": true, "angle": -1.0, "rate_htz": 20, "sleep_time": -0.061002683639526364, "captor/distance": 2359, "cam/image_array": "cam-image_array_4_.jpg", "ctrl/record": true, "throttle": 1.0, "cfg/throttle/angle/dangerous": 0.8, "road/contour": [[0, 41], [0, 99], [156, 96], [133, 84], [140, 72], [159, 68], [156, 58], [141, 60], [146, 42], [157, 47], [152, 41], [43, 41], [53, 53], [39, 53], [33, 64], [22, 50], [28, 41]], "pilot/throttle": 0.4, "img/road_ellipse": "img-road_ellipse_4_.jpg", "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "user/throttle": 1.0} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_122633/record_000000005.json b/dkimpt/testdata/20191012_122633/record_000000005.json new file mode 100644 index 0000000..143e3ed --- /dev/null +++ b/dkimpt/testdata/20191012_122633/record_000000005.json @@ -0,0 +1 @@ +{"road/ellipse": [[79, 83], [126.231689453125, 159.87911987304688], 74.92227172851562, 1.0], "cfg/throttle/min": 0.4, "pilot/angle": -0.2857142857142858, "cfg/throttle/max": 0.6, "recording": [0.0, 0.0, "user", false], "user/angle": -1.0, "cfg/throttle/compute_from_steering": true, "angle": -1.0, "rate_htz": 20, "sleep_time": -0.07351298332214355, "captor/distance": 3197, "cam/image_array": "cam-image_array_5_.jpg", "ctrl/record": true, "throttle": 1.0, "cfg/throttle/angle/dangerous": 0.8, "road/contour": [[0, 41], [0, 99], [156, 96], [133, 84], [140, 72], [159, 73], [156, 58], [141, 60], [146, 42], [157, 47], [152, 41], [43, 41], [53, 53], [33, 64], [22, 51], [28, 41]], "pilot/throttle": 0.4, "img/road_ellipse": "img-road_ellipse_5_.jpg", "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "user/throttle": 1.0} \ No newline at end of file diff --git a/dkimpt/testdata/20191012_122633/record_000000006.json b/dkimpt/testdata/20191012_122633/record_000000006.json new file mode 100644 index 0000000..e4da2d6 --- /dev/null +++ b/dkimpt/testdata/20191012_122633/record_000000006.json @@ -0,0 +1 @@ +{"road/ellipse": [[80, 77], [119.39763641357422, 156.11976623535156], 73.90866088867188, 1.0], "cfg/throttle/min": 0.4, "pilot/angle": -0.2857142857142858, "cfg/throttle/max": 0.6, "recording": [0.0, 0.0, "user", false], "user/angle": -1.0, "cfg/throttle/compute_from_steering": true, "angle": -1.0, "rate_htz": 20, "sleep_time": -0.06748814582824707, "captor/distance": 3196, "cam/image_array": "cam-image_array_6_.jpg", "ctrl/record": true, "throttle": 1.0, "cfg/throttle/angle/dangerous": 0.8, "road/contour": [[0, 41], [0, 99], [159, 95], [149, 95], [152, 87], [141, 95], [133, 84], [140, 72], [159, 73], [156, 58], [141, 60], [146, 42], [158, 47], [154, 41], [43, 41], [53, 53], [33, 64], [24, 58], [25, 41]], "pilot/throttle": 0.4, "img/road_ellipse": "img-road_ellipse_6_.jpg", "user/mode": "user", "cfg/throttle/angle/safe": 0.3, "user/throttle": 1.0} \ No newline at end of file