Inhoudsopgave:

Virtual Reality gecontroleerde RC auto - Ajarnpa
Virtual Reality gecontroleerde RC auto - Ajarnpa

Video: Virtual Reality gecontroleerde RC auto - Ajarnpa

Video: Virtual Reality gecontroleerde RC auto - Ajarnpa
Video: CVP - The recovery of the sunken Rc Marblehead Class Sailboat 2024, Juli-
Anonim
Image
Image

Heb je ooit willen worden gekrompen en een vaartuig als Innerspace of Fantastic Voyage besturen? Nou, ik denk dat dit zo dichtbij is als je op korte termijn gaat krijgen!

Hier is de toonhoogte:

Een real-life op afstand bestuurbare auto bestuurd vanuit een Virtual Reality-commandoconsole. Dit betekent dat je een VR-headset vastmaakt, een schakelaar op een RC-auto omdraait en vervolgens vanuit VR kunt besturen met live videofeed rechtstreeks naar je gezicht.

Er zijn drie dingen die ik heb geïmplementeerd en die je op de VR-auto kunt bedienen.

  1. Wielen
  2. Hoorn
  3. Lichten

Al deze hebben een soort knop of hendel in VR die je kunt omdraaien of schakelen om de auto te besturen.

Voor de volledige repo en meer info, bekijk mijn Github en mijn website!

Stap 1: Materialen en gereedschappen

Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen

Mechanisch:

Chassisset met vierwielaandrijving

Elektrisch:

  • Wielencoder
  • 3S 1300mAh-batterij
  • Arduino Uno
  • Arduino Motorschild
  • Piezo elektrische zoemer
  • Kleine LED
  • XT60-connectoren
  • Boost / Buck-omzetter

Computer:

  • Elk embedded computersysteem: Raspberry Pi, Jetson Nano, etc.
  • USB-camera (bij voorkeur - 180 graden camera)

Gereedschap / Extra:

  • Soldeerbout
  • Sommige VR-instellingen - ik heb de Oculus Rift
  • Multimeter

Stap 2: bouw auto

Auto bouwen
Auto bouwen
Auto bouwen
Auto bouwen
Auto bouwen
Auto bouwen

Het chassis voor de auto is super eenvoudig te bouwen. Je hoeft alleen de motoren aan het moederbord te bevestigen via de lipjes die ze je geven. Nadat je de wielen en motoren hebt bevestigd, heb je ook iets nodig om de camera aan de voorkant van de auto te bevestigen.

Ik gebruikte de kartonnen doos waarin de camera kwam om hem te monteren. Ik knipte een grote L-vorm uit en sneed een gat voor de camera om grondig te prikken. Daarna kun je de camera er gewoon doorheen steken en wat tape aan de achterkant plakken om hem op zijn plaats te houden. Als je wilt, kun je nu ook gaten maken voor je koplampen, of dat later doen bij het opmeten van de lengte van de draad.

U moet ook de wiel-encoder aan een van de wielen bevestigen. Het maakt niet uit welke, ik plaats hem op het linker achterwiel. U moet de magnetische schijf op de eigenlijke as van het wiel plaatsen en de encoder moet aan de auto ernaast worden bevestigd. Het is behoorlijk ontvankelijk, dus het hoeft er niet direct op te staan, maar zo dichtbij mogelijk. Ik heb mijn encoder vastgezet met tape en een ritssluiting. De encoder is wat we zullen gebruiken om de snelheid van onze auto te meten.

Stap 3: Soldeercircuits

Soldeercircuits
Soldeercircuits
Soldeercircuits
Soldeercircuits

Dit deel is nogal vervelend, maar niet ingewikkeld. Als je de afbeelding volgt en alles meet voordat je je draad doorknipt, valt het mee.

