Paso 11: Girar hacia atrás
Mover el robot hacia adelante y hacia atrás no es suficiente si queremos evitar obstáculos. Es el resultado preferido por el robot detectar el obstáculo, girar en otra dirección y continuar a pie. Naturalmente, sólo podría respaldar y vuelta después de eso, pero la vuelta sería más eficiente si el robot retrocede primero a la derecha y luego gira a la izquierda que el robot puede girar a la derecha camina hacia atrás si modifica el punto central del servo y los niveles de umbral un poco hacia el lado derecho. Esto también cambiará el equilibrio del robot, que puede conducir fácilmente a una de sus patas delanteras levantándose más alto que el otro. Puede solucionar este problema agregando un poco de movimiento a la pierna baja, levantándolo en el aire:
La nueva función de moveBackRight() es similar a la función moveBack() en
el ejemplo anterior.
1. el movimiento del servo posterior se reduce en 6 grados, que trasladará su punto centro a la derecha. Como mencionamos anteriormente, la posición del servo trasero cambiado probablemente cambiará el equilibrio del robot entero. Para tener en cuenta esto, le añadimos 9 grados al valor frontLeftUp. Si cualquiera de las piernas de su propio robot queda en el aire o fricción, puede aumentar o disminuir estos valores según sea necesario.
// walkerTurnBackward.pde - Two servo walker. Turn backward. #include Servo frontServo; Servo rearServo; int centerPos = 90; int frontRightUp = 72; int frontLeftUp = 108; int backRightForward = 75; int backLeftForward = 105; void moveBackRight() 1 { frontServo.write(frontRightUp); rearServo.write(backRightForward-6); delay(125); frontServo.write(centerPos); rearServo.write(centerPos-6); delay(65); frontServo.write(frontLeftUp+9); rearServo.write(backLeftForward-6); delay(125); frontServo.write(centerPos); rearServo.write(centerPos); delay(65); } void setup() { frontServo.attach(2); rearServo.attach(3); } void loop() { moveBackRight(); delay(150); //time between each step taken, speed of walk }