@ -23,8 +23,8 @@ static bool calib_frame_to_full_frame(const UIState *s, float in_x, float in_y,
const QRectF clip_region { - margin , - margin , s - > fb_w + 2 * margin , s - > fb_h + 2 * margin } ;
const vec3 pt = ( vec3 ) { { in_x , in_y , in_z } } ;
const vec3 Ep = matvecmul3 ( s - > scene . view_from_calib , pt ) ;
const vec3 KEp = matvecmul3 ( s - > wide_camera ? ecam_intrinsic_matrix : fcam_intrinsic_matrix , Ep ) ;
const vec3 Ep = matvecmul3 ( s - > scene . wide_cam ? s - > scene . view_from_wide_calib : s - > scene . view_from_calib , pt ) ;
const vec3 KEp = matvecmul3 ( s - > scene . wide_cam ? ecam_intrinsic_matrix : fcam_intrinsic_matrix , Ep ) ;
// Project.
QPointF point = s - > car_space_transform . map ( QPointF { KEp . v [ 0 ] / KEp . v [ 2 ] , KEp . v [ 1 ] / KEp . v [ 2 ] } ) ;
@ -121,17 +121,23 @@ static void update_state(UIState *s) {
if ( sm . updated ( " liveCalibration " ) ) {
auto rpy_list = sm [ " liveCalibration " ] . getLiveCalibration ( ) . getRpyCalib ( ) ;
auto wfde_list = sm [ " liveCalibration " ] . getLiveCalibration ( ) . getWideFromDeviceEuler ( ) ;
Eigen : : Vector3d rpy ;
rpy < < rpy_list [ 0 ] , rpy_list [ 1 ] , rpy_list [ 2 ] ;
Eigen : : Vector3d wfde ;
if ( rpy_list . size ( ) = = 3 ) rpy < < rpy_list [ 0 ] , rpy_list [ 1 ] , rpy_list [ 2 ] ;
if ( wfde_list . size ( ) = = 3 ) wfde < < wfde_list [ 0 ] , wfde_list [ 1 ] , wfde_list [ 2 ] ;
Eigen : : Matrix3d device_from_calib = euler2rot ( rpy ) ;
Eigen : : Matrix3d wide_from_device = euler2rot ( wfde ) ;
Eigen : : Matrix3d view_from_device ;
view_from_device < < 0 , 1 , 0 ,
0 , 0 , 1 ,
1 , 0 , 0 ;
Eigen : : Matrix3d view_from_calib = view_from_device * device_from_calib ;
Eigen : : Matrix3d view_from_wide_calib = view_from_device * wide_from_device * device_from_calib ;
for ( int i = 0 ; i < 3 ; i + + ) {
for ( int j = 0 ; j < 3 ; j + + ) {
scene . view_from_calib . v [ i * 3 + j ] = view_from_calib ( i , j ) ;
scene . view_from_wide_calib . v [ i * 3 + j ] = view_from_wide_calib ( i , j ) ;
}
}
scene . calibration_valid = sm [ " liveCalibration " ] . getLiveCalibration ( ) . getCalStatus ( ) = = 1 ;
@ -167,6 +173,17 @@ static void update_state(UIState *s) {
scene . light_sensor = std : : max ( 100.0f - scale * sm [ " wideRoadCameraState " ] . getWideRoadCameraState ( ) . getExposureValPercent ( ) , 0.0f ) ;
}
scene . started = sm [ " deviceState " ] . getDeviceState ( ) . getStarted ( ) & & scene . ignition ;
if ( sm . updated ( " carState " ) ) {
float v_ego = sm [ " carState " ] . getCarState ( ) . getVEgo ( ) ;
// TODO: support replays without ecam by using fcam
// Wide or narrow cam dependent on speed
if ( ( v_ego < 10 ) | | s - > wide_cam_only ) {
scene . wide_cam = true ;
} else if ( v_ego > 15 ) {
scene . wide_cam = false ;
}
}
}
void ui_update_params ( UIState * s ) {
@ -197,7 +214,7 @@ void UIState::updateStatus() {
if ( scene . started ) {
status = STATUS_DISENGAGED ;
scene . started_frame = sm - > frame ;
wide_camera = Params ( ) . getBool ( " WideCameraOnly " ) ;
wide_cam_only = Params ( ) . getBool ( " WideCameraOnly " ) ;
}
started_prev = scene . started ;
emit offroadTransition ( ! scene . started ) ;
@ -219,7 +236,7 @@ UIState::UIState(QObject *parent) : QObject(parent) {
} ) ;
Params params ;
wide_camera = params . getBool ( " WideCameraOnly " ) ;
wide_cam_only = params . getBool ( " WideCameraOnly " ) ;
prime_type = std : : atoi ( params . get ( " PrimeType " ) . c_str ( ) ) ;
language = QString : : fromStdString ( params . get ( " LanguageSetting " ) ) ;