From a9bcc782e0cd8432125817ff36258e83385f8b91 Mon Sep 17 00:00:00 2001 From: Jaosn Wen Date: Tue, 16 Jul 2024 00:07:29 -0400 Subject: [PATCH 1/6] Scons: Set `SUNNYPILOT` to `CPPDEFINES` --- selfdrive/ui/SConscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index f4f5a13919..99ec3c161d 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -43,7 +43,7 @@ widgets_src += ["qt/offroad/sunnypilot/display_settings.cc", "qt/offroad/sunnypi widgets_src += ["qt/network/sunnylink/sunnylink_client.cc", "qt/network/sunnylink/services/base_device_service.cc", "qt/network/sunnylink/services/role_service.cc", "qt/network/sunnylink/services/user_service.cc"] -qt_env['CPPDEFINES'] = [] +qt_env['CPPDEFINES'] = ["SUNNYPILOT"] if GetOption('sunnypilot') else [] if maps: base_libs += ['QMapLibre'] widgets_src += ["qt/maps/map_helpers.cc", "qt/maps/map_settings.cc", "qt/maps/map.cc", "qt/maps/map_panel.cc", From 0ca98a8379ec1a687529ce87117c2d9a9da1436f Mon Sep 17 00:00:00 2001 From: Jaosn Wen Date: Tue, 16 Jul 2024 00:20:45 -0400 Subject: [PATCH 2/6] Scons: Split sunnypilot/Sconscript --- selfdrive/ui/SConscript | 20 +++---------------- selfdrive/ui/sunnypilot/SConscript | 32 +++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index 99ec3c161d..3d49b3df14 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -1,6 +1,6 @@ import os import json -Import('qt_env', 'arch', 'common', 'messaging', 'visionipc', 'transformations', 'UBUNTU_FOCAL') +Import('qt_env', 'arch', 'common', 'messaging', 'visionipc', 'transformations') base_libs = [common, messaging, visionipc, transformations, 'm', 'OpenCL', 'ssl', 'crypto', 'pthread'] + qt_env["LIBS"] @@ -28,20 +28,7 @@ widgets_src = ["ui.cc", "qt/widgets/input.cc", "qt/widgets/wifi.cc", "qt/widgets/ssh_keys.cc", "qt/widgets/toggle.cc", "qt/widgets/controls.cc", "qt/widgets/offroad_alerts.cc", "qt/widgets/prime.cc", "qt/widgets/keyboard.cc", "qt/widgets/scrollview.cc", "qt/widgets/cameraview.cc", "#third_party/qrcode/QrCode.cc", - "qt/request_repeater.cc", "qt/qt_window.cc", "qt/network/networking.cc", "qt/network/wifi_manager.cc"] - -widgets_src += ["qt/offroad/sunnypilot/display_settings.cc", "qt/offroad/sunnypilot/sunnypilot_settings.cc", - "qt/offroad/sunnypilot/vehicle_settings.cc", "qt/offroad/sunnypilot/visuals_settings.cc", - "qt/offroad/sunnypilot/trips_settings.cc", "qt/offroad/sunnypilot/mads_settings.cc", - "qt/offroad/sunnypilot/lane_change_settings.cc", "qt/offroad/sunnypilot/speed_limit_control_settings.cc", - "qt/offroad/sunnypilot/monitoring_settings.cc", "qt/offroad/sunnypilot/osm_settings.cc", - "qt/offroad/sunnypilot/custom_offsets_settings.cc", "qt/widgets/sunnypilot/drive_stats.cc", - "qt/offroad/sunnypilot/software_settings_sp.cc", "qt/offroad/sunnypilot/models_fetcher.cc", - "qt/offroad/sunnypilot/speed_limit_warning_settings.cc", "qt/offroad/sunnypilot/speed_limit_policy_settings.cc", - "qt/offroad/sunnypilot/sunnylink_settings.cc"] - -widgets_src += ["qt/network/sunnylink/sunnylink_client.cc", "qt/network/sunnylink/services/base_device_service.cc", - "qt/network/sunnylink/services/role_service.cc", "qt/network/sunnylink/services/user_service.cc"] + "qt/request_repeater.cc", "qt/qt_window.cc", "qt/network/networking.cc", "qt/network/wifi_manager.cc"] + sp_widgets_src qt_env['CPPDEFINES'] = ["SUNNYPILOT"] if GetOption('sunnypilot') else [] if maps: @@ -59,8 +46,7 @@ qt_src = ["main.cc", "qt/sidebar.cc", "qt/body.cc", "qt/offroad/software_settings.cc", "qt/offroad/onboarding.cc", "qt/offroad/driverview.cc", "qt/offroad/experimental_mode.cc", "qt/onroad/onroad_home.cc", "qt/onroad/annotated_camera.cc", - "qt/onroad/buttons.cc", "qt/onroad/alerts.cc", - "qt/onroad_settings.cc", "qt/onroad_settings_panel.cc"] + "qt/onroad/buttons.cc", "qt/onroad/alerts.cc"] + sp_qt_src # build translation files with open(File("translations/languages.json").abspath) as f: diff --git a/selfdrive/ui/sunnypilot/SConscript b/selfdrive/ui/sunnypilot/SConscript index 4431fc3ea0..9290fcea58 100644 --- a/selfdrive/ui/sunnypilot/SConscript +++ b/selfdrive/ui/sunnypilot/SConscript @@ -1,8 +1,34 @@ -widgets_src = [] +widgets_src = [ + "qt/offroad/sunnypilot/custom_offsets_settings.cc", + "qt/offroad/sunnypilot/display_settings.cc", + "qt/offroad/sunnypilot/lane_change_settings.cc", + "qt/offroad/sunnypilot/mads_settings.cc", + "qt/offroad/sunnypilot/models_fetcher.cc", + "qt/offroad/sunnypilot/monitoring_settings.cc", + "qt/offroad/sunnypilot/osm_settings.cc", + "qt/offroad/sunnypilot/software_settings_sp.cc", + "qt/offroad/sunnypilot/speed_limit_control_settings.cc", + "qt/offroad/sunnypilot/speed_limit_policy_settings.cc", + "qt/offroad/sunnypilot/speed_limit_warning_settings.cc", + "qt/offroad/sunnypilot/sunnypilot_settings.cc", + "qt/offroad/sunnypilot/sunnylink_settings.cc", + "qt/offroad/sunnypilot/trips_settings.cc", + "qt/offroad/sunnypilot/vehicle_settings.cc", + "qt/offroad/sunnypilot/visuals_settings.cc", + "qt/widgets/sunnypilot/drive_stats.cc" +] -network_src = [] +network_src = [ + "qt/network/sunnylink/services/base_device_service.cc", + "qt/network/sunnylink/services/role_service.cc", + "qt/network/sunnylink/services/user_service.cc", + "qt/network/sunnylink/sunnylink_client.cc" +] -qt_src = [] +qt_src = [ + "qt/onroad_settings.cc", + "qt/onroad_settings_panel.cc" +] sp_widgets_src = widgets_src + network_src sp_qt_src = qt_src From faf52492b67dd995b1643c49de602d82929c1e5d Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 17 Jul 2024 03:26:13 +0000 Subject: [PATCH 3/6] ci: git-crypt: Decrypt prior to building --- ...91D8EDBE6BD70DFB803D59292470ADBDD426DEB5.gpg | Bin 0 -> 725 bytes .gitlab-ci.yml | 16 +++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 .git-crypt/keys/default/0/91D8EDBE6BD70DFB803D59292470ADBDD426DEB5.gpg diff --git a/.git-crypt/keys/default/0/91D8EDBE6BD70DFB803D59292470ADBDD426DEB5.gpg b/.git-crypt/keys/default/0/91D8EDBE6BD70DFB803D59292470ADBDD426DEB5.gpg new file mode 100644 index 0000000000000000000000000000000000000000..3da4a7ec9c844f8cb3701d07cb6de3987d8bf3ea GIT binary patch literal 725 zcmV;`0xJE50t^G?W8JRowQkM<5CFerQXytR3w@K7wZ4B*%60DzaJXzr!*q3W+4=9m z17js$=kThC5ai4wEikaIm_X;~NdGfwLAqk*VtrXi3h7v9fhF$}jmr$w}(@|UW zCDSs`cxVBK0OX@n!pU+=3s>=PP<`7I*TgwzlW}bCJCxAdJ=4{%NGkuX2|Y$;ev}{L z5K_5bU1AU%jBP?KVo4zu5kLdZ>i=eEjD7&CVB(9&Se)dt^i%Wd@R;T2ZC?d*n7`AV zWZI}=|MbRfHX7&T2=1TyZJAdaN5iQH?*Z3{`z4N5Y6=`NNKGrYI!f*$v1R`6NzE=$ zQaUW|sFgpJ$pX0W)o~=x)WCHO?{R4=qJRk7)Z}YSJT&nYoyuc;14=$octKO1;nyrH zh?nA@kC?#@x0f28qYC*srv67oHzn+DI^+(3ps`LSlfzcJ@he*!Hn*PEW{;&fCcx4B zqTYwap!a3@OfA*S>CD|^9VJ2)+7+0f&_EVya;dcq=`$JeyO{H!VN6!XkO@SR1MjPX z9LQDJ3%q65Zt!N@N3znu0|6YI82ww*3PRzyAIJeTfu$`dI#tndf?i0VwJCCjU#Zeg z4-(gUMpGm7v8X7c9iP9JD(my5N%*Q2yv0j`6r9vf!p4S`EmHT5gs5-@0>f-CT&9}f z`AuXtw#?1kk{ghL1gqZYO&3}31ZbTi23N5N1fdQh2YSxD{`dF-fEt2;y1)6ri0-mj zn!xr}jV&Qmo;v${hx}{D(h9&5Ra}+i#}apkZbKLQI=iu;U@^hnFk;ij8&U+b Date: Thu, 18 Jul 2024 09:08:52 +0200 Subject: [PATCH 4/6] Back to using reference on pipeline --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1775e4ab7a..aceeff95bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -231,13 +231,13 @@ publish to public github prebuilt: needs: ["build"] variables: DISCORD_HOOK: "${DISCORD_MANUAL_BUILD_WEBHOOK_URL}" # Default hook if not overriden by children - before_script: ¬ify_discord_before_script + before_script: - 'apk add curl jq envsubst' script: - echo using [${TEMPLATE}] - cat release/ci/${TEMPLATE} | envsubst | tee payload.json - 'curl -X POST -H "Content-Type: application/json" -d "$(cat payload.json)" ${DISCORD_HOOK} | jq .' - rules: ¬ify_discord_rules + rules: - if: $NEW_BRANCH when: on_success - when: never @@ -248,7 +248,7 @@ notify pending action: variables: TEMPLATE: "discord_template_notify_dev_private.json" before_script: - - *notify_discord_before_script + - !reference [".notify_discord", "before_script"] - export AVATAR_URL=$(curl -s -X GET "https://gitlab.com/api/v4/avatar?email=${GITLAB_USER_EMAIL}" | jq -r '.avatar_url') notify new dev build: @@ -261,4 +261,4 @@ notify new dev build: - if: $NEW_BRANCH == "dev-c3" variables: DISCORD_HOOK: "${DISCORD_NEW_BUILD_WEBHOOK_URL}" # Overriding hook because we know we are dev-c3 - - *notify_discord_rules + - !reference [".notify_discord", "rules"] From 0f2e56a203cdefea5fbec3609edd923c5e120330 Mon Sep 17 00:00:00 2001 From: DevTekVE Date: Sat, 20 Jul 2024 12:00:52 +0200 Subject: [PATCH 5/6] [sunnypilot] Forcing SConstruct to assume always sunnypilot developer true until we actually encrypt things --- SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 13da37c7a8..50e60c3b95 100644 --- a/SConstruct +++ b/SConstruct @@ -116,7 +116,7 @@ AddOption('--minimal', AddOption('--sunnypilot', action='store_true', dest='sunnypilot', - default=is_internal_developer(_DEBUG), # check if the current user is a sunnypilot developer + default=is_internal_developer(_DEBUG) or True, # check if the current user is a sunnypilot developer. TODO: Remove the 'or True' part once the GPG keys are available. help='build sunnypilot elements and other sunnypilot-specific items that are meant for internal development') ## Architecture name breakdown (arch) From 8b6e4039963c3fb62de34989eb40ee6f54d439f4 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sat, 20 Jul 2024 13:06:34 +0000 Subject: [PATCH 6/6] Driving Model Selector v5: Bug fixes --- selfdrive/modeld/custom_model_metadata.py | 4 ++-- selfdrive/modeld/fill_model_msg.py | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/selfdrive/modeld/custom_model_metadata.py b/selfdrive/modeld/custom_model_metadata.py index 360f7046ad..0469bd189c 100644 --- a/selfdrive/modeld/custom_model_metadata.py +++ b/selfdrive/modeld/custom_model_metadata.py @@ -42,14 +42,14 @@ class CustomModelMetadata: self.params: Params = params self.generation: ModelGeneration = self.read_model_generation_param() - self.capabilities: int = self.get_model_capabilities() + self.capabilities: ModelCapabilities = self.get_model_capabilities() self.valid: bool = self.params.get_bool("CustomDrivingModel") and not SIMULATION and \ self.capabilities != ModelCapabilities.Default def read_model_generation_param(self) -> ModelGeneration: return int(self.params.get('DrivingModelGeneration') or ModelGeneration.default) - def get_model_capabilities(self) -> int: + def get_model_capabilities(self) -> ModelCapabilities: """Returns the model capabilities for a given generation.""" if self.generation == ModelGeneration.five: return ModelCapabilities.DesiredCurvatureV2 diff --git a/selfdrive/modeld/fill_model_msg.py b/selfdrive/modeld/fill_model_msg.py index 39a161ed89..8d2bcc0ef4 100644 --- a/selfdrive/modeld/fill_model_msg.py +++ b/selfdrive/modeld/fill_model_msg.py @@ -68,7 +68,9 @@ def fill_model_msg(base_msg: capnp._DynamicStructBuilder, extended_msg: capnp._D driving_model_data.frameDropPerc = frame_drop_perc action = driving_model_data.action - action.desiredCurvature = float(net_output_data['desired_curvature'][0,0]) + model_use_lateral_planner = custom_model_valid and custom_model_capabilities & ModelCapabilities.LateralPlannerSolution + if not model_use_lateral_planner: + action.desiredCurvature = float(net_output_data['desired_curvature'][0,0]) modelV2 = extended_msg.modelV2 modelV2.frameId = vipc_frame_id @@ -100,7 +102,7 @@ def fill_model_msg(base_msg: capnp._DynamicStructBuilder, extended_msg: capnp._D fill_xyz_poly(poly_path, ModelConstants.POLY_PATH_DEGREE, *net_output_data['plan'][0,:,Plan.POSITION].T) # lateral planning - if custom_model_valid and custom_model_capabilities & ModelCapabilities.LateralPlannerSolution: + if model_use_lateral_planner: solution = modelV2.lateralPlannerSolutionDEPRECATED solution.x, solution.y, solution.yaw, solution.yawRate = [net_output_data['lat_planner_solution'][0,:,i].tolist() for i in range(4)] solution.xStd, solution.yStd, solution.yawStd, solution.yawRateStd = [net_output_data['lat_planner_solution_stds'][0,:,i].tolist() for i in range(4)]