maisvendoo писал(а): ↑27 окт 2021, 21:20
Вроде с физикой всё как надо
Нашёл Ваш репозиторий с исходниками РА-3. Попробовал скомпилировать по инструкции для разработчика дополнений на сайте, но очевидно проект сделан уже под следующую версию симулятора, много ошибок при сборке с sdk от RRS 1.0.6. Придётся подождать релиза)
Покопавшись в коде, обнаружил опечатку в ra3-head/src/ra3-head-step-brake-mech.cpp:
Код: Выделить всё
for (size_t i = 0; i < brake_mech.size(); ++i)
{
brake_mech[i]->step(t, dt);
Q_r[i+1] = brake_mech[i]->getBrakeTorque();
Q_r[i+2] = brake_mech[i]->getBrakeTorque();
}
Этот цикл на второй итерации применяет тормозные усилия задней тележки к 2-й и 3-й осям вместо 3-й и 4-й. Четвертая колёсная пара не участвует в торможении.
После исправления тормоза станут ещё на треть эффективнее, подозреваю, что где-то есть ещё ошибки, по ощущениям это уже превысит сцепление колеса с рельсом (хотя сейчас, насколько я понимаю, юз и боксование в симуляторе не реализованы, вращение колеса математически привязано к скорости).
UPD: Предположительно нашёл удвоение тормозного усилия. В ra3-equipment/src/ra3-brake-mech.cpp:
Код: Выделить всё
// Нажатие от пружинного аккумулятора стояночного тормоза
double K_st = Kmax * (1 - Y[1] / p_max);
// Нажатие от блок-тормоза без энергоаккумулятора
double K_b1 = Kmax * Y[0] / p_max;
// Ограничение тормозного нажатия, учитывающее зазор в механизмах
// блок тормоза с пружинным энергоаккумулятором
double K_lim = pf(Kmax - K_st);
// Нажатие от блок-тормоза с энергоаккумулятором
double K_b2 = K_st + cut(K_b1, 0.0, K_lim);
// Тормозное усилие от б/т без энергоаккумулятора
double shoe_brake_force1 = K_b1 * phi(K_b1, velocity) * Physics::g * 1000.0;
// Тормозное усилие от б/т с энергоаккумулятором
double shoe_brake_force2 = K_b2 * phi(K_b2, velocity) * Physics::g * 1000.0;
// Момент от тормозных сил на колесной паре
brakeTorque = shoesAxis * (shoe_brake_force1 + shoe_brake_force2) * effRadius;
Понятия не имею, как устроена тормозная система в РА-3, которая должна описываться этим кодом, но сейчас усилие от блок-тормоза получается учтено дважды, в каждом из слагаемых shoe_brake_force (первое слагаемое получается непосредственно из нажатия от блок-тормоза, второе равно или нажатию от стояночного тормоза, если он не отпущен, или всё тому же нажатию от блок-тормоза, когда стояночный отпущен).
Таким образом, сейчас удвоенное тормозное усилие применяется к 3 из 4 осей - в итоге тормоза завышены в полтора раза.