Autonomous Vernie roaming example
This commit is contained in:
parent
caf2263ea0
commit
5a820c0532
@ -19,6 +19,32 @@ const Modes = {
|
||||
}
|
||||
|
||||
|
||||
const turnRight = async (vernie, multiplier = 1) => {
|
||||
await vernie.wait([
|
||||
vernie.setMotorAngle("A", 300 * multiplier, 50),
|
||||
vernie.setMotorAngle("B", 300 * multiplier, -50)
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
const turnHeadRight = async (vernie, multiplier = 1) => {
|
||||
await vernie.setMotorAngle("D", 35 * 1, 20);
|
||||
}
|
||||
|
||||
|
||||
const turnLeft = async (vernie, multiplier = 1) => {
|
||||
await vernie.wait([
|
||||
vernie.setMotorAngle("A", 300 * multiplier, -50),
|
||||
vernie.setMotorAngle("B", 300 * multiplier, 50)
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
const turnHeadLeft = async (vernie, multiplier = 1) => {
|
||||
await vernie.setMotorAngle("D", 35 * 1, -20);
|
||||
}
|
||||
|
||||
|
||||
const scan = (vernie) => {
|
||||
return new Promise(async (resolve) => {
|
||||
let lastDistance = 0;
|
||||
@ -26,23 +52,20 @@ const scan = (vernie) => {
|
||||
lastDistance = distance;
|
||||
});
|
||||
await vernie.wait([
|
||||
vernie.setMotorAngle("A", 300, 50),
|
||||
vernie.setMotorAngle("B", 300, -50),
|
||||
vernie.setMotorAngle("D", 35, 20)
|
||||
turnRight(vernie),
|
||||
turnHeadRight(vernie)
|
||||
]);
|
||||
await vernie.sleep(1000);
|
||||
const rightDistance = lastDistance;
|
||||
await vernie.wait([
|
||||
vernie.setMotorAngle("A", 600, -50),
|
||||
vernie.setMotorAngle("B", 600, 50),
|
||||
vernie.setMotorAngle("D", 70, -20)
|
||||
turnLeft(vernie, 2),
|
||||
turnHeadLeft(vernie, 2)
|
||||
]);
|
||||
await vernie.sleep(1000);
|
||||
const leftDistance = lastDistance;
|
||||
await vernie.wait([
|
||||
vernie.setMotorAngle("A", 300, 50),
|
||||
vernie.setMotorAngle("B", 300, -50),
|
||||
vernie.setMotorAngle("D", 35, 20)
|
||||
turnRight(vernie),
|
||||
turnHeadRight(vernie)
|
||||
]);
|
||||
await vernie.sleep(1000);
|
||||
const forwardDistance = lastDistance;
|
||||
@ -60,9 +83,8 @@ poweredUP.on("discover", async (vernie) => { // Wait to discover Vernie
|
||||
await vernie.connect();
|
||||
console.log("Connected to Vernie!");
|
||||
vernie.setLEDColor(PoweredUP.Consts.Colors.BLUE);
|
||||
vernie.setMotorSpeed("AB", 50); // Start moving!
|
||||
|
||||
await vernie.sleep(1000);
|
||||
vernie.setMotorSpeed("AB", 50); // Start moving!
|
||||
|
||||
vernie.on("distance", async (port, distance) => {
|
||||
if (distance < 150 && mode === Modes.ROAMING) { // If we're roaming around and we detect an object in front of us, stop and scan
|
||||
@ -76,26 +98,24 @@ poweredUP.on("discover", async (vernie) => { // Wait to discover Vernie
|
||||
if (rightDistance >= forwardDistance && rightDistance >= leftDistance) {
|
||||
// Go right
|
||||
await vernie.wait([
|
||||
vernie.setMotorAngle("A", 300, 50),
|
||||
vernie.setMotorAngle("B", 300, -50),
|
||||
vernie.setMotorAngle("D", 35, 20)
|
||||
turnRight(vernie),
|
||||
turnHeadRight(vernie)
|
||||
]);
|
||||
await vernie.sleep(1000);
|
||||
await vernie.wait([
|
||||
vernie.setMotorSpeed("AB", 50),
|
||||
vernie.setMotorAngle("D", 35, -20)
|
||||
turnHeadLeft(vernie)
|
||||
]);
|
||||
} else if (leftDistance >= forwardDistance && leftDistance >= rightDistance) {
|
||||
// Go left
|
||||
await vernie.wait([
|
||||
vernie.setMotorAngle("A", 300, -50),
|
||||
vernie.setMotorAngle("B", 300, 50),
|
||||
vernie.setMotorAngle("D", 35, -20)
|
||||
turnLeft(vernie),
|
||||
turnHeadLeft(vernie)
|
||||
]);
|
||||
await vernie.sleep(1000);
|
||||
await vernie.wait([
|
||||
vernie.setMotorSpeed("AB", 50),
|
||||
vernie.setMotorAngle("D", 35, 20)
|
||||
turnHeadRight(vernie)
|
||||
]);
|
||||
} else {
|
||||
// Go forward
|
||||
|
Loading…
x
Reference in New Issue
Block a user