forked from speed-dreams/speed-dreams-code
- Update USR's driver
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@6843 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 15e493bfa76b8f70bc031c9b054dc27fa2ee138a Former-commit-id: 92acc07c4aba8132932d100aa2f3aebea00489c8
This commit is contained in:
parent
dcd3fee4e6
commit
047e0e7025
6 changed files with 155 additions and 171 deletions
|
@ -678,8 +678,11 @@ bool Driver::calcSpeed()
|
||||||
{
|
{
|
||||||
double factor = 30.0;
|
double factor = 30.0;
|
||||||
|
|
||||||
|
if(mycardata->HasTYC)
|
||||||
|
{
|
||||||
if (mycardata->TYREWEAR < mycardata->CRITICAL_TYREWEAR + 0.02)
|
if (mycardata->TYREWEAR < mycardata->CRITICAL_TYREWEAR + 0.02)
|
||||||
factor *= 1.0 + (1.0 * mycardata->GRIP_FACTOR);
|
factor *= 1.0 - (1.0 * mycardata->GRIP_FACTOR);
|
||||||
|
}
|
||||||
|
|
||||||
brakecmd = MIN(1.0f, factor * fabs(x));
|
brakecmd = MIN(1.0f, factor * fabs(x));
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
#include "linemode.h"
|
#include "linemode.h"
|
||||||
#include "raceline.h"
|
#include "raceline.h"
|
||||||
#include "globaldefs.h"
|
#include "globaldefs.h"
|
||||||
//#define LINEMODE_DEBUG
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Public methods
|
// Public methods
|
||||||
|
@ -58,18 +57,11 @@ LLineMode::~LLineMode()
|
||||||
double LLineMode::GetTransitionIncrement(int div)
|
double LLineMode::GetTransitionIncrement(int div)
|
||||||
{
|
{
|
||||||
double ti = m_TransitionIncrement;
|
double ti = m_TransitionIncrement;
|
||||||
/*
|
|
||||||
if (fabs(m_Car->_accel_x) > 3.0)
|
|
||||||
{
|
|
||||||
double tiFactor1 = MIN(8.0, fabs(m_Car->_accel_x));
|
|
||||||
tiFactor1 *= tiFactor1 / 2;
|
|
||||||
double tiFactor2 = MAX(0.0, MIN(1.0, fabs(m_Car->ctrl.steer)) - 0.5);
|
|
||||||
ti *= MAX(0.1, MIN(1.0 - tiFactor1 / 32.0, 1.0 - tiFactor2 / 0.5));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (m_OverrideCollection)
|
if (m_OverrideCollection)
|
||||||
{
|
{
|
||||||
LManualOverride *labelOverride = m_OverrideCollection->getOverrideForLabel(PRV_TRANSITION_INC);
|
LManualOverride *labelOverride = m_OverrideCollection->getOverrideForLabel(PRV_TRANSITION_INC);
|
||||||
|
|
||||||
if (labelOverride)
|
if (labelOverride)
|
||||||
{
|
{
|
||||||
double tti = ti;
|
double tti = ti;
|
||||||
|
@ -77,8 +69,10 @@ double LLineMode::GetTransitionIncrement(int div)
|
||||||
ti = tti;
|
ti = tti;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_CurrentTime - m_TimerStarted < 0.5)
|
if (m_CurrentTime - m_TimerStarted < 0.5)
|
||||||
return MAX(0.0, ti * ((m_CurrentTime - m_TimerStarted) / 0.5));
|
return MAX(0.0, ti * ((m_CurrentTime - m_TimerStarted) / 0.5));
|
||||||
|
|
||||||
return ti;
|
return ti;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,9 +96,9 @@ bool LLineMode::IsOnHold(int div, bool stay_inside)
|
||||||
{
|
{
|
||||||
m_OnHold = false;
|
m_OnHold = false;
|
||||||
m_HoldApexDiv = -1;
|
m_HoldApexDiv = -1;
|
||||||
#ifdef LINEMODE_DEBUG
|
|
||||||
fprintf(stderr, "%s: NO HOLD (A %d %d %d) = dist (%.1f > %.1f) || div %d != %d && line %s != %s\n", m_Car->_name, (distance > m_Car->_speed_x * 5), (m_HoldApexDiv < 0), (hold_div > 0 && hold_div != m_HoldApexDiv && m_PreferLine != this_prefer_line), distance, m_Car->_speed_x * 5, m_HoldApexDiv, hold_div, m_PreferLine == TR_STR ? "STR" : m_PreferLine == TR_RGT ? "RGT" : "LFT", this_prefer_line == TR_STR ? "STR" : this_prefer_line == TR_RGT ? "RGT" : "LFT"); fflush(stderr);
|
LogUSR.debug("%s: NO HOLD (A %d %d %d) = dist (%.1f > %.1f) || div %d != %d && line %s != %s\n", m_Car->_name, (distance > m_Car->_speed_x * 5), (m_HoldApexDiv < 0), (hold_div > 0 && hold_div != m_HoldApexDiv && m_PreferLine != this_prefer_line), distance, m_Car->_speed_x * 5, m_HoldApexDiv, hold_div, m_PreferLine == TR_STR ? "STR" : m_PreferLine == TR_RGT ? "RGT" : "LFT", this_prefer_line == TR_STR ? "STR" : this_prefer_line == TR_RGT ? "RGT" : "LFT");
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,9 +107,9 @@ bool LLineMode::IsOnHold(int div, bool stay_inside)
|
||||||
{
|
{
|
||||||
m_OnHold = false;
|
m_OnHold = false;
|
||||||
m_HoldApexDiv = -1;
|
m_HoldApexDiv = -1;
|
||||||
#ifdef LINEMODE_DEBUG
|
|
||||||
fprintf(stderr,"%s: NO HOLD (2)\n",m_Car->_name);fflush(stderr);
|
LogUSR.debug("%s: NO HOLD (2)\n",m_Car->_name);
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,22 +118,19 @@ bool LLineMode::IsOnHold(int div, bool stay_inside)
|
||||||
{
|
{
|
||||||
ResetTimer();
|
ResetTimer();
|
||||||
m_HoldApexDiv = hold_div;
|
m_HoldApexDiv = hold_div;
|
||||||
#ifdef LINEMODE_DEBUG
|
|
||||||
fprintf(stderr,"%s: HOLDING!!\n",m_Car->_name);fflush(stderr);
|
LogUSR.debug("%s: HOLDING!!\n",m_Car->_name);
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#ifdef LINEMODE_DEBUG
|
|
||||||
fprintf(stderr, "%s: NO HOLD (C) line=%s, lftMarg=%.3f rgtMarg=%.3f\n", m_Car->_name, this_prefer_line == TR_STR ? "STR" : this_prefer_line == TR_RGT ? "RGT" : "LFT",m_LeftCurrentMargin,m_RightCurrentMargin); fflush(stderr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
LogUSR.debug("%s: NO HOLD (C) line=%s, lftMarg=%.3f rgtMarg=%.3f\n", m_Car->_name, this_prefer_line == TR_STR ? "STR" : this_prefer_line == TR_RGT ? "RGT" : "LFT",m_LeftCurrentMargin,m_RightCurrentMargin);
|
||||||
}
|
}
|
||||||
#ifdef LINEMODE_DEBUG
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: NO HOLD (D), threat=%d\n", m_Car->_name, m_UnderThreat); fflush(stderr);
|
LogUSR.debug("%s: NO HOLD (D), threat=%d\n", m_Car->_name, m_UnderThreat);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
m_HoldApexDiv = -1;
|
m_HoldApexDiv = -1;
|
||||||
m_OnHold = false;
|
m_OnHold = false;
|
||||||
|
|
||||||
|
@ -220,16 +211,14 @@ void LLineMode::SetTargetMargins(int raceline, double leftMargin, double rightMa
|
||||||
if (m_LeftTargetMargin != 0.0 || m_RightTargetMargin != 1.0)
|
if (m_LeftTargetMargin != 0.0 || m_RightTargetMargin != 1.0)
|
||||||
m_HoldApexDiv = -1;
|
m_HoldApexDiv = -1;
|
||||||
|
|
||||||
//fprintf(stderr, "New Margins: %.3f %.3f (%d)\n", m_LeftTargetMargin, m_RightTargetMargin,force);
|
|
||||||
m_IsTransitioning = true;
|
m_IsTransitioning = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLineMode::SetRecoverToRaceLine()
|
void LLineMode::SetRecoverToRaceLine()
|
||||||
{
|
{
|
||||||
#ifdef LINEMODE_DEBUG
|
LogUSR.debug("setRecoveryToRaceLine\n");
|
||||||
fprintf(stderr, "setRecoveryToRaceLine\n");fflush(stderr);
|
|
||||||
#endif
|
|
||||||
if (m_LeftTargetMargin != 0.0 || m_RightTargetMargin != 1.0)
|
if (m_LeftTargetMargin != 0.0 || m_RightTargetMargin != 1.0)
|
||||||
{
|
{
|
||||||
m_HoldApexDiv = -1;
|
m_HoldApexDiv = -1;
|
||||||
|
@ -272,5 +261,4 @@ void LLineMode::SetPitting()
|
||||||
void LLineMode::ResetTimer()
|
void LLineMode::ResetTimer()
|
||||||
{
|
{
|
||||||
m_TimerStarted = m_CurrentTime;
|
m_TimerStarted = m_CurrentTime;
|
||||||
//prefer_line = LINE_MID;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
#include "globaldefs.h"
|
#include "globaldefs.h"
|
||||||
#include "manual_override.h"
|
#include "manual_override.h"
|
||||||
|
|
||||||
//enum { LINE_MID=0, LINE_LEFT, LINE_RIGHT, LINE_RL, LINE_RL_MID, LINE_RL_SLOW, LINE_LEFT_OUTSTEER, LINE_RIGHT_OUTSTEER, LINE_MID_COLD, LINE_LEFT_COLD, LINE_RIGHT_COLD, LINE_RL_COLD, LINE_RL_MID_COLD, LINE_RL_SLOW_COLD, LINE_LEFT_OUTSTEER_COLD, LINE_RIGHT_OUTSTEER_COLD, LINE_NONE };
|
|
||||||
enum { LINE_MID=0, LINE_LEFT, LINE_RIGHT, LINE_RL, LINE_RL_MID, LINE_RL_SLOW, LINE_MID_COLD, LINE_LEFT_COLD, LINE_RIGHT_COLD, LINE_RL_COLD, LINE_RL_MID_COLD, LINE_RL_SLOW_COLD, LINE_NONE };
|
enum { LINE_MID=0, LINE_LEFT, LINE_RIGHT, LINE_RL, LINE_RL_MID, LINE_RL_SLOW, LINE_MID_COLD, LINE_LEFT_COLD, LINE_RIGHT_COLD, LINE_RL_COLD, LINE_RL_MID_COLD, LINE_RL_SLOW_COLD, LINE_NONE };
|
||||||
|
|
||||||
class LRaceLine;
|
class LRaceLine;
|
||||||
|
|
|
@ -27,10 +27,6 @@
|
||||||
#include "manual_override.h"
|
#include "manual_override.h"
|
||||||
#include "globaldefs.h"
|
#include "globaldefs.h"
|
||||||
|
|
||||||
//#if defined(WIN32)
|
|
||||||
//#define snprintf _snprintf
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
#define SECT_OVERRIDE "overrides"
|
#define SECT_OVERRIDE "overrides"
|
||||||
|
|
||||||
LManualOverride::LManualOverride(const char *theLabel)
|
LManualOverride::LManualOverride(const char *theLabel)
|
||||||
|
@ -340,21 +336,19 @@ void LManualOverrideCollection::loadFromFile(char *trackName, const char *botnam
|
||||||
|
|
||||||
void LManualOverrideCollection::saveToFile()
|
void LManualOverrideCollection::saveToFile()
|
||||||
{
|
{
|
||||||
#if 0
|
char buffer[1024];
|
||||||
char buffer[1025];
|
snprintf(buffer, 1024, "%sdrivers/%s/%s/%s.dat_save", GetLocalDir(), "USR", "carName", "trackName");
|
||||||
snprintf(buffer, 1024, "%sdrivers/%s/%s/%s.dat_save", GetLocalDir(), BOT_NAME, "carName", "trackName");
|
|
||||||
FILE *filepointer = fopen(buffer, "w");
|
FILE *filepointer = fopen(buffer, "w");
|
||||||
|
|
||||||
if (filepointer)
|
if (filepointer)
|
||||||
{
|
{
|
||||||
for (int i=0; i<OVERRIDE_COUNT; i++)
|
for (int i=0; i < override_count; i++)
|
||||||
{
|
{
|
||||||
overrides[i]->saveToFile(filepointer);
|
overrides[i]->saveToFile(filepointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(filepointer);
|
fclose(filepointer);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LManualOverride *LManualOverrideCollection::getOverrideForLabel(const char *label)
|
LManualOverride *LManualOverrideCollection::getOverrideForLabel(const char *label)
|
||||||
|
|
|
@ -972,9 +972,9 @@ double LRaceLine::getBrakeDist(int Div, int rl)
|
||||||
if (!(labelOverride->getOverrideValue(Div, &brakedelay_override)))
|
if (!(labelOverride->getOverrideValue(Div, &brakedelay_override)))
|
||||||
brakedelay_override = brakeDist;
|
brakedelay_override = brakeDist;
|
||||||
|
|
||||||
if (cardata->HasTYC == TRUE && cardata->GRIP_FACTOR < 0.8)
|
if (cardata->GRIP_FACTOR < 0.8)
|
||||||
coldfactor = MIN(1.0, brakedelay_cold_override / brakedelay_override);
|
coldfactor = MIN(1.0, brakedelay_cold_override / brakedelay_override);
|
||||||
else if (cardata->HasTYC == TRUE && cardata->GRIP_FACTOR < 0.7)
|
else if (cardata->GRIP_FACTOR < 0.7)
|
||||||
coldfactor = MIN(1.0, (cardata->GRIP_FACTOR));
|
coldfactor = MIN(1.0, (cardata->GRIP_FACTOR));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1852,9 +1852,10 @@ void LRaceLine::ComputeRacelineSpeed(int i, int rl, double **tSpeed, int speedrl
|
||||||
if (MaxSpeed > 25.0 && fabs(rInverse) > 0.0005)
|
if (MaxSpeed > 25.0 && fabs(rInverse) > 0.0005)
|
||||||
{
|
{
|
||||||
if (rInverse < 0.0)
|
if (rInverse < 0.0)
|
||||||
MaxSpeed = (MaxSpeed /*- 20.0)*/ * cardata->GRIP_FACTOR_LEFT);
|
MaxSpeed = (MaxSpeed * cardata->GRIP_FACTOR_LEFT);
|
||||||
else if (rInverse > 0.0)
|
else if (rInverse > 0.0)
|
||||||
MaxSpeed = (MaxSpeed /*- 20.0) */* cardata->GRIP_FACTOR_RIGHT);
|
MaxSpeed = (MaxSpeed * cardata->GRIP_FACTOR_RIGHT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1866,7 +1867,6 @@ void LRaceLine::ComputeRacelineSpeed(int i, int rl, double **tSpeed, int speedrl
|
||||||
MaxSpeed = (MaxSpeed * 0.94);
|
MaxSpeed = (MaxSpeed * 0.94);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
double bc = getBumpCaution(i, speedrl);
|
double bc = getBumpCaution(i, speedrl);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue