Construir un brazo robótico para la Olimpíada de Ciencias (12 / 14 paso)

Paso 12: P.3, código: cinemática inversa y otros Bits de código

Falta manualmente tratando de averiguar los ángulos exactos requeridos para llevar el brazo a cada ubicación, cinemática inversa son la única manera de averiguar cómo posicionar los servos para llevar el brazo a una posición deseada. La matemática es trigonometría de nivel de secundaria, por lo que no cubrirlo aquí; Existen varias calculadoras en línea ayudarnos.

Al principio, hemos considerado incluir cálculos cinemáticos inversos en nuestro código Objective-C, pero esto resultó para ser una mala idea porque hay un montón de cálculos que hacer en la inicialización, y después de que termine de una vez, no es necesario repetirlos otra vez. Después de todo, el hecho de que los objetos no se mueven alrededor es la base de nuestro esquema de control. En cambio, nos duro código ángulos.

Una pieza muy importante del código es un método que ralentizará el brazo que acerca a su destino, en lugar de empujar todo el camino y esperando que no arranca oscilante (tal vez en un mundo ideal con ideal servos).

En primer lugar, damos una pausa la ejecución de una pequeña cantidad de tiempo para permitir que el servo mover el ángulo que les dan (la primera vez este método se llama, la voluntad del servo no pero estar en movimiento):

[NSThread sleepForTimeInterval:0.03];

Luego, comparamos el servo de posición angular actual a la posición final deseada - si se cierra bastante (que hemos definidos a 2 grados), luego definir la variable que almacena el ángulo actual igual a la posición final deseada (van a ver por qué esto tiene sentido en un momento):

Si (abs(targetAngle-angle) < = 2) {ángulo = targetAngle;}

Ahora, calcular una décima parte la diferencia entre el ángulo actual y el ángulo del objetivo - si el ángulo actual es igual al ángulo objetivo, devolverá cero:

doble diff = (targetAngle - ángulo) * 0.1;

Ahora, mover el servo a la posición angular actual además de la diferencia de una décima parte - si el ángulo actual es igual al ángulo objetivo, esto hará que el servo mover hasta el ángulo del objetivo:

[moveActualTo del:(angle + diff)];

Ver la descripción del vídeo a continuación para obtener una mejor comprensión de cómo cualquiera por qué se hace. Puede encontrar este código en el método de calculateChange en Motor.m, que se adjunta como parte de un fichero zip en el siguiente paso.

La primera versión de nuestro código utilizado el electroimán (esto es lo que nos llevó a regionales - el video fue tomado alrededor 6:00 del día, después de una visita para que funcione!) y parecía algo como esto:

Descripción del vídeo de YouTube:

"Se trata de la primera prueba completa de nuestro brazo robótico para la Olimpíada de Ciencias de Massachusetts. Tuvimos una de las coordenadas en nuestro programa (sí, resultó ser un problema de software - mucho mejor que un fallo aleatorio "MOSFET no se enciende"!), por lo que no pudo recoger uno de los clavos, pero llegamos corregido a tiempo para el evento regional de la tarde y ganó el primer lugar por un deslizamiento de tierra!

Uno de los problemas que teníamos antes (y que muchos de los equipos en regionales) fue oscilante servos y servos que se mueven demasiado rápido y el brazo del oscilación en trayectorias impredecibles. Para solucionar esto, escribimos un algoritmo que ralentiza los servos mientras se acercan a sus destinos finales, dándoles un flujo continuo de coordenadas que son exponencialmente más cerca y más cerca del ángulo del objetivo hasta el servo está dentro de un delta, generalmente uno o dos grados, de este ángulo y suficientemente cerca para sólo ir directamente allí. Cada iteración se calcula mediante la búsqueda de una décima parte del ángulo que el servo queda por viajar con el fin de completar el paso. En lugar de usar recursividad para que el método de cálculo de ángulo de llamar a sí mismo hasta que el paso es completo, que es la opción obvia, utilizamos un NSTimer en su propio hilo para no tener que agregar retrasos a nuestro programa para los cálculos de los servos (los servos moverse mucho más despacio que el ordenador puede escupir de ángulos).

La razón que utiliza decaimiento exponencial en lugar de simplemente ralentizado movimiento lineal es que el brazo actúa esencialmente como un oscilador armónico amortiguado (si asumimos que el término proporcional en regulador de PID interno del servo domina alrededor del punto de ajuste, que parece encajar lo que observé cuando estaba oscilando el brazo), por lo que si conducimos linealmente, que se empieza con energía cinética inicial una vez en el destino y oscilan alrededor de él en lugar de venir a una parada. La única solución (si insistimos en la conducción lineal) es frenar el brazo para reducir la amplitud de la oscilación hasta que consideramos aceptable, que no es deseable cuando se considera que se trata de una competencia de tiempo. En cambio, si fuerza el siguiente ángulo con un patrón exponencial que se decae, debe llegar con muy poca energía cinética, con error causado sólo por el hecho de que le estamos dando datos discretos.

Cada posición que los servos necesitan llegar a se calcula utilizando cinemática inversa y entonces regularse individualmente usando el modo manual de nuestro programa al estar tan correcta como sea posible. Una de las cosas que estamos trabajando en los Estados el próximo mes es control cinemática inversa en tiempo real que nos permitirá mover efectoras de fin de brazo en cualquier ruta de acceso exacta que queramos, en lugar de sólo hacia los servos cada ángulo uno a la vez como hacemos ahora.