Terwijl u dit doet, moet u ook uw buck-converter kalibreren om de juiste spanning uit te voeren. De Raspberry Pi en Jetson Nano nemen beide 5v in, maar onze batterij is op 11,1v. We moeten er dus voor zorgen dat we onze elektronica niet frituren. Om dit te doen, sluit u uw batterij aan op de invoerzijde van de buck-converter. Terwijl de batterij is aangesloten, gebruikt u uw multimeter om de uitvoerzijde van de buck-converter te meten. Gebruik een kleine platte schroevendraaier om de potentiometer op de buck-converter te draaien totdat de uitgangsspanning 5v is. Als de output goed is, hoef je de potmeter niet meer te draaien.

Stap 4: Installeer afhankelijkheden op het ingebedde systeem

Afhankelijkheden installeren op ingebed systeem
Afhankelijkheden installeren op ingebed systeem

Niet te veel te doen hier, maar toch ontzettend belangrijk.

Zorg er eerst voor dat u verbinding maakt met de router die u gaat gebruiken, zodat deze vanaf nu automatisch verbinding kan maken.

Open vervolgens een terminal en typ het volgende in:

sudo apt update

sudo apt install openssh-server

sudo apt install python-pip pip install numpy pip install opencv-python pip install pyzmq

Zodra deze dingen zijn geïnstalleerd, moeten we ervoor zorgen dat, ongeacht op welke poort de arduino is aangesloten, deze altijd wordt herkend. We schrijven dus zogenaamde UDEV-regels. Dit zijn regels voor je besturingssysteem die bepalen wat er gebeurt als je dingen aansluit. We willen de arduino identificeren wanneer hij is aangesloten, en hem een naam geven om er toegang toe te krijgen. Die naam wordt "arduino_0". Om dit te doen, zullen we het interne serienummer van de Arduino gebruiken om het te identificeren.

udevadm info -a -n /dev/ttyUSB1 | grep '{serieel}' | hoofd -n1

Dit zal een waarde voor het serienummer uitspugen, ga je gang en kopieer die waarde.

We moeten dan een bestand met de naam "99-usb-serial.rules" bewerken (of maken als het niet bestaat). Dit bestand bevindt zich in het volgende bestandspad "/etc/udev/rules.d/99-usb-serial.rules". Zoals ik al zei, als dat bestand niet bestaat, maak het dan gewoon aan en plak het in de volgende regel met VALUE_FROM_ABOVE vervangen door uw waarde van eerder.

SUBSYSTEM=="tty", ATTRS{serial}=="VALUE_FROM_ABOVE", SYMLINK+="arduino_0"

Dit vertelt het besturingssysteem dat het arduino_0 moet worden genoemd wanneer het dit specifieke serienummer ziet.

Het laatste wat u hier moet doen, is de pushArucoVideoPullCommands.py downloaden en deze ergens gemakkelijk toegankelijk plaatsen. Ik zou de homedirectory voor je gebruiker aanraden, want daar komen we terecht als we later SSH naar het embedded systeem gaan.

Stap 5: Statisch IP-adres instellen

Statisch IP-adres instellen
Statisch IP-adres instellen

Nu is het deel waar iedereen van houdt, IP-adressering. Om dit project te laten werken, moet de code weten waar afbeeldingen en besturingsopdrachten naartoe moeten worden gestuurd, en dat betekent dat onze apparaten een statisch IP-adres nodig hebben.

Er zijn veel manieren om uw apparaat een statisch IP-adres toe te wijzen, maar omdat we een router hebben die ons grondstation en embedded systeem verbindt, kunnen we deze gebruiken om ons heel gemakkelijk specifieke IP-adressen te geven.

Navigeer naar het beheerdersgedeelte van uw router, meestal (voor de meeste routers) wordt dit gedaan door een webbrowser te openen en naar "192.168.1.1" te gaan. Het zal u vragen om in te loggen, en de typische standaard gebruikersnaam en wachtwoord voor de meeste routers is "admin".

Eenmaal daar, navigeer je naar iets dat 'DHCP-server' vermeldt. Dit is een proces dat op je router wordt uitgevoerd en bijhoudt welke apparaten ermee zijn verbonden via hun MAC-adres, dat altijd constant is. We willen de apparaten selecteren die we belangrijk vinden over, de grondstationcomputer en het embedded systeem, en voeg ze toe aan de gereserveerde clientsectie. Dit geeft ze een statisch ip wanneer ze zijn verbonden met deze router.

Zorg ervoor dat u het IP-adres van het Embedded System instelt op 192.168.1.122. Het IP-adres van het grondstation kan op alles worden ingesteld.

Stap 6: Upload code naar Arduino

Code uploaden naar Arduino
Code uploaden naar Arduino

Om de Arduino-code te uploaden, moeten we eerst een bibliotheek installeren om met het motorschild te werken.

Ga op uw Arduino IDE naar Sketch->Include Library->Manage Libraries… Zoek vervolgens naar Adafruit Motor Shield Library. Installeer deze bibliotheek en upload de code vervolgens naar je arduino, niets anders zou vereist moeten zijn.

Stap 7: Sluit circuits en computer aan op auto

Sluit circuit en computer aan op auto
Sluit circuit en computer aan op auto

Nu het circuit is gebouwd, is het tijd om alles op de auto te zetten. Ik ga niet liegen, veel van deze dingen worden gewoon vastgehouden met tape, want dat was voor mij het gemakkelijkst om heel snel in elkaar te slaan. Dat gezegd hebbende, heeft het montagegaten aangebracht zoals te zien is in de afbeelding hierboven.

De meeste dingen zijn vrij eenvoudig om gewoon ergens bovenop de auto te laten zitten, dus maak je geen zorgen als er niet veel ruimte is.

Stap 8: VR-omgeving instellen

VR-omgeving instellen
VR-omgeving instellen

Dit gedeelte zal er een beetje anders uitzien, afhankelijk van wat voor soort VR-opstelling je hebt. Hoe het ook zij, ik heb SteamVR gebruikt om deze software te ontwikkelen, dus het kan zijn dat je die moet hebben geïnstalleerd.

Zolang je SteamVR gebruikt, moeten de bedieningselementen zich aanpassen aan verschillende controllers. Ik heb de bedieningselementen toegewezen aan "Acties", niet noodzakelijkerwijs knoppen, dus in theorie zal het zich voor iedereen aanpassen.

Je hoeft alleen maar het bestand te downloaden en uit te pakken met de build Unity-wereld en klaar te zijn om de VR_Bot.exe uit te voeren.

Stap 9: voer het allemaal samen uit

Doe het allemaal samen
Doe het allemaal samen
Doe het allemaal samen
Doe het allemaal samen

Dus, nu we de auto hebben afgesteld en het grondstation allemaal aangesloten en klaar om te gaan, hoe laten we deze slechte jongen eigenlijk leiden? Welnu, vanuit het oogpunt van het grondstation hoeft u alleen maar het VR_Bot.exe-bestand uit te voeren dat we eerder zagen.

Tegelijkertijd moet u de batterij aansluiten op het Embedded System en het automatisch laten opstarten en verbinding maken met uw router. Zodra het is opgestart, SSH erin. Om hier toegang tot te krijgen, heb je een soort terminal op het grondstation nodig, ik raad GitBash aan.

SSH staat voor Secure Shell en is een protocol voor veilige toegang tot systemen op afstand. In ons geval geeft het ons toegang tot het ingebedde systeem vanaf het grondstation. Klik hier om meer te leren.

U moet de gebruikersnaam weten waarmee u uw embedded systeem instelt. Voor raspberry pi's is de standaard gebruikersnaam 'pi' en wachtwoord 'raspberry'.

Na de installatie opent u een terminal en typt u het volgende:

ssh {gebruikersnaam van geïntegreerd systeem}@192.168.1.122

Dit opent een terminal in het Embedded System.

Eenmaal daar, hoef je alleen maar het python-script uit te voeren dat we eerder hebben gekopieerd.

python /path/to/pushArucoVideoPullCommands.py

Nadat u dat hebt gedaan, begint het Embedded System beelden uit te pompen en opdrachten van en naar het grondstation te ontvangen.

Je bent dan goed om te beginnen met rijden en plezier maken!

Aanbevolen: