From 3ea80116e458b6e850f3ae02aa8303ad97ed7a46 Mon Sep 17 00:00:00 2001 From: jmlp05 Date: Wed, 18 Feb 2026 10:00:10 +0100 Subject: [PATCH 1/2] feat: update car parameters --- .../include/arussim/vehicle_dynamics.hpp | 39 ++++++++++--------- src/arussim/include/controller_sim | 2 +- src/arussim/src/vehicle_dynamics.cpp | 12 +++--- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/arussim/include/arussim/vehicle_dynamics.hpp b/src/arussim/include/arussim/vehicle_dynamics.hpp index 54f8eeb5..fea95de1 100644 --- a/src/arussim/include/arussim/vehicle_dynamics.hpp +++ b/src/arussim/include/arussim/vehicle_dynamics.hpp @@ -60,13 +60,13 @@ class VehicleDynamics private: - double kMass = 260.0; - double kNsMassF = 25; - double kNsMassR = 25; + double kMass = 264.07; // Mass of the car + LiDAR + double kNsMassF = 17.0; + double kNsMassR = 24.302; double kSMass = kMass - kNsMassF - kNsMassR; - double kIzz = 180; + double kIzz = 190; - double kMassDistributionRear = 0.54; + double kMassDistributionRear = 0.5689; double kSMassF = kSMass * (1-kMassDistributionRear); double kSMassR = kSMass * kMassDistributionRear; @@ -75,48 +75,49 @@ class VehicleDynamics double kLf = kWheelBase*kMassDistributionRear; double kLr = kWheelBase*(1-kMassDistributionRear); - double kHCog = 0.26; - double kHCogNsF = 0.225; - double kHCogNsR = 0.225; + double kHCog = 0.27; + double kHCogNsF = 0.23; + double kHCogNsR = 0.23; double kHRollCenterF = 0.033; double kHRollCenterR = 0.097; double kHRollAxis = kHRollCenterF + (kHRollCenterR - kHRollCenterF) * kLf / kWheelBase; - double kWheelRateF = 500*175.13 / std::pow(1.1,2); // spring_stiffness (N/m) / motion_ratio ^ 2 - double kWheelRateR = 500*175.13 / std::pow(1.1,2); + double kWheelRateF = 105000 / std::pow(1.02,2); // spring_stiffness (N/mm) / motion_ratio ^ 2 + double kWheelRateR = 105000 / std::pow(1.02,2); double kRollStiffnessF = 0.5 * std::pow(kTrackWidth,2) * 0.01745 * kWheelRateF; double kRollStiffnessR = 0.5 * std::pow(kTrackWidth,2) * 0.01745 * kWheelRateR; double kRollStiffness = kRollStiffnessF + kRollStiffnessR; - double kAckermann = 0.6; + double kAckermann1 = 0.1175; + double kAckermann2 = 0.9724; - double kTireDynRadius = 0.225; + double kTireDynRadius = 0.23; double kTireInertia = 0.4; struct { - double Dlat = -1.6323; + double Dlat = -1.3323; double Clat = 1.7230; double Blat = 12.7; double Elat = 0.4035; - double Dlon = 1.3976; + double Dlon = 1.1976; double Clon = 1.9503; double Blon = 17.49; double Elon = 0.999; double Gx1 = 25000; double bx = 0.2367; - double a = 93733; + double a = 937330; double c = 0.1689; double Gy1 = 38.21; double by = 0.5365; } pac_param_; double kRollingResistance = 100; - double kCDA = 1.97; - double kCLA = 4.75; - double kCOPx = 0.4604; //longitudinal distribution (rear) - double kCOPy = 0.517; + double kCDA = 1.5; + double kCLA = 3.6; + double kCOPx = 0.5795; //longitudinal distribution (rear) + double kCOPy = 0.31; double kAirDensity = 1.225; double x_dot_{0.0}, y_dot_{0.0}, vx_dot_{0.0}, vy_dot_{0.0}, r_dot_{0.0}; diff --git a/src/arussim/include/controller_sim b/src/arussim/include/controller_sim index 729f1596..9bc6a7a3 160000 --- a/src/arussim/include/controller_sim +++ b/src/arussim/include/controller_sim @@ -1 +1 @@ -Subproject commit 729f15960244de563a9fe4da2718f9c0b4aea9d4 +Subproject commit 9bc6a7a3a20eba6b558f55a071206e1af8dc1a43 diff --git a/src/arussim/src/vehicle_dynamics.cpp b/src/arussim/src/vehicle_dynamics.cpp index 1a57f4d5..f50bee34 100644 --- a/src/arussim/src/vehicle_dynamics.cpp +++ b/src/arussim/src/vehicle_dynamics.cpp @@ -167,12 +167,12 @@ void VehicleDynamics::calculate_tire_loads(){ void VehicleDynamics::calculate_ackermann(){ double delta_in_ackermann = std::atan( kWheelBase * std::tan(delta_) / (kWheelBase - std::abs(std::tan(delta_)) * kTrackWidth)); - if(delta_ > 0){ - delta_fl_ = kAckermann * (delta_in_ackermann - delta_) + delta_; - delta_fr_ = delta_; + if(delta_ <= 0){ + delta_fl_ = kAckermann1 * (delta_in_ackermann - delta_) + delta_; + delta_fr_ = kAckermann2 * delta_; } else { - delta_fl_ = delta_; - delta_fr_ = kAckermann * (delta_in_ackermann - delta_) + delta_; + delta_fl_ = kAckermann2 * delta_; + delta_fr_ = kAckermann1 * (delta_in_ackermann - delta_) + delta_; } } @@ -194,7 +194,7 @@ void VehicleDynamics::calculate_tire_slip(){ double vx_rl = std::sqrt(vy_rear*vy_rear + vx_left*vx_left) * std::cos(tire_slip_.alpha_rl_); double vx_rr = std::sqrt(vy_rear*vy_rear + vx_right*vx_right) * std::cos(tire_slip_.alpha_rr_); - double eps = 0.01; + double eps = 0.001; tire_slip_.lambda_fl_ = kTireDynRadius * wheel_speed_.fl_ / (vx_fl + eps) - 1; tire_slip_.lambda_fr_ = kTireDynRadius * wheel_speed_.fr_ / (vx_fr + eps) - 1; From 8e957c81cc26c34386dadec3bc4d753a2779e142 Mon Sep 17 00:00:00 2001 From: jmlp05 Date: Thu, 19 Feb 2026 02:04:24 +0100 Subject: [PATCH 2/2] feat: update controller_sim && fix: correct static load distribution --- src/arussim/include/controller_sim | 2 +- src/arussim/src/vehicle_dynamics.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/arussim/include/controller_sim b/src/arussim/include/controller_sim index 9bc6a7a3..4e58c32b 160000 --- a/src/arussim/include/controller_sim +++ b/src/arussim/include/controller_sim @@ -1 +1 @@ -Subproject commit 9bc6a7a3a20eba6b558f55a071206e1af8dc1a43 +Subproject commit 4e58c32b06afa8f39ecaabbf79d62490ed2b1957 diff --git a/src/arussim/src/vehicle_dynamics.cpp b/src/arussim/src/vehicle_dynamics.cpp index f50bee34..f20afa15 100644 --- a/src/arussim/src/vehicle_dynamics.cpp +++ b/src/arussim/src/vehicle_dynamics.cpp @@ -146,8 +146,8 @@ void VehicleDynamics::calculate_tire_loads(){ tire_loads_.fl_ = kStaticLoadFront - lateral_load_transfer_front - longitudinal_load_transfer/2; tire_loads_.fr_ = kStaticLoadFront + lateral_load_transfer_front - longitudinal_load_transfer/2; - tire_loads_.rl_ = kStaticLoadFront - lateral_load_transfer_rear + longitudinal_load_transfer/2; - tire_loads_.rr_ = kStaticLoadFront + lateral_load_transfer_rear + longitudinal_load_transfer/2; + tire_loads_.rl_ = kStaticLoadRear - lateral_load_transfer_rear + longitudinal_load_transfer/2; + tire_loads_.rr_ = kStaticLoadRear + lateral_load_transfer_rear + longitudinal_load_transfer/2; double aero_lift = 0.5 * kAirDensity * kCLA * vx_*vx_; double aero_drag = 0.5 * kAirDensity * kCDA * vx_*vx_;