Remove RHD toggle: determine by driver side instead (#24802)

* driverview

* auto choose

* useless

* remove

* modeld not use toggle

* remove from params

* should have commissue anyway

* delete icon file

* deal with init more elegantly and prohibit switching when engaged

* nonblock save when not unstable

* filter very low speeds

* a few more secs dont harm

* draw icon

* match

* radius

* use const

* ref commit

* new transs

* put_bool_nonblocking

* 5k route tune

* ref comm

Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 22408781f7
taco
ZwX1616 3 years ago committed by GitHub
parent dfcd3a2910
commit 6e5393367d
  1. 2
      common/params.cc
  2. 3
      selfdrive/assets/offroad/icon_openpilot_mirrored.png
  3. 5
      selfdrive/modeld/modeld.cc
  4. 8
      selfdrive/modeld/models/driving.cc
  5. 2
      selfdrive/modeld/models/driving.h
  6. 9
      selfdrive/monitoring/dmonitoringd.py
  7. 20
      selfdrive/monitoring/driver_monitor.py
  8. 2
      selfdrive/test/process_replay/ref_commit
  9. 5
      selfdrive/ui/qt/offroad/driverview.cc
  10. 6
      selfdrive/ui/qt/offroad/settings.cc
  11. 4
      selfdrive/ui/qt/onroad.cc
  12. 2
      selfdrive/ui/qt/onroad.h
  13. 156
      selfdrive/ui/translations/main_ko.ts
  14. 156
      selfdrive/ui/translations/main_zh-CHS.ts
  15. 156
      selfdrive/ui/translations/main_zh-CHT.ts

@ -124,7 +124,7 @@ std::unordered_map<std::string, uint32_t> keys = {
{"IsMetric", PERSISTENT},
{"IsOffroad", CLEAR_ON_MANAGER_START},
{"IsOnroad", PERSISTENT},
{"IsRHD", PERSISTENT},
{"IsRhdDetected", PERSISTENT},
{"IsTakingSnapshot", CLEAR_ON_MANAGER_START},
{"IsTestedBranch", CLEAR_ON_MANAGER_START},
{"IsUpdateAvailable", CLEAR_ON_MANAGER_START},

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:df7d69023cd68d5d49dd073f33f0ca5344911986a26db32fc04cfbfbdfb06474
size 18150

@ -55,7 +55,7 @@ mat3 update_calibration(Eigen::Matrix<float, 3, 4> &extrinsics, bool wide_camera
void run_model(ModelState &model, VisionIpcClient &vipc_client_main, VisionIpcClient &vipc_client_extra, bool main_wide_camera, bool use_extra_client) {
// messaging
PubMaster pm({"modelV2", "cameraOdometry"});
SubMaster sm({"lateralPlan", "roadCameraState", "liveCalibration"});
SubMaster sm({"lateralPlan", "roadCameraState", "liveCalibration", "driverMonitoringState"});
// setup filter to track dropped frames
FirstOrderFilter frame_dropped_filter(0., 10., 1. / MODEL_FREQ);
@ -111,6 +111,7 @@ void run_model(ModelState &model, VisionIpcClient &vipc_client_main, VisionIpcCl
// TODO: path planner timeout?
sm.update(0);
int desire = ((int)sm["lateralPlan"].getLateralPlan().getDesire());
bool is_rhd = ((bool)sm["driverMonitoringState"].getDriverMonitoringState().getIsRHD());
frame_id = sm["roadCameraState"].getRoadCameraState().getFrameId();
if (sm.updated("liveCalibration")) {
auto extrinsic_matrix = sm["liveCalibration"].getLiveCalibration().getExtrinsicMatrix();
@ -146,7 +147,7 @@ void run_model(ModelState &model, VisionIpcClient &vipc_client_main, VisionIpcCl
}
double mt1 = millis_since_boot();
ModelOutput *model_output = model_eval_frame(&model, buf_main, buf_extra, model_transform_main, model_transform_extra, vec_desire, prepare_only);
ModelOutput *model_output = model_eval_frame(&model, buf_main, buf_extra, model_transform_main, model_transform_extra, vec_desire, is_rhd, prepare_only);
double mt2 = millis_since_boot();
float model_execution_time = (mt2 - mt1) / 1000.0;

@ -49,14 +49,12 @@ void model_init(ModelState* s, cl_device_id device_id, cl_context context) {
#endif
#ifdef TRAFFIC_CONVENTION
const int idx = Params().getBool("IsRHD") ? 1 : 0;
s->traffic_convention[idx] = 1.0;
s->m->addTrafficConvention(s->traffic_convention, TRAFFIC_CONVENTION_LEN);
#endif
}
ModelOutput* model_eval_frame(ModelState* s, VisionBuf* buf, VisionBuf* wbuf,
const mat3 &transform, const mat3 &transform_wide, float *desire_in, bool prepare_only) {
const mat3 &transform, const mat3 &transform_wide, float *desire_in, bool is_rhd, bool prepare_only) {
#ifdef DESIRE
if (desire_in != NULL) {
for (int i = 1; i < DESIRE_LEN; i++) {
@ -72,6 +70,10 @@ ModelOutput* model_eval_frame(ModelState* s, VisionBuf* buf, VisionBuf* wbuf,
}
#endif
int rhd_idx = is_rhd;
s->traffic_convention[rhd_idx] = 1.0;
s->traffic_convention[1-rhd_idx] = 0.0;
// if getInputBuf is not NULL, net_input_buf will be
auto net_input_buf = s->frame->prepare(buf->buf_cl, buf->width, buf->height, buf->stride, buf->uv_offset, transform, static_cast<cl_mem*>(s->m->getInputBuf()));
s->m->addImage(net_input_buf, s->frame->buf_size);

@ -268,7 +268,7 @@ struct ModelState {
void model_init(ModelState* s, cl_device_id device_id, cl_context context);
ModelOutput *model_eval_frame(ModelState* s, VisionBuf* buf, VisionBuf* buf_wide,
const mat3 &transform, const mat3 &transform_wide, float *desire_in, bool prepare_only);
const mat3 &transform, const mat3 &transform_wide, float *desire_in, bool is_rhd, bool prepare_only);
void model_free(ModelState* s);
void model_publish(PubMaster &pm, uint32_t vipc_frame_id, uint32_t vipc_frame_id_extra, uint32_t frame_id, float frame_drop,
const ModelOutput &net_outputs, uint64_t timestamp_eof,

@ -3,7 +3,7 @@ import gc
import cereal.messaging as messaging
from cereal import car
from common.params import Params
from common.params import Params, put_bool_nonblocking
from common.realtime import set_realtime_priority
from selfdrive.controls.lib.events import Events
from selfdrive.locationd.calibrationd import Calibration
@ -20,7 +20,7 @@ def dmonitoringd_thread(sm=None, pm=None):
if sm is None:
sm = messaging.SubMaster(['driverStateV2', 'liveCalibration', 'carState', 'controlsState', 'modelV2'], poll=['driverStateV2'])
driver_status = DriverStatus(rhd=Params().get_bool("IsRHD"))
driver_status = DriverStatus(rhd_saved=Params().get_bool("IsRhdDetected"))
sm['liveCalibration'].calStatus = Calibration.INVALID
sm['liveCalibration'].rpyCalib = [0, 0, 0]
@ -83,6 +83,11 @@ def dmonitoringd_thread(sm=None, pm=None):
}
pm.send('driverMonitoringState', dat)
# save rhd virtual toggle every 5 mins
if (sm['driverStateV2'].frameId % 6000 == 0 and
driver_status.wheelpos_learner.filtered_stat.n > driver_status.settings._WHEELPOS_FILTER_MIN_COUNT and
driver_status.wheel_on_right == (driver_status.wheelpos_learner.filtered_stat.M > driver_status.settings._WHEELPOS_THRESHOLD)):
put_bool_nonblocking("IsRhdDetected", driver_status.wheel_on_right)
def main(sm=None, pm=None):
dmonitoringd_thread(sm, pm)

@ -57,8 +57,9 @@ class DRIVER_MONITOR_SETTINGS():
self._POSE_OFFSET_MIN_COUNT = int(60 / self._DT_DMON) # valid data counts before calibration completes, 1min cumulative
self._POSE_OFFSET_MAX_COUNT = int(360 / self._DT_DMON) # stop deweighting new data after 6 min, aka "short term memory"
self._WHEELPOS_CALIB_MIN_SPEED = 11
self._WHEELPOS_THRESHOLD = 0.5
self._WHEELPOS_FILTER_MIN_COUNT = int(5 / self._DT_DMON)
self._WHEELPOS_FILTER_MIN_COUNT = int(15 / self._DT_DMON) # allow 15 seconds to converge wheel side
self._RECOVERY_FACTOR_MAX = 5. # relative to minus step change
self._RECOVERY_FACTOR_MIN = 1.25 # relative to minus step change
@ -115,7 +116,7 @@ class DriverBlink():
self.right_blink = 0.
class DriverStatus():
def __init__(self, rhd=False, settings=DRIVER_MONITOR_SETTINGS()):
def __init__(self, rhd_saved=False, settings=DRIVER_MONITOR_SETTINGS()):
# init policy settings
self.settings = settings
@ -138,7 +139,8 @@ class DriverStatus():
self.driver_distracted = False
self.driver_distraction_filter = FirstOrderFilter(0., self.settings._DISTRACTED_FILTER_TS, self.settings._DT_DMON)
self.wheel_on_right = False
self.rhd_toggled = rhd
self.wheel_on_right_last = None
self.wheel_on_right_default = rhd_saved
self.face_detected = False
self.terminal_alert_cnt = 0
self.terminal_time = 0
@ -227,13 +229,18 @@ class DriverStatus():
def update_states(self, driver_state, cal_rpy, car_speed, op_engaged):
rhd_pred = driver_state.wheelOnRightProb
if car_speed > 0.01:
# calibrates only when there's movement and either face detected
if car_speed > self.settings._WHEELPOS_CALIB_MIN_SPEED and (driver_state.leftDriverData.faceProb > self.settings._FACE_THRESHOLD or
driver_state.rightDriverData.faceProb > self.settings._FACE_THRESHOLD):
self.wheelpos_learner.push_and_update(rhd_pred)
if self.wheelpos_learner.filtered_stat.n > self.settings._WHEELPOS_FILTER_MIN_COUNT:
self.wheel_on_right = self.wheelpos_learner.filtered_stat.M > self.settings._WHEELPOS_THRESHOLD
else:
self.wheel_on_right = rhd_pred > self.settings._WHEELPOS_THRESHOLD
driver_data = driver_state.rightDriverData if self.rhd_toggled else driver_state.leftDriverData
self.wheel_on_right = self.wheel_on_right_default # use default/saved if calibration is unfinished
# make sure no switching when engaged
if op_engaged and self.wheel_on_right_last is not None and self.wheel_on_right_last != self.wheel_on_right:
self.wheel_on_right = self.wheel_on_right_last
driver_data = driver_state.rightDriverData if self.wheel_on_right else driver_state.leftDriverData
if not all(len(x) > 0 for x in (driver_data.faceOrientation, driver_data.facePosition,
driver_data.faceOrientationStd, driver_data.facePositionStd,
driver_data.readyProb, driver_data.notReadyProb)):
@ -243,6 +250,7 @@ class DriverStatus():
self.pose.roll, self.pose.pitch, self.pose.yaw = face_orientation_from_net(driver_data.faceOrientation, driver_data.facePosition, cal_rpy)
if self.wheel_on_right:
self.pose.yaw *= -1
self.wheel_on_right_last = self.wheel_on_right
self.pose.pitch_std = driver_data.faceOrientationStd[0]
self.pose.yaw_std = driver_data.faceOrientationStd[1]
model_std_max = max(self.pose.pitch_std, self.pose.yaw_std)

@ -1 +1 @@
cfe79d760f161a46e48b60c1debe11b8f300e717
912413daa4c36a788cf2c801fc49829d46ae3072

@ -31,7 +31,6 @@ DriverViewScene::DriverViewScene(QWidget* parent) : sm({"driverStateV2"}), QWidg
void DriverViewScene::showEvent(QShowEvent* event) {
frame_updated = false;
is_rhd = params.getBool("IsRHD");
params.putBool("IsDriverViewEnabled", true);
}
@ -60,7 +59,7 @@ void DriverViewScene::paintEvent(QPaintEvent* event) {
cereal::DriverStateV2::Reader driver_state = sm["driverStateV2"].getDriverStateV2();
cereal::DriverStateV2::DriverData::Reader driver_data;
// is_rhd = driver_state.getWheelOnRightProb() > 0.5;
is_rhd = driver_state.getWheelOnRightProb() > 0.5;
driver_data = is_rhd ? driver_state.getRightDriverData() : driver_state.getLeftDriverData();
bool face_detected = driver_data.getFaceProb() > 0.7;
@ -85,7 +84,7 @@ void DriverViewScene::paintEvent(QPaintEvent* event) {
// icon
const int img_offset = 60;
const int img_x = rect().left() + img_offset;
const int img_x = is_rhd ? rect().right() - FACE_IMG_SIZE - img_offset : rect().left() + img_offset;
const int img_y = rect().bottom() - FACE_IMG_SIZE - img_offset;
p.setOpacity(face_detected ? 1.0 : 0.2);
p.drawPixmap(img_x, img_y, face_img);

@ -41,12 +41,6 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) {
tr("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)."),
"../assets/offroad/icon_warning.png",
},
{
"IsRHD",
tr("Enable Right-Hand Drive"),
tr("Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat."),
"../assets/offroad/icon_openpilot_mirrored.png",
},
{
"IsMetric",
tr("Use Metric System"),

@ -217,6 +217,7 @@ void NvgWindow::updateState(const UIState &s) {
if (sm.frame % (UI_FREQ / 2) == 0) {
setProperty("engageable", cs.getEngageable() || cs.getEnabled());
setProperty("dmActive", sm["driverMonitoringState"].getDriverMonitoringState().getIsActiveMode());
setProperty("rightHandDM", sm["driverMonitoringState"].getDriverMonitoringState().getIsRHD());
}
if (s.scene.calibration_valid) {
@ -381,7 +382,8 @@ void NvgWindow::drawHud(QPainter &p) {
// dm icon
if (!hideDM) {
drawIcon(p, radius / 2 + (bdr_s * 2), rect().bottom() - footer_h / 2,
int dm_icon_x = rightHandDM ? rect().right() - radius / 2 - (bdr_s * 2) : radius / 2 + (bdr_s * 2);
drawIcon(p, dm_icon_x, rect().bottom() - footer_h / 2,
dm_img, blackColor(70), dmActive ? 1.0 : 0.2);
}
p.restore();

@ -39,6 +39,7 @@ class NvgWindow : public CameraViewWidget {
Q_PROPERTY(bool engageable MEMBER engageable);
Q_PROPERTY(bool dmActive MEMBER dmActive);
Q_PROPERTY(bool hideDM MEMBER hideDM);
Q_PROPERTY(bool rightHandDM MEMBER rightHandDM);
Q_PROPERTY(int status MEMBER status);
public:
@ -62,6 +63,7 @@ private:
bool engageable = false;
bool dmActive = false;
bool hideDM = false;
bool rightHandDM = false;
bool has_us_speed_limit = false;
bool has_eu_speed_limit = false;
int status = STATUS_DISENGAGED;

@ -108,152 +108,152 @@
<context>
<name>DevicePanel</name>
<message>
<location filename="../qt/offroad/settings.cc" line="106"/>
<location filename="../qt/offroad/settings.cc" line="100"/>
<source>Dongle ID</source>
<translation>Dongle ID</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="106"/>
<location filename="../qt/offroad/settings.cc" line="100"/>
<source>N/A</source>
<translation>N/A</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="107"/>
<location filename="../qt/offroad/settings.cc" line="101"/>
<source>Serial</source>
<translation>Serial</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="111"/>
<location filename="../qt/offroad/settings.cc" line="105"/>
<source>Driver Camera</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="111"/>
<location filename="../qt/offroad/settings.cc" line="105"/>
<source>PREVIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="112"/>
<location filename="../qt/offroad/settings.cc" line="106"/>
<source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source>
<translation> . ( )</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="116"/>
<location filename="../qt/offroad/settings.cc" line="110"/>
<source>Reset Calibration</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="116"/>
<location filename="../qt/offroad/settings.cc" line="110"/>
<source>RESET</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="119"/>
<location filename="../qt/offroad/settings.cc" line="113"/>
<source>Are you sure you want to reset calibration?</source>
<translation> ?</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review Training Guide</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>REVIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review the rules, features, and limitations of openpilot</source>
<translation>openpilot의 , </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="128"/>
<location filename="../qt/offroad/settings.cc" line="122"/>
<source>Are you sure you want to review the training guide?</source>
<translation> ?</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="136"/>
<location filename="../qt/offroad/settings.cc" line="130"/>
<source>Regulatory</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="136"/>
<location filename="../qt/offroad/settings.cc" line="130"/>
<source>VIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="144"/>
<location filename="../qt/offroad/settings.cc" line="138"/>
<source>Change Language</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="144"/>
<location filename="../qt/offroad/settings.cc" line="138"/>
<source>CHANGE</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="148"/>
<location filename="../qt/offroad/settings.cc" line="142"/>
<source>Select a language</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="168"/>
<location filename="../qt/offroad/settings.cc" line="162"/>
<source>Reboot</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="173"/>
<location filename="../qt/offroad/settings.cc" line="167"/>
<source>Power Off</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="193"/>
<location filename="../qt/offroad/settings.cc" line="187"/>
<source>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.</source>
<translation>openpilot은 4° , 5° 8° . openpilot은 .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="204"/>
<location filename="../qt/offroad/settings.cc" line="198"/>
<source> Your device is pointed %1° %2 and %3° %4.</source>
<translation> %1° %2 %3° %4 .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="205"/>
<location filename="../qt/offroad/settings.cc" line="199"/>
<source>down</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="205"/>
<location filename="../qt/offroad/settings.cc" line="199"/>
<source>up</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="206"/>
<location filename="../qt/offroad/settings.cc" line="200"/>
<source>left</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="206"/>
<location filename="../qt/offroad/settings.cc" line="200"/>
<source>right</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="217"/>
<location filename="../qt/offroad/settings.cc" line="211"/>
<source>Are you sure you want to reboot?</source>
<translation> ?</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="224"/>
<location filename="../qt/offroad/settings.cc" line="218"/>
<source>Disengage to Reboot</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="230"/>
<location filename="../qt/offroad/settings.cc" line="224"/>
<source>Are you sure you want to power off?</source>
<translation> ?</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="237"/>
<location filename="../qt/offroad/settings.cc" line="231"/>
<source>Disengage to Power Off</source>
<translation> </translation>
</message>
@ -294,7 +294,7 @@
<context>
<name>DriverViewScene</name>
<message>
<location filename="../qt/offroad/driverview.cc" line="56"/>
<location filename="../qt/offroad/driverview.cc" line="55"/>
<source>camera starting</source>
<translation> </translation>
</message>
@ -498,20 +498,20 @@ location set</source>
<translation>mph</translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="279"/>
<location filename="../qt/onroad.cc" line="282"/>
<location filename="../qt/onroad.cc" line="280"/>
<location filename="../qt/onroad.cc" line="283"/>
<source>MAX</source>
<translation>MAX</translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="326"/>
<location filename="../qt/onroad.cc" line="329"/>
<location filename="../qt/onroad.cc" line="327"/>
<location filename="../qt/onroad.cc" line="330"/>
<source>SPEED</source>
<translation>SPEED</translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="332"/>
<location filename="../qt/onroad.cc" line="335"/>
<location filename="../qt/onroad.cc" line="333"/>
<location filename="../qt/onroad.cc" line="336"/>
<source>LIMIT</source>
<translation>LIMIT</translation>
</message>
@ -710,33 +710,33 @@ location set</source>
<context>
<name>SettingsWindow</name>
<message>
<location filename="../qt/offroad/settings.cc" line="338"/>
<location filename="../qt/offroad/settings.cc" line="332"/>
<source>×</source>
<translation>×</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="364"/>
<location filename="../qt/offroad/settings.cc" line="358"/>
<source>Device</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="365"/>
<location filename="../qt/offroad/settings.cc" line="404"/>
<location filename="../qt/offroad/settings.cc" line="359"/>
<location filename="../qt/offroad/settings.cc" line="398"/>
<source>Network</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="366"/>
<location filename="../qt/offroad/settings.cc" line="360"/>
<source>Toggles</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="367"/>
<location filename="../qt/offroad/settings.cc" line="361"/>
<source>Software</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="372"/>
<location filename="../qt/offroad/settings.cc" line="366"/>
<source>Navigation</source>
<translation></translation>
</message>
@ -975,89 +975,89 @@ location set</source>
<context>
<name>SoftwarePanel</name>
<message>
<location filename="../qt/offroad/settings.cc" line="242"/>
<location filename="../qt/offroad/settings.cc" line="236"/>
<source>Git Branch</source>
<translation>Git </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="243"/>
<location filename="../qt/offroad/settings.cc" line="237"/>
<source>Git Commit</source>
<translation>Git </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="244"/>
<location filename="../qt/offroad/settings.cc" line="238"/>
<source>OS Version</source>
<translation>OS </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="245"/>
<location filename="../qt/offroad/settings.cc" line="239"/>
<source>Version</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="246"/>
<location filename="../qt/offroad/settings.cc" line="240"/>
<source>Last Update Check</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="246"/>
<location filename="../qt/offroad/settings.cc" line="240"/>
<source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source>
<translation> openpilot이 . .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="247"/>
<location filename="../qt/offroad/settings.cc" line="241"/>
<source>Check for Update</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="252"/>
<location filename="../qt/offroad/settings.cc" line="246"/>
<source>CHECKING</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<source>Switch Branch</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<source>ENTER</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="261"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<location filename="../qt/offroad/settings.cc" line="255"/>
<source>The new branch will be pulled the next time the updater runs.</source>
<translation> .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="261"/>
<location filename="../qt/offroad/settings.cc" line="255"/>
<source>Enter branch name</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="272"/>
<location filename="../qt/offroad/settings.cc" line="266"/>
<source>UNINSTALL</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="272"/>
<location filename="../qt/offroad/settings.cc" line="266"/>
<source>Uninstall %1</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="274"/>
<location filename="../qt/offroad/settings.cc" line="268"/>
<source>Are you sure you want to uninstall?</source>
<translation>?</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="291"/>
<location filename="../qt/offroad/settings.cc" line="285"/>
<source>failed to fetch update</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="292"/>
<location filename="../qt/offroad/settings.cc" line="313"/>
<location filename="../qt/offroad/settings.cc" line="286"/>
<location filename="../qt/offroad/settings.cc" line="307"/>
<source>CHECK</source>
<translation></translation>
</message>
@ -1165,72 +1165,70 @@ location set</source>
<translation> 50km/h(31mph) .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Enable Right-Hand Drive</source>
<translation> </translation>
<translation type="vanished"> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source>
<translation>openpilot이 .</translation>
<translation type="vanished">openpilot이 .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="52"/>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Use Metric System</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="53"/>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Display speed in km/h instead of mph.</source>
<translation>mph km/h로 .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="58"/>
<location filename="../qt/offroad/settings.cc" line="52"/>
<source>Record and Upload Driver Camera</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="59"/>
<location filename="../qt/offroad/settings.cc" line="53"/>
<source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source>
<translation> .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="64"/>
<location filename="../qt/offroad/settings.cc" line="58"/>
<source>Disengage On Accelerator Pedal</source>
<translation> </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="65"/>
<location filename="../qt/offroad/settings.cc" line="59"/>
<source>When enabled, pressing the accelerator pedal will disengage openpilot.</source>
<translation> openpilot이 .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="71"/>
<location filename="../qt/offroad/settings.cc" line="65"/>
<source>Show ETA in 24h format</source>
<translation>24 </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="72"/>
<location filename="../qt/offroad/settings.cc" line="66"/>
<source>Use 24h format instead of am/pm</source>
<translation>/ 24 </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="77"/>
<location filename="../qt/offroad/settings.cc" line="71"/>
<source>Show Map on Left Side of UI</source>
<translation>UI </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="78"/>
<location filename="../qt/offroad/settings.cc" line="72"/>
<source>Show map on left side when in split screen view.</source>
<translation> .</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="90"/>
<location filename="../qt/offroad/settings.cc" line="84"/>
<source>openpilot Longitudinal Control</source>
<translation>openpilot Longitudinal Control</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="91"/>
<location filename="../qt/offroad/settings.cc" line="85"/>
<source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source>
<translation>openpilot은 &apos; . 경고: AEB를 !</translation>
</message>

@ -108,152 +108,152 @@
<context>
<name>DevicePanel</name>
<message>
<location filename="../qt/offroad/settings.cc" line="106"/>
<location filename="../qt/offroad/settings.cc" line="100"/>
<source>Dongle ID</source>
<translation>IDDongle ID</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="106"/>
<location filename="../qt/offroad/settings.cc" line="100"/>
<source>N/A</source>
<translation>N/A</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="107"/>
<location filename="../qt/offroad/settings.cc" line="101"/>
<source>Serial</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="111"/>
<location filename="../qt/offroad/settings.cc" line="105"/>
<source>Driver Camera</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="111"/>
<location filename="../qt/offroad/settings.cc" line="105"/>
<source>PREVIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="112"/>
<location filename="../qt/offroad/settings.cc" line="106"/>
<source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="116"/>
<location filename="../qt/offroad/settings.cc" line="110"/>
<source>Reset Calibration</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="116"/>
<location filename="../qt/offroad/settings.cc" line="110"/>
<source>RESET</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="119"/>
<location filename="../qt/offroad/settings.cc" line="113"/>
<source>Are you sure you want to reset calibration?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review Training Guide</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>REVIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review the rules, features, and limitations of openpilot</source>
<translation>openpilot的使用规则</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="128"/>
<location filename="../qt/offroad/settings.cc" line="122"/>
<source>Are you sure you want to review the training guide?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="136"/>
<location filename="../qt/offroad/settings.cc" line="130"/>
<source>Regulatory</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="136"/>
<location filename="../qt/offroad/settings.cc" line="130"/>
<source>VIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="144"/>
<location filename="../qt/offroad/settings.cc" line="138"/>
<source>Change Language</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="144"/>
<location filename="../qt/offroad/settings.cc" line="138"/>
<source>CHANGE</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="148"/>
<location filename="../qt/offroad/settings.cc" line="142"/>
<source>Select a language</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="168"/>
<location filename="../qt/offroad/settings.cc" line="162"/>
<source>Reboot</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="173"/>
<location filename="../qt/offroad/settings.cc" line="167"/>
<source>Power Off</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="193"/>
<location filename="../qt/offroad/settings.cc" line="187"/>
<source>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.</source>
<translation>openpilot要求设备安装的偏航角在左4°4°5°8°openpilot会持续更新校准</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="204"/>
<location filename="../qt/offroad/settings.cc" line="198"/>
<source> Your device is pointed %1° %2 and %3° %4.</source>
<translation>%1° %2%3° %4</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="205"/>
<location filename="../qt/offroad/settings.cc" line="199"/>
<source>down</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="205"/>
<location filename="../qt/offroad/settings.cc" line="199"/>
<source>up</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="206"/>
<location filename="../qt/offroad/settings.cc" line="200"/>
<source>left</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="206"/>
<location filename="../qt/offroad/settings.cc" line="200"/>
<source>right</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="217"/>
<location filename="../qt/offroad/settings.cc" line="211"/>
<source>Are you sure you want to reboot?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="224"/>
<location filename="../qt/offroad/settings.cc" line="218"/>
<source>Disengage to Reboot</source>
<translation>openpilot以重新启动</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="230"/>
<location filename="../qt/offroad/settings.cc" line="224"/>
<source>Are you sure you want to power off?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="237"/>
<location filename="../qt/offroad/settings.cc" line="231"/>
<source>Disengage to Power Off</source>
<translation>openpilot以关机</translation>
</message>
@ -294,7 +294,7 @@
<context>
<name>DriverViewScene</name>
<message>
<location filename="../qt/offroad/driverview.cc" line="56"/>
<location filename="../qt/offroad/driverview.cc" line="55"/>
<source>camera starting</source>
<translation></translation>
</message>
@ -496,20 +496,20 @@ location set</source>
<translation>mph</translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="279"/>
<location filename="../qt/onroad.cc" line="282"/>
<location filename="../qt/onroad.cc" line="280"/>
<location filename="../qt/onroad.cc" line="283"/>
<source>MAX</source>
<translation></translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="326"/>
<location filename="../qt/onroad.cc" line="329"/>
<location filename="../qt/onroad.cc" line="327"/>
<location filename="../qt/onroad.cc" line="330"/>
<source>SPEED</source>
<translation>SPEED</translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="332"/>
<location filename="../qt/onroad.cc" line="335"/>
<location filename="../qt/onroad.cc" line="333"/>
<location filename="../qt/onroad.cc" line="336"/>
<source>LIMIT</source>
<translation>LIMIT</translation>
</message>
@ -708,33 +708,33 @@ location set</source>
<context>
<name>SettingsWindow</name>
<message>
<location filename="../qt/offroad/settings.cc" line="338"/>
<location filename="../qt/offroad/settings.cc" line="332"/>
<source>×</source>
<translation>×</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="364"/>
<location filename="../qt/offroad/settings.cc" line="358"/>
<source>Device</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="365"/>
<location filename="../qt/offroad/settings.cc" line="404"/>
<location filename="../qt/offroad/settings.cc" line="359"/>
<location filename="../qt/offroad/settings.cc" line="398"/>
<source>Network</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="366"/>
<location filename="../qt/offroad/settings.cc" line="360"/>
<source>Toggles</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="367"/>
<location filename="../qt/offroad/settings.cc" line="361"/>
<source>Software</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="372"/>
<location filename="../qt/offroad/settings.cc" line="366"/>
<source>Navigation</source>
<translation></translation>
</message>
@ -973,89 +973,89 @@ location set</source>
<context>
<name>SoftwarePanel</name>
<message>
<location filename="../qt/offroad/settings.cc" line="242"/>
<location filename="../qt/offroad/settings.cc" line="236"/>
<source>Git Branch</source>
<translation>Git Branch</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="243"/>
<location filename="../qt/offroad/settings.cc" line="237"/>
<source>Git Commit</source>
<translation>Git Commit</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="244"/>
<location filename="../qt/offroad/settings.cc" line="238"/>
<source>OS Version</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="245"/>
<location filename="../qt/offroad/settings.cc" line="239"/>
<source>Version</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="246"/>
<location filename="../qt/offroad/settings.cc" line="240"/>
<source>Last Update Check</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="246"/>
<location filename="../qt/offroad/settings.cc" line="240"/>
<source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="247"/>
<location filename="../qt/offroad/settings.cc" line="241"/>
<source>Check for Update</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="252"/>
<location filename="../qt/offroad/settings.cc" line="246"/>
<source>CHECKING</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<source>Switch Branch</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<source>ENTER</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="261"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<location filename="../qt/offroad/settings.cc" line="255"/>
<source>The new branch will be pulled the next time the updater runs.</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="261"/>
<location filename="../qt/offroad/settings.cc" line="255"/>
<source>Enter branch name</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="272"/>
<location filename="../qt/offroad/settings.cc" line="266"/>
<source>UNINSTALL</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="272"/>
<location filename="../qt/offroad/settings.cc" line="266"/>
<source>Uninstall %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="274"/>
<location filename="../qt/offroad/settings.cc" line="268"/>
<source>Are you sure you want to uninstall?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="291"/>
<location filename="../qt/offroad/settings.cc" line="285"/>
<source>failed to fetch update</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="292"/>
<location filename="../qt/offroad/settings.cc" line="313"/>
<location filename="../qt/offroad/settings.cc" line="286"/>
<location filename="../qt/offroad/settings.cc" line="307"/>
<source>CHECK</source>
<translation></translation>
</message>
@ -1163,72 +1163,70 @@ location set</source>
<translation>31mph50km/h线</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Enable Right-Hand Drive</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source>
<translation>openpilot遵守左侧交通惯例并在右侧驾驶座上执行驾驶员监控</translation>
<translation type="vanished">openpilot遵守左侧交通惯例并在右侧驾驶座上执行驾驶员监控</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="52"/>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Use Metric System</source>
<translation>使</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="53"/>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Display speed in km/h instead of mph.</source>
<translation>km/h代替mph</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="58"/>
<location filename="../qt/offroad/settings.cc" line="52"/>
<source>Record and Upload Driver Camera</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="59"/>
<location filename="../qt/offroad/settings.cc" line="53"/>
<source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="64"/>
<location filename="../qt/offroad/settings.cc" line="58"/>
<source>Disengage On Accelerator Pedal</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="65"/>
<location filename="../qt/offroad/settings.cc" line="59"/>
<source>When enabled, pressing the accelerator pedal will disengage openpilot.</source>
<translation>openpilot</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="71"/>
<location filename="../qt/offroad/settings.cc" line="65"/>
<source>Show ETA in 24h format</source>
<translation>24</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="72"/>
<location filename="../qt/offroad/settings.cc" line="66"/>
<source>Use 24h format instead of am/pm</source>
<translation>使24am/pm</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="77"/>
<location filename="../qt/offroad/settings.cc" line="71"/>
<source>Show Map on Left Side of UI</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="78"/>
<location filename="../qt/offroad/settings.cc" line="72"/>
<source>Show map on left side when in split screen view.</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="90"/>
<location filename="../qt/offroad/settings.cc" line="84"/>
<source>openpilot Longitudinal Control</source>
<translation>openpilot纵向控制</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="91"/>
<location filename="../qt/offroad/settings.cc" line="85"/>
<source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source>
<translation>openpilot将禁用车辆的雷达并接管油门和刹车的控制AEB将被禁用</translation>
</message>

@ -108,152 +108,152 @@
<context>
<name>DevicePanel</name>
<message>
<location filename="../qt/offroad/settings.cc" line="106"/>
<location filename="../qt/offroad/settings.cc" line="100"/>
<source>Dongle ID</source>
<translation>Dongle ID</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="106"/>
<location filename="../qt/offroad/settings.cc" line="100"/>
<source>N/A</source>
<translation>使</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="107"/>
<location filename="../qt/offroad/settings.cc" line="101"/>
<source>Serial</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="111"/>
<location filename="../qt/offroad/settings.cc" line="105"/>
<source>Driver Camera</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="111"/>
<location filename="../qt/offroad/settings.cc" line="105"/>
<source>PREVIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="112"/>
<location filename="../qt/offroad/settings.cc" line="106"/>
<source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="116"/>
<location filename="../qt/offroad/settings.cc" line="110"/>
<source>Reset Calibration</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="116"/>
<location filename="../qt/offroad/settings.cc" line="110"/>
<source>RESET</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="119"/>
<location filename="../qt/offroad/settings.cc" line="113"/>
<source>Are you sure you want to reset calibration?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review Training Guide</source>
<translation>使</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>REVIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="126"/>
<location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review the rules, features, and limitations of openpilot</source>
<translation> openpilot 使</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="128"/>
<location filename="../qt/offroad/settings.cc" line="122"/>
<source>Are you sure you want to review the training guide?</source>
<translation>使</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="136"/>
<location filename="../qt/offroad/settings.cc" line="130"/>
<source>Regulatory</source>
<translation>/</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="136"/>
<location filename="../qt/offroad/settings.cc" line="130"/>
<source>VIEW</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="144"/>
<location filename="../qt/offroad/settings.cc" line="138"/>
<source>Change Language</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="144"/>
<location filename="../qt/offroad/settings.cc" line="138"/>
<source>CHANGE</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="148"/>
<location filename="../qt/offroad/settings.cc" line="142"/>
<source>Select a language</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="168"/>
<location filename="../qt/offroad/settings.cc" line="162"/>
<source>Reboot</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="173"/>
<location filename="../qt/offroad/settings.cc" line="167"/>
<source>Power Off</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="193"/>
<location filename="../qt/offroad/settings.cc" line="187"/>
<source>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.</source>
<translation>openpilot 4° 5° 8° </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="204"/>
<location filename="../qt/offroad/settings.cc" line="198"/>
<source> Your device is pointed %1° %2 and %3° %4.</source>
<translation> %2 %1° %4 %3° </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="205"/>
<location filename="../qt/offroad/settings.cc" line="199"/>
<source>down</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="205"/>
<location filename="../qt/offroad/settings.cc" line="199"/>
<source>up</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="206"/>
<location filename="../qt/offroad/settings.cc" line="200"/>
<source>left</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="206"/>
<location filename="../qt/offroad/settings.cc" line="200"/>
<source>right</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="217"/>
<location filename="../qt/offroad/settings.cc" line="211"/>
<source>Are you sure you want to reboot?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="224"/>
<location filename="../qt/offroad/settings.cc" line="218"/>
<source>Disengage to Reboot</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="230"/>
<location filename="../qt/offroad/settings.cc" line="224"/>
<source>Are you sure you want to power off?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="237"/>
<location filename="../qt/offroad/settings.cc" line="231"/>
<source>Disengage to Power Off</source>
<translation></translation>
</message>
@ -294,7 +294,7 @@
<context>
<name>DriverViewScene</name>
<message>
<location filename="../qt/offroad/driverview.cc" line="56"/>
<location filename="../qt/offroad/driverview.cc" line="55"/>
<source>camera starting</source>
<translation></translation>
</message>
@ -498,20 +498,20 @@ location set</source>
<translation>mph</translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="279"/>
<location filename="../qt/onroad.cc" line="282"/>
<location filename="../qt/onroad.cc" line="280"/>
<location filename="../qt/onroad.cc" line="283"/>
<source>MAX</source>
<translation></translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="326"/>
<location filename="../qt/onroad.cc" line="329"/>
<location filename="../qt/onroad.cc" line="327"/>
<location filename="../qt/onroad.cc" line="330"/>
<source>SPEED</source>
<translation></translation>
</message>
<message>
<location filename="../qt/onroad.cc" line="332"/>
<location filename="../qt/onroad.cc" line="335"/>
<location filename="../qt/onroad.cc" line="333"/>
<location filename="../qt/onroad.cc" line="336"/>
<source>LIMIT</source>
<translation></translation>
</message>
@ -713,33 +713,33 @@ location set</source>
<context>
<name>SettingsWindow</name>
<message>
<location filename="../qt/offroad/settings.cc" line="338"/>
<location filename="../qt/offroad/settings.cc" line="332"/>
<source>×</source>
<translation>×</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="364"/>
<location filename="../qt/offroad/settings.cc" line="358"/>
<source>Device</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="365"/>
<location filename="../qt/offroad/settings.cc" line="404"/>
<location filename="../qt/offroad/settings.cc" line="359"/>
<location filename="../qt/offroad/settings.cc" line="398"/>
<source>Network</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="366"/>
<location filename="../qt/offroad/settings.cc" line="360"/>
<source>Toggles</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="367"/>
<location filename="../qt/offroad/settings.cc" line="361"/>
<source>Software</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="372"/>
<location filename="../qt/offroad/settings.cc" line="366"/>
<source>Navigation</source>
<translation></translation>
</message>
@ -978,89 +978,89 @@ location set</source>
<context>
<name>SoftwarePanel</name>
<message>
<location filename="../qt/offroad/settings.cc" line="242"/>
<location filename="../qt/offroad/settings.cc" line="236"/>
<source>Git Branch</source>
<translation>Git </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="243"/>
<location filename="../qt/offroad/settings.cc" line="237"/>
<source>Git Commit</source>
<translation>Git </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="244"/>
<location filename="../qt/offroad/settings.cc" line="238"/>
<source>OS Version</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="245"/>
<location filename="../qt/offroad/settings.cc" line="239"/>
<source>Version</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="246"/>
<location filename="../qt/offroad/settings.cc" line="240"/>
<source>Last Update Check</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="246"/>
<location filename="../qt/offroad/settings.cc" line="240"/>
<source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="247"/>
<location filename="../qt/offroad/settings.cc" line="241"/>
<source>Check for Update</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="252"/>
<location filename="../qt/offroad/settings.cc" line="246"/>
<source>CHECKING</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<source>Switch Branch</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<source>ENTER</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="259"/>
<location filename="../qt/offroad/settings.cc" line="261"/>
<location filename="../qt/offroad/settings.cc" line="253"/>
<location filename="../qt/offroad/settings.cc" line="255"/>
<source>The new branch will be pulled the next time the updater runs.</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="261"/>
<location filename="../qt/offroad/settings.cc" line="255"/>
<source>Enter branch name</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="272"/>
<location filename="../qt/offroad/settings.cc" line="266"/>
<source>UNINSTALL</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="272"/>
<location filename="../qt/offroad/settings.cc" line="266"/>
<source>Uninstall %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="274"/>
<location filename="../qt/offroad/settings.cc" line="268"/>
<source>Are you sure you want to uninstall?</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="291"/>
<location filename="../qt/offroad/settings.cc" line="285"/>
<source>failed to fetch update</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="292"/>
<location filename="../qt/offroad/settings.cc" line="313"/>
<location filename="../qt/offroad/settings.cc" line="286"/>
<location filename="../qt/offroad/settings.cc" line="307"/>
<source>CHECK</source>
<translation></translation>
</message>
@ -1168,72 +1168,70 @@ location set</source>
<translation> 50 (31 ) </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Enable Right-Hand Drive</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source>
<translation>openpilot ()</translation>
<translation type="vanished">openpilot ()</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="52"/>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Use Metric System</source>
<translation>使</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="53"/>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Display speed in km/h instead of mph.</source>
<translation> mp/h km/h</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="58"/>
<location filename="../qt/offroad/settings.cc" line="52"/>
<source>Record and Upload Driver Camera</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="59"/>
<location filename="../qt/offroad/settings.cc" line="53"/>
<source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="64"/>
<location filename="../qt/offroad/settings.cc" line="58"/>
<source>Disengage On Accelerator Pedal</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="65"/>
<location filename="../qt/offroad/settings.cc" line="59"/>
<source>When enabled, pressing the accelerator pedal will disengage openpilot.</source>
<translation> openpilot </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="71"/>
<location filename="../qt/offroad/settings.cc" line="65"/>
<source>Show ETA in 24h format</source>
<translation> 24 </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="72"/>
<location filename="../qt/offroad/settings.cc" line="66"/>
<source>Use 24h format instead of am/pm</source>
<translation>使 24 ( 12 )</translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="77"/>
<location filename="../qt/offroad/settings.cc" line="71"/>
<source>Show Map on Left Side of UI</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="78"/>
<location filename="../qt/offroad/settings.cc" line="72"/>
<source>Show map on left side when in split screen view.</source>
<translation></translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="90"/>
<location filename="../qt/offroad/settings.cc" line="84"/>
<source>openpilot Longitudinal Control</source>
<translation>openpilot </translation>
</message>
<message>
<location filename="../qt/offroad/settings.cc" line="91"/>
<location filename="../qt/offroad/settings.cc" line="85"/>
<source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source>
<translation>openpilot (AEB) </translation>
</message>

Loading…
Cancel
Save