tilt: better tilt
parent
5e88a21293
commit
3ebe64555b
|
@ -4,7 +4,8 @@
|
|||
#include "sensors/sensors.h"
|
||||
#include "strategy_roles/game.h"
|
||||
|
||||
#define STRIKER_ATTACK_DISTANCE 100
|
||||
#define STRIKER_ATTACK_DISTANCE 110
|
||||
#define STRIKER_TILT_STOP_DISTANCE 140
|
||||
#define STRIKER_PLUSANG 55
|
||||
#define STRIKER_PLUSANG_VISIONCONE 10
|
||||
|
||||
|
@ -23,6 +24,8 @@ class Striker : public Game{
|
|||
int atk_speed, atk_direction, atk_tilt;
|
||||
float cstorc;
|
||||
|
||||
bool gotta_tilt;
|
||||
|
||||
ComplementaryFilter* filter;
|
||||
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ float DriveController::torad(float f){
|
|||
void DriveController::drive(int dir, int speed, int tilt){
|
||||
|
||||
speed = speedFilter->calculate(speed)*GLOBAL_SPD_MULT;
|
||||
tilt = tilt > 180 ? tilt - 360 : tilt;
|
||||
//tilt = tilt > 180 ? tilt - 360 : tilt;
|
||||
|
||||
//TODO: Changing CURRENT_DATA_READ to CURRENT_DATA_WRITE?
|
||||
// Disable vector sum because calculations are a bitty crappy imho. Will have to test if it's what makes the robot act strange with lines
|
||||
|
|
|
@ -23,6 +23,8 @@ void Striker::init()
|
|||
atk_tilt = 0;
|
||||
cstorc = 0;
|
||||
|
||||
gotta_tilt = false;
|
||||
|
||||
filter = new ComplementaryFilter(0.7);
|
||||
}
|
||||
|
||||
|
@ -40,7 +42,7 @@ void Striker::striker()
|
|||
|
||||
if (CURRENT_DATA_READ.ballDistance > STRIKER_ATTACK_DISTANCE)
|
||||
{
|
||||
drive->prepareDrive(ball_deg > 180 ? CURRENT_DATA_READ.ballAngle - 20 : CURRENT_DATA_READ.ballAngle + 20, MAX_VEL_EIGTH, 0);
|
||||
drive->prepareDrive(ball_deg > 180 ? CURRENT_DATA_READ.ballAngle - 20 : CURRENT_DATA_READ.ballAngle + 20, MAX_VEL_HALF, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -61,16 +63,21 @@ void Striker::striker()
|
|||
else
|
||||
dir = dir;
|
||||
|
||||
drive->prepareDrive(dir, MAX_VEL_QUARTER, tilt());
|
||||
drive->prepareDrive(dir, MAX_VEL_HALF, tilt());
|
||||
}
|
||||
|
||||
int Striker::tilt()
|
||||
{
|
||||
if (!CURRENT_DATA_READ.atkSeen) return 0;
|
||||
if (CURRENT_DATA_READ.ballAngleFix >= 350 || CURRENT_DATA_READ.ballAngleFix <= 10)
|
||||
atk_tilt = (constrain(CURRENT_DATA_READ.angleAtkFix, -45, 45) + 360) % 360;
|
||||
else if((CURRENT_DATA_READ.ballAngleFix > 345 && CURRENT_DATA_READ.ballAngleFix < 350) || (CURRENT_DATA_READ.ballAngleFix > 10 && CURRENT_DATA_READ.ballAngleFix < 15))
|
||||
atk_tilt = 0;
|
||||
if (CURRENT_DATA_READ.ballDistance <= STRIKER_ATTACK_DISTANCE) gotta_tilt = true;
|
||||
if (CURRENT_DATA_READ.ballDistance > STRIKER_ATTACK_DISTANCE && gotta_tilt) gotta_tilt = false;
|
||||
|
||||
if (CURRENT_DATA_READ.atkSeen && gotta_tilt) return 0;
|
||||
if (CURRENT_DATA_READ.ballAngle >= 345 || CURRENT_DATA_READ.ballAngle <= 15) atk_tilt = CURRENT_DATA_READ.angleAtkFix;
|
||||
else gotta_tilt = false;
|
||||
// if (CURRENT_DATA_READ.ballAngle >= 350 || CURRENT_DATA_READ.ballAngle <= 10)
|
||||
// atk_tilt = (constrain(CURRENT_DATA_READ.angleAtkFix, -45, 45) + 360) % 360;
|
||||
// else if((CURRENT_DATA_READ.ballAngle > 345 && CURRENT_DATA_READ.ballAngle < 350) || (CURRENT_DATA_READ.ballAngle > 10 && CURRENT_DATA_READ.ballAngle < 15))
|
||||
// atk_tilt = 0;
|
||||
atk_tilt = filter->calculate(atk_tilt);
|
||||
return atk_tilt;
|
||||
}
|
Loading…
Reference in New Issue