Aquí hay algunos problemas con los giroscopios con los que aún debes lidiar.
- Retraso. La lectura del giróscopo va por detrás del movimiento real. Si, por ejemplo, está girando y esperando una lectura de 90 grados antes de detener el movimiento, estará más allá de los 90 grados después de detenerse, a menos que se esté moviendo muy lentamente.
- Precisión. El giroscopio solo lee en incrementos de 1 grado y tampoco es muy preciso (repetible).
- "Compensación". A medida que su algoritmo giroscópico procesa, la corrección de dirección restaurará el rumbo, pero es posible que ya no esté en la misma ruta lineal. Digamos que su robot tiene un sesgo hacia la izquierda. A medida que se desvía del rumbo hacia la izquierda y el algoritmo giroscópico se corrige de nuevo a la derecha, es posible que vuelva al rumbo correcto, pero su camino ahora está ligeramente a la izquierda de donde comenzó. Harás zig-zag así hasta el final.
Si puedes lidiar con esos problemas, tu idea de algoritmo es sólida. Pero puede encontrar que Move Steer y Move Tank son más precisos. Realmente depende de la situación.
He escrito bloques que usan el giroscopio para establecer el rumbo del movimiento, pero no para los giros en el lugar. Los giros en el lugar se vuelven muy difíciles por el problema del retraso, a menos que esté dispuesto a hacer todos los giros a la misma velocidad y use un valor de compensación simple para compensar (es decir, detener los motores a 86 grados, generalmente se detiene a 90).
Con mi bloque "Move Gyro", ni siquiera necesito ejecutar un movimiento de giro explícito, puedo decir "mover 10 pulgadas con rumbo 0 grados, luego 10 pulgadas con rumbo 90 grados, el El algoritmo gyro hace el giro automáticamente (y bastante rápido) a medida que avanza. Estará cerca, pero el resultado no será exactamente de 10 pulgadas en ambas direcciones.
EDIT
Después de volver a leer su pregunta, es posible que esté un poco fuera de lugar o simplemente no tenga claro lo que está preguntando. El uso de Move-Steer o Move-Tank depende de lo que esté tratando de hacer .
Para girar sin conducir hacia adelante, puede utilizar Move-Tank o Move-Steer hasta alcanzar el ángulo de giro deseado. Move-Tank debe pivotar principalmente en su lugar alrededor del punto medio entre las ruedas motrices. Un giro Move-Steer sin conducir hacia adelante requeriría una entrada de giro máxima que debería mantener una rueda sin motor. Esto se llama giro de pivote y probablemente se ejecute mejor operando los 2 motores de forma independiente. Apague un motor y aplique el freno, luego encienda el otro motor hasta que realice el giro deseado. Probablemente pueda hacer esto con la misma precisión sin el giróscopo. En un giro de pivote, una rueda se mueve a lo largo de un arco. La longitud de este arco para un ángulo de giro dado se puede calcular en función de la distancia entre las ruedas motrices (trayectoria de las ruedas) y la circunferencia de las ruedas. Por lo tanto, bloquee un motor, conduzca el otro motor la distancia necesaria para viajar a lo largo del arco. Si no le gusta la geometría, publique una nueva pregunta para las matemáticas sobre eso.
Para avanzar a lo largo de un rumbo de giro, la idea de su algoritmo es buena, excepto por mi punto en el punto 3 anterior. Pero si su robot rastrea bien, ese desplazamiento debería ser menor.