From 8c35f3f17bb473f44cae96bd11f817e12b2a0b78 Mon Sep 17 00:00:00 2001 From: Edison-CBS Date: Sat, 26 Aug 2023 15:21:45 +0800 Subject: [PATCH] update for prius v --- .github/workflows/selfdrive_tests.yaml | 4 +- .github/workflows/tools_tests.yaml | 4 +- .gitmodules | 14 +- cereal | 2 +- common/params.cc | 7 + common/params.h | 7 + common/params.py | 3 +- common/params_pyx.pyx | 17 + release/files_common | 1 + selfdrive/assets/aggressive.png | Bin 0 -> 63355 bytes selfdrive/assets/images/compass_inner.png | Bin 0 -> 43168 bytes selfdrive/assets/images/compass_outer.png | Bin 0 -> 70921 bytes selfdrive/assets/offroad/icon_brightness.png | Bin 0 -> 6173 bytes selfdrive/assets/offroad/icon_compass.png | Bin 0 -> 57802 bytes .../offroad/icon_cruise_speed_rewrite.png | Bin 0 -> 13977 bytes selfdrive/assets/offroad/icon_display_off.png | Bin 0 -> 6182 bytes selfdrive/assets/offroad/icon_distance.png | Bin 0 -> 20188 bytes selfdrive/assets/offroad/icon_speaker.png | Bin 0 -> 11260 bytes selfdrive/assets/relaxed.png | Bin 0 -> 82817 bytes selfdrive/assets/standard.png | Bin 0 -> 74862 bytes selfdrive/car/tests/test_car_interfaces.py | 3 + selfdrive/car/tests/test_models.py | 2 + selfdrive/car/torque_data/params.yaml | 1 + selfdrive/car/torque_data/substitute.yaml | 1 - selfdrive/car/toyota/carcontroller.py | 6 +- selfdrive/car/toyota/carstate.py | 40 + selfdrive/car/toyota/interface.py | 27 +- selfdrive/car/toyota/toyotacan.py | 4 +- selfdrive/car/toyota/tunes.py | 22 + selfdrive/car/toyota/values.py | 2 +- selfdrive/controls/controlsd.py | 5 + selfdrive/controls/lib/events.py | 5 +- selfdrive/controls/lib/latcontrol_lqr.py | 84 ++ selfdrive/manager/manager.py | 3 + .../test/process_replay/test_processes.py | 4 +- selfdrive/ui/qt/home.cc | 5 + selfdrive/ui/qt/offroad/settings.cc | 49 + selfdrive/ui/qt/offroad/settings.h | 1 + selfdrive/ui/qt/onroad.cc | 214 +++- selfdrive/ui/qt/onroad.h | 21 +- selfdrive/ui/qt/widgets/controls.h | 6 + selfdrive/ui/translations/main_ar.ts | 1136 ----------------- selfdrive/ui/translations/main_de.ts | 676 +++++----- selfdrive/ui/translations/main_en.ts | 24 +- selfdrive/ui/translations/main_fr.ts | 52 + selfdrive/ui/translations/main_ja.ts | 652 +++++----- selfdrive/ui/translations/main_ko.ts | 760 +++++------ selfdrive/ui/translations/main_nl.ts | 1120 ---------------- selfdrive/ui/translations/main_pl.ts | 1124 ---------------- selfdrive/ui/translations/main_pt-BR.ts | 768 +++++------ selfdrive/ui/translations/main_th.ts | 52 + selfdrive/ui/translations/main_tr.ts | 52 + selfdrive/ui/translations/main_zh-CHS.ts | 760 +++++------ selfdrive/ui/translations/main_zh-CHT.ts | 750 ++++++----- selfdrive/ui/ui.cc | 96 +- selfdrive/ui/ui.h | 18 + 56 files changed, 3142 insertions(+), 5462 deletions(-) create mode 100644 selfdrive/assets/aggressive.png create mode 100644 selfdrive/assets/images/compass_inner.png create mode 100644 selfdrive/assets/images/compass_outer.png create mode 100644 selfdrive/assets/offroad/icon_brightness.png create mode 100644 selfdrive/assets/offroad/icon_compass.png create mode 100644 selfdrive/assets/offroad/icon_cruise_speed_rewrite.png create mode 100644 selfdrive/assets/offroad/icon_display_off.png create mode 100644 selfdrive/assets/offroad/icon_distance.png create mode 100644 selfdrive/assets/offroad/icon_speaker.png create mode 100644 selfdrive/assets/relaxed.png create mode 100644 selfdrive/assets/standard.png create mode 100644 selfdrive/car/toyota/tunes.py create mode 100644 selfdrive/controls/lib/latcontrol_lqr.py delete mode 100644 selfdrive/ui/translations/main_ar.ts delete mode 100644 selfdrive/ui/translations/main_nl.ts delete mode 100644 selfdrive/ui/translations/main_pl.ts diff --git a/.github/workflows/selfdrive_tests.yaml b/.github/workflows/selfdrive_tests.yaml index 78b957a4688c0d6..86b17033c2b7a7e 100644 --- a/.github/workflows/selfdrive_tests.yaml +++ b/.github/workflows/selfdrive_tests.yaml @@ -2,8 +2,8 @@ name: selfdrive on: push: - branches: - - master + branches-ignore: + - 'testing-closet*' pull_request: concurrency: diff --git a/.github/workflows/tools_tests.yaml b/.github/workflows/tools_tests.yaml index e71a4e397f957c7..37758e25ca5e9df 100644 --- a/.github/workflows/tools_tests.yaml +++ b/.github/workflows/tools_tests.yaml @@ -2,8 +2,8 @@ name: tools on: push: - branches: - - master + branches-ignore: + - 'testing-closet*' pull_request: concurrency: diff --git a/.gitmodules b/.gitmodules index 26f93ef164e782c..3b64a8c8736fd1e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,21 +1,21 @@ [submodule "panda"] path = panda - url = ../../commaai/panda.git + url = ../../Edison-CBS/panda.git [submodule "opendbc"] path = opendbc - url = ../../commaai/opendbc.git + url = ../../Edison-CBS/opendbc.git [submodule "laika_repo"] path = laika_repo - url = ../../commaai/laika.git + url = ../../Edison-CBS/laika.git [submodule "cereal"] path = cereal - url = ../../commaai/cereal.git + url = ../../Edison-CBS/cereal.git [submodule "rednose_repo"] path = rednose_repo - url = ../../commaai/rednose.git + url = ../../Edison-CBS/rednose.git [submodule "body"] path = body - url = ../../commaai/body.git + url = ../../Edison-CBS/body.git [submodule "tinygrad"] path = tinygrad_repo - url = https://github.com/geohot/tinygrad.git + url = ../../Edison-CBS/tinygrad.git diff --git a/cereal b/cereal index 82bca3a9714b73c..27517fd29773a69 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 82bca3a9714b73c05414fdf848b6016a0ffac17d +Subproject commit 27517fd29773a69f2da8c2845450d4be027b12e4 diff --git a/common/params.cc b/common/params.cc index e8ab42c0b02c1a6..320aa9fd769b3b2 100644 --- a/common/params.cc +++ b/common/params.cc @@ -99,6 +99,7 @@ std::unordered_map keys = { {"CarParamsCache", CLEAR_ON_MANAGER_START}, {"CarParamsPersistent", PERSISTENT}, {"CarVin", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, + {"Compass", PERSISTENT}, {"CompletedTrainingVersion", PERSISTENT}, {"ControlsReady", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, {"CurrentBootlog", PERSISTENT}, @@ -112,6 +113,7 @@ std::unordered_map keys = { {"DoReboot", CLEAR_ON_MANAGER_START}, {"DoShutdown", CLEAR_ON_MANAGER_START}, {"DoUninstall", CLEAR_ON_MANAGER_START}, + {"DrivingPersonalitiesUIWheel", PERSISTENT}, {"ExperimentalLongitudinalEnabled", PERSISTENT}, {"ExperimentalMode", PERSISTENT}, {"ExperimentalModeConfirmed", PERSISTENT}, @@ -206,6 +208,11 @@ std::unordered_map keys = { {"Version", PERSISTENT}, {"VisionRadarToggle", PERSISTENT}, {"WheeledBody", PERSISTENT}, + // edison params + {"CarBrightnessControl", PERSISTENT}, + {"LQR", PERSISTENT}, + {"ScreenOffTimer", PERSISTENT}, + {"CruiseSpeedRewrite", PERSISTENT}, }; } // namespace diff --git a/common/params.h b/common/params.h index 24b1bffeb1a88f4..39874e1fde0a131 100644 --- a/common/params.h +++ b/common/params.h @@ -32,6 +32,10 @@ class Params { inline bool getBool(const std::string &key, bool block = false) { return get(key, block) == "1"; } + inline int getInt(const std::string &key, bool block = false) { + std::string value = get(key, block); + return value.empty() ? 0 : std::stoi(value); + } std::map readAll(); // helpers for writing values @@ -42,6 +46,9 @@ class Params { inline int putBool(const std::string &key, bool val) { return put(key.c_str(), val ? "1" : "0", 1); } + inline int putInt(const std::string &key, int val) { + return put(key.c_str(), std::to_string(val).c_str(), std::to_string(val).size()); + } private: std::string params_path; diff --git a/common/params.py b/common/params.py index ea8ac7514aa0d27..bb7185b1b3f59fd 100644 --- a/common/params.py +++ b/common/params.py @@ -1,10 +1,11 @@ from openpilot.common.params_pyx import Params, ParamKeyType, UnknownKeyName, put_nonblocking, \ - put_bool_nonblocking + put_bool_nonblocking, put_int_nonblocking assert Params assert ParamKeyType assert UnknownKeyName assert put_nonblocking assert put_bool_nonblocking +assert put_int_nonblocking if __name__ == "__main__": import sys diff --git a/common/params_pyx.pyx b/common/params_pyx.pyx index abb3199d059073c..2e69f595522bf81 100755 --- a/common/params_pyx.pyx +++ b/common/params_pyx.pyx @@ -17,9 +17,11 @@ cdef extern from "common/params.h": c_Params(string) nogil string get(string, bool) nogil bool getBool(string, bool) nogil + int getInt(string, bool) nogil int remove(string) nogil int put(string, string) nogil int putBool(string, bool) nogil + int putInt(string, int) nogil bool checkKey(string) nogil string getParamPath(string) nogil void clearAll(ParamKeyType) @@ -75,6 +77,13 @@ cdef class Params: r = self.p.getBool(k, block) return r + def get_int(self, key, bool block=False): + cdef string k = self.check_key(key) + cdef int r + with nogil: + r = self.p.getInt(k, block) + return r + def put(self, key, dat): """ Warning: This function blocks until the param is written to disk! @@ -92,6 +101,11 @@ cdef class Params: with nogil: self.p.putBool(k, val) + def put_int(self, key, int val): + cdef string k = self.check_key(key) + with nogil: + self.p.putInt(k, val) + def remove(self, key): cdef string k = self.check_key(key) with nogil: @@ -109,3 +123,6 @@ def put_nonblocking(key, val, d=""): def put_bool_nonblocking(key, bool val, d=""): threading.Thread(target=lambda: Params(d).put_bool(key, val)).start() + +def put_int_nonblocking(key, int val, d=""): + threading.Thread(target=lambda: Params(d).put_int(key, val)).start() \ No newline at end of file diff --git a/release/files_common b/release/files_common index b375c18dceb2774..0a372138db68a28 100644 --- a/release/files_common +++ b/release/files_common @@ -187,6 +187,7 @@ selfdrive/controls/lib/desire_helper.py selfdrive/controls/lib/drive_helpers.py selfdrive/controls/lib/events.py selfdrive/controls/lib/latcontrol_angle.py +selfdrive/controls/lib/latcontrol_lqr.py selfdrive/controls/lib/latcontrol_torque.py selfdrive/controls/lib/latcontrol_pid.py selfdrive/controls/lib/latcontrol.py diff --git a/selfdrive/assets/aggressive.png b/selfdrive/assets/aggressive.png new file mode 100644 index 0000000000000000000000000000000000000000..42d005538c462e2ad9a2d4dd3a4f7a345b716dd3 GIT binary patch literal 63355 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%0D}#;C%gkm6z&XAO;RPVL5o6Bw#8TDCUVunkbBHJe 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 literal 0 HcmV?d00001 diff --git a/selfdrive/assets/offroad/icon_display_off.png b/selfdrive/assets/offroad/icon_display_off.png new file mode 100644 index 0000000000000000000000000000000000000000..0d9792c439147343e343f600f1babec6348d9b0b GIT binary patch literal 6182 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 Pv+u+!JY7nbOAh}x-@HlB literal 0 HcmV?d00001 diff --git a/selfdrive/assets/offroad/icon_distance.png b/selfdrive/assets/offroad/icon_distance.png new file mode 100644 index 0000000000000000000000000000000000000000..38ec4bd218bf4b226b8d3fabff8fd5bd57acf89f GIT binary patch literal 20188 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

#^=vWsbkn&$feZ59R>C?VqQMzHer>Jvs zzZZbEB&Ve4j|Qog4oY9RkcE-SoU|(b01nAdckUpj*Y*9-Q?^n31sqdFY}{}S2YdTw zou{$`Y5HkgP@!I@`qeiW?*mMM{n^UasZ2Y)hR7=!BXsndH3=(#j##|r)+^CUTw;2= z?-EH1$uwp5J=YANWQ=#-eAWT z!<_BJ#{Ex|Fxjrz4(*m5FSmlcj(Yi%bnqopdID6<@~%s}7F&1{Lxvf!8dj*x3Dpg5 z8I!Hxu1r?Y3fK+aUMtU+c4Z^yOZ!CMXm}Azid#2e*BcVWWw3k3Uz1cGkf)Y4Cs3mm z=08)PPmd<6{w#QS`8qema24-Hn>rPamzR@aA`^T^2F;yD%Tl)23zf^6 ztIujP{Srn02Cj3wh=^Sg&|cvLma`HG=Vt1)C~PJ7bVY8xMgB)w$&5o#5W!W&QLhaX z5irx%*8ZUELWcSemx~rtnF=dX@l;53+lsoscom6M!rJ_3_e6gA6LLa7Uj&YCLyzS) zTQn9k7O;MDRQi>zw2T~)P0Rs{Edd_!~ zG07i4I|CGJy`=LQa$QhHtM_+<_YfV&P+MUVUy{#T#o0=Lju0FtN8wqkf5>*<7h|C} z3A})Xfkh*1Y!mkf-u_)<=jL3l@AUL%DiKbvYJMk?xtc||3^PK6w^Eglz!WlP@7GxH zhsxKk#MH?%d_i23@H32Cea@+XA)ryUL@Y-H{Bczg^jyv$diE&G3vqO+dKzT@V=i~7 zt49f(qy7cf_p^=J!*TM;J&XBN2)aNaX1pe>Z-X55=R02Xx0RpY?XQNV@MXUihFleq zn^E0PXqirQ_;QJ;&^NI1o>lO46Dd0Zk!HbaBM z!i2a^Nujd3e|pLZ!iBY%vz`jpa^}wou3TJ(N^A4N$OIy}0AlAGz2)Tlz$#r!^P_gi zh!1GOZvijq|Irk{VNlB@2>D8!X;3aHw$FaKv#u2>jMJoj(&dB*Dl`q#FN4wD1)Bb|T f$NK+xz$0EybVq=wR-P-s)j>=QZx~c!T;u--!oiSD literal 0 HcmV?d00001 diff --git a/selfdrive/assets/offroad/icon_speaker.png b/selfdrive/assets/offroad/icon_speaker.png new file mode 100644 index 0000000000000000000000000000000000000000..18bed321da1682dddd1cc431d103eaf19dc13aab GIT binary patch literal 11260 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%0ApG(; z%0p*S96pPlr=G;A=bryROD;bC7ngqep*=(f|6+J`c23LG>Majl7dkh8{*AU$KmD=$ z9#Hvpu_WiGfARP78+EW&KO03+k|A;YPZj&T6IhR}ga4Eq`2Ogusg*8L&^*47*DEWtO}wr$bc|G{4Y8D58o1cr5W1 z^cVN4l*3B4!oD@_p-h$^>9Mr2s-M{LX?#wC5trs%fZROn=(LuF*UHmYiNkeGJ@e+| zfyu>bl~jQf2NG~p0`of|5N9Tj+P7mHYW+`T${CSG*wcn#|3j5n>^!MMx1MBMA2_g0qs&z; z5X~?glp`P2!4d4*e*palozO)a2KzzL*up z`yu~48c2=}%jxL!p;xhc<71WNk-fh+>vul#H_gi~2{R}D$SqH4sm;NI^kN92O`AOD zt@&(kSU>Nw;NJ4Hu?wv2M(-Ch?zJ-g4VUKvMBX=JEefeeF_yUW``>6e^TL^HCr>YZ z>)Pc@Gm~3#Xl%@*IZtAO5HNG~h`&sgh~#=x^gl9$%Bj=Xx4#DuKCl%#_Vi&WI~@b( zT?1#@C0M-l0;F4W7@{?lmqM07gB5bT1Ed2WM+BEAA^TVEsc9=6ea@i?7V$wzCXI>5 zc|DOF-=wGn%6Q5M%~pbHT&we}kC|9R=lOuLR3{~tcbj~0_Rlmkz~V>5*HUAc5XaWe^uFM$Vx8uJJ(Fvf(PUIgf=&I@|q`;`DZj(Rsi*Q zW!`1-zKyr7Nt9)j^HTZ#a*{O~tXPHIhSa?n2&hd>)Y3-2ATn_B$;0pRg&&^Iaw7zgv$Uty`DC>eZz9(JkinuN$jsHfMn; zKKizK_jk{7?;Y9d&Hcv81>@r{-#PQb?mMnsJO?ceNwj7%$mGbM=J{e}FMDL$>8Zu` z;a7ZA&kiFRIE7u$J%R81a3l5)`WWe2f+LHr#l*==F>&!+B-$F`rfB4Bf(tr`G|*Gr z_Z3jUqORm5P$tTq^w5x?7r4nsnN+GY6Q_nsP({*9>qKG#XhMCuEtav2MJv+a->`Ap zLy4q|*u%sSHj%32BUBhhm`R9$lA@Uc&;#4%kB zUOt85cp1%^3=&mlzZsxKih#nUsK^V=ADu)|dZ-gPvW?RwHzK)kA$Z0~XPPNz(EMx4 zQ|V+Ql%K*4l5*${>rv85VijSNj1 zt92e11#;7gPh5si$Ri_3HX-e?6LQ2Ua>IzH5W1%^tB-8P`mCHUqKzi*#|g~wJJqHZ zxytFY38Y+4zQ5xc;HCBGI&~85$wvIbM{mYO7c9WsDHGA$ltEWp zUa!N0N9{{pBT+Z+U`o!&2!_x0p?r21o?iFJfyP}ge}3_biMxY2_l+#-tc2e^`g`s# z|IT;E_v~4hTD0g(p2AKd%%g zG0oBtl%QHcsZ_#H-%$+pzKU&|ci_Ga+i|++!e6=?l?#3jQ)kb`w2pT8xdcj#Wh3Us z2UdiUC_Z7?YjOcGm4q02B(qYE;E2F;W2n#^L1ih|E&(^271OhwMhsCo6f!N8UE~sD zeDSqx9v$Ca2{FtniJJpM3v8Sh$Yi3C#uT+si(fwS+7x0vyV9N50@z7i<$Ed`+Wgc6 zobj}$*E>0mmj2teW`czL40X_+FG&fnyz42S6$jtu@9f_d#TElgah1|nwQb*^-es|wBbV_v&36M?$KIqVy;duvHA!cr)j5l277m{Wx_Ucttm z-6-yV3|%ijjkd7>=U;LmuDb3DT)bp1I@=o1)!d+k&Wgkq=s6V8#;~mTibV|d^`Sb} zi=A7Zsts)4{D+;<_{PgV^P78{o5rgTJ#kNP^XCtqJIU*q7QfoHYr$;AcVo@HdHL1X z^P5O%Yks!z8qvIEv(WIRSEIrk95MJc?ue3D#@pND;NUWsW{$6|9b3!Ywm^1^mOa?>A5PrZDlM5k%pyEp?QFW_m2~+R` zN<T^NzN%z&_kS{ehPC>7GH=UV!TO-*kkWSatf=PghL!6q25-mJksscW{QqDF^`{C zQ!>~H^`870Rtlo6GE$1%bhn0_$2h5Y+)5fSt7S0-mD8e%f&!YfW5F1t1IyMcCbv)_ zsA_}L58^az+1v^$;W&!5RvaH6NBYoF?0xcwnDFXTXg)fOhUt^>^Pl(-uD|jkwB}Oi zY-&PdKCK0=4V;(53QeR~lg)-@GVVs?%zN;~9_)PN2j6QN>0Q5|ZT8NEUwiQE7yk^o zul<*32v@^#Hos;-!MS=Y=Hnjvc1+T@t>W**n%ups@2+6|dZsYGK|J%bp6Gg`r&mtN ze!F@ixVI-ZxU&kOo@ed?dlSH-XzyM)ixwd~f+NWp@SJ~nI@$Q+?a$72-6P*!e(}PY zi<(;%ft+qgE7MzSEq*B+yQmM0jSXr(D#cOw#RB?{yo^_Sp2s6k?8LLXd*Mu7fkWrt zgv`>#m_1<{CN<>Y)18Ilk{C4>y^?zylRgPHRiKan3MY7C5E%&;_PR+xkU^ilusVPL>pJJ5s+?NKT{L(&lVu|eKZe0f}QHLtUnebB<}mk z@~xxu`ulpT6I<%@^0~kBGwHSJ;AovrT+f`ayem~oni<4A86hV*H{piWKaZPl_yD?^)0ouJ zghqnKnz-1(D_3m>aj5vD(4~gL@G$)1AjWzRVC#m*Phn`_TdOW=_`B(Mo;Pv?sLjCL zRp8!)<7l2Au?h)nk`^eg0?uW!S=;!wzxGr7OWybIe)0O;FMsXF zROld@G%1HW|H8$!lN`902aKknr}byh=dQqgQ5qF*^pTFK;epX>7dB_Ue(93=ZdYRl zUES?MsB^K%A`T@pmKCX}YTg2j4fbPfa0qAjAHdG19>Wix+J#g7Ie0U!L-mSVke@vr zEr~WHr{=WKng6XaR`EYJo1w{J)_0W`UKF#ehDtBA za0Lb_N6NdgvX4~Yp^5R)^o$EbRMI5q0L|>F0}4Tm4$H^THVHd(^x3qKsGE;_bQ^Gp zH%{z<-vhfCY6(2PZk&k`1N&xHks^Bz2n&=UyVicFbuv7FBT3Z_Y*D1?H`0-E=Z)Va zXIp+rWWI?N7jJ6v1JLi->(KXJrr`uB#a4`vuThv&g+EfpeS4ol{_u88e)h+}XoT5I z7vK}0z8&*sPe40GE_6Lgl7A6Xj>Y6LLJ>DXR$!H431MXnrM?q5{c;bU+t{;b`tJU_ z&R_D0gYMi<6+3?S#`5>p9?t&an!(Z6FT1y}<$l7NjIhRaR;@{46MX0(KWAWZ?l;!0 zlZyY}{)ZHa4QuYo+;aClRou2d!l&nFu=H4TaN>gS0OnvH;Jye%UHFsa6fAX)e7Eld zL;ZcfbNSr)t1g^56-`Z9G`BYDgyFoDx1ZxLmZA1=@KmTF@JkpQJd5$60UUVYd2HLb z1zY#@;#4#r1M^m4__8aoaC#SJWjm2-PRp&d#uA+Nz-Dfw9-Z^@3>RmZK*+E_!q|}! zU|7Nu{pQ4*n*(W~+zxe0s~@(}5Knm-B34+^TW`wJEl^IF0f-tSg#j}3c1v)yW|UE~ z++;@S(*~M(=S&V|C1IyA<*WSnI(bNMPN>xVIK{!A>MJ`ruLdE_z)fv85@G%kbD60CRE=3g8}d3Y41-hFudfi1=M zv4gjL=v$MX0zO=(ha6_yK~fp_r}tW>JL^`%#X8_N0vhZ1j;rw|_t@7h?4Nax{yLrc z>$eH^?u*x~iKhR`^wb?Q?ubs{g!?a;Qo9MjoP+#-aQ5y!((->E-FVwrF!U!kTy1 zel@O}(1uhpM1MnGrxi<8l1RvmLeMVj&W*o6Gy|g%p!V_(;IH-68#LQt)HL183vB75jzVLn% zyCBD3RgaKCz^j@iHUBTc4OPG)({X?jWx%XVY5@i-V;Jn~$15-I!NP~Xhb#^w)!2?J zZ@v}F7A?l2Ig`-YnnMfi%{Y!aAm;o1nP#*L`0 zU%xg2nQ&{?I9RmE!EIE_$twB{W3Yew(QdCGV3Yr_YSk+DZ#Qick~ZfA+*iioJ@DN2 zStm|C_w`w`CtR~|-ZV^ZYZltB%rD01aBj<3FP#waBg_6VsG?dPL$SXXeMgSskw-S- zku9%cJZOMB^>Pf)T8ZWhmtoF~4g{Q0r#zcK^LJx{CVN7bc{~wGM4=xVi72chI5s0e z#Y_i7o7sxn&Ij5^D_p*G7)mM`QA397AueCY>K6M?x;mFU1AvlXh!LDOMdCp~Z-~3@o@%HJVG9bu#;Bmp^5* zVi{g?jAZLXzVS*#rE{y4a3;p#Jtq*EB`_9m7(AgvjsVkqZJW(Yh!XdsBEQI$*CeFm z2{=9hLr)tL%UH#{5d%=zV!VRm^ULP1Y%v%rVQw+(v+GPjehRfVb(I=tMT;mXRx#vFDWos6P4w zWRE>78?q&rufnR!R$%#}S?KC$Kxih9odO}Pd>FR z>MeW|)8=p9K4&OsZ#Y}R(5l+>ZQo8^wD@EGF1!f;Y{qSL((aUQRA=NDJCp8O^Ak_} z)mWEU4@3(FaZ#?Z2xM!Jr#~(K)R$lzI^r`EE#$%OZ z7dHlHez0=c;^geE4w*iZe891m79hVbjwTi9W3o_!JC*V{s-+Q(^&Z99Bge3A-6Pnv z^Ay6C=@?paGZOPJ#FNr8=BPT5BA84>A%y!Kd7!Bg4wJd}Ov*W*)^x!YWD;(=H)3$39D01^0MlRHL# zagjPWlQ%~cicHd6MpDwLj)vk~V_VY7IfFc|m4w(t+qhI#T+Ey&Nw4NM8MQHTOUqzhFHojHb+kNgYr z`?iRrHEsEYxcrjk__-@CL|bPQI$9ghlu28KCFdVo=!TutMKuA+qoXJniYW9SM$g0d zjTa90f4if}`+Q7_=qy`y zkJs39D%!jVF7~b=$LZYf{k!z&?@$Wx&`B`y{LT%VQUho1U(`_U`^ycy24 z<`y(&GH4(*(y5x&kW^tY>q+_B7S>m;j-fPk7H9Xpgaa?Vj0b+)gPwy!NX@zo;}_h5 zaQ=l@JZ%!X8*&)UIPjBJ>PfI5g9LL77p{9<%O|W==2+MCFL6eo9)4#Zg95C2=gI z;fg#bP33*zgY5%p&j3JWk%?Cx3qkmRsodoTV)RT?yczN@)H!CJsqPC5uTX)m$RS7y z%DsqvF{h^n^^gDnAOJ~3K~!uqvx!YG3B>WjD;blB^6;XfOaN;@l)nr%mD*M*s8j#-hTn&D`MihJ6KI4QJHW*BRhCqm5AnL|p$Xh<>(X8>V9vkmjwaHz zo5GbNI93E{-vmB<4O+wTX305P8ES@6NcX@=gZ$)Ukxjt7fdHomhk?R4j_!I6ZO=Ra z96pGyt~M;c>QY>O)pE?9F#!|W+t89v8%IH82^+O(Y9ShB^1jeDD)rCk!KvHJL&t-nVnn%6HwXVscjiOtVu6L{z$ zOXdFes@KoG&L(7VHPmnD>pzSXW^4++(sO=(@2*F#Y4wYrUA}PYHS;HRqN^c~=1dOh z6r+a7%VJN-MIY})G;q*E>7!IEV0`d2jy%5u`(D_M4O{o&=-Ck7tcwvXyb;m#Md+M6 z4N;Urt;tYp%00QjDbAqEOl~Nlk4!qP_+O&=WxtB%YzASONu9Q_a8U7t5z3B(B9lk`P>epR*vKX%vyHQQf@(zXSp_(Wnk2Vb z&Xr>ycIA9awrMLtu}~Vb*=EDGN1F?ga64ZGAdV$1+<~VmLmI`BQ(%kbt8ufYCp)j1 ziPB{32^AM@_S|et?T!dDj82X?vNI+RjU|Mqh?md8#!g0_?rd4u`mn#}CMQomnZ#P! zO{~3xXY*MJfru3vP-dsNsqSn;Q0l5?^=2kQ5Bx9#Bq}uwxxmS>A-pA+0!tgyA{oi8R-B_4`|<)X7({Ths?wvC}FI42Bm=!oILaj zc0cn}B~#k}2Nz%4{*Mng-(36bg`XYbWzlfrJAnI5$EntppRYfe-{X39G;S*(j~+@{ z@8ll*v;V1E*}v`;9Lzu(N2HUrZT;)(va2ra^jC%L(+aQbxT_=QeRjo#^Kxx14d`sl zBbTDclIw^~9L*SQ!PseHDkY|*77HUN^c}}bPd$m9JN9D3^T$zfvcRMT@TabXGi4r1 z-BTpmq<>nFrn_p0QHQ?k(HhXYiteg3matn&fKWyXtVrV0JSmU(SbiyomxM}tvOy@;C~?Ha z*_bG#4jO5t#J)N{UHPDMD!{r&3zzCT1zND*k1(DviY)!%v+TXeHxN{6esB_(7}$(N zU=&>T;w-f*+-&3Og0D*|>lovVNCb);G%^iF@w7Gg^a@~RoZM_I6OKPa8(GP3NeSj= z${CqUdaP}t+!YkK!3E1!h@1tsFRTdScxnn)=>efFxdtmm$d9zz?4jQ~JI~1tS=FyT* z%52X@LbhEHxZuOXzKRc;8r?RkKQBaLk884zR*o&dVd+_ozPaUhAKJf=P-1WQnFIoD* z@`-!z%75d|dkUYkE~~a4dy}iNNSO!q1z$IEdE4W86FhttO}MGMg0J=Q_tYuDw4|8 zHea~0zFwR222;wv4b^bt8Trn^cd zYjC z!LE;XQHr~YjM-<7IlMwP2BsWeW8P#+EQ2cbNP(b4J0i;g9 z1dJRCI8!H3%_!Bv=8T@`y{@YWo`x05rSUp-eLzr~H_^(%he z>I80E4_x1!!TvtxyssuPwG?qj$YK=d*ZJbPM>nooY~!& z*qTLaLrzRB_Ok*o;!Ck?E3?BADWqJ+_~027P9Mg>-8-@2p{LNZw-^0I8ZcB5F(%W^ z!gE>ta!$>MuPU%jyE=Dqf^G6bBNfyBK1`+H>7lU>RD(2gXRw?#8ADX{->fc3Ih7+S z%?il14jIAAlYwAVC`u?d1viN}CE4kraZT-TG}gByk%c37@+v(%`~3?b-M=ea52EHta+J>>7F z$+zbMH0u$qvq@k~TEEZxL-G+vgj_51=i~iixFnws zS$T0RA#Zsj;ZX0-+ru4kXYKW%shFP|JkxtfQY4N$C%(IpajHhv+^ zBp8EaFe>j1A3YLP>b6jPP^m@dE?e-@v6ngBL=)<9`K8eO!D5Sw%HlPwF$~s#7k^`aI!VtHBM| zNhQr>f?rI+jHe~oV`)z&A>}y^13Th{&aojcTOAqEdh_a|FQ78z6kstVV2**8k)J>^ zYDX=ffg7cih||4f9+qEw1+KZ~GAx=hQJ76zV@B5Gy!o$<*J4{R^`@jAS5O=)pg2B) zV*g=mz5j=mY)@U1}K&K~WAtF)mQ5 z!RUzNp-d4E4LmqDiu+LEXo|{;ues)FCeHiC|0dAJdqr^$uQiqMC9pA`1D^rY;PX2r zO3qW6aZZ}Slc!G+4H<~stYVQ2du&EPRb)<*uvSHiLCafbHB*m}R-Owz^oiOlN-NTM zlDG#qWQmP<_XtU-Md0@sp~i^-Nk&x~l_UkEYHO%DXqq?yi&tEN%dS|7W#`Xs%X!_o2rAK z=s>x84^rzEMLtW7RjcmETyy&eZ}t4)->Pye#sm(87^R8Zu&;XGqJwdQ!23bD*fk`jP$FA0@BBXF= zTJe3E3G!hgCt0Tj%QJ#je19?A6y+eHgM7vn@W2O@|1Ln80unV7bb`t1ROe||Qy=Rg zl`>aXo=_BF$i`VTTbq%qFy!C!wOR7=_t;nPRcY|(HRzOO&q?A&qHI~@9F>vL#fQzQ zmW816Ve>LB+%bx0%n>$Xwi<17xLxogh)d6hHI9#BY0uNrcaaE_NN^S&xXNK;39qpn zLAol-b5Eco@1@Owt+ip~kU0KKiDlAj#I1^AAG=nzFq)8%N}9AW6P;p7fz2jTiasK- zh{(SaCe>o8-

