Skip to content

Commit afa913d

Browse files
authored
feat: add rear_slip_coeff param to adt model (#1564)
add rear_slip_coeff param to adt model Signed-off-by: Autumn60 <harada.akiro@gmail.com>
1 parent e6d9c8b commit afa913d

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

simulator/simple_planning_simulator/include/simple_planning_simulator/vehicle_model/articulate/sim_model_delay_articulate_acc_geared.hpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ class SimModelDelayArticulateAccGeared : public SimModelInterface
4848
double vx_lim, double steer_lim, double vx_rate_lim, double steer_rate_lim,
4949
double front_wheelbase, double rear_wheelbase, double dt, double acc_delay,
5050
double acc_time_constant, double steer_delay, double steer_time_constant,
51-
double steer_dead_band, double steer_bias, double debug_acc_scaling_factor,
52-
double debug_steer_scaling_factor);
51+
double steer_dead_band, double steer_bias, double rear_slip_coeff,
52+
double debug_acc_scaling_factor, double debug_steer_scaling_factor);
5353

5454
/**
5555
* @brief default destructor
@@ -88,6 +88,7 @@ class SimModelDelayArticulateAccGeared : public SimModelInterface
8888
const double steer_time_constant_; //!< @brief time constant for steering dynamics
8989
const double steer_dead_band_; //!< @brief dead band for steering angle [rad]
9090
const double steer_bias_; //!< @brief steering angle bias [rad]
91+
const double rear_slip_coeff_; //!< @brief rear slip coefficient
9192
const double debug_acc_scaling_factor_; //!< @brief scaling factor for accel command
9293
const double debug_steer_scaling_factor_; //!< @brief scaling factor for steering command
9394

simulator/simple_planning_simulator/src/simple_planning_simulator/simple_planning_simulator_core.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ void SimplePlanningSimulator::initialize_vehicle_model()
229229
const double steer_time_constant = declare_parameter("steer_time_constant", 0.27);
230230
const double steer_dead_band = declare_parameter("steer_dead_band", 0.0);
231231
const double steer_bias = declare_parameter("steer_bias", 0.0);
232+
const double rear_slip_coeff = declare_parameter("rear_slip_coeff", 1.0);
232233

233234
const double debug_acc_scaling_factor = declare_parameter("debug_acc_scaling_factor", 1.0);
234235
const double debug_steer_scaling_factor = declare_parameter("debug_steer_scaling_factor", 1.0);
@@ -306,7 +307,7 @@ void SimplePlanningSimulator::initialize_vehicle_model()
306307
vehicle_model_ptr_ = std::make_shared<SimModelDelayArticulateAccGeared>(
307308
vel_lim, steer_lim, vel_rate_lim, steer_rate_lim, front_wheelbase, rear_wheelbase,
308309
timer_sampling_time_ms_ / 1000.0, acc_time_delay, acc_time_constant, steer_time_delay,
309-
steer_time_constant, steer_dead_band, steer_bias, debug_acc_scaling_factor,
310+
steer_time_constant, steer_dead_band, steer_bias, rear_slip_coeff, debug_acc_scaling_factor,
310311
debug_steer_scaling_factor);
311312
} else {
312313
throw std::invalid_argument("Invalid vehicle_model_type: " + vehicle_model_type_str);

simulator/simple_planning_simulator/src/simple_planning_simulator/vehicle_model/articulate/sim_model_delay_articulate_acc_geared.cpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ SimModelDelayArticulateAccGeared::SimModelDelayArticulateAccGeared(
2222
double vx_lim, double steer_lim, double vx_rate_lim, double steer_rate_lim,
2323
double front_wheelbase, double rear_wheelbase, double dt, double acc_delay,
2424
double acc_time_constant, double steer_delay, double steer_time_constant, double steer_dead_band,
25-
double steer_bias, double debug_acc_scaling_factor, double debug_steer_scaling_factor)
25+
double steer_bias, double rear_slip_coeff, double debug_acc_scaling_factor,
26+
double debug_steer_scaling_factor)
2627
: SimModelInterface(6 /* dim x */, 2 /* dim u */),
2728
MIN_TIME_CONSTANT(0.03),
2829
vx_lim_(vx_lim),
@@ -37,6 +38,7 @@ SimModelDelayArticulateAccGeared::SimModelDelayArticulateAccGeared(
3738
steer_time_constant_(std::max(steer_time_constant, MIN_TIME_CONSTANT)),
3839
steer_dead_band_(steer_dead_band),
3940
steer_bias_(steer_bias),
41+
rear_slip_coeff_(rear_slip_coeff),
4042
debug_acc_scaling_factor_(std::max(debug_acc_scaling_factor, 0.0)),
4143
debug_steer_scaling_factor_(std::max(debug_steer_scaling_factor, 0.0))
4244
{
@@ -72,7 +74,8 @@ double SimModelDelayArticulateAccGeared::getWz()
7274
const double steer = state_(IDX::STEER);
7375
const double c_steer = std::cos(steer);
7476

75-
return (state_(IDX::VX) * std::sin(steer) - state_steer_rate_ * front_wheelbase_ * c_steer) /
77+
return (state_(IDX::VX) * std::sin(steer) -
78+
state_steer_rate_ * front_wheelbase_ * c_steer * rear_slip_coeff_) /
7679
(front_wheelbase_ + rear_wheelbase_ * c_steer);
7780
}
7881
double SimModelDelayArticulateAccGeared::getSteer()
@@ -147,8 +150,9 @@ Eigen::VectorXd SimModelDelayArticulateAccGeared::calcModel(
147150
Eigen::VectorXd d_state = Eigen::VectorXd::Zero(dim_x_);
148151
d_state(IDX::X) = vel * cos(yaw);
149152
d_state(IDX::Y) = vel * sin(yaw);
150-
d_state(IDX::YAW) = (vel * std::sin(steer) - state_steer_rate_ * front_wheelbase_ * c_steer) /
151-
(front_wheelbase_ + rear_wheelbase_ * c_steer);
153+
d_state(IDX::YAW) =
154+
(vel * std::sin(steer) - state_steer_rate_ * front_wheelbase_ * c_steer * rear_slip_coeff_) /
155+
(front_wheelbase_ + rear_wheelbase_ * c_steer);
152156
d_state(IDX::VX) = acc;
153157
d_state(IDX::STEER) = state_steer_rate_;
154158
d_state(IDX::ACCX) = -(acc - acc_des) / acc_time_constant_;

0 commit comments

Comments
 (0)