Aunque sólo tenemos un electroimán y no un universal pinza o garra, con el cual recoger objetos (así nos obliga a dejar la mitad del tablero sin tocar), control automático significa este brazo son capaces de recoger objetos rápidamente y sin error humano, por lo que ponemos con éxito el 100% de los objetos que pretendemos colocar cada vez ejecute el brazo".

Artículos Relacionados

Brazo robótico para tanque autónomo

Brazo robótico para tanque autónomo

Recientemente he comprado un brazo robótico para montar en mi proyecto autónomo. No he podido encontrar ningún real tutoriales sobre cómo construir el brazo así que decidí hacer uno yo.El marco para el brazo se puede encontrar en eBay y generalmente
Cómo construir un brazo robótico

Cómo construir un brazo robótico

actualización: https://www.youtube.com/watch?v=BILiuqRmLRIdesea construir el controlador de ir a la aquíel video:http://www.youtube.com/watch?v=N9z7OQLlhrEhttp://www.youtube.com/watch?v=jozshuI246o&feature=youtu.behttp://www.youtube.com/watch?v=onQIz
Brazo robótico para personas con discapacidad

Brazo robótico para personas con discapacidad

brazo robótico en las estadísticasUn brazo mecánico es robótica, generalmente programable, con funciones similares a un brazo humano. Los enlaces de un manipulador de tal están conectados por uniones permitiendo el movimiento de rotación (tal como en
Trayectoria del aire para la Olimpíada de Ciencias

Trayectoria del aire para la Olimpíada de Ciencias

Mi hija de 13 años diseñó este proyecto para la competición de la Olimpíada de Ciencias . Aunque diseñado para cumplir con ciertos requisitos, es un buen proyecto para cualquier madre, 4H, actividad de Boy/Girl Scouts.Este fue el plan de mi hija; así
Pinza de brazo robótico para FRC Logomotion competencia

Pinza de brazo robótico para FRC Logomotion competencia

Hola a todos,Este es el primero de una serie de instructables.Para entender el origen de este instructable consulte el enlace de abajo:Concurso de robótica de FRC primera de este año - LogomitionEste instructable le mostrará cómo diseñar, fabricar y
Brazo robótico Trifecta (Olimpíada de Ciencias)

Brazo robótico Trifecta (Olimpíada de Ciencias)

)Bienvenida 2016 equipos de Olimpiada de ciencia! El brazo Robot está de vuelta y ¿estás listo para hacer algunos robots kick-culo? Por favor deja un comentario debajo de algo nos de mensajería para que la comunidad pueda crecer en su conjunto. Nos e
Brazo robótico Custom Actobotics

Brazo robótico Custom Actobotics

Hola a todos.El propósito de este proyecto es construir un brazo robótico custom con piezas de Servocity / Actobotics. Sé que hay un montón de tutoriales de brazo robótico hasta allí, pero mi propósito es construir un brazo de servicio pesado que pue
El control de un brazo robótico con el Kinect de Microsoft!

El control de un brazo robótico con el Kinect de Microsoft!

Rápidamente los robots son cada vez más integrado en nuestras vidas día a día. Limpiar nuestros suelos, nuestro café y se utilizan incluso para telepresencia. Ya que se están convirtiendo en tan vitales para la sociedad, ¿por qué no regalar a nuestro
Barato programable Arduino brazo robótico

Barato programable Arduino brazo robótico

Esto pretende ser una guía de cómo construir un brazo robótico de Arduino. Su concepto es ser barato y fácil de construir. Esto es sólo un prototipo para optimizar mi código, pero es perfecto empezar con la robótica Arduino. Es controlado por un joyp
Arduino brazo robótico controlado

Arduino brazo robótico controlado

Un brazo robótico es responsable de procesos muy complicados que requieren una programación rigurosa y compleja, soy un estudiante de ingeniería electrónico y he siempre me llamó la atención estos proyectos por lo que decidí "Quiero construir un braz
Brazo robótico de control con guantes, teléfono Android y Galileo de Intel (actualizado)

Brazo robótico de control con guantes, teléfono Android y Galileo de Intel (actualizado)

En realidad, este proyecto basado en otro proyecto que tengo construir antes. Sin embargo, en lugar de construir el brazo robótico y usando Arduino, usé mi amigo 6DOF brazo robótico y Galileo de Intel.Paso 1: componentes 1-Intel Galileo Gen 22 - 1She
Mente controla brazo robótico

Mente controla brazo robótico

Este es un proyecto que hice para mi entrada de Feria de Ciencias de Google. Si te gusta este Compruebe hacia fuera y voten por mi para cuando esté disponible.Este es un video de la mano siendo controlado por el cerebro de apertura y cierre:Más vídeo
BRAZO robótico de sexy eje 6

BRAZO robótico de sexy eje 6

Bien finalmente lo hice. Por último apretó el gatillo y comenzó a construir un brazo robótico de 5/6 ejes. Se trata de un proyecto así que por favor revise de vez en cuando para mirar el progreso y ofrecer alguna idea que tengas quien sabe yo solo po
Un multi-controlado alta precisión escritorio brazo robótico

Un multi-controlado alta precisión escritorio brazo robótico

Actualización: campaña de Dobot está disponible en kickstarter, y sólo desarrollaron una nueva pinza con alcance 1 mm - 45 mm y actualiza un proyecto de impresión 3D precisión superior, si usted está interesado en él, usted puede ir a su Página de ca