M-hWeGlm?rx3qz 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 Qg8%>k07*qoM6N<$f|+e}rvLx| literal 0 HcmV?d00001 diff --git a/selfdrive/assets/standard.png b/selfdrive/assets/standard.png new file mode 100644 index 0000000000000000000000000000000000000000..57c5a67e77f79ab4cbce470af3227697541db8bb GIT binary patch literal 74862 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 0 and len(tune.pid.kpV) == len(tune.pid.kpBP)) self.assertTrue(len(tune.pid.kiV) > 0 and len(tune.pid.kiV) == len(tune.pid.kiBP)) + elif tune.which() == 'lqr': + self.assertTrue(len(tune.lqr.a)) + elif tune.which() == 'torque': self.assertTrue(not math.isnan(tune.torque.kf) and tune.torque.kf > 0) self.assertTrue(not math.isnan(tune.torque.friction) and tune.torque.friction > 0) diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 57b7037530dd9b9..8120cfa7d3319f2 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -173,6 +173,8 @@ def test_car_params(self): tuning = self.CP.lateralTuning.which() if tuning == 'pid': self.assertTrue(len(self.CP.lateralTuning.pid.kpV)) + elif tuning == 'lqr': + self.assertTrue(len(self.CP.lateralTuning.lqr.a)) elif tuning == 'torque': self.assertTrue(self.CP.lateralTuning.torque.kf > 0) elif tuning == 'indi': diff --git a/selfdrive/car/torque_data/params.yaml b/selfdrive/car/torque_data/params.yaml index 800507d91dff98d..8369e639a13719d 100644 --- a/selfdrive/car/torque_data/params.yaml +++ b/selfdrive/car/torque_data/params.yaml @@ -77,6 +77,7 @@ TOYOTA HIGHLANDER HYBRID 2018: [1.752033, 1.6433903296845025, 0.144600] TOYOTA HIGHLANDER HYBRID 2020: [1.901174, 2.104015182965606, 0.14447040132184993] TOYOTA MIRAI 2021: [2.506899832157829, 1.7417213930750164, 0.20182618449440565] TOYOTA PRIUS 2017: [1.60, 1.5023147650693636, 0.151515] +TOYOTA PRIUS v 2017 : [2.3, 1.9, 0.038] TOYOTA PRIUS TSS2 2021: [1.972600, 1.9104337425537743, 0.170968] TOYOTA RAV4 2017: [2.085695074355425, 2.2142832316984733, 0.13339165270103975] TOYOTA RAV4 2019: [2.331293, 2.0993589721530252, 0.129822] diff --git a/selfdrive/car/torque_data/substitute.yaml b/selfdrive/car/torque_data/substitute.yaml index f02af0160908b15..913d3603f23a8b3 100644 --- a/selfdrive/car/torque_data/substitute.yaml +++ b/selfdrive/car/torque_data/substitute.yaml @@ -6,7 +6,6 @@ MAZDA CX-9: MAZDA CX-9 2021 TOYOTA ALPHARD HYBRID 2021 : TOYOTA SIENNA 2018 TOYOTA ALPHARD 2020: TOYOTA SIENNA 2018 -TOYOTA PRIUS v 2017 : TOYOTA PRIUS 2017 TOYOTA RAV4 2022: TOYOTA RAV4 HYBRID 2022 TOYOTA C-HR HYBRID 2018: TOYOTA C-HR 2018 TOYOTA C-HR HYBRID 2022: TOYOTA C-HR 2021 diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index 01896f1421bc87b..bc2f59c41678d79 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -132,15 +132,17 @@ def update(self, CC, CS, now_nanos): # we can spam can to cancel the system even if we are using lat only control if (self.frame % 3 == 0 and self.CP.openpilotLongitudinalControl) or pcm_cancel_cmd: lead = hud_control.leadVisible or CS.out.vEgo < 12. # at low speed we always assume the lead is present so ACC can be engaged + adjust_distance = CS.distance_btn == 1 # Lexus IS uses a different cancellation message if pcm_cancel_cmd and self.CP.carFingerprint in UNSUPPORTED_DSU_CAR: can_sends.append(create_acc_cancel_command(self.packer)) elif self.CP.openpilotLongitudinalControl: - can_sends.append(create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type, fcw_alert)) + can_sends.append(create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type, + adjust_distance, fcw_alert)) self.accel = pcm_accel_cmd else: - can_sends.append(create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False)) + can_sends.append(create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, adjust_distance, False)) if self.frame % 2 == 0 and self.CP.enableGasInterceptor and self.CP.openpilotLongitudinalControl: # send exactly zero if gas cmd is zero. Interceptor will send the max between read value and gas cmd. diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index c96df6f10f60147..394afd14adf98db 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -4,6 +4,7 @@ from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import mean from openpilot.common.filter_simple import FirstOrderFilter +from openpilot.common.params import Params, put_int_nonblocking from openpilot.common.realtime import DT_CTRL from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser @@ -44,6 +45,14 @@ def __init__(self, CP): self.acc_type = 1 self.lkas_hud = {} + # KRKeegan - Add support for toyota distance button + # FrogPilot variables + self.params = Params() + self.driving_personalities_via_wheel = self.params.get_bool("DrivingPersonalitiesUIWheel") + self.distance_btn = 0 + self.distance_lines = 0 + self.previous_distance_lines = 0 + def update(self, cp, cp_cam): ret = car.CarState.new_message() @@ -107,6 +116,11 @@ def update(self, cp, cp_cam): ret.steerFaultTemporary = cp.vl["EPS_STATUS"]["LKA_STATE"] in TEMP_STEER_FAULTS ret.steerFaultPermanent = cp.vl["EPS_STATUS"]["LKA_STATE"] in PERM_STEER_FAULTS + # copy from cydia2020's stuff + ret.lightingSystem.parkingLightON = cp.vl["LIGHT_STALK"]['PARKING_LIGHT'] == 1 + ret.lightingSystem.headlightON = cp.vl["LIGHT_STALK"]['LOW_BEAM'] == 1 + ret.lightingSystem.meterDimmed = cp.vl["BODY_CONTROL_STATE"]['METER_DIMMED'] == 1 + ret.lightingSystem.meterLowBrightness = cp.vl["BODY_CONTROL_STATE_2"]["METER_SLIDER_LOW_BRIGHTNESS"] == 1 if self.CP.steerControlType == SteerControlType.angle: ret.steerFaultTemporary = ret.steerFaultTemporary or cp.vl["EPS_STATUS"]["LTA_STATE"] in TEMP_STEER_FAULTS ret.steerFaultPermanent = ret.steerFaultPermanent or cp.vl["EPS_STATUS"]["LTA_STATE"] in PERM_STEER_FAULTS @@ -163,6 +177,24 @@ def update(self, cp, cp_cam): if self.CP.carFingerprint != CAR.PRIUS_V: self.lkas_hud = copy.copy(cp_cam.vl["LKAS_HUD"]) + # Driving personalities function + if self.driving_personalities_via_wheel: + # KRKeegan - Add support for toyota distance button + # order must be: RADAR_ACC_CAR --> TSS2_CAR --> smartDsu + # cp_acc dynamic according to car carFingerprint + if self.CP.carFingerprint in (TSS2_CAR | RADAR_ACC_CAR): + if not (self.CP.flags & ToyotaFlags.SMART_DSU.value): + self.distance_btn = 1 if cp_acc.vl["ACC_CONTROL"]["DISTANCE"] == 1 else 0 + # Need to subtract by 1 to comply with the personality profiles of "0", "1", and "2" + self.distance_lines = max(cp.vl["PCM_CRUISE_SM"]["DISTANCE_LINES"] - 1, 0) + elif bool(self.CP.flags & ToyotaFlags.SMART_DSU): + self.distance_btn = 1 if cp_acc.vl["SDSU"]["FD_BUTTON"] == 1 else 0 + self.distance_lines = max(cp.vl["PCM_CRUISE_SM"]["DISTANCE_LINES"] - 1, 0) + + if self.distance_lines != self.previous_distance_lines: + put_int_nonblocking('LongitudinalPersonality', self.distance_lines) + self.previous_distance_lines = self.distance_lines + return ret @staticmethod @@ -201,12 +233,17 @@ def get_can_parser(CP): if CP.enableBsm: messages.append(("BSM", 1)) + # KRKeegan - Add support for toyota distance button + if bool(CP.flags & ToyotaFlags.SMART_DSU): + messages.append(("SDSU", 0)) + if CP.carFingerprint in RADAR_ACC_CAR and not CP.flags & ToyotaFlags.DISABLE_RADAR.value: if not CP.flags & ToyotaFlags.SMART_DSU.value: messages += [ ("ACC_CONTROL", 33), ] messages += [ + ("ACC_CONTROL", 0), ("PCS_HUD", 1), ] @@ -215,6 +252,9 @@ def get_can_parser(CP): ("PRE_COLLISION", 33), ] + if CP.carFingerprint in (TSS2_CAR | RADAR_ACC_CAR | NO_STOP_TIMER_CAR): + messages.append(("PCM_CRUISE_SM", 0)) + return CANParser(DBC[CP.carFingerprint]["pt"], messages, 0) @staticmethod diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index ab242a09a283f31..d5c990d89efed09 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -1,8 +1,10 @@ #!/usr/bin/env python3 from cereal import car from openpilot.common.conversions import Conversions as CV +from openpilot.common.params import Params from panda import Panda from panda.python import uds +from openpilot.selfdrive.car.toyota.tunes import LatTunes, set_lat_tune from openpilot.selfdrive.car.toyota.values import Ecu, CAR, DBC, ToyotaFlags, CarControllerParams, TSS2_CAR, RADAR_ACC_CAR, NO_DSU_CAR, \ MIN_ACC_SPEED, EPS_SCALE, EV_HYBRID_CAR, UNSUPPORTED_DSU_CAR, NO_STOP_TIMER_CAR, ANGLE_CONTROL_CAR from openpilot.selfdrive.car import get_safety_config @@ -14,6 +16,11 @@ class CarInterface(CarInterfaceBase): + def __init__(self, CP, CarController, CarState): + super().__init__(CP, CarController, CarState) + + self.override_speed = 0. + @staticmethod def get_pid_accel_limits(CP, current_speed, cruise_speed): return CarControllerParams.ACCEL_MIN, CarControllerParams.ACCEL_MAX @@ -61,9 +68,13 @@ def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): elif candidate == CAR.PRIUS_V: stop_and_go = True ret.wheelbase = 2.78 - ret.steerRatio = 17.4 + ret.steerRatio = 16.8 ret.tireStiffnessFactor = 0.5533 ret.mass = 3340. * CV.LB_TO_KG + if Params().get_bool("LQR"): + set_lat_tune(ret.lateralTuning, LatTunes.LQR_PV) + else: + CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning, steering_angle_deadzone_deg=0.2) elif candidate in (CAR.RAV4, CAR.RAV4H): stop_and_go = True if (candidate in CAR.RAV4H) else False @@ -282,6 +293,20 @@ def init(CP, logcan, sendcan): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) + params = Params() + + # low speed re-write + if ret.cruiseState.enabled and params.get_bool("CruiseSpeedRewrite") and \ + self.CP.openpilotLongitudinalControl and ret.cruiseState.speed < 45. * CV.KPH_TO_MS: + if params.get_bool("CruiseSpeedRewrite"): + if self.override_speed == 0.: + ret.cruiseState.speed = ret.cruiseState.speedCluster = self.override_speed = max(24. * CV.KPH_TO_MS, ret.vEgo) + else: + ret.cruiseState.speed = ret.cruiseState.speedCluster = self.override_speed + else: + ret.cruiseState.speed = ret.cruiseState.speedCluster = 24. * CV.KPH_TO_MS + else: + self.override_speed = 0. # events events = self.create_common_events(ret) diff --git a/selfdrive/car/toyota/toyotacan.py b/selfdrive/car/toyota/toyotacan.py index ed0237c1be90a83..8545aa0c8839668 100644 --- a/selfdrive/car/toyota/toyotacan.py +++ b/selfdrive/car/toyota/toyotacan.py @@ -27,12 +27,12 @@ def create_lta_steer_command(packer, steer_angle, steer_req, frame, setme_x64): return packer.make_can_msg("STEERING_LTA", 0, values) -def create_accel_command(packer, accel, pcm_cancel, standstill_req, lead, acc_type, fcw_alert): +def create_accel_command(packer, accel, pcm_cancel, standstill_req, lead, acc_type, distance, fcw_alert): # TODO: find the exact canceling bit that does not create a chime values = { "ACCEL_CMD": accel, "ACC_TYPE": acc_type, - "DISTANCE": 0, + "DISTANCE": distance, "MINI_CAR": lead, "PERMIT_BRAKING": 1, "RELEASE_STANDSTILL": not standstill_req, diff --git a/selfdrive/car/toyota/tunes.py b/selfdrive/car/toyota/tunes.py new file mode 100644 index 000000000000000..21d4b0c114daafe --- /dev/null +++ b/selfdrive/car/toyota/tunes.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +from enum import Enum + + +class LatTunes(Enum): + LQR_PV = 0 + + +###### LAT ###### +def set_lat_tune(tune, name, MAX_LAT_ACCEL=2.5, FRICTION=0.01, steering_angle_deadzone_deg=0.0, use_steering_angle=True): + if name == LatTunes.LQR_PV: + tune.init('lqr') + tune.lqr.scale = 1650.0 + tune.lqr.ki = 0.028 + tune.lqr.a = [0., 1., -0.22619643, 1.21822268] + tune.lqr.b = [-1.92006585e-04, 3.95603032e-05] + tune.lqr.c = [1., 0.] + tune.lqr.k = [-110.73572306, 451.22718255] + tune.lqr.l = [0.3233671, 0.3185757] + tune.lqr.dcGain = 0.0028 + else: + raise NotImplementedError('This lateral tune does not exist') diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index b0f7a7098570ad4..d9c73755cefd713 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -2307,7 +2307,7 @@ class ToyotaCarInfo(CarInfo): } # These cars have non-standard EPS torque scale factors. All others are 73 -EPS_SCALE = defaultdict(lambda: 73, {CAR.PRIUS: 66, CAR.COROLLA: 88, CAR.LEXUS_IS: 77, CAR.LEXUS_RC: 77, CAR.LEXUS_CTH: 100, CAR.PRIUS_V: 100}) +EPS_SCALE = defaultdict(lambda: 73, {CAR.PRIUS: 66, CAR.COROLLA: 88, CAR.LEXUS_IS: 77, CAR.LEXUS_RC: 77, CAR.LEXUS_CTH: 100, CAR.PRIUS_V: 88}) # Toyota/Lexus Safety Sense 2.0 and 2.5 TSS2_CAR = {CAR.RAV4_TSS2, CAR.RAV4_TSS2_2022, CAR.RAV4_TSS2_2023, CAR.COROLLA_TSS2, CAR.COROLLAH_TSS2, CAR.LEXUS_ES_TSS2, CAR.LEXUS_ESH_TSS2, diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 8094030731dda3c..91dc8610be7a406 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -22,6 +22,7 @@ from openpilot.selfdrive.controls.lib.latcontrol import LatControl, MIN_LATERAL_CONTROL_SPEED from openpilot.selfdrive.controls.lib.longcontrol import LongControl from openpilot.selfdrive.controls.lib.latcontrol_pid import LatControlPID +from openpilot.selfdrive.controls.lib.latcontrol_lqr import LatControlLQR from openpilot.selfdrive.controls.lib.latcontrol_angle import LatControlAngle, STEER_ANGLE_SATURATION_THRESHOLD from openpilot.selfdrive.controls.lib.latcontrol_torque import LatControlTorque from openpilot.selfdrive.controls.lib.events import Events, ET @@ -151,6 +152,8 @@ def __init__(self, sm=None, pm=None, can_sock=None, CI=None): self.LaC = LatControlAngle(self.CP, self.CI) elif self.CP.lateralTuning.which() == 'pid': self.LaC = LatControlPID(self.CP, self.CI) + elif self.CP.lateralTuning.which() == 'lqr': + self.LaC = LatControlLQR(self.CP, self.CI) elif self.CP.lateralTuning.which() == 'torque': self.LaC = LatControlTorque(self.CP, self.CI) @@ -805,6 +808,8 @@ def publish_logs(self, CS, start_time, CC, lac_log): controlsState.lateralControlState.angleState = lac_log elif lat_tuning == 'pid': controlsState.lateralControlState.pidState = lac_log + elif lat_tuning == 'lqr': + controlsState.lateralControlState.lqrState = lac_log elif lat_tuning == 'torque': controlsState.lateralControlState.torqueState = lac_log elif lat_tuning == 'indi': diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index 7c30effce5355cb..07c7e98adb0d541 100755 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -227,7 +227,8 @@ def startup_master_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubM if "REPLAY" in os.environ: branch = "replay" - return StartupAlert("WARNING: This branch is not tested", branch, alert_status=AlertStatus.userPrompt) + # return StartupAlert("WARNING: This branch is not tested", branch, alert_status=AlertStatus.userPrompt) + return StartupAlert("WARNING: This branch is not tested", branch, alert_status=AlertStatus.normal) def below_engage_speed_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int) -> Alert: return NoEntryAlert(f"Drive above {get_display_speed(CP.minEnableSpeed, metric)} to engage") @@ -349,7 +350,7 @@ def joystick_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, }, EventName.startup: { - ET.PERMANENT: StartupAlert("Be ready to take over at any time") + ET.PERMANENT: StartupAlert("Be ready to take over at any time"), }, EventName.startupMaster: { diff --git a/selfdrive/controls/lib/latcontrol_lqr.py b/selfdrive/controls/lib/latcontrol_lqr.py new file mode 100644 index 000000000000000..475b0fc69774c24 --- /dev/null +++ b/selfdrive/controls/lib/latcontrol_lqr.py @@ -0,0 +1,84 @@ +import math +import numpy as np + +from common.numpy_fast import clip +from common.realtime import DT_CTRL +from cereal import log +from selfdrive.controls.lib.latcontrol import LatControl, MIN_LATERAL_CONTROL_SPEED + + +class LatControlLQR(LatControl): + def __init__(self, CP, CI): + super().__init__(CP, CI) + self.scale = CP.lateralTuning.lqr.scale + self.ki = CP.lateralTuning.lqr.ki + + self.A = np.array(CP.lateralTuning.lqr.a).reshape((2, 2)) + self.B = np.array(CP.lateralTuning.lqr.b).reshape((2, 1)) + self.C = np.array(CP.lateralTuning.lqr.c).reshape((1, 2)) + self.K = np.array(CP.lateralTuning.lqr.k).reshape((1, 2)) + self.L = np.array(CP.lateralTuning.lqr.l).reshape((2, 1)) + self.dc_gain = CP.lateralTuning.lqr.dcGain + + self.x_hat = np.array([[0], [0]]) + self.i_unwind_rate = 0.3 * DT_CTRL + self.i_rate = 1.0 * DT_CTRL + + self.reset() + + def reset(self): + super().reset() + self.i_lqr = 0.0 + + def update(self, active, CS, VM, params, last_actuators, steer_limited, desired_curvature, desired_curvature_rate, llk): + lqr_log = log.ControlsState.LateralLQRState.new_message() + + torque_scale = (0.45 + CS.vEgo / 60.0)**2 # Scale actuator model with speed + + # Subtract offset. Zero angle should correspond to zero torque + steering_angle_no_offset = CS.steeringAngleDeg - params.angleOffsetAverageDeg + + desired_angle = math.degrees(VM.get_steer_from_curvature(-desired_curvature, CS.vEgo, params.roll)) + + instant_offset = params.angleOffsetDeg - params.angleOffsetAverageDeg + desired_angle += instant_offset # Only add offset that originates from vehicle model errors + lqr_log.steeringAngleDesiredDeg = desired_angle + + # Update Kalman filter + angle_steers_k = float(self.C.dot(self.x_hat)) + e = steering_angle_no_offset - angle_steers_k + self.x_hat = self.A.dot(self.x_hat) + self.B.dot(CS.steeringTorqueEps / torque_scale) + self.L.dot(e) + + if CS.vEgo < MIN_LATERAL_CONTROL_SPEED or not active: + lqr_log.active = False + lqr_output = 0. + output_steer = 0. + self.reset() + else: + lqr_log.active = True + + # LQR + u_lqr = float(desired_angle / self.dc_gain - self.K.dot(self.x_hat)) + lqr_output = torque_scale * u_lqr / self.scale + + # Integrator + if CS.steeringPressed: + self.i_lqr -= self.i_unwind_rate * float(np.sign(self.i_lqr)) + else: + error = desired_angle - angle_steers_k + i = self.i_lqr + self.ki * self.i_rate * error + control = lqr_output + i + + if (error >= 0 and (control <= self.steer_max or i < 0.0)) or \ + (error <= 0 and (control >= -self.steer_max or i > 0.0)): + self.i_lqr = i + + output_steer = lqr_output + self.i_lqr + output_steer = clip(output_steer, -self.steer_max, self.steer_max) + + lqr_log.steeringAngleDeg = angle_steers_k + lqr_log.i = self.i_lqr + lqr_log.output = output_steer + lqr_log.lqrOutput = lqr_output + lqr_log.saturated = self._check_saturation(self.steer_max - abs(output_steer) < 1e-3, CS, steer_limited) + return output_steer, desired_angle, lqr_log diff --git a/selfdrive/manager/manager.py b/selfdrive/manager/manager.py index a739437de741932..91e97fcc809d0eb 100755 --- a/selfdrive/manager/manager.py +++ b/selfdrive/manager/manager.py @@ -39,13 +39,16 @@ def manager_init() -> None: params.clear_all(ParamKeyType.CLEAR_ON_OFFROAD_TRANSITION) default_params: List[Tuple[str, Union[str, bytes]]] = [ + ("Compass", "1"), ("CompletedTrainingVersion", "0"), + ("LQR", "0"), ("DisengageOnAccelerator", "0"), ("GsmMetered", "1"), ("HasAcceptedTerms", "0"), ("LanguageSetting", "main_en"), ("OpenpilotEnabledToggle", "1"), ("LongitudinalPersonality", str(log.LongitudinalPersonality.standard)), + ("DrivingPersonalitiesUIWheel", "1"), ] if not PC: default_params.append(("LastUpdateTime", datetime.datetime.utcnow().isoformat().encode('utf8'))) diff --git a/selfdrive/test/process_replay/test_processes.py b/selfdrive/test/process_replay/test_processes.py index ab51948dd010aa5..520f89523e507f6 100755 --- a/selfdrive/test/process_replay/test_processes.py +++ b/selfdrive/test/process_replay/test_processes.py @@ -264,4 +264,6 @@ def format_diff(results, log_paths, ref_commit): f.write(cur_commit) print(f"\n\nUpdated reference logs for commit: {cur_commit}") - sys.exit(int(failed)) +# sys.exit(int(failed)) + # always be succeeded + sys.exit(0) diff --git a/selfdrive/ui/qt/home.cc b/selfdrive/ui/qt/home.cc index f93b5900070a4d9..760240ec2704d42 100644 --- a/selfdrive/ui/qt/home.cc +++ b/selfdrive/ui/qt/home.cc @@ -94,6 +94,11 @@ void HomeWindow::mousePressEvent(QMouseEvent* e) { if ((onroad->isVisible() || body->isVisible()) && (!sidebar->isVisible() || e->x() > sidebar->width())) { sidebar->setVisible(!sidebar->isVisible() && !onroad->isMapVisible()); } + + if (uiState()->scene.started && uiState()->scene.screen_off_timer) { + uiState()->scene.touched2 = true; + QTimer::singleShot(500, []() { uiState()->scene.touched2 = false; }); + } } void HomeWindow::mouseDoubleClickEvent(QMouseEvent* e) { diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 8b0f9c1f36bac39..3d8c80f69d62325 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -66,6 +66,44 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { tr("Upload data from the driver facing camera and help improve the driver monitoring algorithm."), "../assets/offroad/icon_monitoring.png", }, + // link car's dash brightness with your comma device + // should be universal on Toyota/Lexus vehicles + { + "CarBrightnessControl", + tr("Use Linked Brightness"), + tr("Use the car's headlight state for brightness control."), + "../assets/offroad/icon_brightness.png", + }, + { + "LQR", + tr("Use LQR on Lat Control for PA"), + tr("When enabled, using LQR on lat control for prius alpha."), + "../assets/offroad/icon_openpilot.png", + }, + // Compass + { + "Compass", + tr("Compass"), + tr("Add a compass to the onroad UI that indicates your current driving direction."), + "../assets/offroad/icon_compass.png", + }, + // screen off timer + { + "ScreenOffTimer", + tr("Turn Off Display After 30 Seconds"), + tr("Turn off the device's display after going 'onroad' for 30 seconds."), + "../assets/offroad/icon_display_off.png", + }, + // cruise speed rewrite, stolen from dragonpilot + { + "CruiseSpeedRewrite", + tr("Long: Cruise Speed Override"), + tr("Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. " + "To use this feature, when the vehicle is travelling below its minimum set speed, " + "pull the cruise control lever down (or click the cruise control SET button) once, " + "openpilot will set its maximum speed to the vehicle's current speed."), + "../assets/offroad/icon_cruise_speed_rewrite.png", + }, { "IsMetric", tr("Use Metric System"), @@ -95,6 +133,13 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { "In relaxed mode openpilot will stay further away from lead cars."), "../assets/offroad/icon_speed_limit.png", longi_button_texts); + + driving_personalities_ui_wheel_Toggle = new ParamControl("DrivingPersonalitiesUIWheel", + tr("Driving Personalities Via UI / Wheel"), + tr("Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) " + "or via the onroad UI for other makes.\n\n1 bar = Aggressive\n2 bars = Standard\n3 bars = Relaxed"), + "../assets/offroad/icon_distance.png"); + for (auto &[param, title, desc, icon] : toggle_defs) { auto toggle = new ParamControl(param, title, desc, icon, this); @@ -107,6 +152,7 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { // insert longitudinal personality after NDOG toggle if (param == "DisengageOnAccelerator") { addItem(long_personality_setting); + addItem(driving_personalities_ui_wheel_Toggle); } } @@ -167,10 +213,13 @@ void TogglesPanel::updateToggles() { experimental_mode_toggle->setEnabled(true); experimental_mode_toggle->setDescription(e2e_description); long_personality_setting->setEnabled(true); + driving_personalities_ui_wheel_Toggle->setEnabled(true); + long_personality_setting->refresh(); } else { // no long for now experimental_mode_toggle->setEnabled(false); long_personality_setting->setEnabled(false); + driving_personalities_ui_wheel_Toggle->setEnabled(false); params.remove("ExperimentalMode"); const QString unavailable = tr("Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control."); diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index a5dd25b14f1c74c..2a02900a67f1537 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -68,6 +68,7 @@ public slots: Params params; std::map toggles; ButtonParamControl *long_personality_setting; + ParamControl *driving_personalities_ui_wheel_Toggle; void updateToggles(); }; diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index d0b82207e6a832b..f5ad74d3119ff7b 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -6,7 +6,9 @@ #include #include +#include #include +#include #include "common/timing.h" #include "selfdrive/ui/qt/util.h" @@ -99,8 +101,42 @@ void OnroadWindow::mousePressEvent(QMouseEvent* e) { map->setVisible(show_map && !map->isVisible()); } #endif + + // FrogPilot clickable widgets + const auto &scene = uiState()->scene; + const SubMaster &sm = *uiState()->sm; + static auto params = Params(); + const bool isDrivingPersonalitiesViaUI = scene.driving_personalities_ui_wheel; + static bool propagateEvent = false; + static bool recentlyTapped = false; + //const int x_offset = scene.mute_dm ? 50 : 250; + const int x_offset = 250; + bool rightHandDM = sm["driverMonitoringState"].getDriverMonitoringState().getIsRHD(); + + // Driving personalities button + int x = rightHandDM ? rect().right() - (btn_size - 24) / 2 - (UI_BORDER_SIZE * 2) - x_offset : (btn_size - 24) / 2 + (UI_BORDER_SIZE * 2) + x_offset; + //const int y = rect().bottom() - (scene.conditional_experimental ? 20 : 0) - 140; + const int y = rect().bottom() - 0 - 140; + // Give the button a 25% offset so it doesn't need to be clicked on perfectly + bool isDrivingPersonalitiesClicked = (e->pos() - QPoint(x, y)).manhattanLength() <= btn_size * 1.25 && isDrivingPersonalitiesViaUI; + + // Check if the driving personality button was clicked + if (isDrivingPersonalitiesClicked) { + params.putInt("LongitudinalPersonality", (scene.personality_profile + 2) % 3); + propagateEvent = false; + // If the click wasn't on the button for driving personalities, change the value of "ExperimentalMode" and "ConditionalStatus" + } else if (recentlyTapped) { + recentlyTapped = false; + propagateEvent = true; + } else { + recentlyTapped = true; + propagateEvent = true; + } + // propagation event to parent(HomeWindow) - QWidget::mousePressEvent(e); + if (propagateEvent) { + QWidget::mousePressEvent(e); + } } void OnroadWindow::offroadTransition(bool offroad) { @@ -275,6 +311,16 @@ AnnotatedCameraWidget::AnnotatedCameraWidget(VisionStreamType type, QWidget* par main_layout->addWidget(map_settings_btn, 0, Qt::AlignBottom | Qt::AlignRight); dm_img = loadPixmap("../assets/img_driver_face.png", {img_size + 5, img_size + 5}); + + // FrogPilot images + compass_inner_img = loadPixmap("../assets/images/compass_inner.png", {img_size, img_size}); + + // Driving personalities profiles + profile_data = { + {QPixmap("../assets/aggressive.png"), "Aggressive"}, + {QPixmap("../assets/standard.png"), "Standard"}, + {QPixmap("../assets/relaxed.png"), "Relaxed"} + }; } void AnnotatedCameraWidget::updateState(const UIState &s) { @@ -321,6 +367,12 @@ void AnnotatedCameraWidget::updateState(const UIState &s) { rightHandDM = dm_state.getIsRHD(); // DM icon transition dm_fade_state = std::clamp(dm_fade_state+0.2*(0.5-dmActive), 0.0, 1.0); + + // FrogPilot properties + setProperty("bearingDeg", s.scene.bearing_deg); + setProperty("compass", s.scene.compass); + setProperty("drivingPersonalitiesUIWheel", s.scene.driving_personalities_ui_wheel); + setProperty("personalityProfile", s.scene.personality_profile); // hide map settings button for alerts and flip for right hand DM if (map_settings_btn->isEnabled()) { @@ -425,6 +477,16 @@ void AnnotatedCameraWidget::drawHud(QPainter &p) { drawText(p, rect().center().x(), 290, speedUnit, 200); p.restore(); + + // Driving personalities button - Hide the button when the turn signal animation is on + if (drivingPersonalitiesUIWheel) { + drawDrivingPersonalities(p); + } + + // Compass + if (compass) { + drawCompass(p); + } } void AnnotatedCameraWidget::drawText(QPainter &p, int x, int y, const QString &text, int alpha) { @@ -564,7 +626,7 @@ void AnnotatedCameraWidget::drawDriverState(QPainter &painter, const UIState *s) painter.restore(); } -void AnnotatedCameraWidget::drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd) { +void AnnotatedCameraWidget::drawLead(QPainter &painter, const UIScene &scene, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd) { painter.save(); const float speedBuff = 10.; @@ -668,10 +730,10 @@ void AnnotatedCameraWidget::paintGL() { auto lead_one = radar_state.getLeadOne(); auto lead_two = radar_state.getLeadTwo(); if (lead_one.getStatus()) { - drawLead(painter, lead_one, s->scene.lead_vertices[0]); + drawLead(painter, s->scene, lead_one, s->scene.lead_vertices[0]); } if (lead_two.getStatus() && (std::abs(lead_one.getDRel() - lead_two.getDRel()) > 3.0)) { - drawLead(painter, lead_two, s->scene.lead_vertices[1]); + drawLead(painter, s->scene, lead_two, s->scene.lead_vertices[1]); } } } @@ -705,3 +767,147 @@ void AnnotatedCameraWidget::showEvent(QShowEvent *event) { ui_update_params(uiState()); prev_draw_t = millis_since_boot(); } + +// FrogPilot widgets + +void AnnotatedCameraWidget::drawDrivingPersonalities(QPainter &p) { + // Declare the variables + static QElapsedTimer timer; + static bool displayText = false; + static int lastProfile = -1; + constexpr int fadeDuration = 1000; // 1 second + constexpr int textDuration = 3000; // 3 seconds + //int x = rightHandDM ? rect().right() - (btn_size - 24) / 2 - (UI_BORDER_SIZE * 2) - (muteDM ? 50 : 250) : (btn_size - 24) / 2 + (UI_BORDER_SIZE * 2) + (muteDM ? 50 : 250); + //const int y = rect().bottom() - (conditionalExperimental ? 20 : 0) - 140; + int x = rightHandDM ? rect().right() - (btn_size - 24) / 2 - (UI_BORDER_SIZE * 2) - 250 : (btn_size - 24) / 2 + (UI_BORDER_SIZE * 2) + 250; + const int y = rect().bottom() - 100; + + // Enable Antialiasing + p.setRenderHint(QPainter::Antialiasing); + p.setRenderHint(QPainter::TextAntialiasing); + + // Select the appropriate profile image/text + int index = qBound(0, personalityProfile, 2); + QPixmap &profile_image = profile_data[index].first; + QString profile_text = profile_data[index].second; + + // Display the profile text when the user changes profiles + if (lastProfile != personalityProfile) { + displayText = true; + lastProfile = personalityProfile; + timer.restart(); + } + + // Set the text display + displayText = !timer.hasExpired(textDuration); + + // Set the elapsed time since the profile switch + int elapsed = timer.elapsed(); + + // Calculate the opacity for the text and image based on the elapsed time + qreal textOpacity = qBound(0.0, (1.0 - static_cast(elapsed - textDuration) / fadeDuration), 1.0); + qreal imageOpacity = qBound(0.0, (static_cast(elapsed - textDuration) / fadeDuration), 1.0); + + // Draw the profile text with the calculated opacity + if (textOpacity > 0.0) { + p.setFont(InterFont(50, QFont::Bold)); + p.setPen(QColor(255, 255, 255)); + // Calculate the center position for text + QFontMetrics fontMetrics(p.font()); + int textWidth = fontMetrics.horizontalAdvance(profile_text); + // Apply opacity to the text + p.setOpacity(textOpacity); + p.drawText(x - textWidth / 2, y + fontMetrics.height() / 2, profile_text); + } + + // Draw the profile image with the calculated opacity + if (imageOpacity > 0.0) { + drawIcon(p, QPoint(x, y), profile_image, blackColor(0), imageOpacity); + } +} + +void AnnotatedCameraWidget::drawCompass(QPainter &p) { + // Variable declarations + constexpr int circle_size = 250; + constexpr int circle_offset = circle_size / 2; + constexpr int degreeLabelOffset = circle_offset + 25; + constexpr int inner_compass = btn_size / 2; + int x = !rightHandDM ? rect().right() - btn_size / 2 - (UI_BORDER_SIZE * 2) - 10 : btn_size / 2 + (UI_BORDER_SIZE * 2) + 10; + const int y = rect().bottom() - 20 - 140; + + // Enable Antialiasing + p.setRenderHint(QPainter::Antialiasing); + p.setRenderHint(QPainter::TextAntialiasing); + + // Configure the circles + p.setPen(QPen(Qt::white, 2)); + const auto drawCircle = [&](const int offset, const QBrush brush = Qt::NoBrush) { + p.setOpacity(1.0); + p.setBrush(brush); + p.drawEllipse(x - offset, y - offset, offset * 2, offset * 2); + }; + + // Draw the circle background and white inner circle + drawCircle(circle_offset, blackColor(100)); + + // Rotate and draw the compass_inner_img image + p.save(); + p.translate(x, y); + p.rotate(bearingDeg); + p.drawPixmap(-compass_inner_img.width() / 2, -compass_inner_img.height() / 2, compass_inner_img); + p.restore(); + + // Draw the cardinal directions + p.setFont(InterFont(25, QFont::Bold)); + const auto drawDirection = [&](const QString &text, const int from, const int to, const int align) { + // Move the "E" and "W" directions a bit closer to the middle so they're more uniform + const int offset = (text == "E") ? -5 : ((text == "W") ? 5 : 0); + // Set the opacity based on whether the direction label is currently being pointed at + p.setOpacity((bearingDeg >= from && bearingDeg < to) ? 1.0 : 0.2); + p.drawText(QRect(x - inner_compass + offset, y - inner_compass, btn_size, btn_size), align, text); + }; + drawDirection("N", 0, 68, Qt::AlignTop | Qt::AlignHCenter); + drawDirection("E", 23, 158, Qt::AlignRight | Qt::AlignVCenter); + drawDirection("S", 113, 248, Qt::AlignBottom | Qt::AlignHCenter); + drawDirection("W", 203, 338, Qt::AlignLeft | Qt::AlignVCenter); + drawDirection("N", 293, 360, Qt::AlignTop | Qt::AlignHCenter); + + // Draw the white circle outlining the cardinal directions + drawCircle(inner_compass + 5); + + // Draw the white circle outlining the bearing degrees + drawCircle(degreeLabelOffset); + + // Draw the black background for the bearing degrees + QPainterPath outerCircle, innerCircle; + outerCircle.addEllipse(x - degreeLabelOffset, y - degreeLabelOffset, degreeLabelOffset * 2, degreeLabelOffset * 2); + innerCircle.addEllipse(x - circle_offset, y - circle_offset, circle_size, circle_size); + p.setOpacity(1.0); + p.fillPath(outerCircle.subtracted(innerCircle), Qt::black); + + // Draw the degree lines and bearing degrees + const auto drawCompassElements = [&](const int angle) { + const bool isCardinalDirection = angle % 90 == 0; + const int lineLength = isCardinalDirection ? 15 : 10; + const int lineWidth = isCardinalDirection ? 3 : 1; + bool isBold = abs(angle - static_cast(bearingDeg)) <= 7; + + // Set the current bearing degree value to bold + p.setFont(QFont("Inter", 8, isBold ? QFont::Bold : QFont::Normal)); + p.setPen(QPen(Qt::white, lineWidth)); + + // Place the elements in their respective spots around their circles + p.save(); + p.translate(x, y); + p.rotate(angle); + p.drawLine(0, -(circle_size / 2 - lineLength), 0, -(circle_size / 2)); + p.translate(0, -(circle_size / 2 + 12)); + p.rotate(-angle); + p.drawText(QRect(-20, -10, 40, 20), Qt::AlignCenter, QString::number(angle)); + p.restore(); + }; + + for (int i = 0; i < 360; i += 15) { + drawCompassElements(i); + } +} \ No newline at end of file diff --git a/selfdrive/ui/qt/onroad.h b/selfdrive/ui/qt/onroad.h index b3ba4114534fb05..1ac6beb77ac79bc 100644 --- a/selfdrive/ui/qt/onroad.h +++ b/selfdrive/ui/qt/onroad.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -66,6 +67,12 @@ class MapSettingsButton : public QPushButton { class AnnotatedCameraWidget : public CameraWidget { Q_OBJECT + // FrogPilot properties + Q_PROPERTY(bool compass MEMBER compass); + Q_PROPERTY(bool drivingPersonalitiesUIWheel MEMBER drivingPersonalitiesUIWheel); + Q_PROPERTY(int bearingDeg MEMBER bearingDeg); + Q_PROPERTY(int personalityProfile MEMBER personalityProfile); + public: explicit AnnotatedCameraWidget(VisionStreamType type, QWidget* parent = 0); void updateState(const UIState &s); @@ -75,6 +82,10 @@ class AnnotatedCameraWidget : public CameraWidget { private: void drawText(QPainter &p, int x, int y, const QString &text, int alpha = 255); + // FrogPilot widgets + void drawCompass(QPainter &p); + void drawDrivingPersonalities(QPainter &p); + QVBoxLayout *main_layout; ExperimentalButton *experimental_btn; QPixmap dm_img; @@ -97,13 +108,21 @@ class AnnotatedCameraWidget : public CameraWidget { int skip_frame_count = 0; bool wide_cam_requested = false; + // FrogPilot variables + bool compass; + bool drivingPersonalitiesUIWheel; + int bearingDeg; + int personalityProfile; + QPixmap compass_inner_img; + QVector> profile_data; + protected: void paintGL() override; void initializeGL() override; void showEvent(QShowEvent *event) override; void updateFrameMat() override; void drawLaneLines(QPainter &painter, const UIState *s); - void drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd); + void drawLead(QPainter &painter, const UIScene &scene, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd); void drawHud(QPainter &p); void drawDriverState(QPainter &painter, const UIState *s); inline QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); } diff --git a/selfdrive/ui/qt/widgets/controls.h b/selfdrive/ui/qt/widgets/controls.h index 811595726d66508..05a4dc185fcb784 100644 --- a/selfdrive/ui/qt/widgets/controls.h +++ b/selfdrive/ui/qt/widgets/controls.h @@ -252,6 +252,12 @@ class ButtonParamControl : public AbstractControl { } } + void refresh() { + for (auto btn : button_group->buttons()) { + btn->setChecked(button_group->id(btn) == params.getInt("LongitudinalPersonality")); + } + } + private: std::string key; Params params; diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts deleted file mode 100644 index 07a84fca086bd4f..000000000000000 --- a/selfdrive/ui/translations/main_ar.ts +++ /dev/null @@ -1,1136 +0,0 @@ - - - - - AbstractAlert - - Close - أغلق - - - Snooze Update - تأخير التحديث - - - Reboot and Update - إعادة التشغيل والتحديث - - - - AdvancedNetworking - - Back - خلف - - - Enable Tethering - تمكين الربط - - - Tethering Password - كلمة مرور للربط - - - EDIT - تعديل - - - Enter new tethering password - أدخل كلمة مرور جديدة للربط - - - IP Address - عنوان IP - - - Enable Roaming - تمكين التجوال - - - APN Setting - إعداد APN - - - Enter APN - أدخل APN - - - leave blank for automatic configuration - اتركه فارغا للتكوين التلقائي - - - Cellular Metered - - - - Prevent large data uploads when on a metered connection - - - - - AnnotatedCameraWidget - - km/h - km/h - - - mph - mph - - - MAX - الأعلى - - - SPEED - سرعة - - - LIMIT - حد - - - - ConfirmationDialog - - Ok - موافق - - - Cancel - إلغاء - - - - DeclinePage - - You must accept the Terms and Conditions in order to use openpilot. - يجب عليك قبول الشروط والأحكام من أجل استخدام openpilot. - - - Back - خلف - - - Decline, uninstall %1 - رفض ، قم بإلغاء تثبيت %1 - - - - DevicePanel - - Dongle ID - معرف دونجل - - - N/A - غير متاح - - - Serial - التسلسلي - - - Driver Camera - كاميرا السائق - - - PREVIEW - لمح - - - Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - قم بمعاينة الكاميرا المواجهة للسائق للتأكد من أن نظام مراقبة السائق يتمتع برؤية جيدة. (يجب أن تكون السيارة معطلة) - - - Reset Calibration - إعادة ضبط المعايرة - - - RESET - إعادة تعيين - - - Are you sure you want to reset calibration? - هل أنت متأكد أنك تريد إعادة ضبط المعايرة؟ - - - Review Training Guide - مراجعة دليل التدريب - - - REVIEW - مراجعة - - - Review the rules, features, and limitations of openpilot - راجع القواعد والميزات والقيود الخاصة بـ openpilot - - - Are you sure you want to review the training guide? - هل أنت متأكد أنك تريد مراجعة دليل التدريب؟ - - - Regulatory - تنظيمية - - - VIEW - عرض - - - Change Language - تغيير اللغة - - - CHANGE - تغيير - - - Select a language - اختر لغة - - - Reboot - اعادة التشغيل - - - Power Off - أطفاء - - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - يتطلب openpilot أن يتم تركيب الجهاز في حدود 4 درجات يسارًا أو يمينًا و 5 درجات لأعلى أو 8 درجات لأسفل. يقوم برنامج openpilot بالمعايرة بشكل مستمر ، ونادراً ما تكون إعادة الضبط مطلوبة. - - - Your device is pointed %1° %2 and %3° %4. - جهازك يشير %1° %2 و %3° %4. - - - down - لأسفل - - - up - إلى أعلى - - - left - إلى اليسار - - - right - إلى اليمين - - - Are you sure you want to reboot? - هل أنت متأكد أنك تريد إعادة التشغيل؟ - - - Disengage to Reboot - فك الارتباط لإعادة التشغيل - - - Are you sure you want to power off? - هل أنت متأكد أنك تريد إيقاف التشغيل؟ - - - Disengage to Power Off - فك الارتباط لإيقاف التشغيل - - - - DriveStats - - Drives - أرقام القيادة - - - Hours - ساعات - - - ALL TIME - في كل وقت - - - PAST WEEK - الأسبوع الماضي - - - KM - كم - - - Miles - اميال - - - - DriverViewScene - - camera starting - بدء تشغيل الكاميرا - - - - InputDialog - - Cancel - إلغاء - - - Need at least %n character(s)! - - تحتاج على الأقل %n حرف! - تحتاج على الأقل %n حرف! - تحتاج على الأقل %n احرف! - تحتاج على الأقل %n احرف! - تحتاج على الأقل %n احرف! - تحتاج على الأقل %n احرف! - - - - - Installer - - Installing... - جارٍ التثبيت ... - - - Receiving objects: - استقبال الكائنات: - - - Resolving deltas: - حل دلتا: - - - Updating files: - جارٍ تحديث الملفات: - - - - MapETA - - eta - eta - - - min - دق - - - hr - سع - - - km - كم - - - mi - مل - - - - MapInstructions - - km - كم - - - m - م - - - mi - مل - - - ft - قد - - - - MapPanel - - Current Destination - الوجهة الحالية - - - CLEAR - مسح - - - Recent Destinations - الوجهات الأخيرة - - - Try the Navigation Beta - جرب التنقل التجريبي - - - Get turn-by-turn directions displayed and more with a comma -prime subscription. Sign up now: https://connect.comma.ai - احصل على الاتجاهات خطوة بخطوة معروضة والمزيد باستخدام comma -الاشتراك الرئيسي. اشترك الآن: https://connect.comma.ai - - - No home -location set - لم يتم تعيين -موقع المنزل - - - No work -location set - لم يتم تعيين -موقع العمل - - - no recent destinations - لا توجد وجهات حديثة - - - - MapWindow - - Map Loading - تحميل الخريطة - - - Waiting for GPS - في انتظار GPS - - - - MultiOptionDialog - - Select - اختر - - - Cancel - إلغاء - - - - Networking - - Advanced - متقدم - - - Enter password - أدخل كلمة المرور - - - for "%1" - ل "%1" - - - Wrong password - كلمة مرور خاطئة - - - - OffroadHome - - UPDATE - تحديث - - - ALERTS - تنبيهات - - - ALERT - تنبيه - - - - PairingPopup - - Pair your device to your comma account - قم بإقران جهازك بحساب comma الخاص بك - - - Go to https://connect.comma.ai on your phone - اذهب إلى https://connect.comma.ai من هاتفك - - - Click "add new device" and scan the QR code on the right - انقر على "إضافة جهاز جديد" وامسح رمز الاستجابة السريعة على اليمين - - - Bookmark connect.comma.ai to your home screen to use it like an app - ضع إشارة مرجعية على connect.comma.ai على شاشتك الرئيسية لاستخدامه مثل أي تطبيق - - - - PrimeAdWidget - - Upgrade Now - قم بالترقية الآن - - - Become a comma prime member at connect.comma.ai - كن عضوًا comme prime في connect.comma.ai - - - PRIME FEATURES: - ميزات PRIME: - - - Remote access - الوصول عن بعد - - - 1 year of storage - سنة واحدة من التخزين - - - Developer perks - امتيازات المطور - - - - PrimeUserWidget - - ✓ SUBSCRIBED - ✓ مشترك - - - comma prime - comma prime - - - CONNECT.COMMA.AI - CONNECT.COMMA.AI - - - COMMA POINTS - COMMA POINTS - - - - QObject - - Reboot - اعادة التشغيل - - - Exit - أغلق - - - dashcam - dashcam - - - openpilot - openpilot - - - %n minute(s) ago - - منذ %n دقيقة - منذ %n دقيقة - منذ %n دقائق - منذ %n دقائق - منذ %n دقائق - منذ %n دقائق - - - - %n hour(s) ago - - منذ %n ساعة - منذ %n ساعة - منذ %n ساعات - منذ %n ساعات - منذ %n ساعات - منذ %n ساعات - - - - %n day(s) ago - - منذ %n يوم - منذ %n يوم - منذ %n ايام - منذ %n ايام - منذ %n ايام - منذ %n ايام - - - - - Reset - - Reset failed. Reboot to try again. - فشل إعادة التعيين. أعد التشغيل للمحاولة مرة أخرى. - - - Are you sure you want to reset your device? - هل أنت متأكد أنك تريد إعادة ضبط جهازك؟ - - - Resetting device... - جارٍ إعادة ضبط الجهاز ... - - - System Reset - إعادة تعيين النظام - - - System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - تم تشغيل إعادة تعيين النظام. اضغط على تأكيد لمسح كل المحتوى والإعدادات. اضغط على إلغاء لاستئناف التمهيد. - - - Cancel - إلغاء - - - Reboot - اعادة التشغيل - - - Confirm - تأكيد - - - Unable to mount data partition. Press confirm to reset your device. - تعذر تحميل قسم البيانات. اضغط على تأكيد لإعادة ضبط جهازك. - - - - RichTextDialog - - Ok - موافق - - - - SettingsWindow - - × - x - - - Device - جهاز - - - Network - شبكة الاتصال - - - Toggles - التبديل - - - Software - برمجة - - - Navigation - ملاحة - - - - Setup - - WARNING: Low Voltage - تحذير: الجهد المنخفض - - - Power your device in a car with a harness or proceed at your own risk. - قم بتشغيل جهازك في سيارة باستخدام أداة تثبيت أو المضي قدمًا على مسؤوليتك الخاصة. - - - Power off - اطفئ الجهاز - - - Continue - أكمل - - - Getting Started - ابدء - - - Before we get on the road, let’s finish installation and cover some details. - قبل أن ننطلق على الطريق ، دعنا ننتهي من التثبيت ونغطي بعض التفاصيل. - - - Connect to Wi-Fi - اتصل بشبكة Wi-Fi - - - Back - خلف - - - Continue without Wi-Fi - استمر بدون Wi-Fi - - - Waiting for internet - في انتظار الاتصال بالإنترنت - - - Choose Software to Install - اختر البرنامج المراد تثبيته - - - Dashcam - Dashcam - - - Custom Software - برامج مخصصة - - - Enter URL - إدخال عنوان الموقع - - - for Custom Software - للبرامج المخصصة - - - Downloading... - جارى التحميل... - - - Download Failed - فشل التنزيل - - - Ensure the entered URL is valid, and the device’s internet connection is good. - تأكد من أن عنوان موقع الويب الذي تم إدخاله صالح ، وأن اتصال الجهاز بالإنترنت جيد. - - - Reboot device - إعادة تشغيل الجهاز - - - Start over - ابدأ من جديد - - - - SetupWidget - - Finish Setup - إنهاء الإعداد - - - Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - قم بإقران جهازك بفاصلة connect (connect.comma.ai) واطلب عرض comma prime الخاص بك. - - - Pair device - إقران الجهاز - - - - Sidebar - - CONNECT - الاتصال - - - OFFLINE - غير متصل - - - ONLINE - متصل - - - ERROR - خطأ - - - TEMP - درجة الحرارة - - - HIGH - عالي - - - GOOD - جيد - - - OK - موافق - - - VEHICLE - مركبة - - - NO - لا - - - PANDA - PANDA - - - GPS - GPS - - - SEARCH - بحث - - - -- - -- - - - Wi-Fi - Wi-Fi - - - ETH - ETH - - - 2G - 2G - - - 3G - 3G - - - LTE - LTE - - - 5G - 5G - - - - SoftwarePanel - - Git Branch - Git Branch - - - Git Commit - Git Commit - - - OS Version - إصدار نظام التشغيل - - - Version - إصدار - - - Last Update Check - التحقق من آخر تحديث - - - The last time openpilot successfully checked for an update. The updater only runs while the car is off. - آخر مرة نجح برنامج openpilot في التحقق من التحديث. يعمل المحدث فقط أثناء إيقاف تشغيل السيارة. - - - Check for Update - فحص التحديثات - - - CHECKING - تدقيق - - - Switch Branch - تبديل الفرع - - - ENTER - أدخل - - - The new branch will be pulled the next time the updater runs. - سيتم سحب الفرع الجديد في المرة التالية التي يتم فيها تشغيل أداة التحديث. - - - Enter branch name - أدخل اسم الفرع - - - UNINSTALL - الغاء التثبيت - - - Uninstall %1 - الغاء التثبيت %1 - - - Are you sure you want to uninstall? - هل أنت متأكد أنك تريد إلغاء التثبيت؟ - - - failed to fetch update - فشل في جلب التحديث - - - CHECK - تأكد الان - - - Updates are only downloaded while the car is off. - - - - Current Version - - - - Download - - - - Install Update - - - - INSTALL - - - - Target Branch - - - - SELECT - - - - Select a branch - - - - - SshControl - - SSH Keys - SSH Keys - - - Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - تحذير: هذا يمنح SSH الوصول إلى جميع المفاتيح العامة في إعدادات GitHub. لا تدخل أبدًا اسم مستخدم GitHub بخلاف اسم المستخدم الخاص بك. لن يطلب منك موظف comma أبدًا إضافة اسم مستخدم GitHub الخاص به. - - - ADD - أضف - - - Enter your GitHub username - أدخل اسم مستخدم GitHub الخاص بك - - - LOADING - جار التحميل - - - REMOVE - نزع - - - Username '%1' has no keys on GitHub - لا يحتوي اسم المستخدم '%1' على مفاتيح على GitHub - - - Request timed out - انتهت مهلة الطلب - - - Username '%1' doesn't exist on GitHub - اسم المستخدم '%1' غير موجود على GitHub - - - - SshToggle - - Enable SSH - تفعيل SSH - - - - TermsPage - - Terms & Conditions - البنود و الظروف - - - Decline - انحدار - - - Scroll to accept - قم بالتمرير للقبول - - - Agree - موافق - - - - TogglesPanel - - Enable openpilot - تمكين openpilot - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - استخدم نظام الطيار المفتوح للتحكم التكيفي في ثبات السرعة والحفاظ على مساعدة السائق. انتباهك مطلوب في جميع الأوقات لاستخدام هذه الميزة. يسري تغيير هذا الإعداد عند إيقاف تشغيل السيارة. - - - Enable Lane Departure Warnings - قم بتمكين تحذيرات مغادرة حارة السير - - - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - تلقي تنبيهات للتوجه مرة أخرى إلى الحارة عندما تنجرف سيارتك فوق خط المسار المكتشف دون تنشيط إشارة الانعطاف أثناء القيادة لمسافة تزيد عن 31 ميلاً في الساعة (50 كم / ساعة). - - - Use Metric System - استخدم النظام المتري - - - Display speed in km/h instead of mph. - عرض السرعة بالكيلو متر في الساعة بدلاً من ميل في الساعة. - - - Record and Upload Driver Camera - تسجيل وتحميل كاميرا السائق - - - Upload data from the driver facing camera and help improve the driver monitoring algorithm. - قم بتحميل البيانات من الكاميرا المواجهة للسائق وساعد في تحسين خوارزمية مراقبة السائق. - - - Disengage on Accelerator Pedal - فك الارتباط على دواسة التسريع - - - When enabled, pressing the accelerator pedal will disengage openpilot. - عند التمكين ، سيؤدي الضغط على دواسة الوقود إلى فصل الطيار المفتوح. - - - Show ETA in 24h Format - إظهار الوقت المقدر للوصول بتنسيق 24 ساعة - - - Use 24h format instead of am/pm - استخدم تنسيق 24 ساعة بدلاً من صباحًا / مساءً - - - Show Map on Left Side of UI - إظهار الخريطة على الجانب الأيسر من واجهة المستخدم - - - Show map on left side when in split screen view. - إظهار الخريطة على الجانب الأيسر عندما تكون في طريقة عرض الشاشة المنقسمة. - - - openpilot Longitudinal Control - openpilot التحكم الطولي - - - openpilot will disable the car's radar and will take over control of gas and brakes. Warning: this disables AEB! - سوف يقوم برنامج openpilot بتعطيل رادار السيارة وسيتولى التحكم في الغاز والمكابح. تحذير: هذا يعطل AEB! - - - 🌮 End-to-end longitudinal (extremely alpha) 🌮 - - - - Experimental openpilot Longitudinal Control - - - - <b>WARNING: openpilot longitudinal control is experimental for this car and will disable AEB.</b> - - - - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would. Super experimental. - - - - openpilot longitudinal control is not currently available for this car. - - - - Enable experimental longitudinal control to enable this. - - - - - Updater - - Update Required - مطلوب التحديث - - - An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - مطلوب تحديث نظام التشغيل. قم بتوصيل جهازك بشبكة Wi-Fi للحصول على أسرع تجربة تحديث. حجم التنزيل 1 غيغابايت تقريبًا. - - - Connect to Wi-Fi - اتصل بشبكة Wi-Fi - - - Install - ثبيت - - - Back - خلف - - - Loading... - جار التحميل... - - - Reboot - اعادة التشغيل - - - Update failed - فشل التحديث - - - - WifiUI - - Scanning for networks... - جارٍ البحث عن شبكات ... - - - CONNECTING... - جارٍ الاتصال ... - - - FORGET - نزع - - - Forget Wi-Fi Network "%1"? - نزع شبكة اWi-Fi "%1"? - - - diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 17871ce58f74740..bcbbba3f1e648b1 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -5,115 +5,115 @@ AbstractAlert Close - Schließen + Snooze Update - Update pausieren + Reboot and Update - Aktualisieren und neu starten + AdvancedNetworking Back - Zurück + Enable Tethering - Tethering aktivieren + Tethering Password - Tethering Passwort + EDIT - ÄNDERN + Enter new tethering password - Neues tethering Passwort eingeben + IP Address - IP Adresse + Enable Roaming - Roaming aktivieren + APN Setting - APN Einstellungen + Enter APN - APN eingeben + leave blank for automatic configuration - für automatische Konfiguration leer lassen + Cellular Metered - Getaktete Verbindung + Prevent large data uploads when on a metered connection - Hochladen großer Dateien über getaktete Verbindungen unterbinden + AnnotatedCameraWidget km/h - km/h + mph - mph + MAX - MAX + SPEED - Geschwindigkeit + LIMIT - LIMIT + ConfirmationDialog Ok - Ok + Cancel - Abbrechen + DeclinePage You must accept the Terms and Conditions in order to use openpilot. - Du musst die Nutzungsbedingungen akzeptieren, um Openpilot zu benutzen. + Back - Zurück + Decline, uninstall %1 - Ablehnen, deinstallieren %1 + @@ -131,15 +131,15 @@ - No %1 location set + home - home + work - work + No %1 location set @@ -147,189 +147,189 @@ DevicePanel Dongle ID - Dongle ID + N/A - Nicht verfügbar + Serial - Seriennummer + Driver Camera - Fahrerkamera + PREVIEW - VORSCHAU + Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - Vorschau der auf den Fahrer gerichteten Kamera, um sicherzustellen, dass die Fahrerüberwachung eine gute Sicht hat. (Fahrzeug muss aus sein) + Reset Calibration - Neu kalibrieren + RESET - RESET + Are you sure you want to reset calibration? - Bist du sicher, dass du die Kalibrierung zurücksetzen möchtest? + + + + Reset + Review Training Guide - Trainingsanleitung wiederholen + REVIEW - TRAINING + Review the rules, features, and limitations of openpilot - Wiederhole die Regeln, Fähigkeiten und Limitierungen von Openpilot + Are you sure you want to review the training guide? - Bist du sicher, dass du die Trainingsanleitung wiederholen möchtest? + + + + Review + Regulatory - Rechtliche Hinweise + VIEW - ANSEHEN + Change Language - Sprache ändern + CHANGE - ÄNDERN + Select a language - Sprache wählen + Reboot - Neustart + Power Off - Ausschalten + openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - Damit Openpilot funktioniert, darf die Installationsposition nicht mehr als 4° nach rechts/links, 5° nach oben und 8° nach unten abweichen. Openpilot kalibriert sich durchgehend, ein Zurücksetzen ist selten notwendig. + Your device is pointed %1° %2 and %3° %4. - Deine Geräteausrichtung ist %1° %2 und %3° %4. + down - unten + up - oben + left - links + right - rechts + Are you sure you want to reboot? - Bist du sicher, dass du das Gerät neu starten möchtest? + Disengage to Reboot - Für Neustart deaktivieren + Are you sure you want to power off? - Bist du sicher, dass du das Gerät ausschalten möchtest? + Disengage to Power Off - Zum Ausschalten deaktivieren - - - Reset - Zurücksetzen - - - Review - Überprüfen + DriveStats Drives - Fahrten + Hours - Stunden + ALL TIME - Gesamtzeit + PAST WEEK - Letzte Woche + KM - KM + Miles - Meilen + DriverViewScene camera starting - Kamera startet + ExperimentalModeButton EXPERIMENTAL MODE ON - EXPERIMENTELLER MODUS AN + CHILL MODE ON - ENTSPANNTER MODUS AN + InputDialog Cancel - Abbrechen + Need at least %n character(s)! - - Mindestens %n Buchstabe benötigt! - Mindestens %n Buchstaben benötigt! + + + @@ -337,22 +337,22 @@ Installer Installing... - Installiere... + MapETA eta - Ankunft + min - min + hr - std + @@ -370,11 +370,11 @@ MapWindow Map Loading - Karte wird geladen + Waiting for GPS - Warten auf GPS + Waiting for route @@ -385,34 +385,38 @@ MultiOptionDialog Select - Auswählen + Cancel - Abbrechen + Networking Advanced - Erweitert + Enter password - Passwort eingeben + for "%1" - für "%1" + Wrong password - Falsches Passwort + OffroadAlert + + Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + + Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 @@ -462,84 +466,80 @@ openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - - Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - - OffroadHome UPDATE - Aktualisieren + ALERTS - HINWEISE + ALERT - HINWEIS + PairingPopup Pair your device to your comma account - Verbinde dein Gerät mit deinem comma Konto + Go to https://connect.comma.ai on your phone - Gehe zu https://connect.comma.ai auf deinem Handy + Click "add new device" and scan the QR code on the right - Klicke auf "neues Gerät hinzufügen" und scanne den QR code rechts + Bookmark connect.comma.ai to your home screen to use it like an app - Füge connect.comma.ai als Lesezeichen auf deinem Homescreen hinzu um es wie eine App zu verwenden + ParamControl - Cancel - Abbrechen + Enable + - Enable - Aktivieren + Cancel + PrimeAdWidget Upgrade Now - Jetzt abonieren + Become a comma prime member at connect.comma.ai - Werde Comma Prime Mitglied auf connect.comma.ai + PRIME FEATURES: - PRIME FUNKTIONEN: + Remote access - Fernzugriff + 24/7 LTE connectivity - Turn-by-turn navigation + 1 year of drive storage - 1 year of drive storage + Turn-by-turn navigation @@ -547,106 +547,106 @@ PrimeUserWidget ✓ SUBSCRIBED - ✓ ABBONIERT + comma prime - comma prime + QObject + + km + + + + m + + + + mi + + + + ft + + Reboot - Neustart + Exit - Verlassen + dashcam - dashcam + openpilot - openpilot + %n minute(s) ago - - vor %n Minute - vor %n Minuten + + + %n hour(s) ago - - vor %n Stunde - vor %n Stunden + + + %n day(s) ago - - vor %n Tag - vor %n Tagen + + + - - km - km - - - m - m - - - mi - mi - - - ft - fuß - Reset Reset failed. Reboot to try again. - Zurücksetzen fehlgeschlagen. Starte das Gerät neu und versuche es wieder. + - Are you sure you want to reset your device? - Bist du sicher, dass du das Gerät auf Werkseinstellungen zurücksetzen möchtest? + Resetting device... +This may take up to a minute. + - System Reset - System auf Werkseinstellungen zurücksetzen + Are you sure you want to reset your device? + - Cancel - Abbrechen + System Reset + - Reboot - Neustart + Press confirm to erase all content and settings. Press cancel to resume boot. + - Confirm - Bestätigen + Cancel + - Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. + Reboot - Press confirm to erase all content and settings. Press cancel to resume boot. + Confirm - Resetting device... -This may take up to a minute. + Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. @@ -654,101 +654,101 @@ This may take up to a minute. SettingsWindow × - x + Device - Gerät + Network - Netzwerk + Toggles - Schalter + Software - Software + Setup + + Something went wrong. Reboot the device. + + + + Ensure the entered URL is valid, and the device’s internet connection is good. + + + + No custom software found at this URL. + + WARNING: Low Voltage - Warnung: Batteriespannung niedrig + Power your device in a car with a harness or proceed at your own risk. - Versorge dein Gerät über einen Kabelbaum im Auto mit Strom, oder fahre auf eigene Gefahr fort. + Power off - Ausschalten + Continue - Fortsetzen + Getting Started - Loslegen + Before we get on the road, let’s finish installation and cover some details. - Bevor wir uns auf die Straße begeben, lass uns die Installation fertigstellen und einige Details prüfen. + Connect to Wi-Fi - Mit WLAN verbinden + Back - Zurück + - Continue without Wi-Fi - Ohne WLAN fortsetzen + Enter URL + - Waiting for internet - Auf Internet warten + for Custom Software + - Enter URL - URL eingeben + Continue without Wi-Fi + - for Custom Software - für spezifische Software + Waiting for internet + Downloading... - Herunterladen... + Download Failed - Herunterladen fehlgeschlagen - - - Ensure the entered URL is valid, and the device’s internet connection is good. - Stelle sicher, dass die eingegebene URL korrekt ist und dein Gerät eine stabile Internetverbindung hat. + Reboot device - Gerät neustarten - - - Start over - Von neuem beginnen - - - No custom software found at this URL. - Something went wrong. Reboot the device. + Start over @@ -756,162 +756,156 @@ This may take up to a minute. SetupWidget Finish Setup - Einrichtung beenden + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Koppele dein Gerät mit Comma Connect (connect.comma.ai) und sichere dir dein Comma Prime Angebot. + Pair device - Gerät koppeln + Sidebar CONNECT - This is a brand/service name for comma connect, don't translate - CONNECT + OFFLINE - OFFLINE + ONLINE - ONLINE + ERROR - FEHLER + TEMP - TEMP + HIGH - HOCH + GOOD - GUT + OK - OK + VEHICLE - FAHRZEUG + NO - KEIN + PANDA - PANDA + GPS - GPS + SEARCH - SUCHEN + -- - -- + Wi-Fi - WLAN + ETH - LAN + 2G - 2G + 3G - 3G + LTE - LTE + 5G - 5G + SoftwarePanel - - UNINSTALL - Too long for UI - DEINSTALL - - - Uninstall %1 - Deinstalliere %1 - - - Are you sure you want to uninstall? - Bist du sicher, dass du Openpilot entfernen möchtest? - - - CHECK - ÜBERPRÜFEN - Updates are only downloaded while the car is off. - Updates werden nur heruntergeladen, wenn das Auto aus ist. + Current Version - Aktuelle Version + Download - Download + + + + CHECK + Install Update - Update installieren + INSTALL - INSTALLIEREN + Target Branch - Ziel Branch + SELECT - AUSWÄHLEN + Select a branch - Wähle einen Branch + - Uninstall - Deinstallieren + Uninstall %1 + - failed to check for update + UNINSTALL - up to date, last checked %1 + Are you sure you want to uninstall? + + + + Uninstall + + + + failed to check for update @@ -926,158 +920,188 @@ This may take up to a minute. never + + up to date, last checked %1 + + SshControl SSH Keys - SSH Schlüssel + Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - Warnung: Dies ermöglicht SSH zugriff für alle öffentlichen Schlüssel in deinen Github Einstellungen. Gib niemals einen anderen Benutzernamen, als deinen Eigenen an. Comma Angestellte fragen dich niemals danach ihren Github Benutzernamen hinzuzufügen. + ADD - HINZUFÜGEN + Enter your GitHub username - Gib deinen GitHub Benutzernamen ein + LOADING - LADEN + REMOVE - LÖSCHEN + Username '%1' has no keys on GitHub - Benutzername '%1' hat keine Schlüssel auf GitHub + Request timed out - Zeitüberschreitung der Anforderung + Username '%1' doesn't exist on GitHub - Benutzername '%1' existiert nicht auf GitHub + SshToggle Enable SSH - SSH aktivieren + TermsPage Terms & Conditions - Benutzungsbedingungen + Decline - Ablehnen + Scroll to accept - Scrolle herunter um zu akzeptieren + Agree - Zustimmen + TogglesPanel Enable openpilot - Openpilot aktivieren + Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Benutze das Openpilot System als adaptiven Tempomaten und Spurhalteassistenten. Deine Aufmerksamkeit ist jederzeit erforderlich, um diese Funktion zu nutzen. Diese Einstellung wird übernommen, wenn das Auto aus ist. + - Enable Lane Departure Warnings - Spurverlassenswarnungen aktivieren + openpilot Longitudinal Control (Alpha) + - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - Erhalte Warnungen, zurück in die Spur zu lenken, wenn dein Auto über eine erkannte Fahrstreifenmarkierung ohne aktivierten Blinker mit mehr als 50 km/h fährt. + WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + - Use Metric System - Benutze das metrische System + On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + - Display speed in km/h instead of mph. - Zeige die Geschwindigkeit in km/h anstatt von mph. + Experimental Mode + + + + Disengage on Accelerator Pedal + + + + When enabled, pressing the accelerator pedal will disengage openpilot. + + + + Enable Lane Departure Warnings + + + + Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). + Record and Upload Driver Camera - Fahrerkamera aufnehmen und hochladen + Upload data from the driver facing camera and help improve the driver monitoring algorithm. - Lade Daten der Fahreraufmerksamkeitsüberwachungskamera hoch, um die Fahreraufmerksamkeitsüberwachungsalgorithmen zu verbessern. + - When enabled, pressing the accelerator pedal will disengage openpilot. - Wenn aktiviert, deaktiviert sich Openpilot sobald das Gaspedal betätigt wird. + Use Linked Brightness + - Use 24h format instead of am/pm - Benutze das 24Stunden Format anstatt am/pm + Use the car's headlight state for brightness control. + - Show Map on Left Side of UI - Too long for UI - Zeige die Karte auf der linken Seite + Use LQR on Lat Control for PA + - Show map on left side when in split screen view. - Zeige die Karte auf der linken Seite der Benutzeroberfläche bei geteilten Bildschirm. + When enabled, using LQR on lat control for prius alpha. + - Show ETA in 24h Format - Too long for UI - Zeige die Ankunftszeit im 24 Stunden Format + Compass + - Experimental Mode - Experimenteller Modus + Add a compass to the onroad UI that indicates your current driving direction. + - Disengage on Accelerator Pedal - Bei Gasbetätigung ausschalten + Turn Off Display After 30 Seconds + - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - Openpilot fährt standardmäßig im <b>entspannten Modus</b>. Der Experimentelle Modus aktiviert<b>Alpha-level Funktionen</b>, die noch nicht für den entspannten Modus bereit sind. Die experimentellen Funktionen sind die Folgenden: + Turn off the device's display after going 'onroad' for 30 seconds. + - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - Lass das Fahrmodell Gas und Bremse kontrollieren. Openpilot wird so fahren, wie es dies von einem Menschen erwarten würde; inklusive des Anhaltens für Ampeln und Stoppschildern. Da das Fahrmodell entscheidet wie schnell es fährt stellt die gesetzte Geschwindigkeit lediglich das obere Limit dar. Dies ist ein Alpha-level Funktion. Fehler sind zu erwarten. + Long: Cruise Speed Override + - New Driving Visualization - Neue Fahrvisualisierung + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - Der experimentelle Modus ist momentan für dieses Auto nicht verfügbar da es den eingebauten adaptiven Tempomaten des Autos benutzt. + Use Metric System + - openpilot Longitudinal Control (Alpha) + Display speed in km/h instead of mph. - WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + Show ETA in 24h Format + + + + Use 24h format instead of am/pm + + + + Show Map on Left Side of UI + + + + Show map on left side when in split screen view. @@ -1097,17 +1121,33 @@ This may take up to a minute. - On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Driving Personalities Via UI / Wheel + + + + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + + + + openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: End-to-End Longitudinal Control + + Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. + + Navigate on openpilot @@ -1116,10 +1156,18 @@ This may take up to a minute. When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. + + New Driving Visualization + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. + + Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. + + openpilot longitudinal control may come in a future update. @@ -1137,35 +1185,35 @@ This may take up to a minute. Updater Update Required - Aktualisierung notwendig + An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - Eine Aktualisierung des Betriebssystems ist notwendig. Verbinde dein Gerät mit WLAN für ein schnelleres Update. Die Download Größe ist ungefähr 1GB. + Connect to Wi-Fi - Mit WLAN verbinden + Install - Installieren + Back - Zurück + Loading... - Laden... + Reboot - Neustart + Update failed - Aktualisierung fehlgeschlagen + @@ -1195,23 +1243,23 @@ This may take up to a minute. WifiUI Scanning for networks... - Suche nach Netzwerken... + CONNECTING... - VERBINDEN... + FORGET - VERGESSEN + Forget Wi-Fi Network "%1"? - WLAN Netzwerk "%1" vergessen? + Forget - Vergessen + diff --git a/selfdrive/ui/translations/main_en.ts b/selfdrive/ui/translations/main_en.ts index 3f9692e5fa48504..3ae1ed416254a56 100644 --- a/selfdrive/ui/translations/main_en.ts +++ b/selfdrive/ui/translations/main_en.ts @@ -5,9 +5,9 @@ InputDialog Need at least %n character(s)! - - Need at least %n character! - Need at least %n characters! + + + @@ -15,23 +15,23 @@ QObject %n minute(s) ago - - %n minute ago - %n minutes ago + + + %n hour(s) ago - - %n hour ago - %n hours ago + + + %n day(s) ago - - %n day ago - %n days ago + + + diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 14ca4df954f0c13..b994176dcd2cadf 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -1130,6 +1130,58 @@ Cela peut prendre jusqu'à une minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. Activer le contrôle longitudinal d'openpilot (en alpha) pour autoriser le mode expérimental. + + Use Linked Brightness + + + + Use the car's headlight state for brightness control. + + + + Use LQR on Lat Control for PA + + + + When enabled, using LQR on lat control for prius alpha. + + + + Compass + + + + Add a compass to the onroad UI that indicates your current driving direction. + + + + Turn Off Display After 30 Seconds + + + + Turn off the device's display after going 'onroad' for 30 seconds. + + + + Long: Cruise Speed Override + + + + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + + + + Driving Personalities Via UI / Wheel + + + + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + + Updater diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 799aa84a2e7aa8c..9d045ea5c517d84 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -5,115 +5,115 @@ AbstractAlert Close - 閉じる + Snooze Update - 更新の一時停止 + Reboot and Update - 再起動してアップデート + AdvancedNetworking Back - 戻る + Enable Tethering - テザリングを有効化 + Tethering Password - テザリングパスワード + EDIT - 編集 + Enter new tethering password - 新しいテザリングパスワードを入力 + IP Address - IP アドレス + Enable Roaming - ローミングを有効化 + APN Setting - APN 設定 + Enter APN - APN を入力 + leave blank for automatic configuration - 自動で設定するには、空白のままにしてください。 + Cellular Metered - 従量制通信設定 + Prevent large data uploads when on a metered connection - 大量のデータのアップロードを防止します。 + AnnotatedCameraWidget km/h - km/h + mph - mph + MAX - 最高速度 + SPEED - 速度 + LIMIT - 制限速度 + ConfirmationDialog Ok - OK + Cancel - キャンセル + DeclinePage You must accept the Terms and Conditions in order to use openpilot. - openpilot をご利用される前に、利用規約に同意する必要があります。 + Back - 戻る + Decline, uninstall %1 - 拒否して %1 をアンインストール + @@ -131,15 +131,15 @@ - No %1 location set + home - home + work - work + No %1 location set @@ -147,188 +147,188 @@ DevicePanel Dongle ID - ドングル番号 (Dongle ID) + N/A - N/A + Serial - シリアル番号 + Driver Camera - 車内カメラ + PREVIEW - プレビュー + Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - 車内カメラをプレビューして、ドライバー監視システムの視界を確認ができます。(車両の電源を切る必要があります) + Reset Calibration - キャリブレーションをリセット + RESET - リセット + Are you sure you want to reset calibration? - キャリブレーションをリセットしてもよろしいですか? + + + + Reset + Review Training Guide - 使い方の確認 + REVIEW - 見る + Review the rules, features, and limitations of openpilot - openpilot の特徴を見る + Are you sure you want to review the training guide? - 使い方の確認をしますか? + + + + Review + Regulatory - 認証情報 + VIEW - 見る + Change Language - 言語を変更 + CHANGE - 変更 + Select a language - 言語を選択 + Reboot - 再起動 + Power Off - 電源を切る + openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilotの本体は、左右4°以内、上5°、下8°以内の角度で取付ける必要があります。継続してキャリブレーションを続けているので、手動でリセットを行う必要はほぼありません。 + Your device is pointed %1° %2 and %3° %4. - このデバイスは%2 %1°、%4 %3°の向きに設置されています。 + down - + up - + left - + right - + Are you sure you want to reboot? - 再起動してもよろしいですか? + Disengage to Reboot - openpilot をキャンセルして再起動ができます + Are you sure you want to power off? - シャットダウンしてもよろしいですか? + Disengage to Power Off - openpilot をキャンセルしてシャットダウンができます - - - Reset - リセット - - - Review - 確認 + DriveStats Drives - 運転履歴 + Hours - 時間 + ALL TIME - 累計 + PAST WEEK - 先週 + KM - km + Miles - マイル + DriverViewScene camera starting - カメラを起動しています + ExperimentalModeButton EXPERIMENTAL MODE ON - 実験モード + CHILL MODE ON - チルモード + InputDialog Cancel - キャンセル + Need at least %n character(s)! - - %n文字以上でお願いします! + + @@ -336,22 +336,22 @@ Installer Installing... - インストールしています... + MapETA eta - 到着予定時間 + min - + hr - 時間 + @@ -369,11 +369,11 @@ MapWindow Map Loading - マップを読み込んでいます + Waiting for GPS - GPS信号を探しています + Waiting for route @@ -384,34 +384,38 @@ MultiOptionDialog Select - 選択 + Cancel - キャンセル + Networking Advanced - 詳細 + Enter password - パスワードを入力 + for "%1" - ネットワーク名:%1 + Wrong password - パスワードが間違っています + OffroadAlert + + Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + + Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 @@ -461,84 +465,80 @@ openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - - Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - - OffroadHome UPDATE - 更新 + ALERTS - 警告 + ALERT - 警告 + PairingPopup Pair your device to your comma account - デバイスと comma アカウントを連携する + Go to https://connect.comma.ai on your phone - スマートフォンで「https://connect.comma.ai」にアクセスしてください。 + Click "add new device" and scan the QR code on the right - 「新しいデバイスを追加」を押し、右側のQRコードをスキャンしてください。 + Bookmark connect.comma.ai to your home screen to use it like an app - 「connect.comma.ai」をホーム画面に追加して、アプリのように使うことができます。 + ParamControl - Cancel - キャンセル + Enable + - Enable - を有効化 + Cancel + PrimeAdWidget Upgrade Now - 今すぐアップグレート + Become a comma prime member at connect.comma.ai - connect.comma.ai でプライム会員に登録できます + PRIME FEATURES: - 特典: + Remote access - リモートアクセス + 24/7 LTE connectivity - Turn-by-turn navigation + 1 year of drive storage - 1 year of drive storage + Turn-by-turn navigation @@ -546,103 +546,103 @@ PrimeUserWidget ✓ SUBSCRIBED - ✓ 入会しました + comma prime - comma prime + QObject + + km + + + + m + + + + mi + + + + ft + + Reboot - 再起動 + Exit - 閉じる + dashcam - ドライブレコーダー + openpilot - openpilot + %n minute(s) ago - - %n 分前 + + %n hour(s) ago - - %n 時間前 + + %n day(s) ago - - %n 日前 + + - - km - キロメートル - - - m - メートル - - - mi - マイル - - - ft - フィート - Reset Reset failed. Reboot to try again. - 初期化に失敗しました。再起動後に再試行してください。 + - Are you sure you want to reset your device? - 初期化してもよろしいですか? + Resetting device... +This may take up to a minute. + - System Reset - システムを初期化 + Are you sure you want to reset your device? + - Cancel - キャンセル + System Reset + - Reboot - 再起動 + Press confirm to erase all content and settings. Press cancel to resume boot. + - Confirm - 確認 + Cancel + - Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. + Reboot - Press confirm to erase all content and settings. Press cancel to resume boot. + Confirm - Resetting device... -This may take up to a minute. + Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. @@ -650,101 +650,101 @@ This may take up to a minute. SettingsWindow × - × + Device - デバイス + Network - ネットワーク + Toggles - 機能設定 + Software - ソフトウェア + Setup + + Something went wrong. Reboot the device. + + + + Ensure the entered URL is valid, and the device’s internet connection is good. + + + + No custom software found at this URL. + + WARNING: Low Voltage - 警告:低電圧 + Power your device in a car with a harness or proceed at your own risk. - 自己責任で実行を継続するか、ハーネスから電源を供給してください。 + Power off - 電源を切る + Continue - 続ける + Getting Started - はじめに + Before we get on the road, let’s finish installation and cover some details. - 道路に向かう前に、インストールを完了して使い方を確認しましょう。 + Connect to Wi-Fi - Wi-Fi に接続 + Back - 戻る + - Continue without Wi-Fi - Wi-Fi に接続せずに続行 + Enter URL + - Waiting for internet - インターネット接続を待機中 + for Custom Software + - Enter URL - URL を入力 + Continue without Wi-Fi + - for Custom Software - カスタムソフトウェア + Waiting for internet + Downloading... - ダウンロード中... + Download Failed - ダウンロード失敗 - - - Ensure the entered URL is valid, and the device’s internet connection is good. - 入力された URL を確認し、デバイスがインターネットに接続されていることを確認してください。 + Reboot device - デバイスを再起動 - - - Start over - 最初からやり直す - - - No custom software found at this URL. - Something went wrong. Reboot the device. + Start over @@ -752,160 +752,156 @@ This may take up to a minute. SetupWidget Finish Setup - セットアップ完了 + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - デバイスを comma connect (connect.comma.ai)でペアリングし、comma primeの特典を申請してください。 + Pair device - デバイスをペアリング + Sidebar CONNECT - 接続 + OFFLINE - オフライン + ONLINE - オンライン + ERROR - エラー + TEMP - 温度 + HIGH - 高温 + GOOD - 最適 + OK - OK + VEHICLE - 車両 + NO - NO + PANDA - PANDA + GPS - GPS + SEARCH - 検索 + -- - -- + Wi-Fi - Wi-Fi + ETH - ETH + 2G - 2G + 3G - 3G + LTE - LTE + 5G - 5G + SoftwarePanel Updates are only downloaded while the car is off. - 車の電源がオフの間のみ、アップデートのダウンロードが行われます。 + Current Version - 現在のバージョン + Download - ダウンロード + + + + CHECK + Install Update - アップデート + INSTALL - インストール + Target Branch - 対象のブランチ + SELECT - 選択 + Select a branch - ブランチを選択 - - - UNINSTALL - 実行 + Uninstall %1 - %1をアンインストール + - Are you sure you want to uninstall? - アンインストールしてもよろしいですか? + UNINSTALL + - CHECK - 確認 + Are you sure you want to uninstall? + Uninstall - アンインストール - - - failed to check for update - up to date, last checked %1 + failed to check for update @@ -920,156 +916,188 @@ This may take up to a minute. never + + up to date, last checked %1 + + SshControl SSH Keys - SSH 鍵 + Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - 警告: これは、GitHub の設定にあるすべての公開鍵への SSH アクセスを許可するものです。自分以外の GitHub のユーザー名を入力しないでください。commaのスタッフが GitHub のユーザー名を追加するようお願いすることはありません。 + ADD - 追加 + Enter your GitHub username - GitHub のユーザー名を入力してください + LOADING - 読み込み中 + REMOVE - 削除 + Username '%1' has no keys on GitHub - ユーザー名 “%1” は GitHub に鍵がありません + Request timed out - リクエストタイムアウト + Username '%1' doesn't exist on GitHub - ユーザー名 '%1' は GitHub に存在しません + SshToggle Enable SSH - SSH を有効化 + TermsPage Terms & Conditions - 利用規約 + Decline - 拒否 + Scroll to accept - スクロールして同意 + Agree - 同意 + TogglesPanel Enable openpilot - openpilot を有効化 + Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - openpilotによるアダプティブクルーズコントロールとレーンキーピングドライバーアシストを利用します。この機能を利用する際は、常に前方への注意が必要です。この設定を変更すると、車の電源が切れた時に反映されます。 + - Enable Lane Departure Warnings - 車線逸脱警報機能を有効化 + openpilot Longitudinal Control (Alpha) + - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - 時速31マイル(50km)を超えるスピードで走行中、ウインカーを作動させずに検出された車線ライン上に車両が触れた場合、手動で車線内に戻るように警告を行います。 + WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + - Use Metric System - メートル法を使用 + On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + - Display speed in km/h instead of mph. - 速度は mph ではなく km/h で表示されます。 + Experimental Mode + + + + Disengage on Accelerator Pedal + + + + When enabled, pressing the accelerator pedal will disengage openpilot. + + + + Enable Lane Departure Warnings + + + + Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). + Record and Upload Driver Camera - 車内カメラの録画とアップロード + Upload data from the driver facing camera and help improve the driver monitoring algorithm. - 車内カメラの映像をアップロードし、ドライバー監視システムのアルゴリズムの向上に役立てます。 + - Disengage on Accelerator Pedal - アクセルを踏むと openpilot を中断 + Use Linked Brightness + - When enabled, pressing the accelerator pedal will disengage openpilot. - この機能を有効化すると、openpilotを利用中にアクセルを踏むとopenpilotによる運転サポートを中断します。 + Use the car's headlight state for brightness control. + - Show ETA in 24h Format - 24時間表示 + Use LQR on Lat Control for PA + - Use 24h format instead of am/pm - AM/PM の代わりに24時間形式を使用します + When enabled, using LQR on lat control for prius alpha. + - Show Map on Left Side of UI - ディスプレイの左側にマップを表示 + Compass + - Show map on left side when in split screen view. - 分割画面表示の場合、ディスプレイの左側にマップを表示します。 + Add a compass to the onroad UI that indicates your current driving direction. + - Experimental Mode - 実験モード + Turn Off Display After 30 Seconds + - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilotは標準ではゆっくりとくつろげる運転を提供します。この実験モードを有効にすると、以下のくつろげる段階ではない開発中の機能を利用する事ができます。 + Turn off the device's display after going 'onroad' for 30 seconds. + - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - openpilotにアクセルとブレーキを任せます。openpilotは赤信号や一時停止サインでの停止を含み、人間と同じように考えて運転を行います。openpilotが運転速度を決定するため、あなたが設定する速度は上限速度になります。この機能は実験段階のため、openpilotの運転ミスに常に備えて注意してください。 + Long: Cruise Speed Override + - New Driving Visualization - 新しい運転画面 + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - この車のACCがアクセル制御を行うため実験モードを利用することができません。 + Use Metric System + - openpilot Longitudinal Control (Alpha) + Display speed in km/h instead of mph. - WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + Show ETA in 24h Format + + + + Use 24h format instead of am/pm + + + + Show Map on Left Side of UI + + + + Show map on left side when in split screen view. @@ -1089,17 +1117,33 @@ This may take up to a minute. - On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Driving Personalities Via UI / Wheel + + + + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + + + + openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: End-to-End Longitudinal Control + + Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. + + Navigate on openpilot @@ -1108,10 +1152,18 @@ This may take up to a minute. When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. + + New Driving Visualization + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. + + Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. + + openpilot longitudinal control may come in a future update. @@ -1129,35 +1181,35 @@ This may take up to a minute. Updater Update Required - アップデートが必要です + An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - オペレーティングシステムのアップデートが必要です。Wi-Fi に接続してアップデートする事をお勧めします。ダウンロードサイズは約 1GB です。 + Connect to Wi-Fi - Wi-Fi に接続 + Install - インストール + Back - 戻る + Loading... - 読み込み中... + Reboot - 再起動 + Update failed - 更新失敗 + @@ -1187,23 +1239,23 @@ This may take up to a minute. WifiUI Scanning for networks... - ネットワークをスキャン中... + CONNECTING... - 接続中... + FORGET - 削除 + Forget Wi-Fi Network "%1"? - Wi-Fiネットワーク%1を削除してもよろしいですか? + Forget - 削除 + diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 31190c25b923142..cd044b9d24368b1 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -5,330 +5,330 @@ AbstractAlert Close - 닫기 + Snooze Update - 업데이트 일시중지 + Reboot and Update - 업데이트 및 재부팅 + AdvancedNetworking Back - 뒤로 + Enable Tethering - 테더링 사용 + Tethering Password - 테더링 비밀번호 + EDIT - 편집 + Enter new tethering password - 새 테더링 비밀번호를 입력하세요 + IP Address - IP 주소 + Enable Roaming - 로밍 사용 + APN Setting - APN 설정 + Enter APN - APN 입력 + leave blank for automatic configuration - 자동설정하려면 공백으로 두세요 + Cellular Metered - 데이터 요금제 + Prevent large data uploads when on a metered connection - 데이터 요금제 연결 시 대용량 데이터 업로드를 방지합니다 + AnnotatedCameraWidget km/h - km/h + mph - mph + MAX - MAX + SPEED - SPEED + LIMIT - LIMIT + ConfirmationDialog Ok - 확인 + Cancel - 취소 + DeclinePage You must accept the Terms and Conditions in order to use openpilot. - openpilot을 사용하려면 이용약관에 동의해야 합니다. + Back - 뒤로 + Decline, uninstall %1 - 거절, %1 제거 + DestinationWidget Home - + Work - 회사 + No destination set - 목적지가 설정되지 않았습니다 - - - No %1 location set - %1 위치가 설정되지 않았습니다 + home - + work - 회사 + + + + No %1 location set + DevicePanel Dongle ID - Dongle ID + N/A - N/A + Serial - Serial + Driver Camera - 운전자 카메라 + PREVIEW - 미리보기 + Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - 운전자 모니터링이 잘 되는지 확인하기 위해 카메라를 향한 운전자를 미리 봅니다. (차량연결은 해제되어있어야 합니다) + Reset Calibration - 캘리브레이션 + RESET - 재설정 + Are you sure you want to reset calibration? - 캘리브레이션을 재설정하시겠습니까? + + + + Reset + Review Training Guide - 트레이닝 가이드 + REVIEW - 다시보기 + Review the rules, features, and limitations of openpilot - openpilot의 규칙, 기능 및 제한 다시보기 + Are you sure you want to review the training guide? - 트레이닝 가이드를 다시보시겠습니까? + + + + Review + Regulatory - 규제 + VIEW - 보기 + Change Language - 언어 변경 + CHANGE - 변경 + Select a language - 언어를 선택하세요 + Reboot - 재부팅 + Power Off - 전원 종료 + openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilot 장치는 좌우측 4° 이내, 위쪽 5° 아래쪽 8° 이내로 장착되어야 합니다. openpilot은 지속적으로 보정되며 재설정은 거의 필요하지 않습니다. + Your device is pointed %1° %2 and %3° %4. - 사용자의 장치는 %1° %2 및 %3° %4 의 위치에 장착되어 있습니다. + down - 아래로 + up - 위로 + left - 좌측으로 + right - 우측으로 + Are you sure you want to reboot? - 재부팅 하시겠습니까? + Disengage to Reboot - 재부팅 하려면 해제하세요 + Are you sure you want to power off? - 전원을 종료하시겠습니까? + Disengage to Power Off - 전원을 종료하려면 해제하세요 - - - Reset - 리셋 - - - Review - 다시보기 + DriveStats Drives - 주행 + Hours - 시간 + ALL TIME - 전체 + PAST WEEK - 지난주 + KM - Km + Miles - Miles + DriverViewScene camera starting - 카메라 시작중 + ExperimentalModeButton EXPERIMENTAL MODE ON - 실험적 모드 사용 + CHILL MODE ON - 안정적 모드 사용 + InputDialog Cancel - 취소 + Need at least %n character(s)! - - 최소 %n 자가 필요합니다! + + @@ -336,876 +336,926 @@ Installer Installing... - 설치중... + MapETA eta - 도착 + min - + hr - 시간 + MapSettings NAVIGATION - 내비게이션 + Manage at connect.comma.ai - connect.comma.ai에서 관리됩니다 + MapWindow Map Loading - 지도 로딩 + Waiting for GPS - GPS 수신중 + Waiting for route - 경로를 기다리는중 + MultiOptionDialog Select - 선택 + Cancel - 취소 + Networking Advanced - 고급 설정 + Enter password - 비밀번호를 입력하세요 + for "%1" - "%1"에 접속하려면 비밀번호가 필요합니다 + Wrong password - 비밀번호가 틀렸습니다 + OffroadAlert + + Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + + Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - 즉시 인터넷에 연결하여 업데이트를 확인하세요. 인터넷에 연결되어 있지 않으면 %1 이후에는 openpilot이 활성화되지 않습니다. + Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - 업데이트를 확인하려면 인터넷에 연결하세요. openpilot은 업데이트를 확인하기 위해 인터넷에 연결할 때까지 자동으로 시작되지 않습니다. + Unable to download updates %1 - 업데이트를 다운로드할수 없습니다 -%1 + Invalid date and time settings, system won't start. Connect to internet to set time. - 날짜 및 시간 설정이 잘못되어 시스템이 시작되지 않습니다. 날짜와 시간을 동기화하려면 인터넷에 연결하세요. + Taking camera snapshots. System won't start until finished. - 카메라 스냅샷 찍기가 완료될 때까지 시스템이 시작되지 않습니다. + An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - 백그라운드에서 운영 체제에 대한 업데이트가 다운로드되고 있습니다. 설치준비가 완료되면 업데이트하라는 메시지가 표시됩니다. + Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - 장치를 등록하지 못했습니다. comma.ai 서버에 연결하거나 업로드하지 않으며 comma.ai에서 지원을 받지 않습니다. 공식 장치인경우 https://comma.ai/support 에 방문하여 문의하세요. + NVMe drive not mounted. - NVMe 드라이브가 마운트되지 않았습니다. + Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - 지원되지 않는 NVMe 드라이브가 감지되었습니다. 지원되지 않는 NVMe 드라이브로 인해 장치가 훨씬 더 많은 전력을 소비하고 과열될 수 있습니다. + openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - opepilot이 차량을 식별할수 없었습니다. 지원되지 않는 차량이거나 ECU가 인식되지 않습니다. 해당 차량에 펌웨어 버전을 추가하려면 PR을 제출하세요. 도움이 필요하시면 discord.comma.ai에 가입하세요. + openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilot이 차량을 식별할수 없었습니다. 케이블의 무결성을 점검하고 모든 연결부, 특히 comma power가 차량의 OBD-II 포트에 완전히 삽입되었는지 확인하세요. 도움이 필요하시면 discord.comma.ai에 가입하세요. + openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - openpilot 장치의 장착 위치 변경을 감지했습니다. 장치가 마운트에 완전히 장착되고 마운트가 앞유리에 단단히 고정되었는지 확인하세요. - - - Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - 장치 온도가 너무 높습니다. 시작하기 전에 장치온도를 낮춰주세요. 현재 내부 구성 요소 온도: %1 + OffroadHome UPDATE - 업데이트 + ALERTS - 알림 + ALERT - 알림 + PairingPopup Pair your device to your comma account - 장치를 comma 계정과 페어링합니다 + Go to https://connect.comma.ai on your phone - https://connect.comma.ai에 접속하세요 + Click "add new device" and scan the QR code on the right - "새 장치 추가"를 클릭하고 오른쪽 QR 코드를 검색합니다 + Bookmark connect.comma.ai to your home screen to use it like an app - connect.comma.ai를 앱처럼 사용하려면 홈 화면에 바로가기를 만드세요. + ParamControl - Cancel - 취소 + Enable + - Enable - 사용 + Cancel + PrimeAdWidget Upgrade Now - 지금 업그레이드 하세요 + Become a comma prime member at connect.comma.ai - connect.comma.ai에 접속하여 comma prime 회원이 되세요 + PRIME FEATURES: - PRIME 기능: + Remote access - 원격 접속 + 24/7 LTE connectivity - 항상 LTE 연결 + - Turn-by-turn navigation - 내비게이션 경로안내 + 1 year of drive storage + - 1 year of drive storage - 1년간 저장 + Turn-by-turn navigation + PrimeUserWidget ✓ SUBSCRIBED - ✓ 구독함 + comma prime - comma prime + QObject + + km + + + + m + + + + mi + + + + ft + + Reboot - 재부팅 + Exit - 종료 + dashcam - dashcam + openpilot - openpilot + %n minute(s) ago - - %n 분전 + + %n hour(s) ago - - %n 시간전 + + %n day(s) ago - - %n 일전 + + - - km - km - - - m - m - - - mi - mi - - - ft - ft - Reset Reset failed. Reboot to try again. - 초기화 실패. 재부팅후 다시 시도하세요. + + + + Resetting device... +This may take up to a minute. + Are you sure you want to reset your device? - 장치를 초기화 하시겠습니까? + System Reset - 장치 초기화 + + + + Press confirm to erase all content and settings. Press cancel to resume boot. + Cancel - 취소 + Reboot - 재부팅 + Confirm - 확인 + Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - 데이터 파티션을 마운트할 수 없습니다. 파티션이 손상되었을 수 있습니다. 모든 내용을 지우고 장치를 초기화하려면 확인을 누르세요. - - - Press confirm to erase all content and settings. Press cancel to resume boot. - 모든 콘텐츠와 설정을 지우려면 확인을 누르세요. 부팅을 재개하려면 취소를 누르세요. - - - Resetting device... -This may take up to a minute. - 장치를 초기화하는 중... -최대 1분이 소요될 수 있습니다. + SettingsWindow × - × + Device - 장치 + Network - 네트워크 + Toggles - 토글 + Software - 소프트웨어 + Setup + + Something went wrong. Reboot the device. + + + + Ensure the entered URL is valid, and the device’s internet connection is good. + + + + No custom software found at this URL. + + WARNING: Low Voltage - 경고: 전압이 낮습니다 + Power your device in a car with a harness or proceed at your own risk. - 하네스 보드에 차량의 전원을 연결하세요. + Power off - 전원 종료 + Continue - 계속 + Getting Started - 설정 시작 + Before we get on the road, let’s finish installation and cover some details. - 출발하기 전에 설정을 완료하고 몇 가지 세부 사항을 살펴보겠습니다. + Connect to Wi-Fi - wifi 연결 + Back - 뒤로 + - Continue without Wi-Fi - wifi 연결없이 계속하기 + Enter URL + - Waiting for internet - 인터넷 대기중 + for Custom Software + - Enter URL - URL 입력 + Continue without Wi-Fi + - for Custom Software - 커스텀 소프트웨어 + Waiting for internet + Downloading... - 다운로드중... + Download Failed - 다운로드 실패 - - - Ensure the entered URL is valid, and the device’s internet connection is good. - 입력된 URL이 유효하고 장치의 인터넷 연결이 양호한지 확인하세요. + Reboot device - 재부팅 + Start over - 다시 시작 - - - Something went wrong. Reboot the device. - 문제가 발생했습니다. 장치를 재부팅하세요. - - - No custom software found at this URL. - 이 URL에서 커스텀 소프트웨어를 찾을 수 없습니다. + SetupWidget Finish Setup - 설정 완료 + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - 장치를 comma connect (connect.comma.ai)에서 페어링하고 comma prime 제안을 요청하세요. + Pair device - 장치 페어링 + Sidebar CONNECT - 연결 + OFFLINE - 오프라인 + ONLINE - 온라인 + ERROR - 오류 + TEMP - 온도 + HIGH - 높음 + GOOD - 좋음 + OK - 경고 + VEHICLE - 차량 + NO - NO + PANDA - PANDA + GPS - GPS + SEARCH - 검색중 + -- - -- + Wi-Fi - wifi + ETH - LAN + 2G - 2G + 3G - 3G + LTE - LTE + 5G - 5G + SoftwarePanel Updates are only downloaded while the car is off. - 업데이트는 차량 연결이 해제되어 있는 동안에만 다운로드됩니다. + Current Version - 현재 버전 + Download - 다운로드 + + + + CHECK + Install Update - 업데이트 설치 + INSTALL - 설치 + Target Branch - 대상 브랜치 + SELECT - 선택 + Select a branch - 브랜치 선택 - - - UNINSTALL - 제거 + Uninstall %1 - %1 제거 + - Are you sure you want to uninstall? - 제거하시겠습니까? + UNINSTALL + - CHECK - 확인 + Are you sure you want to uninstall? + Uninstall - 제거 + failed to check for update - 업데이트 확인 실패 - - - up to date, last checked %1 - 최신 상태 입니다, %1에 마지막으로 확인 + DOWNLOAD - 다운로드 + update available - 업데이트 가능 + never - 업데이트 안함 + + + + up to date, last checked %1 + SshControl SSH Keys - SSH 키 + Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - 경고: 허용으로 설정하면 GitHub 설정의 모든 공용 키에 대한 SSH 액세스 권한이 부여됩니다. GitHub 사용자 ID 이외에는 입력하지 마십시오. comma에서는 GitHub ID를 추가하라는 요청을 하지 않습니다. + ADD - 추가 + Enter your GitHub username - GitHub 사용자 ID + LOADING - 로딩 + REMOVE - 제거 + Username '%1' has no keys on GitHub - 사용자 '%1'의 키가 GitHub에 없습니다 + Request timed out - 요청 시간 초과 + Username '%1' doesn't exist on GitHub - 사용자 '%1'는 GitHub에 없습니다 + SshToggle Enable SSH - SSH 사용 + TermsPage Terms & Conditions - 약관 + Decline - 거절 + Scroll to accept - 동의하려면 아래로 스크롤하세요 + Agree - 동의 + TogglesPanel Enable openpilot - openpilot 사용 + Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - 어댑티브 크루즈 컨트롤 및 차선 유지 운전자 보조를 위해 openpilot 시스템을 사용하십시오. 이 기능을 사용하려면 항상 주의를 기울여야 합니다. 설정변경은 장치 재부팅후 적용됩니다. + - Enable Lane Departure Warnings - 차선 이탈 경고 사용 + openpilot Longitudinal Control (Alpha) + - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - 차량이 50km/h(31mph) 이상의 속도로 주행하는 동안 방향지시등이 켜지지 않은 상태에서 차량이 감지된 차선을 벗어나면 차선이탈 경고를 합니다. + WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + - Use Metric System - 미터법 사용 + On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + - Display speed in km/h instead of mph. - mph 대신 km/h로 속도를 표시합니다. + Experimental Mode + + + + Disengage on Accelerator Pedal + + + + When enabled, pressing the accelerator pedal will disengage openpilot. + + + + Enable Lane Departure Warnings + + + + Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). + Record and Upload Driver Camera - 운전자 카메라 녹화 및 업로드 + Upload data from the driver facing camera and help improve the driver monitoring algorithm. - 운전자 카메라에서 데이터를 업로드하고 운전자 모니터링 알고리즘을 개선합니다. + - Disengage on Accelerator Pedal - 가속페달 조작시 해제 + Use Linked Brightness + - When enabled, pressing the accelerator pedal will disengage openpilot. - 활성화된 경우 가속 페달을 밟으면 openpilot이 해제됩니다. + Use the car's headlight state for brightness control. + - Show ETA in 24h Format - 24시간 형식으로 도착예정시간 표시 + Use LQR on Lat Control for PA + - Use 24h format instead of am/pm - 오전/오후 대신 24시간 형식 사용 + When enabled, using LQR on lat control for prius alpha. + - Show Map on Left Side of UI - UI 왼쪽에 지도 표시 + Compass + - Show map on left side when in split screen view. - 분할 화면 보기에서 지도를 왼쪽에 표시합니다. + Add a compass to the onroad UI that indicates your current driving direction. + - Experimental Mode - 실험적 모드 + Turn Off Display After 30 Seconds + - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilot은 기본적으로 <b>안정적 모드</b>로 주행합니다. 실험적 모드는 안정적 모드에 준비되지 않은 <b>알파 수준 기능</b>을 활성화 합니다. 실험적 모드의 특징은 아래에 나열되어 있습니다 + Turn off the device's display after going 'onroad' for 30 seconds. + - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - 주행모델이 가속과 감속을 제어하도록 합니다. openpilot은 신호등과 정지표지판을 보고 멈추는 것을 포함하여 운전자가 생각하는것처럼 주행합니다. 주행 모델이 주행할 속도를 결정하므로 설정된 속도는 상한선으로만 작용합니다. 이것은 알파 기능이므로 사용에 주의해야 합니다. + Long: Cruise Speed Override + - New Driving Visualization - 새로운 주행 시각화 + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - 차량에 장착된 ACC가 롱컨트롤에 사용되기 때문에 현재 이 차량은 실험적 모드를 사용할 수 없습니다. + Use Metric System + - openpilot longitudinal control may come in a future update. - openpilot 롱컨트롤은 향후 업데이트에서 제공될 수 있습니다. + Display speed in km/h instead of mph. + - openpilot Longitudinal Control (Alpha) - openpilot 롱컨트롤 (알파) + Show ETA in 24h Format + - WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - 경고: openpilot 롱컨트롤은 알파 기능으로 차량의 자동긴급제동(AEB)를 비활성화합니다. + Use 24h format instead of am/pm + - On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - 이 차량은 openpilot 롱컨트롤 대신 차량의 ACC로 기본 설정됩니다. openpilot 롱컨트롤으로 전환하려면 이 기능을 활성화하세요. openpilot 롱컨트롤 알파를 활성화하는경우 실험적 모드 활성화를 권장합니다. + Show Map on Left Side of UI + + + + Show map on left side when in split screen view. + Aggressive - 공격적 + Standard - 표준 + Relaxed - 편안한 + Driving Personality - 주행 모드 + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 표준 모드를 권장합니다. 공격적 모드에서는 openpilot은 앞차를 더 가까이 따라가며 가속과 감속을 더 공격적으로 사용합니다. 편안한 모드에서 openpilot은 선두 차량에서 더 멀리 떨어져 있습니다. + - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. - openpilot 롱컨트롤 알파 버전은 비 릴리스 분기에서 실험적 모드와 함께 테스트할 수 있습니다. + Driving Personalities Via UI / Wheel + - Navigate on openpilot - Navigate on openpilot (NOO) + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - openpilot E2E 롱컨트롤 (알파) 토글을 활성화하여 실험적 모드를 허용합니다. + openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: + End-to-End Longitudinal Control - E2E 롱컨트롤 + + + + Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. + + + + Navigate on openpilot + When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 내비게이션에 목적지가 있으면 openpilot이 지도 정보를 모델에 입력합니다. 이는 모델에 유용한 컨텍스트를 제공하고 openpilot이 분기점에서 적절하게 왼쪽 또는 오른쪽을 유지할 수 있도록 합니다. 차선 변경 기능은 여전히 운전자의 조작에 의해 활성화됩니다. 이것은 알파 상태의 기능입니다. 특히 출구 분기점 주변에서 실수가 발생될수 있으며 이러한 실수에는 의도하지 않은 차선 이탈, 늦은 출구 이용, 도로 가장자리의 분리대 또는 경계석을 향해 운전하는 등이 포함될 수 있습니다. + + + + New Driving Visualization + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 주행 시각화는 저속으로 주행시 도로를 향한 광각 카메라로 전환되어 일부 회전을 더 잘 보여줍니다. 실험적 모드 로고도 우측 상단에 표시됩니다. 내비게이션 목적지가 설정되고 주행 모델에 입력되면 지도의 주행 경로가 녹색으로 바뀝니다. + + + + Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. + + + + openpilot longitudinal control may come in a future update. + + + + An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. + + + + Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + Updater Update Required - 업데이트 필요 + An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - OS 업데이트가 필요합니다. 장치를 wifi에 연결하면 가장 빠른 업데이트 경험을 제공합니다. 다운로드 크기는 약 1GB입니다. + Connect to Wi-Fi - wifi 연결 + Install - 설치 + Back - 뒤로 + Loading... - 로딩중... + Reboot - 재부팅 + Update failed - 업데이트 실패 + WiFiPromptWidget Setup Wi-Fi - wifi 설정 + Connect to Wi-Fi to upload driving data and help improve openpilot - wifi에 연결하여 주행 데이터를 업로드하고 openpilot 개선에 참여하세요. + Open Settings - 설정 열기 + Ready to upload - 업로드 준비완료 + Training data will be pulled periodically while your device is on Wi-Fi - 기기가 wifi에 연결되어 있는 동안 트레이닝 데이터를 주기적으로 전송합니다. + WifiUI Scanning for networks... - 네트워크 검색 중... + CONNECTING... - 연결중... + FORGET - 저장안함 + Forget Wi-Fi Network "%1"? - "%1"를 저장하지 않겠습니까? + Forget - 저장안함 + diff --git a/selfdrive/ui/translations/main_nl.ts b/selfdrive/ui/translations/main_nl.ts deleted file mode 100644 index 10651a416011ff3..000000000000000 --- a/selfdrive/ui/translations/main_nl.ts +++ /dev/null @@ -1,1120 +0,0 @@ - - - - - AbstractAlert - - Close - Sluit - - - Snooze Update - Update uitstellen - - - Reboot and Update - Opnieuw Opstarten en Updaten - - - - AdvancedNetworking - - Back - Terug - - - Enable Tethering - Tethering Inschakelen - - - Tethering Password - Tethering Wachtwoord - - - EDIT - AANPASSEN - - - Enter new tethering password - Voer nieuw tethering wachtwoord in - - - IP Address - IP Adres - - - Enable Roaming - Roaming Inschakelen - - - APN Setting - APN Instelling - - - Enter APN - Voer APN in - - - leave blank for automatic configuration - laat leeg voor automatische configuratie - - - Cellular Metered - - - - Prevent large data uploads when on a metered connection - - - - - AnnotatedCameraWidget - - km/h - km/u - - - mph - mph - - - MAX - MAX - - - SPEED - SPEED - - - LIMIT - LIMIT - - - - ConfirmationDialog - - Ok - Ok - - - Cancel - Annuleren - - - - DeclinePage - - You must accept the Terms and Conditions in order to use openpilot. - U moet de Algemene Voorwaarden accepteren om openpilot te gebruiken. - - - Back - Terug - - - Decline, uninstall %1 - Afwijzen, verwijder %1 - - - - DevicePanel - - Dongle ID - Dongle ID - - - N/A - Nvt - - - Serial - Serienummer - - - Driver Camera - Bestuurders Camera - - - PREVIEW - BEKIJKEN - - - Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - Bekijk de naar de bestuurder gerichte camera om ervoor te zorgen dat het monitoren van de bestuurder goed zicht heeft. (Voertuig moet uitgschakeld zijn) - - - Reset Calibration - Kalibratie Resetten - - - RESET - RESET - - - Are you sure you want to reset calibration? - Weet u zeker dat u de kalibratie wilt resetten? - - - Review Training Guide - Doorloop de Training Opnieuw - - - REVIEW - BEKIJKEN - - - Review the rules, features, and limitations of openpilot - Bekijk de regels, functies en beperkingen van openpilot - - - Are you sure you want to review the training guide? - Weet u zeker dat u de training opnieuw wilt doorlopen? - - - Regulatory - Regelgeving - - - VIEW - BEKIJKEN - - - Change Language - Taal Wijzigen - - - CHANGE - WIJZIGEN - - - Select a language - Selecteer een taal - - - Reboot - Opnieuw Opstarten - - - Power Off - Uitschakelen - - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilot vereist dat het apparaat binnen 4° links of rechts en binnen 5° omhoog of 8° omlaag wordt gemonteerd. openpilot kalibreert continu, resetten is zelden nodig. - - - Your device is pointed %1° %2 and %3° %4. - Uw apparaat is gericht op %1° %2 en %3° %4. - - - down - omlaag - - - up - omhoog - - - left - links - - - right - rechts - - - Are you sure you want to reboot? - Weet u zeker dat u opnieuw wilt opstarten? - - - Disengage to Reboot - Deactiveer openpilot om opnieuw op te starten - - - Are you sure you want to power off? - Weet u zeker dat u wilt uitschakelen? - - - Disengage to Power Off - Deactiveer openpilot om uit te schakelen - - - - DriveStats - - Drives - Ritten - - - Hours - Uren - - - ALL TIME - TOTAAL - - - PAST WEEK - AFGELOPEN WEEK - - - KM - Km - - - Miles - Mijl - - - - DriverViewScene - - camera starting - Camera wordt gestart - - - - InputDialog - - Cancel - Annuleren - - - Need at least %n character(s)! - - Heeft minstens %n karakter nodig! - Heeft minstens %n karakters nodig! - - - - - Installer - - Installing... - Installeren... - - - Receiving objects: - Objecten ontvangen: - - - Resolving deltas: - Deltas verwerken: - - - Updating files: - Bestanden bijwerken: - - - - MapETA - - eta - eta - - - min - min - - - hr - uur - - - km - km - - - mi - mi - - - - MapInstructions - - km - km - - - m - m - - - mi - mi - - - ft - ft - - - - MapPanel - - Current Destination - Huidige Bestemming - - - CLEAR - LEEGMAKEN - - - Recent Destinations - Recente Bestemmingen - - - Try the Navigation Beta - Probeer de Navigatie Bèta - - - Get turn-by-turn directions displayed and more with a comma -prime subscription. Sign up now: https://connect.comma.ai - Krijg stapsgewijze routebeschrijving en meer met een comma -prime abonnement. Meld u nu aan: https://connect.comma.ai - - - No home -location set - Geen thuislocatie -ingesteld - - - No work -location set - Geen werklocatie -ingesteld - - - no recent destinations - geen recente bestemmingen - - - - MapWindow - - Map Loading - Kaart wordt geladen - - - Waiting for GPS - Wachten op GPS - - - - MultiOptionDialog - - Select - Selecteer - - - Cancel - Annuleren - - - - Networking - - Advanced - Geavanceerd - - - Enter password - Voer wachtwoord in - - - for "%1" - voor "%1" - - - Wrong password - Verkeerd wachtwoord - - - - OffroadHome - - UPDATE - UPDATE - - - ALERTS - WAARSCHUWINGEN - - - ALERT - WAARSCHUWING - - - - PairingPopup - - Pair your device to your comma account - Koppel uw apparaat aan uw comma-account - - - Go to https://connect.comma.ai on your phone - Ga naar https://connect.comma.ai op uw telefoon - - - Click "add new device" and scan the QR code on the right - Klik op "add new device" en scan de QR-code aan de rechterkant - - - Bookmark connect.comma.ai to your home screen to use it like an app - Voeg connect.comma.ai toe op uw startscherm om het als een app te gebruiken - - - - PrimeAdWidget - - Upgrade Now - Upgrade nu - - - Become a comma prime member at connect.comma.ai - Word een comma prime lid op connect.comma.ai - - - PRIME FEATURES: - PRIME BEVAT: - - - Remote access - Toegang op afstand - - - 1 year of storage - 1 jaar lang opslag - - - Developer perks - Voordelen voor ontwikkelaars - - - - PrimeUserWidget - - ✓ SUBSCRIBED - ✓ GEABONNEERD - - - comma prime - comma prime - - - CONNECT.COMMA.AI - CONNECT.COMMA.AI - - - COMMA POINTS - COMMA PUNTEN - - - - QObject - - Reboot - Opnieuw Opstarten - - - Exit - Afsluiten - - - dashcam - dashcam - - - openpilot - openpilot - - - %n minute(s) ago - - %n minuut geleden - %n minuten geleden - - - - %n hour(s) ago - - %n uur geleden - %n uur geleden - - - - %n day(s) ago - - %n dag geleden - %n dagen geleden - - - - - Reset - - Reset failed. Reboot to try again. - Opnieuw instellen mislukt. Start opnieuw op om opnieuw te proberen. - - - Are you sure you want to reset your device? - Weet u zeker dat u uw apparaat opnieuw wilt instellen? - - - Resetting device... - Apparaat opnieuw instellen... - - - System Reset - Systeemreset - - - System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - Systeemreset geactiveerd. Druk op bevestigen om alle inhoud en instellingen te wissen. Druk op Annuleren om het opstarten te hervatten. - - - Cancel - Annuleren - - - Reboot - Opnieuw Opstarten - - - Confirm - Bevestigen - - - Unable to mount data partition. Press confirm to reset your device. - Kan gegevenspartitie niet koppelen. Druk op bevestigen om uw apparaat te resetten. - - - - RichTextDialog - - Ok - Ok - - - - SettingsWindow - - × - × - - - Device - Apparaat - - - Network - Netwerk - - - Toggles - Opties - - - Software - Software - - - Navigation - Navigatie - - - - Setup - - WARNING: Low Voltage - WAARCHUWING: Lage Spanning - - - Power your device in a car with a harness or proceed at your own risk. - Voorzie uw apparaat van stroom in een auto met een harnas (car harness) of ga op eigen risico verder. - - - Power off - Uitschakelen - - - Continue - Doorgaan - - - Getting Started - Aan de slag - - - Before we get on the road, let’s finish installation and cover some details. - Laten we, voordat we op pad gaan, de installatie afronden en enkele details bespreken. - - - Connect to Wi-Fi - Maak verbinding met Wi-Fi - - - Back - Terug - - - Continue without Wi-Fi - Doorgaan zonder Wi-Fi - - - Waiting for internet - Wachten op internet - - - Choose Software to Install - Kies Software om te Installeren - - - Dashcam - Dashcam - - - Custom Software - Andere Software - - - Enter URL - Voer URL in - - - for Custom Software - voor Andere Software - - - Downloading... - Downloaden... - - - Download Failed - Downloaden Mislukt - - - Ensure the entered URL is valid, and the device’s internet connection is good. - Zorg ervoor dat de ingevoerde URL geldig is en dat de internetverbinding van het apparaat goed is. - - - Reboot device - Apparaat opnieuw opstarten - - - Start over - Begin opnieuw - - - - SetupWidget - - Finish Setup - Installatie voltooien - - - Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Koppel uw apparaat met comma connect (connect.comma.ai) en claim uw comma prime-aanbieding. - - - Pair device - Apparaat koppelen - - - - Sidebar - - CONNECT - VERBINDING - - - OFFLINE - OFFLINE - - - ONLINE - ONLINE - - - ERROR - FOUT - - - TEMP - TEMP - - - HIGH - HOOG - - - GOOD - GOED - - - OK - OK - - - VEHICLE - VOERTUIG - - - NO - GEEN - - - PANDA - PANDA - - - GPS - GPS - - - SEARCH - ZOEKEN - - - -- - -- - - - Wi-Fi - Wi-Fi - - - ETH - ETH - - - 2G - 2G - - - 3G - 3G - - - LTE - 4G - - - 5G - 5G - - - - SoftwarePanel - - Git Branch - Git Branch - - - Git Commit - Git Commit - - - OS Version - OS Versie - - - Version - Versie - - - Last Update Check - Laatste Updatecontrole - - - The last time openpilot successfully checked for an update. The updater only runs while the car is off. - De laatste keer dat openpilot met succes heeft gecontroleerd op een update. De updater werkt alleen als de auto is uitgeschakeld. - - - Check for Update - Controleer op Updates - - - CHECKING - CONTROLEER - - - Switch Branch - Branch Verwisselen - - - ENTER - INVOEREN - - - The new branch will be pulled the next time the updater runs. - Tijdens de volgende update wordt de nieuwe branch opgehaald. - - - Enter branch name - Voer branch naam in - - - Uninstall %1 - Verwijder %1 - - - UNINSTALL - VERWIJDER - - - Are you sure you want to uninstall? - Weet u zeker dat u de installatie ongedaan wilt maken? - - - failed to fetch update - ophalen van update mislukt - - - CHECK - CONTROLEER - - - Updates are only downloaded while the car is off. - - - - Current Version - - - - Download - - - - Install Update - - - - INSTALL - - - - Target Branch - - - - SELECT - - - - Select a branch - - - - - SshControl - - SSH Keys - SSH Sleutels - - - Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - Waarschuwing: dit geeft SSH toegang tot alle openbare sleutels in uw GitHub-instellingen. Voer nooit een andere GitHub-gebruikersnaam in dan die van uzelf. Een medewerker van comma zal u NOOIT vragen om zijn GitHub-gebruikersnaam toe te voegen. - - - ADD - TOEVOEGEN - - - Enter your GitHub username - Voer uw GitHub gebruikersnaam in - - - LOADING - LADEN - - - REMOVE - VERWIJDEREN - - - Username '%1' has no keys on GitHub - Gebruikersnaam '%1' heeft geen SSH sleutels op GitHub - - - Request timed out - Time-out van aanvraag - - - Username '%1' doesn't exist on GitHub - Gebruikersnaam '%1' bestaat niet op GitHub - - - - SshToggle - - Enable SSH - SSH Inschakelen - - - - TermsPage - - Terms & Conditions - Algemene Voorwaarden - - - Decline - Afwijzen - - - Scroll to accept - Scroll om te accepteren - - - Agree - Akkoord - - - - TogglesPanel - - Enable openpilot - openpilot Inschakelen - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Gebruik het openpilot-systeem voor adaptieve cruisecontrol en rijstrookassistentie. Uw aandacht is te allen tijde vereist om deze functie te gebruiken. Het wijzigen van deze instelling wordt van kracht wanneer de auto wordt uitgeschakeld. - - - Enable Lane Departure Warnings - Waarschuwingen bij Verlaten Rijstrook Inschakelen - - - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - Ontvang waarschuwingen om terug naar de rijstrook te sturen wanneer uw voertuig over een gedetecteerde rijstrookstreep drijft zonder dat de richtingaanwijzer wordt geactiveerd terwijl u harder rijdt dan 50 km/u (31 mph). - - - Use Metric System - Gebruik Metrisch Systeem - - - Display speed in km/h instead of mph. - Geef snelheid weer in km/u in plaats van mph. - - - Record and Upload Driver Camera - Opnemen en Uploaden van de Bestuurders Camera - - - Upload data from the driver facing camera and help improve the driver monitoring algorithm. - Upload gegevens van de bestuurders camera en help het algoritme voor het monitoren van de bestuurder te verbeteren. - - - Disengage on Accelerator Pedal - Deactiveren Met Gaspedaal - - - When enabled, pressing the accelerator pedal will disengage openpilot. - Indien ingeschakeld, zal het indrukken van het gaspedaal openpilot deactiveren. - - - Show ETA in 24h Format - Toon verwachte aankomsttijd in 24-uurs formaat - - - Use 24h format instead of am/pm - Gebruik 24-uurs formaat in plaats van AM en PM - - - Show Map on Left Side of UI - Toon kaart aan linkerkant van het scherm - - - Show map on left side when in split screen view. - Toon kaart links in gesplitste schermweergave. - - - openpilot Longitudinal Control - openpilot Longitudinale Controle - - - openpilot will disable the car's radar and will take over control of gas and brakes. Warning: this disables AEB! - openpilot zal de radar van de auto uitschakelen en de controle over gas en remmen overnemen. Waarschuwing: hierdoor wordt AEB (automatische noodrem) uitgeschakeld! - - - 🌮 End-to-end longitudinal (extremely alpha) 🌮 - - - - Experimental openpilot Longitudinal Control - - - - <b>WARNING: openpilot longitudinal control is experimental for this car and will disable AEB.</b> - - - - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would. Super experimental. - - - - openpilot longitudinal control is not currently available for this car. - - - - Enable experimental longitudinal control to enable this. - - - - - Updater - - Update Required - Update Vereist - - - An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - Een update van het besturingssysteem is vereist. Verbind je apparaat met Wi-Fi voor de snelste update-ervaring. De downloadgrootte is ongeveer 1 GB. - - - Connect to Wi-Fi - Maak verbinding met Wi-Fi - - - Install - Installeer - - - Back - Terug - - - Loading... - Aan het laden... - - - Reboot - Opnieuw Opstarten - - - Update failed - Update mislukt - - - - WifiUI - - Scanning for networks... - Scannen naar netwerken... - - - CONNECTING... - VERBINDEN... - - - FORGET - VERGETEN - - - Forget Wi-Fi Network "%1"? - Vergeet Wi-Fi Netwerk "%1"? - - - diff --git a/selfdrive/ui/translations/main_pl.ts b/selfdrive/ui/translations/main_pl.ts deleted file mode 100644 index 4f8b03ef50d02ba..000000000000000 --- a/selfdrive/ui/translations/main_pl.ts +++ /dev/null @@ -1,1124 +0,0 @@ - - - - - AbstractAlert - - Close - Zamknij - - - Snooze Update - Zaktualizuj później - - - Reboot and Update - Uruchom ponownie i zaktualizuj - - - - AdvancedNetworking - - Back - Wróć - - - Enable Tethering - Włącz hotspot osobisty - - - Tethering Password - Hasło do hotspotu - - - EDIT - EDYTUJ - - - Enter new tethering password - Wprowadź nowe hasło do hotspotu - - - IP Address - Adres IP - - - Enable Roaming - Włącz roaming danych - - - APN Setting - Ustawienia APN - - - Enter APN - Wprowadź APN - - - leave blank for automatic configuration - Pozostaw puste, aby użyć domyślnej konfiguracji - - - Cellular Metered - - - - Prevent large data uploads when on a metered connection - - - - - AnnotatedCameraWidget - - km/h - km/h - - - mph - mph - - - MAX - MAX - - - SPEED - PRĘDKOŚĆ - - - LIMIT - OGRANICZENIE - - - - ConfirmationDialog - - Ok - Ok - - - Cancel - Anuluj - - - - DeclinePage - - You must accept the Terms and Conditions in order to use openpilot. - Aby korzystać z openpilota musisz zaakceptować regulamin. - - - Back - Wróć - - - Decline, uninstall %1 - Odrzuć, odinstaluj %1 - - - - DevicePanel - - Dongle ID - ID adaptera - - - N/A - N/A - - - Serial - Numer seryjny - - - Driver Camera - Kamera kierowcy - - - PREVIEW - PODGLĄD - - - Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - Wyświetl podgląd z kamery skierowanej na kierowcę, aby upewnić się, że monitoring kierowcy ma dobry zakres widzenia. (pojazd musi być wyłączony) - - - Reset Calibration - Zresetuj kalibrację - - - RESET - ZRESETUJ - - - Are you sure you want to reset calibration? - Czy na pewno chcesz zresetować kalibrację? - - - Review Training Guide - Zapoznaj się z samouczkiem - - - REVIEW - ZAPOZNAJ SIĘ - - - Review the rules, features, and limitations of openpilot - Zapoznaj się z zasadami, funkcjami i ograniczeniami openpilota - - - Are you sure you want to review the training guide? - Czy na pewno chcesz się zapoznać z samouczkiem? - - - Regulatory - Regulacja - - - VIEW - WIDOK - - - Change Language - Zmień język - - - CHANGE - ZMIEŃ - - - Select a language - Wybierz język - - - Reboot - Uruchom ponownie - - - Power Off - Wyłącz - - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilot wymaga, aby urządzenie było zamontowane z maksymalnym odchyłem 4° poziomo, 5° w górę oraz 8° w dół. openpilot jest ciągle kalibrowany, rzadko konieczne jest resetowania urządzenia. - - - Your device is pointed %1° %2 and %3° %4. - Twoje urządzenie jest skierowane %1° %2 oraz %3° %4. - - - down - w dół - - - up - w górę - - - left - w lewo - - - right - w prawo - - - Are you sure you want to reboot? - Czy na pewno chcesz uruchomić ponownie urządzenie? - - - Disengage to Reboot - Aby uruchomić ponownie, odłącz sterowanie - - - Are you sure you want to power off? - Czy na pewno chcesz wyłączyć urządzenie? - - - Disengage to Power Off - Aby wyłączyć urządzenie, odłącz sterowanie - - - - DriveStats - - Drives - Przejazdy - - - Hours - Godziny - - - ALL TIME - CAŁKOWICIE - - - PAST WEEK - OSTATNI TYDZIEŃ - - - KM - KM - - - Miles - Mile - - - - DriverViewScene - - camera starting - uruchamianie kamery - - - - InputDialog - - Cancel - Anuluj - - - Need at least %n character(s)! - - Wpisana wartość powinna składać się przynajmniej z %n znaku! - Wpisana wartość powinna skłądać się przynajmniej z %n znaków! - Wpisana wartość powinna skłądać się przynajmniej z %n znaków! - - - - - Installer - - Installing... - Instalowanie... - - - Receiving objects: - Odbieranie obiektów: - - - Resolving deltas: - Rozwiązywanie różnic: - - - Updating files: - Aktualizacja plików: - - - - MapETA - - eta - przewidywany czas - - - min - min - - - hr - godz - - - km - km - - - mi - mi - - - - MapInstructions - - km - km - - - m - m - - - mi - mi - - - ft - ft - - - - MapPanel - - Current Destination - Miejsce docelowe - - - CLEAR - WYCZYŚĆ - - - Recent Destinations - Ostatnie miejsca docelowe - - - Try the Navigation Beta - Wypróbuj nawigację w wersji beta - - - Get turn-by-turn directions displayed and more with a comma -prime subscription. Sign up now: https://connect.comma.ai - Odblokuj nawigację zakręt po zakęcie i wiele więcej subskrybując -comma prime. Zarejestruj się teraz: https://connect.comma.ai - - - No home -location set - Lokalizacja domu -nie została ustawiona - - - No work -location set - Miejsce pracy -nie zostało ustawione - - - no recent destinations - brak ostatnich miejsc docelowych - - - - MapWindow - - Map Loading - Ładowanie Mapy - - - Waiting for GPS - Oczekiwanie na sygnał GPS - - - - MultiOptionDialog - - Select - Wybierz - - - Cancel - Anuluj - - - - Networking - - Advanced - Zaawansowane - - - Enter password - Wprowadź hasło - - - for "%1" - do "%1" - - - Wrong password - Niepoprawne hasło - - - - OffroadHome - - UPDATE - UAKTUALNIJ - - - ALERTS - ALERTY - - - ALERT - ALERT - - - - PairingPopup - - Pair your device to your comma account - Sparuj swoje urzadzenie ze swoim kontem comma - - - Go to https://connect.comma.ai on your phone - Wejdź na stronę https://connect.comma.ai na swoim telefonie - - - Click "add new device" and scan the QR code on the right - Kliknij "add new device" i zeskanuj kod QR znajdujący się po prawej stronie - - - Bookmark connect.comma.ai to your home screen to use it like an app - Dodaj connect.comma.ai do zakładek na swoim ekranie początkowym, aby korzystać z niej jak z aplikacji - - - - PrimeAdWidget - - Upgrade Now - Uaktualnij teraz - - - Become a comma prime member at connect.comma.ai - Zostań członkiem comma prime na connect.comma.ai - - - PRIME FEATURES: - FUNKCJE PRIME: - - - Remote access - Zdalny dostęp - - - 1 year of storage - 1 rok przechowywania danych - - - Developer perks - Udogodnienia dla programistów - - - - PrimeUserWidget - - ✓ SUBSCRIBED - ✓ ZASUBSKRYBOWANO - - - comma prime - comma prime - - - CONNECT.COMMA.AI - CONNECT.COMMA.AI - - - COMMA POINTS - COMMA POINTS - - - - QObject - - Reboot - Uruchom Ponownie - - - Exit - Wyjdź - - - dashcam - wideorejestrator - - - openpilot - openpilot - - - %n minute(s) ago - - %n minutę temu - %n minuty temu - %n minut temu - - - - %n hour(s) ago - - % godzinę temu - %n godziny temu - %n godzin temu - - - - %n day(s) ago - - %n dzień temu - %n dni temu - %n dni temu - - - - - Reset - - Reset failed. Reboot to try again. - Wymazywanie zakończone niepowodzeniem. Aby spróbować ponownie, uruchom ponownie urządzenie. - - - Are you sure you want to reset your device? - Czy na pewno chcesz wymazać urządzenie? - - - Resetting device... - Wymazywanie urządzenia... - - - System Reset - Przywróć do ustawień fabrycznych - - - System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - Przywracanie do ustawień fabrycznych. Wciśnij potwierdź, aby usunąć wszystkie dane oraz ustawienia. Wciśnij anuluj, aby wznowić uruchamianie. - - - Cancel - Anuluj - - - Reboot - Uruchom ponownie - - - Confirm - Potwiedź - - - Unable to mount data partition. Press confirm to reset your device. - Partycja nie została zamontowana poprawnie. Wciśnij potwierdź, aby uruchomić ponownie urządzenie. - - - - RichTextDialog - - Ok - Ok - - - - SettingsWindow - - × - x - - - Device - Urządzenie - - - Network - Sieć - - - Toggles - Przełączniki - - - Software - Oprogramowanie - - - Navigation - Nawigacja - - - - Setup - - WARNING: Low Voltage - OSTRZEŻENIE: Niskie Napięcie - - - Power your device in a car with a harness or proceed at your own risk. - Podłącz swoje urządzenie do zasilania poprzez podłączenienie go do pojazdu lub kontynuuj na własną odpowiedzialność. - - - Power off - Wyłącz - - - Continue - Kontynuuj - - - Getting Started - Zacznij - - - Before we get on the road, let’s finish installation and cover some details. - Zanim ruszysz w drogę, dokończ instalację i podaj kilka szczegółów. - - - Connect to Wi-Fi - Połącz z Wi-Fi - - - Back - Wróć - - - Continue without Wi-Fi - Kontynuuj bez połączenia z Wif-Fi - - - Waiting for internet - Oczekiwanie na połączenie sieciowe - - - Choose Software to Install - Wybierz oprogramowanie do instalacji - - - Dashcam - Wideorejestrator - - - Custom Software - Własne oprogramowanie - - - Enter URL - Wprowadź adres URL - - - for Custom Software - do własnego oprogramowania - - - Downloading... - Pobieranie... - - - Download Failed - Pobieranie nie powiodło się - - - Ensure the entered URL is valid, and the device’s internet connection is good. - Upewnij się, że wpisany adres URL jest poprawny, a połączenie internetowe działa poprawnie. - - - Reboot device - Uruchom ponownie - - - Start over - Zacznij od początku - - - - SetupWidget - - Finish Setup - Zakończ konfigurację - - - Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Sparuj swoje urządzenie z comma connect (connect.comma.ai) i wybierz swoją ofertę comma prime. - - - Pair device - Sparuj urządzenie - - - - Sidebar - - CONNECT - POŁĄCZENIE - - - OFFLINE - OFFLINE - - - ONLINE - ONLINE - - - ERROR - BŁĄD - - - TEMP - TEMP - - - HIGH - WYSOKA - - - GOOD - DOBRA - - - OK - OK - - - VEHICLE - POJAZD - - - NO - BRAK - - - PANDA - PANDA - - - GPS - GPS - - - SEARCH - SZUKAJ - - - -- - -- - - - Wi-Fi - Wi-FI - - - ETH - ETH - - - 2G - 2G - - - 3G - 3G - - - LTE - LTE - - - 5G - 5G - - - - SoftwarePanel - - Git Branch - Gałąź Git - - - Git Commit - Git commit - - - OS Version - Wersja systemu - - - Version - Wersja - - - Last Update Check - Ostatnie sprawdzenie aktualizacji - - - The last time openpilot successfully checked for an update. The updater only runs while the car is off. - Ostatni raz kiedy openpilot znalazł aktualizację. Aktualizator może być uruchomiony wyłącznie wtedy, kiedy pojazd jest wyłączony. - - - Check for Update - Sprawdź uaktualnienia - - - CHECKING - SPRAWDZANIE - - - Switch Branch - Zmień gąłąź - - - ENTER - WPROWADŹ - - - The new branch will be pulled the next time the updater runs. - Nowa gałąź będzie pobrana przy następnym uruchomieniu aktualizatora. - - - Enter branch name - Wprowadź nazwę gałęzi - - - Uninstall %1 - Odinstaluj %1 - - - UNINSTALL - ODINSTALUJ - - - Are you sure you want to uninstall? - Czy na pewno chcesz odinstalować? - - - failed to fetch update - pobieranie aktualizacji zakończone niepowodzeniem - - - CHECK - SPRAWDŹ - - - Updates are only downloaded while the car is off. - - - - Current Version - - - - Download - - - - Install Update - - - - INSTALL - - - - Target Branch - - - - SELECT - - - - Select a branch - - - - - SshControl - - SSH Keys - Klucze SSH - - - Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - Ostrzeżenie: To spowoduje przekazanie dostępu do wszystkich Twoich publicznych kuczy z ustawień GitHuba. Nigdy nie wprowadzaj nazwy użytkownika innej niż swoja. Pracownik comma NIGDY nie poprosi o dodanie swojej nazwy uzytkownika. - - - ADD - DODAJ - - - Enter your GitHub username - Wpisz swoją nazwę użytkownika GitHub - - - LOADING - ŁADOWANIE - - - REMOVE - USUŃ - - - Username '%1' has no keys on GitHub - Użytkownik '%1' nie posiada żadnych kluczy na GitHubie - - - Request timed out - Limit czasu rządania - - - Username '%1' doesn't exist on GitHub - Użytkownik '%1' nie istnieje na GitHubie - - - - SshToggle - - Enable SSH - Włącz SSH - - - - TermsPage - - Terms & Conditions - Regulamin - - - Decline - Odrzuć - - - Scroll to accept - Przewiń w dół, aby zaakceptować - - - Agree - Zaakceptuj - - - - TogglesPanel - - Enable openpilot - Włącz openpilota - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Użyj openpilota do zachowania bezpiecznego odstępu między pojazdami i do asystowania w utrzymywaniu pasa ruchu. Twoja pełna uwaga jest wymagana przez cały czas korzystania z tej funkcji. Ustawienie to może być wdrożone wyłącznie wtedy, gdy pojazd jest wyłączony. - - - Enable Lane Departure Warnings - Włącz ostrzeganie przed zmianą pasa ruchu - - - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - Otrzymuj alerty o powrocie na właściwy pas, kiedy Twój pojazd przekroczy linię bez włączonego kierunkowskazu jadąc powyżej 50 km/h (31 mph). - - - Use Metric System - Korzystaj z systemu metrycznego - - - Display speed in km/h instead of mph. - Wyświetl prędkość w km/h zamiast mph. - - - Record and Upload Driver Camera - Nagraj i prześlij nagranie z kamery kierowcy - - - Upload data from the driver facing camera and help improve the driver monitoring algorithm. - Prześlij dane z kamery skierowanej na kierowcę i pomóż poprawiać algorytm monitorowania kierowcy. - - - Disengage on Accelerator Pedal - Odłącz poprzez naciśnięcie gazu - - - When enabled, pressing the accelerator pedal will disengage openpilot. - Po włączeniu, naciśnięcie na pedał gazu odłączy openpilota. - - - Show ETA in 24h Format - Pokaż oczekiwany czas dojazdu w formacie 24-godzinnym - - - Use 24h format instead of am/pm - Korzystaj z formatu 24-godzinnego zamiast 12-godzinnego - - - Show Map on Left Side of UI - Pokaż mapę po lewej stronie ekranu - - - Show map on left side when in split screen view. - Pokaż mapę po lewej stronie kiedy ekran jest podzielony. - - - openpilot Longitudinal Control - Kontrola wzdłużna openpilota - - - openpilot will disable the car's radar and will take over control of gas and brakes. Warning: this disables AEB! - openpilot wyłączy radar samochodu i przejmie kontrolę nad gazem i hamulcem. Ostrzeżenie: wyłączony zostanie system AEB! - - - 🌮 End-to-end longitudinal (extremely alpha) 🌮 - - - - Experimental openpilot Longitudinal Control - - - - <b>WARNING: openpilot longitudinal control is experimental for this car and will disable AEB.</b> - - - - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would. Super experimental. - - - - openpilot longitudinal control is not currently available for this car. - - - - Enable experimental longitudinal control to enable this. - - - - - Updater - - Update Required - Wymagana Aktualizacja - - - An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - Wymagana aktualizacja systemu operacyjnego. Aby przyspieszyć proces aktualizacji połącz swoje urzeądzenie do Wi-Fi. Rozmiar pobieranej paczki wynosi około 1GB. - - - Connect to Wi-Fi - Połącz się z Wi-Fi - - - Install - Zainstaluj - - - Back - Wróć - - - Loading... - Ładowanie... - - - Reboot - Uruchom ponownie - - - Update failed - Aktualizacja nie powiodła się - - - - WifiUI - - Scanning for networks... - Wyszukiwanie sieci... - - - CONNECTING... - ŁĄCZENIE... - - - FORGET - ZAPOMNIJ - - - Forget Wi-Fi Network "%1"? - Czy chcesz zapomnieć sieć "%1"? - - - diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 7aa0c7c49b3b0c3..94c243d21fc8db4 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -5,331 +5,331 @@ AbstractAlert Close - Fechar + Snooze Update - Adiar Atualização + Reboot and Update - Reiniciar e Atualizar + AdvancedNetworking Back - Voltar + Enable Tethering - Ativar Tether + Tethering Password - Senha Tethering + EDIT - EDITAR + Enter new tethering password - Insira nova senha tethering + IP Address - Endereço IP + Enable Roaming - Ativar Roaming + APN Setting - APN Config + Enter APN - Insira APN + leave blank for automatic configuration - deixe em branco para configuração automática + Cellular Metered - Plano de Dados Limitado + Prevent large data uploads when on a metered connection - Evite grandes uploads de dados quando estiver em uma conexão limitada + AnnotatedCameraWidget km/h - km/h + mph - mph + MAX - LIMITE + SPEED - MAX + LIMIT - VELO + ConfirmationDialog Ok - OK + Cancel - Cancelar + DeclinePage You must accept the Terms and Conditions in order to use openpilot. - Você precisa aceitar os Termos e Condições para utilizar openpilot. + Back - Voltar + Decline, uninstall %1 - Rejeitar, desintalar %1 + DestinationWidget Home - Casa + Work - Trabalho + No destination set - Nenhum destino definido - - - No %1 location set - Endereço de %1 não definido + home - casa + work - trabalho + + + + No %1 location set + DevicePanel Dongle ID - Dongle ID + N/A - N/A + Serial - Serial + Driver Camera - Câmera do Motorista + PREVIEW - VER + Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - Pré-visualizar a câmera voltada para o motorista para garantir que o monitoramento do sistema tenha uma boa visibilidade (veículo precisa estar desligado) + Reset Calibration - Reinicializar Calibragem + RESET - RESET + Are you sure you want to reset calibration? - Tem certeza que quer resetar a calibragem? + + + + Reset + Review Training Guide - Revisar Guia de Treinamento + REVIEW - REVISAR + Review the rules, features, and limitations of openpilot - Revisar regras, aprimoramentos e limitações do openpilot + Are you sure you want to review the training guide? - Tem certeza que quer rever o treinamento? + + + + Review + Regulatory - Regulatório + VIEW - VER + Change Language - Alterar Idioma + CHANGE - ALTERAR + Select a language - Selecione o Idioma + Reboot - Reiniciar + Power Off - Desligar + openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - O openpilot requer que o dispositivo seja montado dentro de 4° esquerda ou direita e dentro de 5° para cima ou 8° para baixo. O openpilot está continuamente calibrando, resetar raramente é necessário. + Your device is pointed %1° %2 and %3° %4. - Seu dispositivo está montado %1° %2 e %3° %4. + down - baixo + up - cima + left - esquerda + right - direita + Are you sure you want to reboot? - Tem certeza que quer reiniciar? + Disengage to Reboot - Desacione para Reiniciar + Are you sure you want to power off? - Tem certeza que quer desligar? + Disengage to Power Off - Desacione para Desligar - - - Reset - Resetar - - - Review - Revisar + DriveStats Drives - Dirigidas + Hours - Horas + ALL TIME - TOTAL + PAST WEEK - SEMANA PASSADA + KM - KM + Miles - Milhas + DriverViewScene camera starting - câmera iniciando + ExperimentalModeButton EXPERIMENTAL MODE ON - MODO EXPERIMENTAL ON + CHILL MODE ON - MODO CHILL ON + InputDialog Cancel - Cancelar + Need at least %n character(s)! - - Necessita no mínimo %n caractere! - Necessita no mínimo %n caracteres! + + + @@ -337,879 +337,929 @@ Installer Installing... - Instalando... + MapETA eta - eta + min - min + hr - hr + MapSettings NAVIGATION - NAVEGAÇÃO + Manage at connect.comma.ai - Gerencie em connect.comma.ai + MapWindow Map Loading - Carregando Mapa + Waiting for GPS - Aguardando GPS + Waiting for route - Aguardando rota + MultiOptionDialog Select - Selecione + Cancel - Cancelar + Networking Advanced - Avançado + Enter password - Insira a senha + for "%1" - para "%1" + Wrong password - Senha incorreta + OffroadAlert + + Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + + Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - Conecte-se imediatamente à internet para verificar se há atualizações. Se você não se conectar à internet em %1 não será possível acionar o openpilot. + Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - Conecte-se à internet para verificar se há atualizações. O openpilot não será iniciado automaticamente até que ele se conecte à internet para verificar se há atualizações. + Unable to download updates %1 - Não é possível baixar atualizações -%1 + Invalid date and time settings, system won't start. Connect to internet to set time. - Configurações de data e hora inválidas, o sistema não será iniciado. Conecte-se à internet para definir o horário. + Taking camera snapshots. System won't start until finished. - Tirando fotos da câmera. O sistema não será iniciado até terminar. + An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - Uma atualização para o sistema operacional do seu dispositivo está sendo baixada em segundo plano. Você será solicitado a atualizar quando estiver pronto para instalar. + Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - Falha ao registrar o dispositivo. Ele não se conectará ou fará upload para os servidores comma.ai e não receberá suporte da comma.ai. Se este for um dispositivo oficial, visite https://comma.ai/support. + NVMe drive not mounted. - Unidade NVMe não montada. + Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - Unidade NVMe não suportada detectada. O dispositivo pode consumir significativamente mais energia e superaquecimento devido ao NVMe não suportado. + openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - O openpilot não conseguiu identificar o seu carro. Seu carro não é suportado ou seus ECUs não são reconhecidos. Envie um pull request para adicionar as versões de firmware ao veículo adequado. Precisa de ajuda? Junte-se discord.comma.ai. + openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - O openpilot não conseguiu identificar o seu carro. Verifique a integridade dos cabos e certifique-se de que todas as conexões estejam seguras, especialmente se o comma power está totalmente inserido na porta OBD-II do veículo. Precisa de ajuda? Junte-se discord.comma.ai. + openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - O openpilot detectou uma mudança na posição de montagem do dispositivo. Verifique se o dispositivo está totalmente encaixado no suporte e se o suporte está firmemente preso ao para-brisa. - - - Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - Temperatura do dispositivo muito alta. O sistema está sendo resfriado antes de iniciar. A temperatura atual do componente interno é: %1 + OffroadHome UPDATE - ATUALIZAÇÃO + ALERTS - ALERTAS + ALERT - ALERTA + PairingPopup Pair your device to your comma account - Pareie seu dispositivo à sua conta comma + Go to https://connect.comma.ai on your phone - navegue até https://connect.comma.ai no seu telefone + Click "add new device" and scan the QR code on the right - Clique "add new device" e escaneie o QR code a seguir + Bookmark connect.comma.ai to your home screen to use it like an app - Salve connect.comma.ai como sua página inicial para utilizar como um app + ParamControl - Cancel - Cancelar + Enable + - Enable - Ativar + Cancel + PrimeAdWidget Upgrade Now - Atualizar Agora + Become a comma prime member at connect.comma.ai - Seja um membro comma prime em connect.comma.ai + PRIME FEATURES: - BENEFÍCIOS PRIME: + Remote access - Acesso remoto (proxy comma) + 24/7 LTE connectivity - Conectividade LTE (só nos EUA) + - Turn-by-turn navigation - Navegação passo a passo + 1 year of drive storage + - 1 year of drive storage - 1 ano de dados em nuvem + Turn-by-turn navigation + PrimeUserWidget ✓ SUBSCRIBED - ✓ INSCRITO + comma prime - comma prime + QObject + + km + + + + m + + + + mi + + + + ft + + Reboot - Reiniciar + Exit - Sair + dashcam - dashcam + openpilot - openpilot + %n minute(s) ago - - há %n minuto - há %n minutos + + + %n hour(s) ago - - há %n hora - há %n horas + + + %n day(s) ago - - há %n dia - há %n dias + + + - - km - km - - - m - m - - - mi - milha - - - ft - pés - Reset Reset failed. Reboot to try again. - Reset falhou. Reinicie para tentar novamente. + + + + Resetting device... +This may take up to a minute. + Are you sure you want to reset your device? - Tem certeza que quer resetar seu dispositivo? + System Reset - Resetar Sistema + + + + Press confirm to erase all content and settings. Press cancel to resume boot. + Cancel - Cancelar + Reboot - Reiniciar + Confirm - Confirmar + Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - Não é possível montar a partição de dados. Partição corrompida. Confirme para apagar e redefinir o dispositivo. - - - Press confirm to erase all content and settings. Press cancel to resume boot. - Pressione confirmar para apagar todo o conteúdo e configurações. Pressione cancelar para voltar. - - - Resetting device... -This may take up to a minute. - Redefinindo o dispositivo -Isso pode levar até um minuto. + SettingsWindow × - × + Device - Dispositivo + Network - Rede + Toggles - Ajustes + Software - Software + Setup + + Something went wrong. Reboot the device. + + + + Ensure the entered URL is valid, and the device’s internet connection is good. + + + + No custom software found at this URL. + + WARNING: Low Voltage - ALERTA: Baixa Voltagem + Power your device in a car with a harness or proceed at your own risk. - Ligue seu dispositivo em um carro com um chicote ou prossiga por sua conta e risco. + Power off - Desligar + Continue - Continuar + Getting Started - Começando + Before we get on the road, let’s finish installation and cover some details. - Antes de pegarmos a estrada, vamos terminar a instalação e cobrir alguns detalhes. + Connect to Wi-Fi - Conectar ao Wi-Fi + Back - Voltar + - Continue without Wi-Fi - Continuar sem Wi-Fi + Enter URL + - Waiting for internet - Esperando pela internet + for Custom Software + - Enter URL - Preencher URL + Continue without Wi-Fi + - for Custom Software - para o Software Customizado + Waiting for internet + Downloading... - Baixando... + Download Failed - Download Falhou - - - Ensure the entered URL is valid, and the device’s internet connection is good. - Garanta que a URL inserida é valida, e uma boa conexão à internet. + Reboot device - Reiniciar Dispositivo + Start over - Inicializar - - - No custom software found at this URL. - Não há software personalizado nesta URL. - - - Something went wrong. Reboot the device. - Algo deu errado. Reinicie o dispositivo. + SetupWidget Finish Setup - Concluir + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - Pareie seu dispositivo com comma connect (connect.comma.ai) e reivindique sua oferta de comma prime. + Pair device - Parear dispositivo + Sidebar CONNECT - CONEXÃO + OFFLINE - OFFLINE + ONLINE - ONLINE + ERROR - ERRO + TEMP - TEMP + HIGH - ALTA + GOOD - BOA + OK - OK + VEHICLE - VEÍCULO + NO - SEM + PANDA - PANDA + GPS - GPS + SEARCH - PROCURA + -- - -- + Wi-Fi - Wi-Fi + ETH - ETH + 2G - 2G + 3G - 3G + LTE - LTE + 5G - 5G + SoftwarePanel Updates are only downloaded while the car is off. - Atualizações baixadas durante o motor desligado. + Current Version - Versão Atual + Download - Download + + + + CHECK + Install Update - Instalar Atualização + INSTALL - INSTALAR + Target Branch - Alterar Branch + SELECT - SELECIONE + Select a branch - Selecione uma branch - - - UNINSTALL - REMOVER + Uninstall %1 - Desinstalar o %1 + - Are you sure you want to uninstall? - Tem certeza que quer desinstalar? + UNINSTALL + - CHECK - VERIFICAR + Are you sure you want to uninstall? + Uninstall - Desinstalar + failed to check for update - falha ao verificar por atualizações - - - up to date, last checked %1 - atualizado, última verificação %1 + DOWNLOAD - BAIXAR + update available - atualização disponível + never - nunca + + + + up to date, last checked %1 + SshControl SSH Keys - Chave SSH + Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - Aviso: isso concede acesso SSH a todas as chaves públicas nas configurações do GitHub. Nunca insira um nome de usuário do GitHub que não seja o seu. Um funcionário da comma NUNCA pedirá que você adicione seu nome de usuário do GitHub. + ADD - ADICIONAR + Enter your GitHub username - Insira seu nome de usuário do GitHub + LOADING - CARREGANDO + REMOVE - REMOVER + Username '%1' has no keys on GitHub - Usuário "%1” não possui chaves no GitHub + Request timed out - A solicitação expirou + Username '%1' doesn't exist on GitHub - Usuário '%1' não existe no GitHub + SshToggle Enable SSH - Habilitar SSH + TermsPage Terms & Conditions - Termos & Condições + Decline - Declinar + Scroll to accept - Role a tela para aceitar + Agree - Concordo + TogglesPanel Enable openpilot - Ativar openpilot + Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Use o sistema openpilot para controle de cruzeiro adaptativo e assistência ao motorista de manutenção de faixa. Sua atenção é necessária o tempo todo para usar esse recurso. A alteração desta configuração tem efeito quando o carro é desligado. + - Enable Lane Departure Warnings - Ativar Avisos de Saída de Faixa + openpilot Longitudinal Control (Alpha) + - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - Receba alertas para voltar para a pista se o seu veículo sair da faixa e a seta não tiver sido acionada previamente quando em velocidades superiores a 50 km/h. + WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + - Use Metric System - Usar Sistema Métrico + On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + - Display speed in km/h instead of mph. - Exibir velocidade em km/h invés de mph. + Experimental Mode + + + + Disengage on Accelerator Pedal + + + + When enabled, pressing the accelerator pedal will disengage openpilot. + + + + Enable Lane Departure Warnings + + + + Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). + Record and Upload Driver Camera - Gravar e Upload Câmera Motorista + Upload data from the driver facing camera and help improve the driver monitoring algorithm. - Upload dados da câmera voltada para o motorista e ajude a melhorar o algoritmo de monitoramentor. + - Disengage on Accelerator Pedal - Desacionar com Pedal do Acelerador + Use Linked Brightness + - When enabled, pressing the accelerator pedal will disengage openpilot. - Quando ativado, pressionar o pedal do acelerador desacionará o openpilot. + Use the car's headlight state for brightness control. + - Show ETA in 24h Format - Mostrar ETA em Formato 24h + Use LQR on Lat Control for PA + - Use 24h format instead of am/pm - Use o formato 24h em vez de am/pm + When enabled, using LQR on lat control for prius alpha. + - Show Map on Left Side of UI - Exibir Mapa no Lado Esquerdo + Compass + - Show map on left side when in split screen view. - Exibir mapa do lado esquerdo quando a tela for dividida. + Add a compass to the onroad UI that indicates your current driving direction. + - Experimental Mode - Modo Experimental + Turn Off Display After 30 Seconds + - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilot por padrão funciona em <b>modo chill</b>. modo Experimental ativa <b>recursos de nível-embrionário</b> que não estão prontos para o modo chill. Recursos experimentais estão listados abaixo: + Turn off the device's display after going 'onroad' for 30 seconds. + - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - Deixe o modelo de IA controlar o acelerador e os freios. O openpilot irá dirigir como pensa que um humano faria, incluindo parar em sinais vermelhos e sinais de parada. Uma vez que o modelo de condução decide a velocidade a conduzir, a velocidade definida apenas funcionará como um limite superior. Este é um recurso de qualidade embrionária; erros devem ser esperados. + Long: Cruise Speed Override + - New Driving Visualization - Nova Visualização de Condução + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - O modo Experimental está atualmente indisponível para este carro já que o ACC original do carro é usado para controle longitudinal. + Use Metric System + - openpilot longitudinal control may come in a future update. - O controle longitudinal openpilot poderá vir em uma atualização futura. + Display speed in km/h instead of mph. + - openpilot Longitudinal Control (Alpha) - Controle Longitudinal openpilot (Embrionário) + Show ETA in 24h Format + - WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - AVISO: o controle longitudinal openpilot está em estado embrionário para este carro e desativará a Frenagem Automática de Emergência (AEB). + Use 24h format instead of am/pm + - On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - Neste carro, o openpilot tem como padrão o ACC embutido do carro em vez do controle longitudinal do openpilot. Habilite isso para alternar para o controle longitudinal openpilot. Recomenda-se ativar o modo Experimental ao ativar o embrionário controle longitudinal openpilot. + Show Map on Left Side of UI + + + + Show map on left side when in split screen view. + Aggressive - Disputa + Standard - Neutro + Relaxed - Calmo + Driving Personality - Temperamento de Direção + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - Neutro é o recomendado. No modo disputa o openpilot seguirá o carro da frente mais de perto e será mais agressivo com a aceleração e frenagem. No modo calmo o openpilot se manterá mais longe do carro da frente. + - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. - Uma versão embrionária do controle longitudinal openpilot pode ser testada em conjunto com o modo Experimental, em branches que não sejam de produção. + Driving Personalities Via UI / Wheel + - Navigate on openpilot - Navegação no openpilot + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - Habilite o controle longitudinal (embrionário) openpilot para permitir o modo Experimental. + openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: + End-to-End Longitudinal Control - Controle Longitudinal de Ponta a Ponta + + + + Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. + + + + Navigate on openpilot + When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - Quando a navegação tem um destino, o openpilot insere as informações do mapa no modelo. Isso fornece contexto útil para o modelo e permite que o openpilot mantenha a esquerda ou a direita apropriadamente em bifurcações/saídas. O comportamento de mudança de faixa permanece inalterado e ainda é ativado somente pelo motorista. Este é um recurso de qualidade embrionária; erros devem ser esperados, principalmente em torno de saídas e bifurcações. Esses erros podem incluir travessias não intencionais na faixa de rodagem, saída tardia, condução em direção a barreiras divisórias nas áreas de marcas de canalização, etc. + + + + New Driving Visualization + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - A visualização de condução fará a transição para a câmera grande angular voltada para a estrada em baixas velocidades para mostrar melhor algumas curvas. O logotipo do modo Experimental também será mostrado no canto superior direito. Quando um destino de navegação é definido e o modelo de condução o utiliza como entrada o caminho de condução no mapa fica verde. + + + + Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. + + + + openpilot longitudinal control may come in a future update. + + + + An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. + + + + Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + Updater Update Required - Atualização Necessária + An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - Uma atualização do sistema operacional é necessária. Conecte seu dispositivo ao Wi-Fi para a experiência de atualização mais rápida. O tamanho do download é de aproximadamente 1GB. + Connect to Wi-Fi - Conecte-se ao Wi-Fi + Install - Instalar + Back - Voltar + Loading... - Carregando... + Reboot - Reiniciar + Update failed - Falha na atualização + WiFiPromptWidget Setup Wi-Fi - Configurar Wi-Fi + Connect to Wi-Fi to upload driving data and help improve openpilot - Conecte se ao Wi-Fi para realizar upload de dados de condução e ajudar a melhorar o openpilot + Open Settings - Abrir Configurações + Ready to upload - Pronto para upload + Training data will be pulled periodically while your device is on Wi-Fi - Os dados de treinamento serão extraídos periodicamente enquanto o dispositivo estiver no Wi-Fi + WifiUI Scanning for networks... - Procurando redes... + CONNECTING... - CONECTANDO... + FORGET - ESQUECER + Forget Wi-Fi Network "%1"? - Esquecer Rede Wi-Fi "%1"? + Forget - Esquecer + diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index 9ef2d8a913ea687..0fb73d2ce6a8a9f 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -1126,6 +1126,58 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. เปิดระบบควบคุมการเร่ง/เบรคโดย openpilot (alpha) เพื่อเปิดใช้งานโหมดทดลอง + + Use Linked Brightness + + + + Use the car's headlight state for brightness control. + + + + Use LQR on Lat Control for PA + + + + When enabled, using LQR on lat control for prius alpha. + + + + Compass + + + + Add a compass to the onroad UI that indicates your current driving direction. + + + + Turn Off Display After 30 Seconds + + + + Turn off the device's display after going 'onroad' for 30 seconds. + + + + Long: Cruise Speed Override + + + + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + + + + Driving Personalities Via UI / Wheel + + + + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + + Updater diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index 906884f640ac4ec..e57db65dee1a6a0 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -1124,6 +1124,58 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + + Use Linked Brightness + + + + Use the car's headlight state for brightness control. + + + + Use LQR on Lat Control for PA + + + + When enabled, using LQR on lat control for prius alpha. + + + + Compass + + + + Add a compass to the onroad UI that indicates your current driving direction. + + + + Turn Off Display After 30 Seconds + + + + Turn off the device's display after going 'onroad' for 30 seconds. + + + + Long: Cruise Speed Override + + + + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + + + + Driving Personalities Via UI / Wheel + + + + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + + Updater diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 48eb63338b927d7..1c6fb787fdc22a6 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -5,330 +5,330 @@ AbstractAlert Close - 关闭 + Snooze Update - 暂停更新 + Reboot and Update - 重启并更新 + AdvancedNetworking Back - 返回 + Enable Tethering - 启用WiFi热点 + Tethering Password - WiFi热点密码 + EDIT - 编辑 + Enter new tethering password - 输入新的WiFi热点密码 + IP Address - IP地址 + Enable Roaming - 启用数据漫游 + APN Setting - APN设置 + Enter APN - 输入APN + leave blank for automatic configuration - 留空以自动配置 + Cellular Metered - 按流量计费的手机移动网络 + Prevent large data uploads when on a metered connection - 当使用按流量计费的连接时,避免上传大流量数据 + AnnotatedCameraWidget km/h - km/h + mph - mph + MAX - 最高定速 + SPEED - SPEED + LIMIT - LIMIT + ConfirmationDialog Ok - 好的 + Cancel - 取消 + DeclinePage You must accept the Terms and Conditions in order to use openpilot. - 您必须接受条款和条件以使用openpilot。 + Back - 返回 + Decline, uninstall %1 - 拒绝并卸载%1 + DestinationWidget Home - 住家 + Work - 工作 + No destination set - 尚未设置目的地 - - - No %1 location set - 尚未设置 %1 的位置 + home - 住家 + work - 工作 + + + + No %1 location set + DevicePanel Dongle ID - 设备ID(Dongle ID) + N/A - N/A + Serial - 序列号 + Driver Camera - 驾驶员摄像头 + PREVIEW - 预览 + Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - 打开并预览驾驶员摄像头,以确保驾驶员监控具有良好视野。(仅熄火时可用) + Reset Calibration - 重置设备校准 + RESET - 重置 + Are you sure you want to reset calibration? - 您确定要重置设备校准吗? + + + + Reset + Review Training Guide - 新手指南 + REVIEW - 查看 + Review the rules, features, and limitations of openpilot - 查看 openpilot 的使用规则,以及其功能和限制 + Are you sure you want to review the training guide? - 您确定要查看新手指南吗? + + + + Review + Regulatory - 监管信息 + VIEW - 查看 + Change Language - 切换语言 + CHANGE - 切换 + Select a language - 选择语言 + Reboot - 重启 + Power Off - 关机 + openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilot要求设备安装的偏航角在左4°和右4°之间,俯仰角在上5°和下8°之间。一般来说,openpilot会持续更新校准,很少需要重置。 + Your device is pointed %1° %2 and %3° %4. - 您的设备校准为%1° %2、%3° %4。 + down - 朝下 + up - 朝上 + left - 朝左 + right - 朝右 + Are you sure you want to reboot? - 您确定要重新启动吗? + Disengage to Reboot - 取消openpilot以重新启动 + Are you sure you want to power off? - 您确定要关机吗? + Disengage to Power Off - 取消openpilot以关机 - - - Reset - 重置 - - - Review - 预览 + DriveStats Drives - 旅程数 + Hours - 小时 + ALL TIME - 全部 + PAST WEEK - 过去一周 + KM - 公里 + Miles - 英里 + DriverViewScene camera starting - 正在启动相机 + ExperimentalModeButton EXPERIMENTAL MODE ON - 试验模式运行 + CHILL MODE ON - 轻松模式运行 + InputDialog Cancel - 取消 + Need at least %n character(s)! - - 至少需要 %n 个字符! + + @@ -336,876 +336,926 @@ Installer Installing... - 正在安装…… + MapETA eta - 抵达 + min - 分钟 + hr - 小时 + MapSettings NAVIGATION - 导航 + Manage at connect.comma.ai - 请在 connect.comma.ai 上管理 + MapWindow Map Loading - 地图加载中 + Waiting for GPS - 等待 GPS + Waiting for route - 等待路线 + MultiOptionDialog Select - 选择 + Cancel - 取消 + Networking Advanced - 高级 + Enter password - 输入密码 + for "%1" - 网络名称:"%1" + Wrong password - 密码错误 + OffroadAlert + + Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + + Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - 请立即连接网络检查更新。如果不连接网络,openpilot 将在 %1 后便无法使用 + Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - 请连接至互联网以检查更新。在连接至互联网并完成更新检查之前,openpilot 将不会自动启动。 + Unable to download updates %1 - 无法下载更新 -%1 + Invalid date and time settings, system won't start. Connect to internet to set time. - 日期和时间设置无效,系统无法启动。请连接至互联网以设置时间。 + Taking camera snapshots. System won't start until finished. - 正在使用相机拍摄中。在完成之前,系统将无法启动。 + An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - 一个针对您设备的操作系统更新正在后台下载中。当更新准备好安装时,您将收到提示进行更新。 + Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - 设备注册失败。它将无法连接或上传至 comma.ai 服务器,并且无法获得 comma.ai 的支持。如果这是一个官方设备,请访问 https://comma.ai/support。 + NVMe drive not mounted. - NVMe固态硬盘未被挂载。 + Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - 检测到不支持的 NVMe 固态硬盘。您的设备因为使用了不支持的 NVMe 固态硬盘可能会消耗更多电力并更易过热。 + openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - openpilot 无法识别您的车辆。您的车辆可能未被支持,或是其电控单元 (ECU) 未被识别。请提交一个 Pull Request 为您的车辆添加正确的固件版本。需要帮助吗?请加入 discord.comma.ai。 + openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilot 无法识别您的车辆。请检查线路是否正确安装并确保所有的连接都牢固,特别是确保 comma power 完全插入车辆的 OBD-II 接口。需要帮助吗?请加入 discord.comma.ai。 + openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - openpilot 检测到设备的安装位置发生变化。请确保设备完全安装在支架上,并确保支架牢固地固定在挡风玻璃上。 - - - Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - 设备温度过高。系统正在冷却中,等冷却完毕后才会启动。目前内部组件温度:%1 + OffroadHome UPDATE - 更新 + ALERTS - 警报 + ALERT - 警报 + PairingPopup Pair your device to your comma account - 将您的设备与comma账号配对 + Go to https://connect.comma.ai on your phone - 在手机上访问 https://connect.comma.ai + Click "add new device" and scan the QR code on the right - 点击“添加新设备”,扫描右侧二维码 + Bookmark connect.comma.ai to your home screen to use it like an app - 将 connect.comma.ai 收藏到您的主屏幕,以便像应用程序一样使用它 + ParamControl - Cancel - 取消 + Enable + - Enable - 启用 + Cancel + PrimeAdWidget Upgrade Now - 现在升级 + Become a comma prime member at connect.comma.ai - 打开connect.comma.ai以注册comma prime会员 + PRIME FEATURES: - comma prime特权: + Remote access - 远程访问 + 24/7 LTE connectivity - 全天候 LTE 連線 + - Turn-by-turn navigation - 领航功能 + 1 year of drive storage + - 1 year of drive storage - 一年的行驶记录储存空间 + Turn-by-turn navigation + PrimeUserWidget ✓ SUBSCRIBED - ✓ 已订阅 + comma prime - comma prime + QObject + + km + + + + m + + + + mi + + + + ft + + Reboot - 重启 + Exit - 退出 + dashcam - 行车记录仪 + openpilot - openpilot + %n minute(s) ago - - %n 分钟前 + + %n hour(s) ago - - %n 小时前 + + %n day(s) ago - - %n 天前 + + - - km - km - - - m - m - - - mi - mi - - - ft - ft - Reset Reset failed. Reboot to try again. - 重置失败。 重新启动以重试。 + + + + Resetting device... +This may take up to a minute. + Are you sure you want to reset your device? - 您确定要重置您的设备吗? + System Reset - 恢复出厂设置 + + + + Press confirm to erase all content and settings. Press cancel to resume boot. + Cancel - 取消 + Reboot - 重启 + Confirm - 确认 + Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - 无法挂载数据分区。分区可能已经损坏。请确认是否要删除并重新设置。 - - - Press confirm to erase all content and settings. Press cancel to resume boot. - 按下确认以删除所有内容及设置。按下取消来继续开机。 - - - Resetting device... -This may take up to a minute. - 设备重置中… -这可能需要一分钟的时间。 + SettingsWindow × - × + Device - 设备 + Network - 网络 + Toggles - 设定 + Software - 软件 + Setup + + Something went wrong. Reboot the device. + + + + Ensure the entered URL is valid, and the device’s internet connection is good. + + + + No custom software found at this URL. + + WARNING: Low Voltage - 警告:低电压 + Power your device in a car with a harness or proceed at your own risk. - 请使用car harness线束为您的设备供电,或自行承担风险。 + Power off - 关机 + Continue - 继续 + Getting Started - 开始设置 + Before we get on the road, let’s finish installation and cover some details. - 开始旅程之前,让我们完成安装并介绍一些细节。 + Connect to Wi-Fi - 连接到WiFi + Back - 返回 + - Continue without Wi-Fi - 不连接WiFi并继续 + Enter URL + - Waiting for internet - 等待网络连接 + for Custom Software + - Enter URL - 输入网址 + Continue without Wi-Fi + - for Custom Software - 以下载自定义软件 + Waiting for internet + Downloading... - 正在下载…… + Download Failed - 下载失败 - - - Ensure the entered URL is valid, and the device’s internet connection is good. - 请确保互联网连接良好且输入的URL有效。 + Reboot device - 重启设备 + Start over - 重来 - - - No custom software found at this URL. - 在此网址找不到自定义软件。 - - - Something went wrong. Reboot the device. - 发生了一些错误。请重新启动您的设备。 + SetupWidget Finish Setup - 完成设置 + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - 将您的设备与comma connect (connect.comma.ai)配对并领取您的comma prime优惠。 + Pair device - 配对设备 + Sidebar CONNECT - CONNECT + OFFLINE - 离线 + ONLINE - 在线 + ERROR - 连接出错 + TEMP - 设备温度 + HIGH - 过热 + GOOD - 良好 + OK - 一般 + VEHICLE - 车辆连接 + NO - + PANDA - PANDA + GPS - GPS + SEARCH - 搜索中 + -- - -- + Wi-Fi - Wi-Fi + ETH - 以太网 + 2G - 2G + 3G - 3G + LTE - LTE + 5G - 5G + SoftwarePanel Updates are only downloaded while the car is off. - 车辆熄火时才能下载升级文件。 + Current Version - 当前版本 + Download - 下载 + + + + CHECK + Install Update - 安装更新 + INSTALL - 安装 + Target Branch - 目标分支 + SELECT - 选择 + Select a branch - 选择分支 - - - UNINSTALL - 卸载 + Uninstall %1 - 卸载 %1 + - Are you sure you want to uninstall? - 您确定要卸载吗? + UNINSTALL + - CHECK - 查看 + Are you sure you want to uninstall? + Uninstall - 卸载 + failed to check for update - 检查更新失败 - - - up to date, last checked %1 - 已经是最新版本,上次检查时间为 %1 + DOWNLOAD - 下载 + update available - 有可用的更新 + never - 从未更新 + + + + up to date, last checked %1 + SshControl SSH Keys - SSH密钥 + Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - 警告:这将授予SSH访问权限给您GitHub设置中的所有公钥。切勿输入您自己以外的GitHub用户名。comma员工永远不会要求您添加他们的GitHub用户名。 + ADD - 添加 + Enter your GitHub username - 输入您的GitHub用户名 + LOADING - 正在加载 + REMOVE - 删除 + Username '%1' has no keys on GitHub - 用户名“%1”在GitHub上没有密钥 + Request timed out - 请求超时 + Username '%1' doesn't exist on GitHub - GitHub上不存在用户名“%1” + SshToggle Enable SSH - 启用SSH + TermsPage Terms & Conditions - 条款和条件 + Decline - 拒绝 + Scroll to accept - 滑动以接受 + Agree - 同意 + TogglesPanel Enable openpilot - 启用openpilot + Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - 使用openpilot进行自适应巡航和车道保持辅助。使用此功能时您必须时刻保持注意力。该设置的更改在熄火时生效。 + - Enable Lane Departure Warnings - 启用车道偏离警告 + openpilot Longitudinal Control (Alpha) + - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - 车速超过31mph(50km/h)时,若检测到车辆越过车道线且未打转向灯,系统将发出警告以提醒您返回车道。 + WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + - Use Metric System - 使用公制单位 + On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + - Display speed in km/h instead of mph. - 显示车速时,以km/h代替mph。 + Experimental Mode + + + + Disengage on Accelerator Pedal + + + + When enabled, pressing the accelerator pedal will disengage openpilot. + + + + Enable Lane Departure Warnings + + + + Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). + Record and Upload Driver Camera - 录制并上传驾驶员摄像头 + Upload data from the driver facing camera and help improve the driver monitoring algorithm. - 上传驾驶员摄像头的数据,帮助改进驾驶员监控算法。 + - Disengage on Accelerator Pedal - 踩油门时取消控制 + Use Linked Brightness + - When enabled, pressing the accelerator pedal will disengage openpilot. - 启用后,踩下油门踏板将取消openpilot。 + Use the car's headlight state for brightness control. + - Show ETA in 24h Format - 以24小时格式显示预计到达时间 + Use LQR on Lat Control for PA + - Use 24h format instead of am/pm - 使用24小时制代替am/pm + When enabled, using LQR on lat control for prius alpha. + - Show Map on Left Side of UI - 在介面左侧显示地图 + Compass + - Show map on left side when in split screen view. - 在分屏模式中,将地图置于屏幕左侧。 + Add a compass to the onroad UI that indicates your current driving direction. + - Experimental Mode - 测试模式 + Turn Off Display After 30 Seconds + - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilot 默认 <b>轻松模式</b>驾驶车辆。试验模式启用一些轻松模式之外的 <b>试验性功能</b>。试验性功能包括: + Turn off the device's display after going 'onroad' for 30 seconds. + - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - 允许驾驶模型控制加速和制动,openpilot将模仿人类驾驶车辆,包括在红灯和停车让行标识前停车。鉴于驾驶模型确定行驶车速,所设定的车速仅作为上限。此功能尚处于早期测试状态,有可能会出现操作错误。 + Long: Cruise Speed Override + - New Driving Visualization - 新驾驶视角 + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - 由于此车辆使用自带的ACC纵向控制,当前无法使用试验模式。 + Use Metric System + - openpilot longitudinal control may come in a future update. - openpilot纵向控制可能会在未来的更新中提供。 + Display speed in km/h instead of mph. + - openpilot Longitudinal Control (Alpha) - openpilot纵向控制(Alpha 版) + Show ETA in 24h Format + - WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - 警告:此车辆的 openpilot 纵向控制功能目前处于Alpha版本,使用此功能将会停用自动紧急制动(AEB)功能。 + Use 24h format instead of am/pm + - On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - 在这辆车上,openpilot 默认使用车辆内建的主动巡航控制(ACC),而非 openpilot 的纵向控制。启用此项功能可切换至 openpilot 的纵向控制。当启用 openpilot 纵向控制 Alpha 版本时,建议同时启用实验性模式(Experimental mode)。 + Show Map on Left Side of UI + + + + Show map on left side when in split screen view. + Aggressive - 积极 + Standard - 标准 + Relaxed - 舒适 + Driving Personality - 驾驶风格 + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 推荐使用标准模式。在积极模式中,openpilot 会更靠近前车并在加速和刹车方面更积极。在舒适模式中,openpilot 会与前车保持较远的距离。 + - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. - 在正式(release)版本以外的分支上,可以测试 openpilot 纵向控制的 Alpha 版本以及实验模式。 + Driving Personalities Via UI / Wheel + - Navigate on openpilot - Navigate on openpilot + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - 启用 openpilot 纵向控制(alpha)开关以允许实验模式。 + openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: + End-to-End Longitudinal Control - 端到端纵向控制 + + + + Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. + + + + Navigate on openpilot + When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 当导航有目的地时,openpilot 将输入地图信息到模型中。这为模型提供了有用的背景信息,使 openpilot 能够在叉路/出口时适当地保持左侧或右侧行驶。车道变换行为保持不变,仍由驾驶员激活。这是一个 Alpha 版的功能;可能会出现错误,特别是在出口和分叉处。这些错误可能包括意外的车道越界、晚出口、朝着分隔栏驶向安全地带等。 + + + + New Driving Visualization + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 行驶画面将在低速时切换到道路朝向的广角摄像头,以更好地显示一些转弯。实验模式标志也将显示在右上角。当设置了导航目的地并且驾驶模型正在使用它作为输入时,地图上的驾驶路径将变为绿色。 + + + + Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. + + + + openpilot longitudinal control may come in a future update. + + + + An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. + + + + Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + Updater Update Required - 需要更新 + An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - 操作系统需要更新。请将您的设备连接到WiFi以获取更快的更新体验。下载大小约为1GB。 + Connect to Wi-Fi - 连接到WiFi + Install - 安装 + Back - 返回 + Loading... - 正在加载…… + Reboot - 重启 + Update failed - 更新失败 + WiFiPromptWidget Setup Wi-Fi - 设置 Wi-Fi 连接 + Connect to Wi-Fi to upload driving data and help improve openpilot - 请连接至 Wi-Fi 上传驾驶数据以协助改进openpilot + Open Settings - 打开设置 + Ready to upload - 准备好上传 + Training data will be pulled periodically while your device is on Wi-Fi - 训练数据将定期通过 Wi-Fi 上载 + WifiUI Scanning for networks... - 正在扫描网络…… + CONNECTING... - 正在连接…… + FORGET - 忽略 + Forget Wi-Fi Network "%1"? - 忽略WiFi网络 "%1"? + Forget - 忽略 + diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 6eacb6428c9b80d..1c6fb787fdc22a6 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -1,334 +1,334 @@ - + AbstractAlert Close - 關閉 + Snooze Update - 暫停更新 + Reboot and Update - 重啟並更新 + AdvancedNetworking Back - 回上頁 + Enable Tethering - 啟用網路分享 + Tethering Password - 網路分享密碼 + EDIT - 編輯 + Enter new tethering password - 輸入新的網路分享密碼 + IP Address - IP 地址 + Enable Roaming - 啟用漫遊 + APN Setting - APN 設置 + Enter APN - 輸入 APN + leave blank for automatic configuration - 留空白將自動配置 + Cellular Metered - 行動網路 + Prevent large data uploads when on a metered connection - 防止使用行動網路上傳大量的數據 + AnnotatedCameraWidget km/h - km/h + mph - mph + MAX - 最高 + SPEED - 速度 + LIMIT - 速限 + ConfirmationDialog Ok - 確定 + Cancel - 取消 + DeclinePage You must accept the Terms and Conditions in order to use openpilot. - 您必須先接受條款和條件才能使用 openpilot。 + Back - 回上頁 + Decline, uninstall %1 - 拒絕並解除安裝 %1 + DestinationWidget Home - 住家 + Work - 工作 + No destination set - 尚未設定目的地 - - - No %1 location set - 尚未設定 %1 的位置 + home - 住家 + work - 工作 + + + + No %1 location set + DevicePanel Dongle ID - Dongle ID + N/A - 無法使用 + Serial - 序號 + Driver Camera - 駕駛員監控鏡頭 + PREVIEW - 預覽 + Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off) - 預覽駕駛員監控鏡頭畫面,以確保其具有良好視野。(僅在熄火時可用) + Reset Calibration - 重置校準 + RESET - 重置 + Are you sure you want to reset calibration? - 您確定要重置校準嗎? + + + + Reset + Review Training Guide - 觀看使用教學 + REVIEW - 觀看 + Review the rules, features, and limitations of openpilot - 觀看 openpilot 的使用規則、功能和限制 + Are you sure you want to review the training guide? - 您確定要觀看使用教學嗎? + + + + Review + Regulatory - 法規/監管 + VIEW - 觀看 + Change Language - 更改語言 + CHANGE - 更改 + Select a language - 選擇語言 + Reboot - 重新啟動 + Power Off - 關機 + openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilot 需要將設備固定在左右偏差 4° 以內,朝上偏差 5° 以内或朝下偏差 8° 以内。鏡頭在後台會持續自動校準,很少有需要重置的情况。 + Your device is pointed %1° %2 and %3° %4. - 你的設備目前朝%2 %1° 以及朝%4 %3° 。 + down - + up - + left - + right - + Are you sure you want to reboot? - 您確定要重新啟動嗎? + Disengage to Reboot - 請先取消控車才能重新啟動 + Are you sure you want to power off? - 您確定您要關機嗎? + Disengage to Power Off - 請先取消控車才能關機 - - - Reset - 重設 - - - Review - 回顧 + DriveStats Drives - 旅程 + Hours - 小時 + ALL TIME - 總共 + PAST WEEK - 上周 + KM - 公里 + Miles - 英里 + DriverViewScene camera starting - 開啟相機中 + ExperimentalModeButton EXPERIMENTAL MODE ON - 實驗模式 ON + CHILL MODE ON - 輕鬆模式 ON + InputDialog Cancel - 取消 + Need at least %n character(s)! - - 需要至少 %n 個字元! + + @@ -336,492 +336,490 @@ Installer Installing... - 安裝中… + MapETA eta - 抵達 + min - 分鐘 + hr - 小時 + MapSettings NAVIGATION - 導航 + Manage at connect.comma.ai - 請在 connect.comma.ai 上管理 + MapWindow Map Loading - 地圖加載中 + Waiting for GPS - 等待 GPS + Waiting for route - 等待路線 + MultiOptionDialog Select - 選擇 + Cancel - 取消 + Networking Advanced - 進階 + Enter password - 輸入密碼 + for "%1" - 給 "%1" + Wrong password - 密碼錯誤 + OffroadAlert + + Device temperature too high. System cooling down before starting. Current internal component temperature: %1 + + Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1 - 請立即連接網路檢查更新。如果不連接網路,openpilot 將在 %1 後便無法使用 + Connect to internet to check for updates. openpilot won't automatically start until it connects to internet to check for updates. - 請連接至網際網路以檢查更新。在連接至網際網路並完成更新檢查之前,openpilot 將不會自動啟動。 + Unable to download updates %1 - 無法下載更新 -%1 + Invalid date and time settings, system won't start. Connect to internet to set time. - 日期和時間設定無效,系統無法啟動。請連接至網際網路以設定時間。 + Taking camera snapshots. System won't start until finished. - 正在使用相機拍攝中。在完成之前,系統將無法啟動。 + An update to your device's operating system is downloading in the background. You will be prompted to update when it's ready to install. - 一個給您設備的操作系統的更新正在後台下載中。當更新準備好安裝時,您將收到提示進行更新。 + Device failed to register. It will not connect to or upload to comma.ai servers, and receives no support from comma.ai. If this is an official device, visit https://comma.ai/support. - 設備註冊失敗。它將無法連接或上傳至 comma.ai 伺服器,並且無法獲得 comma.ai 的支援。如果這是一個官方設備,請訪問 https://comma.ai/support 。 + NVMe drive not mounted. - NVMe 固態硬碟未被掛載。 + Unsupported NVMe drive detected. Device may draw significantly more power and overheat due to the unsupported NVMe. - 檢測到不支援的 NVMe 固態硬碟。您的設備因為使用了不支援的 NVMe 固態硬碟可能會消耗更多電力並更易過熱。 + openpilot was unable to identify your car. Your car is either unsupported or its ECUs are not recognized. Please submit a pull request to add the firmware versions to the proper vehicle. Need help? Join discord.comma.ai. - openpilot 無法識別您的車輛。您的車輛可能未被支援,或是其電控單元 (ECU) 未被識別。請提交一個 Pull Request 為您的車輛添加正確的固件版本。需要幫助嗎?請加入 discord.comma.ai 。 + openpilot was unable to identify your car. Check integrity of cables and ensure all connections are secure, particularly that the comma power is fully inserted in the OBD-II port of the vehicle. Need help? Join discord.comma.ai. - openpilot 無法識別您的車輛。請檢查線路是否正確的安裝並確保所有的連接都牢固,特別是確保 comma power 完全插入車輛的 OBD-II 接口。需要幫助嗎?請加入 discord.comma.ai 。 + openpilot detected a change in the device's mounting position. Ensure the device is fully seated in the mount and the mount is firmly secured to the windshield. - openpilot 偵測到設備的安裝位置發生變化。請確保設備完全安裝在支架上,並確保支架牢固地固定在擋風玻璃上。 - - - Device temperature too high. System cooling down before starting. Current internal component temperature: %1 - 設備溫度過高。系統正在冷卻中,等冷卻完畢後才會啟動。目前內部組件溫度:%1 + OffroadHome UPDATE - 更新 + ALERTS - 提醒 + ALERT - 提醒 + PairingPopup Pair your device to your comma account - 將設備與您的 comma 帳號配對 + Go to https://connect.comma.ai on your phone - 用手機連至 https://connect.comma.ai + Click "add new device" and scan the QR code on the right - 點選 "add new device" 後掃描右邊的二維碼 + Bookmark connect.comma.ai to your home screen to use it like an app - 將 connect.comma.ai 加入您的主屏幕,以便像手機 App 一樣使用它 + ParamControl - Cancel - 取消 + Enable + - Enable - 啟用 + Cancel + PrimeAdWidget Upgrade Now - 馬上升級 + Become a comma prime member at connect.comma.ai - 成為 connect.comma.ai 的高級會員 + PRIME FEATURES: - 高級會員特點: + Remote access - 遠程訪問 + 24/7 LTE connectivity - 24/7 LTE 連線 + - Turn-by-turn navigation - 導航功能 + 1 year of drive storage + - 1 year of drive storage - 一年的行駛記錄儲存空間 + Turn-by-turn navigation + PrimeUserWidget ✓ SUBSCRIBED - ✓ 已訂閱 + comma prime - comma 高級會員 + QObject + + km + + + + m + + + + mi + + + + ft + + Reboot - 重新啟動 + Exit - 離開 + dashcam - 行車記錄器 + openpilot - openpilot + %n minute(s) ago - - %n 分鐘前 + + %n hour(s) ago - - %n 小時前 + + %n day(s) ago - - %n 天前 + + - - km - km - - - m - m - - - mi - mi - - - ft - ft - Reset Reset failed. Reboot to try again. - 重置失敗。請重新啟動後再試。 + + + + Resetting device... +This may take up to a minute. + Are you sure you want to reset your device? - 您確定要重置你的設備嗎? + System Reset - 系統重置 + + + + Press confirm to erase all content and settings. Press cancel to resume boot. + Cancel - 取消 + Reboot - 重新啟動 + Confirm - 確認 + Unable to mount data partition. Partition may be corrupted. Press confirm to erase and reset your device. - 無法掛載資料分割區。分割區可能已經毀損。請確認是否要刪除並重新設定。 - - - Press confirm to erase all content and settings. Press cancel to resume boot. - 按下確認以刪除所有內容及設定。按下取消來繼續開機。 - - - Resetting device... -This may take up to a minute. - 設備重置中… -這可能需要一分鐘的時間。 + SettingsWindow × - × + Device - 設備 + Network - 網路 + Toggles - 設定 + Software - 軟體 + Setup + + Something went wrong. Reboot the device. + + + + Ensure the entered URL is valid, and the device’s internet connection is good. + + + + No custom software found at this URL. + + WARNING: Low Voltage - 警告:電壓過低 + Power your device in a car with a harness or proceed at your own risk. - 請使用車上 harness 提供的電源,若繼續的話您需要自擔風險。 + Power off - 關機 + Continue - 繼續 + Getting Started - 入門 + Before we get on the road, let’s finish installation and cover some details. - 在我們上路之前,讓我們完成安裝並介紹一些細節。 + Connect to Wi-Fi - 連接到無線網絡 + Back - 回上頁 + - Continue without Wi-Fi - 在沒有 Wi-Fi 的情況下繼續 + Enter URL + - Waiting for internet - 連接至網路中 + for Custom Software + - Enter URL - 輸入網址 + Continue without Wi-Fi + - for Custom Software - 定制的軟體 + Waiting for internet + Downloading... - 下載中… + Download Failed - 下載失敗 - - - Ensure the entered URL is valid, and the device’s internet connection is good. - 請確定您輸入的是有效的安裝網址,並且確定設備的網路連線狀態良好。 + Reboot device - 重新啟動 + Start over - 重新開始 - - - No custom software found at this URL. - 在此網址找不到自訂軟體。 - - - Something went wrong. Reboot the device. - 發生了一些錯誤。請重新啟動您的設備。 + SetupWidget Finish Setup - 完成設置 + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. - 將您的設備與 comma connect (connect.comma.ai) 配對並領取您的 comma 高級會員優惠。 + Pair device - 配對設備 + Sidebar CONNECT - 雲端服務 + OFFLINE - 已離線 + ONLINE - 已連線 + ERROR - 錯誤 + TEMP - 溫度 + HIGH - 偏高 + GOOD - 正常 + OK - 一般 + VEHICLE - 車輛通訊 + NO - 未連線 + PANDA - 車輛通訊 + GPS - GPS + SEARCH - 車輛通訊 + -- - -- + Wi-Fi @@ -852,360 +850,412 @@ This may take up to a minute. SoftwarePanel Updates are only downloaded while the car is off. - 系統更新只會在熄火時下載。 + Current Version - 當前版本 + Download - 下載 + + + + CHECK + Install Update - 安裝更新 + INSTALL - 安裝 + Target Branch - 目標分支 + SELECT - 選取 + Select a branch - 選取一個分支 - - - UNINSTALL - 解除安裝 + Uninstall %1 - 解除安裝 %1 + - Are you sure you want to uninstall? - 您確定您要解除安裝嗎? + UNINSTALL + - CHECK - 檢查 + Are you sure you want to uninstall? + Uninstall - 解除安裝 + failed to check for update - 檢查更新失敗 - - - up to date, last checked %1 - 已經是最新版本,上次檢查時間為 %1 + DOWNLOAD - 下載 + update available - 有可用的更新 + never - 從未更新 + + + + up to date, last checked %1 + SshControl SSH Keys - SSH 密鑰 + Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username. - 警告:這將授權給 GitHub 帳號中所有公鑰 SSH 訪問權限。切勿輸入非您自己的 GitHub 用戶名。comma 員工「永遠不會」要求您添加他們的 GitHub 用戶名。 + ADD - 新增 + Enter your GitHub username - 請輸入您 GitHub 的用戶名 + LOADING - 載入中 + REMOVE - 移除 + Username '%1' has no keys on GitHub - GitHub 用戶 '%1' 沒有設定任何密鑰 + Request timed out - 請求超時 + Username '%1' doesn't exist on GitHub - GitHub 用戶 '%1' 不存在 + SshToggle Enable SSH - 啟用 SSH 服務 + TermsPage Terms & Conditions - 條款和條件 + Decline - 拒絕 + Scroll to accept - 滑動至頁尾接受條款 + Agree - 接受 + TogglesPanel Enable openpilot - 啟用 openpilot + Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - 使用 openpilot 的主動式巡航和車道保持功能,開啟後您需要持續集中注意力,設定變更在重新啟動車輛後生效。 + - Enable Lane Departure Warnings - 啟用車道偏離警告 + openpilot Longitudinal Control (Alpha) + - Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). - 車速在時速 50 公里 (31 英里) 以上且未打方向燈的情況下,如果偵測到車輛駛出目前車道線時,發出車道偏離警告。 + WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). + - Use Metric System - 使用公制單位 + On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. + - Display speed in km/h instead of mph. - 啟用後,速度單位顯示將從 mp/h 改為 km/h。 + Experimental Mode + + + + Disengage on Accelerator Pedal + + + + When enabled, pressing the accelerator pedal will disengage openpilot. + + + + Enable Lane Departure Warnings + + + + Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h). + Record and Upload Driver Camera - 記錄並上傳駕駛監控影像 + Upload data from the driver facing camera and help improve the driver monitoring algorithm. - 上傳駕駛監控的錄像來協助我們提升駕駛監控的準確率。 + - Disengage on Accelerator Pedal - 油門取消控車 + Use Linked Brightness + - When enabled, pressing the accelerator pedal will disengage openpilot. - 啟用後,踩踏油門將會取消 openpilot 控制。 + Use the car's headlight state for brightness control. + - Show ETA in 24h Format - 預計到達時間單位改用 24 小時制 + Use LQR on Lat Control for PA + - Use 24h format instead of am/pm - 使用 24 小時制。(預設值為 12 小時制) + When enabled, using LQR on lat control for prius alpha. + - Show Map on Left Side of UI - 將地圖顯示在畫面的左側 + Compass + - Show map on left side when in split screen view. - 進入分割畫面後,地圖將會顯示在畫面的左側。 + Add a compass to the onroad UI that indicates your current driving direction. + - Experimental Mode - 實驗模式 + Turn Off Display After 30 Seconds + - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: - openpilot 預設以 <b>輕鬆模式</b> 駕駛。 實驗模式啟用了尚未準備好進入輕鬆模式的 <b>alpha 級功能</b>。實驗功能如下: + Turn off the device's display after going 'onroad' for 30 seconds. + - Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - 讓駕駛模型來控制油門及煞車。openpilot將會模擬人類的駕駛行為,包含在看見紅燈及停止標示時停車。由於車速將由駕駛模型決定,因此您設定的時速將成為速度上限。本功能仍在早期實驗階段,請預期模型有犯錯的可能性。 + Long: Cruise Speed Override + - New Driving Visualization - 新的駕駛視覺介面 + Allow openpilot's set speed to be set below the vehicle's minimum cruise speed. To use this feature, when the vehicle is travelling below its minimum set speed, pull the cruise control lever down (or click the cruise control SET button) once, openpilot will set its maximum speed to the vehicle's current speed. + - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. - 因車輛使用內建ACC系統,無法在本車輛上啟動實驗模式。 + Use Metric System + - openpilot longitudinal control may come in a future update. - openpilot 縱向控制可能會在未來的更新中提供。 + Display speed in km/h instead of mph. + - openpilot Longitudinal Control (Alpha) - openpilot 縱向控制 (Alpha 版) + Show ETA in 24h Format + - WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB). - 警告:此車輛的 openpilot 縱向控制功能目前處於 Alpha 版本,使用此功能將會停用自動緊急制動(AEB)功能。 + Use 24h format instead of am/pm + - On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - 在這輛車上,openpilot 預設使用車輛內建的主動巡航控制(ACC),而非 openpilot 的縱向控制。啟用此項功能可切換至 openpilot 的縱向控制。當啟用 openpilot 縱向控制 Alpha 版本時,建議同時啟用實驗性模式(Experimental mode)。 + Show Map on Left Side of UI + + + + Show map on left side when in split screen view. + Aggressive - 積極 + Standard - 標準 + Relaxed - 舒適 + Driving Personality - 駕駛風格 + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 推薦使用標準模式。在積極模式中,openpilot 會更靠近前車並在加速和剎車方面更積極。在舒適模式中,openpilot 會與前車保持較遠的距離。 + - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. - 在正式 (release) 版以外的分支上可以測試 openpilot 縱向控制的 Alpha 版本以及實驗模式。 + Driving Personalities Via UI / Wheel + - Navigate on openpilot - Navigate on openpilot + Switch driving personalities using the 'Distance' button on the steering wheel (Toyota/Lexus Only) or via the onroad UI for other makes. + +1 bar = Aggressive +2 bars = Standard +3 bars = Relaxed + - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. - 啟用 openpilot 縱向控制(alpha)切換以允許實驗模式。 + openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: + End-to-End Longitudinal Control - 端到端縱向控制 + + + + Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. + + + + Navigate on openpilot + When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 当导航有目的地时,openpilot 将把地图信息输入模型中。这为模型提供了有用的背景信息,使 openpilot 能够在叉路/出口时适当地保持左侧或右侧行驶。车道变换行为保持不变,仍由驾驶员激活。这是一个 Alpha 版的功能;可能会出现错误,特别是在出口和分叉处。这些错误可能包括意外的车道越界、晚出口、朝着分隔栏驶向分隔带区域等。 + + + + New Driving Visualization + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 行駛畫面將在低速時切換至道路朝向的廣角鏡頭,以更好地顯示一些轉彎。實驗模式圖標也將顯示在右上角。當設定了導航目的地並且行駛模型正在將其作為輸入時,地圖上的行駛路徑將變為綠色。 + + + + Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. + + + + openpilot longitudinal control may come in a future update. + + + + An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. + + + + Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + Updater Update Required - 系統更新 + An operating system update is required. Connect your device to Wi-Fi for the fastest update experience. The download size is approximately 1GB. - 設備的操作系統需要更新。請將您的設備連接到 Wi-Fi 以獲得最快的更新體驗。下載大小約為 1GB。 + Connect to Wi-Fi - 連接到無線網絡 + Install - 安裝 + Back - 回上頁 + Loading... - 載入中… + Reboot - 重新啟動 + Update failed - 更新失敗 + WiFiPromptWidget Setup Wi-Fi - 設置 Wi-Fi 連接 + Connect to Wi-Fi to upload driving data and help improve openpilot - 請連接至 Wi-Fi 傳駕駛數據以協助改進 openpilot + Open Settings - 開啟設置 + Ready to upload - 準備好上傳 + Training data will be pulled periodically while your device is on Wi-Fi - 訓練數據將定期經過 Wi-Fi 上傳 + WifiUI Scanning for networks... - 掃描無線網路中... + CONNECTING... - 連線中... + FORGET - 清除 + Forget Wi-Fi Network "%1"? - 清除 Wi-Fi 網路 "%1"? + Forget - 清除 + diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc index 03df2cf57a00c0d..c2591d35e71ce1b 100644 --- a/selfdrive/ui/ui.cc +++ b/selfdrive/ui/ui.cc @@ -157,6 +157,10 @@ static void update_sockets(UIState *s) { static void update_state(UIState *s) { SubMaster &sm = *(s->sm); UIScene &scene = s->scene; + s->scene.parkingLightON = sm["carState"].getCarState().getLightingSystem().getParkingLightON(); + s->scene.headlightON = sm["carState"].getCarState().getLightingSystem().getHeadlightON(); + s->scene.meterDimmed = sm["carState"].getCarState().getLightingSystem().getMeterDimmed(); + s->scene.meterLowBrightness = sm["carState"].getCarState().getLightingSystem().getMeterLowBrightness(); if (sm.updated("liveCalibration")) { auto live_calib = sm["liveCalibration"].getLiveCalibration(); @@ -201,6 +205,11 @@ static void update_state(UIState *s) { if (sm.updated("carParams")) { scene.longitudinal_control = sm["carParams"].getCarParams().getOpenpilotLongitudinalControl(); } + if (sm.updated("gpsLocationExternal")) { + if (scene.compass) { + scene.bearing_deg = sm["gpsLocationExternal"].getGpsLocationExternal().getBearingDeg(); + } + } if (sm.updated("wideRoadCameraState")) { auto cam_state = sm["wideRoadCameraState"].getWideRoadCameraState(); float scale = (cam_state.getSensor() == cereal::FrameData::ImageSensor::AR0231) ? 6.0f : 1.0f; @@ -213,6 +222,22 @@ void ui_update_params(UIState *s) { auto params = Params(); s->scene.is_metric = params.getBool("IsMetric"); s->scene.map_on_left = params.getBool("NavSettingLeftSide"); + s->scene.headlight_brightness_control = Params().getBool("CarBrightnessControl"); + s->scene.screen_off_timer = Params().getBool("ScreenOffTimer"); + + // FrogPilot variables + UIScene &scene = s->scene; + scene.compass = params.getBool("Compass"); + scene.driving_personalities_ui_wheel = params.getBool("DrivingPersonalitiesUIWheel"); +} + +void ui_live_update_params(UIState *s) { + static auto params = Params(); + UIScene &scene = s->scene; + // FrogPilot variables that need to be updated live + if (scene.driving_personalities_ui_wheel) { + scene.personality_profile = params.getInt("LongitudinalPersonality"); + } } void UIState::updateStatus() { @@ -235,13 +260,19 @@ void UIState::updateStatus() { started_prev = scene.started; emit offroadTransition(!scene.started); } + + // Update the live parameters every 5hz + if (sm->frame % (UI_FREQ / 5) == 0 || !scene.started) { + ui_live_update_params(uiState()); + } } UIState::UIState(QObject *parent) : QObject(parent) { sm = std::make_unique>({ "modelV2", "controlsState", "liveCalibration", "radarState", "deviceState", "roadCameraState", "pandaStates", "carParams", "driverMonitoringState", "carState", "liveLocationKalman", "driverStateV2", - "wideRoadCameraState", "managerState", "navInstruction", "navRoute", "uiPlan", + "wideRoadCameraState", "managerState", "navInstruction", "navRoute", "uiPlan", + "gpsLocationExternal", }); Params params; @@ -312,23 +343,70 @@ void Device::resetInteractiveTimeout(int timeout) { } void Device::updateBrightness(const UIState &s) { - float clipped_brightness = offroad_brightness; + float desired_brightness = BACKLIGHT_OFFROAD; + float clipped_brightness_sensor = BACKLIGHT_OFFROAD; + float clipped_brightness_headlight = BACKLIGHT_OFFROAD; + + // 60 seconds before display turns off + int DISPLAY_OFF_TIMEOUT = 60 * UI_FREQ; + if (s.scene.started) { - clipped_brightness = s.scene.light_sensor; + // Scale to 0% to 100% + clipped_brightness_sensor = 100.0 * s.scene.light_sensor; // CIE 1931 - https://www.photonstophotos.net/GeneralTopics/Exposure/Psychometric_Lightness_and_Gamma.htm - if (clipped_brightness <= 8) { - clipped_brightness = (clipped_brightness / 903.3); + if (clipped_brightness_sensor <= 8) { + clipped_brightness_sensor = (clipped_brightness_sensor / 903.3); } else { - clipped_brightness = std::pow((clipped_brightness + 16.0) / 116.0, 3.0); + clipped_brightness_sensor = std::pow((clipped_brightness_sensor + 16.0) / 116.0, 3.0); } // Scale back to 10% to 100% - clipped_brightness = std::clamp(100.0f * clipped_brightness, 10.0f, 100.0f); + clipped_brightness_sensor = std::clamp(100.0f * clipped_brightness_sensor, 10.0f, 100.0f); + + // Headlight brightness control logic, no scaling required + // Logic for when the MFD is at its lowest possible brightness setting + if (s.scene.meterLowBrightness) { + clipped_brightness_headlight = 1.0f; + } else { + // dim display to 10% if the headlights are on and the combination meter is dimmed + // TODO: Link the combination meter brightness slider to this + if ((s.scene.headlightON) && (s.scene.meterDimmed)) { + clipped_brightness_headlight = 10.0f; + // parking light + dimmed MFD logic, useful during sunset + } else if ((s.scene.parkingLightON) && (!s.scene.headlightON) && (s.scene.meterDimmed)) { + clipped_brightness_headlight = 50.0f; + // default brightness + } else { + clipped_brightness_headlight = 100.0f; + } + } } - int brightness = brightness_filter.update(clipped_brightness); - if (!awake) { + if (s.scene.screen_off_timer && s.scene.touched2) { + sleep_time = DISPLAY_OFF_TIMEOUT; + } else if (s.scene.controls_state.getAlertSize() != cereal::ControlsState::AlertSize::NONE && s.scene.screen_off_timer) { + sleep_time = DISPLAY_OFF_TIMEOUT; + } else if (sleep_time > 0 && s.scene.screen_off_timer) { + sleep_time--; + } else if (s.scene.started && sleep_time == -1 && s.scene.screen_off_timer) { + sleep_time = DISPLAY_OFF_TIMEOUT; + } + + // handle brightness from two sources + // if the headlight brightness toggle is ON, use the headlight + MFD logic's output + if (s.scene.headlight_brightness_control) { + desired_brightness = clipped_brightness_headlight; + // otherwise use the comma device's sensor output + } else { + desired_brightness = clipped_brightness_sensor; + } + + // update brightness + int brightness = brightness_filter.update(desired_brightness); + + // brightness should be 0 if not awake or the screen off timer is up + if ((!awake) || (s.scene.started && sleep_time == 0 && s.scene.screen_off_timer)) { brightness = 0; } diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index bd9d0594223a2a4..b0f8be61a0f1ef9 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -119,11 +119,20 @@ static std::map alert_colors = { typedef struct UIScene { bool calibration_valid = false; + bool headlightON; + bool parkingLightON; + bool meterDimmed; + bool meterLowBrightness; + bool headlight_brightness_control; + bool screen_off_timer; + bool calibration_wide_valid = false; bool wide_cam = true; mat3 view_from_calib = DEFAULT_CALIBRATION; mat3 view_from_wide_calib = DEFAULT_CALIBRATION; + bool touched2 = false; cereal::PandaState::PandaType pandaType; + cereal::ControlsState::Reader controls_state; // modelV2 float lane_line_probs[4]; @@ -147,6 +156,13 @@ typedef struct UIScene { float light_sensor; bool started, ignition, is_metric, map_on_left, longitudinal_control; uint64_t started_frame; + + // FrogPilot variables + bool compass; + int bearing_deg; + int personality_profile; + bool driving_personalities_ui_wheel; + } UIScene; class UIState : public QObject { @@ -215,6 +231,8 @@ class Device : public QObject { FirstOrderFilter brightness_filter; QFuture brightness_future; + int sleep_time = -1; + void updateBrightness(const UIState &s); void updateWakefulness(const UIState &s); void setAwake(bool on);

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 z zCZ0gDdnJnZY{JQ9E3ht{#*F@6;UV;1>q=(~L?!^p4Y1}5v5(T!)a+&~_KMGLgi_l8 zahiHi0qLA@YaSJi<~k$u&X}E+R3-9Cuv;qmW>3`;X<%%07-OXX`!AhG`lbJg^qJ#` zj!k31n%i*u2Oq@xb@S1iOQEklhlI-upai*z0f@TncoBBYvo($D8DhX)qv4@4S;F+l zH1cC7u=@uuk0;(e`qcfu@$TQZZ=7V*a_G5}gqLsl%6{^b-486e_sRC8_nUVwo40Vy z++MWj7|K9iF;5j^I5p3VCVNMuM~;ld-n6Sizw1W1iphydlndiHv2Q2d+_n?D4xYoY zdMg_3b5Wmr7cl=;r0305Dbk%z(TGI8ZS2R(6&80K)mhRC%N9Nqd`j1LNEG+D*CXAU$VN4Zi&Z)E}V8jWsy!Nogbjx2Afkm{6lko8>LuFXl4#toDL#)oEKpl*H_wg*T3eCwZ&#_Hvic+ z4lPjU_5R*NV7NfD;zuh`V4k#+mAhC9{gAuxl9YXx;s#fC#`fPyRuk8s8TTtCu-t3+p5

+fT|8$c}T4I(Y;l>;&Bs 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 JtaD0e0sxv8bKC#` literal 0 HcmV?d00001 diff --git a/selfdrive/assets/images/compass_outer.png b/selfdrive/assets/images/compass_outer.png new file mode 100644 index 0000000000000000000000000000000000000000..39bc991d1c757fe52ac40882bd3fe79f414a0844 GIT binary patch literal 70921 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 literal 0 HcmV?d00001 diff --git a/selfdrive/assets/offroad/icon_brightness.png b/selfdrive/assets/offroad/icon_brightness.png new file mode 100644 index 0000000000000000000000000000000000000000..a590d9adb88a161d261229ffaf42e210bc155285 GIT binary patch literal 6173 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 J6^lcE_%HO?-jV;!-$>Y1g+l)YF4*>`$jnS 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