Taula de continguts:

Vehicle autònom: 7 passos (amb imatges)
Vehicle autònom: 7 passos (amb imatges)

Vídeo: Vehicle autònom: 7 passos (amb imatges)

Vídeo: Vehicle autònom: 7 passos (amb imatges)
Vídeo: Основные ошибки при возведении перегородок из газобетона #5 2024, De novembre
Anonim
Vehicle autònom
Vehicle autònom
Vehicle autònom
Vehicle autònom

Aquest projecte és un robot de navegació autònoma que intenta assolir la seva posició d’objectiu tot evitant obstacles al seu pas. El robot estarà equipat amb un sensor LiDAR que s’utilitzarà per detectar objectes al seu entorn. A mesura que es detectin objectes i el robot es mogui, s'actualitzarà un mapa en temps real. El mapa s’utilitzarà per desar les ubicacions d’obstacles identificats. D'aquesta manera, el robot no tornarà a intentar un camí fallit cap a la posició de l'objectiu. En lloc d'això, intentarà camins que no tinguin obstacles o camins que encara no s'hagin comprovat si hi ha obstacles.

El robot es mourà mitjançant dues rodes motores de corrent continu i dues rodes amb rodes. Els motors s’adheriran a la part inferior d’una plataforma circular. Els motors estaran controlats per dos conductors de motor. Els controladors de motor rebran ordres PWM del processador Zynq. Tots els codificadors de cada motor s’utilitzen per fer un seguiment de la posició i orientació dels vehicles. Tot el sistema tindrà una bateria LiPo.

Pas 1: Muntatge del vehicle

Muntatge del vehicle
Muntatge del vehicle
Muntatge del vehicle
Muntatge del vehicle
Muntatge del vehicle
Muntatge del vehicle
Muntatge del vehicle
Muntatge del vehicle

El robot és alimentat per dos motors connectats a les rodes laterals i, a continuació, està recolzat per dues rodes de rodes, una a la part davantera i una a la part posterior. La plataforma i els suports del motor estaven fets amb xapa d'alumini. Es va comprar un hub del motor per fixar les rodes al motor. No obstant això, calia fer un acoblament intermedi personalitzat perquè el patró de forat del cub era diferent del patró de forats de la roda.

El motor seleccionat va ser un motor Port Escap de 12V CC amb codificadors incorporats. Aquest motor es pot comprar a ebay a un preu molt raonable (vegeu la llista de materials). Cerqueu paraules clau "12V Escap 16 Coreless Geared DC Motor amb codificadors" a ebay per trobar el motor. Normalment hi ha una bona quantitat de venedors per triar. Les especificacions i els pinouts dels motors es mostren als diagrames següents.

El muntatge del robot va començar amb un disseny CAD del xassís. El model següent mostra la vista superior del perfil de forma 2D dissenyat per al xassís.

Es suggereix que el xassís es dissenyi com un perfil 2D perquè es pugui fabricar fàcilment. Tallem una làmina d'alumini de 12 "X12" en forma de xassís mitjançant un tallador de raig d'aigua. La plataforma del xassís també es podria tallar amb una serra de cinta.

Pas 2: muntatge de motors

Muntatge de motors
Muntatge de motors
Muntatge de motors
Muntatge de motors

El següent pas és fer els muntatges del motor. Es recomana que els muntatges del motor siguin fets d'alumini de xapa de 90 graus. Mitjançant aquesta part, el motor es pot fixar en voladís en una cara de la xapa mitjançant les dues

Els forats M2 del motor i l'altra cara es poden cargolar a la plataforma. Els forats s’han de perforar al suport del motor de manera que es puguin utilitzar cargols per subjectar el motor al suport del motor i el suport del motor a la plataforma. El muntatge del motor es pot veure a la figura anterior.

A continuació, es posa el cub del motor Pololu (vegeu la llista de materials) a l’eix del motor i es tensa amb el cargol de fixació i la clau Allen proporcionats. El patró de forats del hub del motor Pololu no coincideix amb el patró de forats de la roda VEX, de manera que s’ha de fer un acoblament intermedi personalitzat. Es suggereix que la xapa d'alumini usada per fabricar la plataforma del xassís s'utilitzi per fabricar l'acoblament. El dibuix i les dimensions d’aquesta parella es mostren a la figura següent. El diàmetre exterior i la forma (no ha de ser un cercle) de l’acoblador d’alumini personalitzat no tenen importància sempre que s’adaptin tots els forats de la peça.

Pas 3: Creació del disseny de blocs Vivado

Creació del disseny de blocs Vivado
Creació del disseny de blocs Vivado
Creació del disseny de blocs Vivado
Creació del disseny de blocs Vivado

- Comenceu creant un nou projecte Vivado i seleccioneu el Zybo Zynq 7000 Z010 com a dispositiu de destinació.

