Tabla de contenido:
- Paso 1: Montaje del vehículo
- Paso 2: Montaje de motores
- Paso 3: Creación del diseño de bloques de Vivado
- Paso 4: comunicarse con el LiDAR
- Paso 5: poblar la cuadrícula con obstáculos
- Paso 6: comunicación con motores
- Paso 7: planificación de la ruta
Video: Vehículo autónomo: 7 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
Este proyecto es un robot de navegación autónoma que intenta alcanzar su posición objetivo evitando obstáculos en su camino. El robot estará equipado con un sensor LiDAR que se utilizará para detectar objetos en su entorno. A medida que se detectan objetos y el robot se mueve, se actualiza un mapa en tiempo real. El mapa se utilizará para guardar las ubicaciones de los obstáculos que se han identificado. De esta forma, el robot no volverá a intentar un camino fallido hacia la posición de destino. En su lugar, intentará caminos que no tengan obstáculos o caminos que aún no hayan sido revisados en busca de obstáculos.
El robot se moverá mediante dos ruedas impulsadas por un motor de CC y dos ruedas giratorias. Los motores se conectarán a la parte inferior de una plataforma circular. Los motores estarán controlados por dos controladores de motor. Los controladores del motor recibirán comandos PWM del procesador Zynq. Todos los codificadores de cada motor se utilizan para realizar un seguimiento de la posición y orientación de los vehículos. Todo el sistema se alimentará con una batería LiPo.
Paso 1: Montaje del vehículo
El robot es impulsado por dos motores conectados a las ruedas laterales y luego es apoyado adicionalmente por dos ruedas giratorias, una en la parte delantera y otra en la parte trasera. Los soportes de la plataforma y del motor estaban hechos de chapa de aluminio. Se compró un cubo de motor para sujetar las ruedas al motor. Sin embargo, era necesario fabricar un acoplador intermedio personalizado porque el patrón de agujeros del cubo era diferente al patrón de agujeros de la rueda.
El motor seleccionado fue un motor Port Escap 12V DC con codificadores incorporados. Este motor se puede comprar en eBay por un precio muy razonable (consulte la Lista de materiales). Busque las palabras clave “Motor DC con engranajes sin núcleo 12V Escap 16 con codificadores” en ebay para encontrar el motor. Por lo general, hay una buena cantidad de vendedores para elegir. Las especificaciones y los pines de los motores se muestran en los siguientes diagramas.
El montaje del robot comenzó con un diseño de modelo CAD del chasis. El siguiente modelo muestra la vista superior del perfil de forma 2D diseñado para el chasis.
Se sugiere que el chasis se diseñe como un perfil 2D para que se pueda fabricar fácilmente. Cortamos una hoja de aluminio de 30 x 30 cm (30 x 30 cm) en la forma del chasis usando un cortador de chorro de agua. La plataforma del chasis también se puede cortar con una sierra de cinta.
Paso 2: Montaje de motores
El siguiente paso es hacer los soportes del motor. Se sugiere que los soportes del motor estén hechos de chapa de aluminio de 90 grados. Usando esta pieza, el motor se puede unir en voladizo en una cara de la chapa usando los dos
Los orificios M2 del motor y la otra cara se pueden atornillar a la plataforma. Se deben perforar orificios en el soporte del motor para que los tornillos se puedan usar para sujetar el motor al soporte del motor y el soporte del motor a la plataforma. El soporte del motor se puede ver en la figura anterior.
A continuación, se coloca el cubo del motor Pololu (consulte la lista de materiales) en el eje del motor y se aprieta con el tornillo de fijación y la llave Allen provistos. El patrón de orificios del cubo del motor Pololu no coincide con el patrón de orificios de la rueda VEX, por lo que se debe hacer un acoplador intermedio personalizado. Se sugiere que la chapa de aluminio de desecho utilizada para hacer la plataforma del chasis se use para hacer el acoplador. El patrón de orificios y las dimensiones de este par se muestran en la siguiente figura. El diámetro exterior y la forma (no es necesario que sea un círculo) del acoplador de aluminio personalizado no importa siempre que todos los orificios encajen en la pieza.
Paso 3: Creación del diseño de bloques de Vivado
- Comience creando un nuevo proyecto Vivado y seleccione el Zybo Zynq 7000 Z010 como dispositivo de destino.
- A continuación, haga clic en crear nuevo diseño de bloque y agregue la IP de Zynq. Haga doble clic en la IP de Zynq e importe la configuración XPS proporcionada para Zynq. Luego habilite UART0 con MIO 10..11 en la pestaña de configuraciones MIO, y también asegúrese de que el temporizador 0 y el temporizador Watchdog estén habilitados.
- Agregue dos AXI GPIOS al diseño del bloque. Para GPIO 0, habilite el canal dual y configure ambos en todas las salidas. Establezca el ancho de GPIO para el canal 1 en 4 bits y para el canal 2 en 12 bits, estos canales se utilizarán para establecer la dirección del motor y enviar la cantidad de ticks que mide el codificador al procesador. Para GPIO 1, configure solo un canal para todas las entradas con un ancho de canal de 4 bits. Esto se utilizará para recibir datos de los codificadores. Haga que todos los puertos GPIO sean externos.
- Siguiente Agregue dos temporizadores AXI. Haga que los puertos pwm0 en ambos temporizadores sean externos. Estos serán los pwms que controlan la velocidad a la que giran los motores.
- Finalmente, ejecute la automatización del bloque y la automatización de la conexión. Verifique que el diseño de bloque que tiene coincida con el proporcionado.
Paso 4: comunicarse con el LiDAR
Este LiDAR utiliza un protocolo SCIP 2.0 para comunicarse a través de UART, el archivo adjunto describe el protocolo completo.
Para comunicarnos con el LiDAR usaremos UART0. El LiDAR devuelve 682 puntos de datos, cada uno de los cuales representa la distancia a un objeto en ese ángulo. El LiDAR escanea en sentido antihorario desde -30 grados a 210 grados con un paso de 0,351 grados.
- Toda la comunicación al LiDAR se realiza con caracteres ASCI, consulte el protocolo SCIP para el formato utilizado. Comenzamos enviando el comando QT para encender el LiDAR. Luego enviamos el comando GS varias veces solicitando 18 puntos de datos a la vez para colocarlos en el UARTS FIFO de 64 bytes. Los datos devueltos por LiDAR luego se analizan y almacenan en la matriz global SCANdata.
- Cada punto de datos almacenado son 2 bytes de datos codificados. Pasar estos datos al decodificador devolverá una distancia en milímetros.
En el archivo main_av.c encontrará las siguientes funciones para comunicarse con el LiDAR
sendLIDARcmd (comando)
- Esto enviará la cadena de entrada al LiDAR a través del UART0
recvLIDARdata ()
- Esto recibirá datos después de que se haya enviado un comando al LiDAR y almacenará los datos en el RECBuffer
requestDistanceData ()
- Esta función enviará una serie de comandos para recuperar los 682 puntos de datos. Después de recibir cada conjunto de 18 puntos de datos, se llama a parseLIDARinput () para analizar los datos y almacenarlos de forma incremental en SCANdata.
Paso 5: poblar la cuadrícula con obstáculos
La GRID que se almacena es una matriz 2D con cada valor de índice que representa una ubicación. Los datos almacenados en cada índice son 0 o 1, sin obstáculo y obstáculo respectivamente. La distancia cuadrada en milímetros que representa cada índice se puede cambiar con la definición GRID_SCALE en el archivo vehicle.h. El tamaño de la matriz 2D también se puede variar para permitir que el vehículo escanee un área más grande modificando la definición GRID_SIZE.
Después de escanear un nuevo conjunto de datos de distancia desde LiDAR, se llama a updateGrid (). Esto iterará a través de cada punto de datos almacenado en la matriz SCANdata para determinar qué índices de la cuadrícula tienen obstáculos. Usando la orientación actual del vehículo podemos determinar el ángulo que corresponde a cada punto de datos. Para determinar dónde está un obstáculo, simplemente multiplique la distancia correspondiente por cos / sin del ángulo. La suma de estos dos valores a la posición xey actual del vehículo devolverá el índice en la cuadrícula del obstáculo. Dividir la distancia devuelta por esta operación por GRID_SCALE nos permitirá variar el tamaño de la distancia al cuadrado de cada índice.
Las imágenes de arriba muestran el entorno actual de los vehículos y la cuadrícula resultante.
Paso 6: comunicación con motores
Para comunicarnos con los motores, comenzamos inicializando los GPIO para controlar la dirección en la que gira el motor. Luego, escribir directamente en la dirección base de los PWM en el temporizador AXI nos permite establecer cosas como el período y el ciclo de trabajo que controlan directamente el velocidad a la que gira el motor.
Paso 7: planificación de la ruta
Se implementará en un futuro próximo.
Utilizando la función de red y motor descrita anteriormente, es muy fácil implementar algoritmos como A *. A medida que el vehículo se mueve, continuará escaneando el área circundante y determinar si la ruta en la que se encuentra sigue siendo válida.
Recomendado:
Vehículo Super FAST RC Ground Effect (Ekranoplan): 5 pasos (con imágenes)
Vehículo RC Súper RÁPIDO con efecto de suelo (Ekranoplan): ¿Sabes cómo, durante el aterrizaje, los aviones se ciernen unos pocos pies sobre el suelo durante un tiempo antes de que sus ruedas lleguen a la pista? Esto no es solo para brindar a los pasajeros un aterrizaje suave, sino que también es el resultado natural del efecto suelo, en el que
Llavero de escape de vehículo de emergencia: 11 pasos (con imágenes)
Llavero de escape de vehículo de emergencia: accidentes automovilísticos. ¡Ay! La mejor forma de evitar un accidente es utilizar técnicas de conducción segura y prestar siempre atención al lugar al que se dirige y a los demás vehículos que le rodean. Sin embargo, a pesar de sus mejores esfuerzos, no tiene el control de otras unidades
Vehículo robótico autónomo para principiantes con prevención de colisiones: 7 pasos
Vehículo robótico autónomo para principiantes con prevención de colisiones: ¡Hola! Bienvenido a mi Instructable para principiantes sobre cómo hacer su propio vehículo robótico autónomo con prevención de colisiones y navegación GPS. Arriba hay un video de YouTube que muestra el robot. Es un modelo para demostrar cómo una autonomía real
TripComputer - Computadora de viaje con GPS y módulo meteorológico para su vehículo: 11 pasos (con imágenes)
TripComputer - Computadora de viaje con GPS y módulo meteorológico para su vehículo: un proyecto de frambuesa pi genial que utiliza el módulo de ruptura de GPS y 2 pequeñas pantallas Digole para tener una computadora de navegación en su tablero
KEVIN el vehículo autónomo completo: 17 pasos (con imágenes)
KEVIN, el Vehículo Autónomo Completo: Este es Kevin. Es un automóvil controlado por radio con capacidad para realizar una conducción completamente autónoma. Mi primer objetivo fue hacer un vehículo autónomo controlado por Arduino. Así que compré chasis chinos baratos. Pero fue terrible porque no pude adjuntar ninguna c