disable vector sum code for now

calculations are a bitty crappy, think I found the bug for now (check added comments)
pull/1/head
ema.coletta@gmail.com 2020-10-31 15:37:05 +01:00
parent bc040bd084
commit f0a8ad6808
2 changed files with 15 additions and 8 deletions

View File

@ -66,8 +66,12 @@ void DriveController::drive(int dir, int speed, int tilt){
tilt = tilt > 180 ? tilt - 360 : tilt;
//TODO: Changing CURRENT_DATA_READ to CURRENT_DATA_WRITE?
vx = ((speed * cosins[dir])) + CURRENT_DATA_READ.addvx;
vy = ((-speed * sins[dir])) + CURRENT_DATA_READ.addvy;
// 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
// Re enabling the below lines requires to comment out drive->prepareDrive and uncommenting the lines relative to vector sum inside positionsys_camera and comment out the other lines here
// vx = ((speed * cosins[dir])) + CURRENT_DATA_READ.addvx;
// vy = ((-speed * sins[dir])) + CURRENT_DATA_READ.addvy;
vx = ((speed * cosins[dir]));
vy = ((-speed * sins[dir]));
if((((vy < 0 && vxn == 1) || (vy > 0 && vxp == 1) || (vx < 0 && vyp == 1) || (vx > 0 && vyn == 1)) && canUnlock) || (millis() > this->unlockTime+UNLOCK_THRESH)) {
vxn = 0;
@ -84,7 +88,7 @@ void DriveController::drive(int dir, int speed, int tilt){
speed3 = -(speed1);
speed4 = -(speed2);
// calcola l'errore di posizione rispetto allo 0
// Calculate position error relative to the 0
delta = CURRENT_DATA_READ.IMUAngle;
if(delta > 180) delta = delta - 360;

View File

@ -118,13 +118,16 @@ void PositionSysCamera::CameraPID(){
int speed = map(dist*DIST_MULT, 0, MAX_DIST, 0, 350);
drive->prepareDrive(dir, speed, 0);
//Disable below lines for now because they probably result in unexpected behaviour on lines. Re enabling them requires to comment out the drive->prepareDrive above
//and check the notes in drivecontroller for the other stuff to comment and uncomment
//TODO: add complementary filter on this speed if we keep using it
// vx = ((speed * cosins[dir]));
// vy = ((-speed * sins[dir]));
vx = ((speed * cosins[dir]));
vy = ((-speed * sins[dir]));
CURRENT_DATA_WRITE.addvx = vx;
CURRENT_DATA_WRITE.addvy = vy;
// CURRENT_DATA_WRITE.addvx = vx;
// CURRENT_DATA_WRITE.addvy = vy;
}
}