- A continuació, feu clic a Crea un nou disseny de blocs i afegiu la IP de Zynq. Feu doble clic a la IP de Zynq i importeu la configuració XPS proporcionada per a Zynq. A continuació, activeu UART0 amb MIO 10..11 a la pestanya Configuracions MIO i assegureu-vos que el temporitzador 0 i el temporitzador Watchdog estan activats.

- Afegiu dos AXI GPIOS al disseny del bloc. Per a GPIO 0, activeu el doble canal i configureu tots dos a totes les sortides. Definiu l'amplada GPIO per al canal d'1 a 4 bits i per al canal de 2 a 12 bits, aquests canals s'utilitzaran per establir la direcció del motor i enviar la quantitat de paparres que mesura el codificador al processador. Per a GPIO 1, configureu només un canal a totes les entrades amb un ample de canal de 4 bits. S’utilitzarà per rebre dades dels codificadors. Feu que tots els ports GPIO siguin externs.

- A continuació, afegiu dos temporitzadors AXI. Feu que els ports pwm0 dels dos temporitzadors siguin externs. Aquests seran els PWM que controlen la velocitat en què giren els motors.

- Finalment, executeu l’automatització de blocs i l’automatització de la connexió. Verifiqueu que el disseny del bloc que tingueu coincideixi amb el proporcionat.

Pas 4: Comunicació amb el LiDAR

Aquest LiDAR utilitza un protocol SCIP 2.0 per comunicar-se mitjançant UART; el fitxer adjunt descriu tot el protocol.

Per comunicar-nos amb el LiDAR utilitzarem UART0. El LiDAR retorna 682 punts de dades que representen cadascun la distància a un objecte en aquest angle. El LiDAR escaneja en sentit antihorari de -30 a 210 graus amb un pas de 0,351 graus.

- Tota la comunicació al LiDAR es fa amb caràcters ASCI, consulteu el protocol SCIP per al format utilitzat. Comencem enviant l’ordre QT per activar el LiDAR. A continuació, enviem l'ordre GS diverses vegades sol·licitant 18 punts de dades a la vegada a ft al FIFO de 64 bytes de UARTS. Les dades retornades del LiDAR s’analitzen i s’emmagatzemen a la matriu global SCANdata.

- Cada punt de dades emmagatzemat té 2 bytes de dades codificades. En passar aquestes dades al descodificador, es tornarà una distància en mil·límetres.

Al fitxer main_av.c trobareu les funcions següents per comunicar-vos amb el LiDAR

sendLIDARcmd (ordre)

- Això enviarà la cadena d'entrada al LiDAR mitjançant UART0

recvLIDARdata ()

- Això rebrà dades després d'enviar una ordre al LiDAR i emmagatzemarà les dades al RECBuffer

requestDistanceData ()

- Aquesta funció enviarà una sèrie d'ordres per recuperar els 682 punts de dades. Després de rebre cada conjunt de 18 punts de dades, es crida parseLIDARinput () per analitzar les dades i emmagatzemar-los de manera incremental a SCANdata.

Pas 5: poblar la xarxa amb obstacles

Reixa poblada amb obstacles
Reixa poblada amb obstacles
Reixa poblada amb obstacles
Reixa poblada amb obstacles

El GRID que s’emmagatzema és una matriu 2D amb cada valor d’índex que representa una ubicació. Les dades emmagatzemades a cada índex són un 0 o un 1, sense obstacle ni obstacle respectivament. La distància quadrada en mil·límetres que representa cada índex es pot canviar amb la definició GRID_SCALE del fitxer vehicle.h. La mida de la matriu 2D també es pot variar per permetre al vehicle escanejar una àrea més gran modificant la definició GRID_SIZE.

Després d'escanejar un nou conjunt de dades de distància, des de LiDAR s'anomena updateGrid (). Això recorrerà tots els punts de dades emmagatzemats a la matriu SCANdata per determinar quins índexs de la quadrícula tenen obstacles. Mitjançant l’orientació actual del vehicle podem determinar l’angle que correspon a cada punt de dades. Per determinar on es troba un obstacle, simplement multipliqueu la distància corresponent per cos / sin de l'angle. Si afegiu aquests dos valors a la posició actual de vehicles x, tornareu l’índex a la quadrícula de l’obstacle. Dividir la distància retornada per aquesta operació pel GRID_SCALE ens permetrà variar la mida de la distància quadrada de cada índex.

Les imatges anteriors mostren l'entorn actual dels vehicles i la quadrícula resultant.

Pas 6: Comunicació amb motors

Per comunicar-nos amb els motors, comencem inicialitzant els GPIO per controlar la direcció en què gira el motor. A continuació, escriure directament a l’adreça base dels PWM del temporitzador AXI ens permet establir coses com el període i el cicle de treball que controlen directament el velocitat en què gira el motor.

Pas 7: planificació de camins

S’implementarà en un futur proper.

Utilitzant la funcionalitat de la xarxa i del motor descrits anteriorment, és molt fàcil implementar algoritmes com A *. A mesura que el vehicle es mogui, continuarà escanejant la zona circumdant i determinarà si el camí pel qual continua és vàlid

Recomanat: