Robusteza uno mismo-equilibrio simple con Galileo Gen 2 (3 / 6 paso)

Paso 3: Software de Robot

Elijo hacer el esbozo de la robusteza en un solo archivo, que es un poco larga, pero pone todo en un solo lugar. En lugar de caminar a través de la línea por línea SW, sólo comentaré cómo está organizado, y lo que cada sección está enfocada.

El dibujo comienza con el encabezado del comentario estándar y biblioteca de archivos de inclusión. Documento del uso de pin de escudo en el comentario de cabecera para ayudar a mantenerme recto por la utilización de SW de los pernos. Define una estructura de datos que es utilizada por la función PID, con la idea de que esto sería más fácil agregar una segunda cascada velocidad PID más adelante.

A continuación están que las declaraciones de #define para constantes y comúnmente utilizan valores que pueden cambiarse convenientemente. Por ejemplo, una vez que determina lo que el óptimo P, I y D valores para tu robot, puede estar permanentemente recodificadas aquí. Luego vienen las definiciones de variables, que he tratado de agrupar de manera lógica - puede ser el juez de lo bien que hacía.

La sección siguiente contiene las funciones que se utilizan más adelante en el bosquejo. La primera función implementa el equilibrio PID. Este es el SW apalancado pesadamente de tutorial de Brett Beauregard. Dentro de la función PID es una sección para registrar la información de PID a la tarjeta SD si está habilitados el registro de datos. Mientras afina los valores PID, encontré instructivo y entretenido, para ver el comportamiento individual de término PID. Este guarda los datos en un archivo en formato CSV, que yo después importados a Excel y genera gráficas de visualización. Este todos obviamente funciona solo si tienes una SD tarjeta en el tablero de Galileo.

Esto es seguida por algunas funciones de control del motor que información de control del motor a los controles de dirección, velocidad y freno para el escudo del motor

El siguiente es una función para recuperar los datos de posición desde el módulo del MPU-6050. Robó esto con orgullo desde el código de referencia de Jeff Rowberg. Estoy usando un método de extracción de datos del intervalo de regular para transferencia de datos, más bien que usando interrupciones como Jeff, como tuve alguna dificultad el conseguir de las interrupciones para trabajar. El intervalo de tiempo se implementa en el bucle principal del programa, y que encontré un 3ms intervalo fue adecuado en asegurando que no había ningún desbordamiento de datos.

Luego pasamos a un conjunto de funciones para manejar la comunicación Bluetooth. Estos comienzan con unas cuantas funciones para enviar los comandos más complejos - se explotado en funciones principalmente para la legibilidad del código. Luego viene el analizador de comando principal de Bluetooth, que implementa el protocolo de comunicación de recibir con la aplicación para Android. Esta función acumula personajes del puerto serial Bluetooth hasta que se detecta el carácter fin de comando, y luego descifra el comando. Como era de esperar, el decode termina siendo sólo una gran declaración de caso.

La función final es la máquina de estado de control de alto nivel robot. He implementado el estilo de la finito--máquina de Estados (FSM) - probablemente overkill, pero prevé ampliar a esto se añaden funcionalidades al robot.

El siguiente es la función de configuración requerida por todos los bocetos de Arduino. Los comentarios en el código deben hacer esta sección bastante explica por sí mismo. Hay una sección que intenta inicializar el archivo de la SD para el registro de datos y si saca error si una tarjeta SD no está presente, pero no pasé mucho tiempo validar esto.

Finalmente, es el bucle principal del bosquejo. La primera sección implementa un temporizador de recuperación de datos desde la MPU-6050. Si se recuperan los datos, hay algunos cálculos para detectar si el robot está vertical o fuera de balance.

A continuación se comprueba el puerto serie conectado al módulo Bluetooth carácter recibido, y si uno está esperando, la función Bluetooth se llama.

Esto es seguido por el PID y el temporizador de control de motor. La instrucción "if" asegura que el control PID/motor sólo sucede cuando el robot está activamente tratando de equilibrar. Esto es donde los datos MPU_6050 se alimentación en el PID y la salida del PID se pasa sobre el control del motor. También es donde se implementa la dirección, añadiendo a la entrada de la dirección Bluetooth derivado a un motor y restando del otro. Porque estamos haciendo matemáticas adicional en la salida del PID, tenemos a otra vez restricción que limita el PID Máx/Min para mantener dentro de los valores PWM motor.

Finalmente se llama la máquina de estado de control de robot, y un temporizador se utiliza para implementar la función de golpe de corazón de robot. Empecé con un corazón separado beat Bluetooth comando y comando de voltaje de la batería, pero luego los combinó en una sola función, con la tensión que se envía como una indicación del latido del corazón.

Y es que - un poco largo aliento, pero nada demasiado complejo.

Artículos Relacionados

SainSmart InstaBots Rover vertical (uno mismo-equilibrio Robot con Arduino)

SainSmart InstaBots Rover vertical (uno mismo-equilibrio Robot con Arduino)

Rover vertical es una robusteza uno mismo-equilibrio que fue diseñada por SainSmart. Realmente hicieron simple. Como se puede ver, sólo hay 8 alambres en el robot y 8 alambres en el controlador. Así que vamos a averiguar cómo funciona!PIEZAS DE LA CA
Uno mismo-equilibrio Robot

Uno mismo-equilibrio Robot

En primer lugar que quiero pedir disculpas por mi inglés, si no entiendes algo, por favor, pregunte.Sé que una robusteza uno mismo-equilibrio no es nueva, pero cuando empecé este proyecto me encontré con un montón de información, pero nunca en el mis
Hacer un Robot con Arduino UNO de uno mismo-equilibrio

Hacer un Robot con Arduino UNO de uno mismo-equilibrio

Uno mismo-equilibrio Robot es muy interesante. Muchos amigos que nos rodean estaban tratando de hacer uno, pero encounted muchos desafíos, incluyendo la falta de las estructuras de fácil montaje, los circuitos electrónicos adecuados y los programas.
Construir un vehículo uno mismo-equilibrio con mDrawBot

Construir un vehículo uno mismo-equilibrio con mDrawBot

Tengo un mDrawBot de Makeblock hace unos días. Este kit de robot impresionante ahora es un proyecto kickstarter . Hoy transforme en un vehículo uno mismo-equilibrio con un módulo de MPU6050. Compruebe hacia fuera.Paso 1: El marco Sólo tres piezas, ba
Fácil construir uno mismo equilibrio monopatín eléctrico

Fácil construir uno mismo equilibrio monopatín eléctrico

¿Qué es?Doble ruedas patín que funciona como un Segway. Monopatines eléctricos ya existen con ruedas traseras motrices. Aquí era construir algo como un Segway pero en la forma de un patín. Sabe que es "hasta" mediante una combinación de giroscop
Uno mismo-equilibrio Raleigh Chopper inspirado vespa eléctrica

Uno mismo-equilibrio Raleigh Chopper inspirado vespa eléctrica

Como un ávido de "cosas que Seg" éste se inspira en la bicicleta Raleigh Chopper de los setenta.Recientemente participe en el concurso de Hackaday con el MediCycle: MediCycle se trataba de una moto eléctrica con ruedas grande una máquina de esti
Uno mismo-equilibrio monopatín/segw * y proyecto Arduino Shield

Uno mismo-equilibrio monopatín/segw * y proyecto Arduino Shield

Gescudo de Arduino de propósito general para autoequilibrarse máquinas.¿Por qué hacen?Previamente hice un Instructable en 2010 sobre cómo construir un monopatín uno mismo-equilibrio.Hay > 500 comentarios en este y muchos expresan creación de confusió
Arduino uno mismo-equilibrio regulador utilizando DIGITAL IMU, por fin!

Arduino uno mismo-equilibrio regulador utilizando DIGITAL IMU, por fin!

¿Qué es?Controlador DIY Segway/balance con un moderno sensor DIGITAL IMU.Software para un Arduino permite leer datos de la posición de una de las más nuevas unidades de acelerómetro/giroscopio DIGITAL, procesos de los datos mediante filtrado de Kalma
Uno mismo-equilibrio péndulo al revés

Uno mismo-equilibrio péndulo al revés

Este es mi intento en el péndulo invertido en equilibrio sobre un carro de dos ruedas chasis. Yo había visto los de aquí y fue inspirado a probar mi propia versión. El Arduino es maravillosamente simple de programar y se puede recoger en unas pocas h
Uno mismo-equilibrio PT (Segway casero)

Uno mismo-equilibrio PT (Segway casero)

Este Instructable pretende compartir mi proyecto de aficionado: un transporte Personal Self-Balancing (SBPT), también conocido como "Segway casero". Es un proyecto interesante que requiere un conocimiento mínimo de electrónica y algunas habilida
Hacer una calabaza de Halloween por uno mismo-equilibrio Robot

Hacer una calabaza de Halloween por uno mismo-equilibrio Robot

Calabaza es un símbolo típico de Halloween. Que siempre quisiste hacer una calabaza de a pie.Aquí les mostraré mi trabajo de utilizar un Robot de Self-balancing para moverse una calabaza brillante.Paso 1: preparación Lista de materiales principales:1
Uno mismo pote de riego bajo SGD $5

Uno mismo pote de riego bajo SGD $5

Me encanta las plantas, pero nunca duran conmigo.Siendo un habitante urbano, nuestro estilo de vida a veces es muy difícil cuidar de las plantas. Viaje rápido lejos de casa, usted sería volver a plantas sin vida cara.He estado buscando de ollas de ri
Cómo disparar timelapse video con Intel Galileo Gen 2

Cómo disparar timelapse video con Intel Galileo Gen 2

A continuación mostraremos cómo rodar un vídeo timelapse con el Galileo Gen 2 de Intel o de un tablero similar.Usaremos a un jack de 2,5 mm para conectar la placa a una réflex digital de Canon y luego controlar el obturador con nuestra Junta Directiv
Vespa de equilibrio del uno mismo Ver 1.0

Vespa de equilibrio del uno mismo Ver 1.0

después de ver el balanceo del patín, pensamos que sería construida una plataforma compensadora para probar la tecnología. Compramos algunos extremos traseros de vespa de los niños para el coche/motor de la rueda y la electrónica XenonJohn sugerido.U