Skip to content

Instantly share code, notes, and snippets.

@LiorB-D
Created July 15, 2022 10:39
Show Gist options
  • Save LiorB-D/3e57aa986651d96b3287f6c37339a302 to your computer and use it in GitHub Desktop.
Save LiorB-D/3e57aa986651d96b3287f6c37339a302 to your computer and use it in GitHub Desktop.
cars.forEach((car) => {
//Draw car
//Draw Wheels
fill("black");
strokeWeight(0);
ellipse(
car.x + (carDi / 2) * cos(car.angle + PI / 4),
car.y + (carDi / 2) * sin(car.angle + PI / 4),
carDi / 2.5
);
ellipse(
car.x + (carDi / 2) * cos(car.angle - PI / 4),
car.y + (carDi / 2) * sin(car.angle - PI / 4),
carDi / 2.5
);
ellipse(
car.x + (carDi / 2) * cos(car.angle + 0.75 * PI),
car.y + (carDi / 2) * sin(car.angle + 0.75 * PI),
carDi / 2.5
);
ellipse(
car.x + (carDi / 2) * cos(car.angle - 0.75 * PI),
car.y + (carDi / 2) * sin(car.angle - 0.75 * PI),
carDi / 2.5
);
//Draw Car Base
fill("blue");
stroke("black");
strokeWeight(1);
ellipse(car.x, car.y, carDi);
//Draw Eye
fill("yellow");
ellipse(car.eyeX, car.eyeY, carDi / 3);
// Car Behavior
if (car.dead == false && car.ptInObst(car.x, car.y) == false) { // Make sure car is alive
car.updatePos();
//Make Decision
//Get obstacle detection distances
let inputs = tf.tensor2d([car.getCollisDist()]);
// Predict the value
let decArr = car.model.predict(inputs).dataSync();
//Adjust angle and velocity based on outputs
car.v += 0.1 * decArr[0]; // Accelerate
car.v -= 0.2 * decArr[1]; // Brake
car.angle -= 0.1 * decArr[2]; // Turn Left
car.angle += 0.1 * decArr[3]; // Turn Right
} else{
car.dead = true // Kill the car if it is in obstacle
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment