- added shadow_mpa11

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5955 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 2e1c35a25df86cbf81a9713630fffe876454b409
Former-commit-id: f15bea767b47f28412febe0526b52de6afeede49
This commit is contained in:
torcs-ng 2015-04-07 20:50:10 +00:00
parent 74c82bb8d7
commit d5abe16ec4
5 changed files with 46 additions and 19 deletions

View file

@ -6,7 +6,7 @@ SET(ROBOT_NAME "shadow")
# Official-only shadow interface.
SET(ROBOT_INTERFACE LEGACY WELCOME)
# Work-in-progress / unofficial shadow2 interface.
# Work-in-progress / unofficial shadow interface.
#IF(NOT OPTION_OFFICIAL_ONLY)
#
# SET(ROBOT_INTERFACE ${ROBOT_INTERFACE} shadow_mpa11)
@ -81,9 +81,9 @@ SET(ROBOT_SOURCES src/Array.h
src/Vec3d.h
)
# Official-only shadow2 instances.
# Official-only shadow instances.
SET(ROBOT_CLONES shadow_36GP shadow_sc shadow_srw shadow_trb1 shadow_ls1 shadow_ls2 shadow_mp5
shadow_mpa1 shadow_lp1 shadow_ref)
shadow_mpa1 shadow_mpa11 shadow_lp1 shadow_ref)
# The ubiquitous robot module and its clones.
ROBOT_MODULE(NAME ${ROBOT_NAME} VERSION 3.3.0 SOVERSION 1.0.0

View file

@ -225,6 +225,11 @@ TDriver::TDriver(int Index, const int robot_type):
robot_name = "shadow_mpa1";
Frc = 0.88;
break;
case SHADOW_MPA11:
robot_name = "shadow_mpa11";
Frc = 0.88;
break;
}
for( int i = 0; i < 50; i++ )
@ -2719,29 +2724,29 @@ void TDriver::initTireMu()
m_cm.TYRE_MU_R = TIREMUR;
}
double TDriver::filterTCL(double Accel) // Tracktion control
double TDriver::filterTCL(double Accel) // Tracktion control
{
if(fabs(car->_speed_x) < 0.001) // Only if driving faster
if(fabs(car->_speed_x) < 0.001) // Only if driving faster
return Accel;
double Spin = 0; // Initialize spin
double Wr = 0; // wheel radius
int Count = 0; // count impellers
double Spin = 0; // Initialize spin
double Wr = 0; // wheel radius
int Count = 0; // count impellers
if(HasTrainFWD) // If front wheels
{ // are impellers
if(HasTrainFWD) // If front wheels
{ // are impellers
double WSL = car->_wheelSpinVel(FRNT_LFT); // Get spin velocity
double WSR = car->_wheelSpinVel(FRNT_RGT);
if (WSL > WSR) // Depending on max
Spin += 2 * WSL + WSR; // calc weighted spin
Spin += 2 * WSL + WSR; // calc weighted spin
else
Spin += WSL + 2 * WSR;
Wr += car->_wheelRadius(FRNT_LFT)+ car->_wheelRadius(FRNT_RGT); // measure radius
Count += 3; // and count weights
}
if(HasTrainRWD) // If rear wheels
{ // are impellers
if(HasTrainRWD) // If rear wheels
{ // are impellers
double WSL = car->_wheelSpinVel(REAR_LFT);
double WSR = car->_wheelSpinVel(REAR_RGT);
if (WSL > WSR)

View file

@ -99,7 +99,7 @@ static const int MAXNBBOTS = MAX_NBBOTS; // Number of drivers/robots
static const int BUFSIZE = 256;
enum { SHADOW_TRB1=1, SHADOW_SC, SHADOW_SRW, SHADOW_LS1, SHADOW_LS2, SHADOW_36GP,
SHADOW_RS, SHADOW_LP1, SHADOW_MPA1 };
SHADOW_RS, SHADOW_LP1, SHADOW_MPA1, SHADOW_MPA11 };
class TDriver
{

View file

@ -150,10 +150,8 @@ public:
void UpdatePath();
void UpdateSit( const CarElt* myCar, const TeamInfo* pTeamInfo,
double myDirX, double myDirY );
void ProcessMyCar( const Situation* s, const TeamInfo* pTeamInfo,
const CarElt* myCar, const Sit& mySit,
void UpdateSit( const CarElt* myCar, const TeamInfo* pTeamInfo, double myDirX, double myDirY );
void ProcessMyCar( const Situation* s, const TeamInfo* pTeamInfo, const CarElt* myCar, const Sit& mySit,
const TDriver& me, double myMaxAccX, int idx );
private:

View file

@ -198,13 +198,20 @@ void SetupSHADOW_lp1()
robot_type = SHADOW_LP1;
};
// Schismatic init for usr_mpa1
// Schismatic init for shadow_mpa1
void SetupSHADOW_mpa1()
{
// Add shadow_mpa1 specific initialization here
robot_type = SHADOW_MPA1;
};
// Schismatic init for shadow_mpa1
void SetupSHADOW_mpa11()
{
// Add shadow_mpa1 specific initialization here
robot_type = SHADOW_MPA11;
};
////////////////////////////////////////////////////////////
// Carset specific entry points (functions)
@ -301,6 +308,21 @@ extern "C" int shadow_mpa1(tModInfo *ModInfo)
return ret;
}
// Schismatic entry point for shadow_mpa11
extern "C" int shadow_mpa11(tModInfo *ModInfo)
{
int ret = -1;
setRobotName("shadow_mpa11");
robot_type = SHADOW_MPA11;
void *robot_settings = getFileHandle();
if (robot_settings)
{
ret = shadow(ModInfo);
}
return ret;
}
// Schismatic entry point for shadow_36GP
extern "C" int shadow_36GP(tModInfo *ModInfo)
{
@ -445,6 +467,8 @@ extern "C" int moduleWelcome(const tModWelcomeIn* welcomeIn,
SetupSHADOW_lp1();
else if (strncmp(robot_name,"shadow_mpa1", strlen("shadow_mpa1")) == 0)
SetupSHADOW_mpa1();
else if (strncmp(robot_name,"shadow_mpa11", strlen("shadow_mpa11")) == 0)
SetupSHADOW_mpa11();
// Set max nb of interfaces to return.