Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Een Arduino LIDAR Systeem Bouwen met VL6180X en Servomotor

Onderdelen en Benodigdheden

Arduino UNO × 1
SparkFun ToF Afstandssensor - VL6180 (VL6180X) × 1 VL53L0X voor lange afstand, VL6180X voor korte afstand. Hier gebruik ik VL6180X
Servomotor × 1

Apps en Online Diensten

  • Arduino IDE
  • Processing - Voor visualisatie

Over dit Project

Wat is LiDAR?

LIDAR (Light Detection and Ranging) is een optisch remote sensing systeem dat de afstand van een doel meet door het te verlichten met licht. LIDAR technologie wordt in robotica gebruikt voor omgevingsperceptie en objectclassificatie. De mogelijkheid om 2D hoogtekaarten van het terrein, hoge precisie afstand tot de grond, en aanvalsnelheid te bieden, kan veilige landing van robotische en bemande voertuigen met hoge precisie mogelijk maken.

LIDAR bestaat uit een zender die een laserbundel op het doel richt, en een ontvanger die het lichtcomponent detecteert dat essentieel coaxiaal is met de gezonden bundel. Ontvangersensoren berekenen een afstand, gebaseerd op de tijd die het licht nodig heeft om het doel te bereiken en terug te keren. Een mechanisch mechanisme met een spiegelt de lichtbundel om de benodigde scène in een vlak of zelfs in drie dimensies af te tasten, met een rotterende knikkende spiegel.

Eén manier om de vliegtijd van de lichtbundel te meten is een gepulste laser te gebruiken en de verstreken tijd direct te meten. Elektronica die picoseconden kan resolueren is nodig en daarom zijn ze erg duur. Een andere methode is het meten van de fasverschuiving van het gereflecteerde licht.

Gecollimeerde infrarood laser wordt gebruikt voor de fasverschuivingsmeting. Voor oppervlakken met ruwheid groter dan de golflengte van het invalslicht, treedt diffuse reflectie op. Het infrarood lichtcomponent keert bijna parallel terug naar de gezonden bundel voor objecten.

De sensor meet de fasverschuiving tussen de gezonden en gereflecteerde signalen. De afbeelding laat zien hoe deze techniek gebruikt kan worden om afstand te meten. De golflengte van het moduleer signaal gehoorzaamt aan de vergelijking:

c = f · τ

waar c de lichtsnelheid is, f de moduleerfrequentie en τ de bekende moduleergolflengte.

De totale afstand D' die het uitgezonden licht aflegt is:

D' = B + 2A = B + (θ · τ) / 2π

waar A de gemeten afstand is. B is de afstand van de fasmeeteenheid. De benodigde afstand D, tussen de bundelsplitter en het doel, is daarom gegeven door:

D = τ · θ / 4π

waar θ de elektronisch gemeten fasverschil is tussen de gezonden en gereflecteerde lichtbundels.

Het kan aangetoond worden dat het bereik omgekeerd evenredig is met het kwadraat van de ontvangen signaalamplitude, wat direct de nauwkeurigheid van de sensor beïnvloedt.

(Gekopieerd van roboticlab.eu).

Als deel van mijn afstudeerproject had ik de 2D kaart van de omgeving nodig voor mijn autonom voertuig, dus koos ik LiDAR omdat het zo snel en nauwkeurig is. In tegenstelling tot sonars die ultrasoon golven reflekteren, is de 'kegel' van zintuig heel smal.

VL6180X of VL53L0X is een optische sensor van STMicroelectronics. VL53L0X is veel preciezer en heeft geen lineariteitsproblemen of 'dubbele imaging' waar je niet kunt zien of een object heel ver of heel dichtbij is.

Deze time-of-flight sensor wordt eigenlijk in onze mobiele telefoons gebruikt om de focus van de camera aan te passen.

Schakelingsschema

Een Arduino LIDAR Systeem Bouwen met VL6180X en Servomotor

Adafruit Bibliotheek Installeren

Een Arduino LIDAR Systeem Bouwen met VL6180X en Servomotor

Arduino Code

#include <Wire.h>
#include "Adafruit_VL6180X.h"
#include <Servo.h>

Adafruit_VL6180X vl = Adafruit_VL6180X();
Servo myservo;
float pos = 0;
const float Pi = 3.14159;

void setup() {
  myservo.attach(9);
  Serial.begin(115200);
  while (!Serial) { delay(1); }
  if (!vl.begin()) { while (1); }
}

void loop() {
  for (pos = 0; pos <= 180; pos += 0.5) {
    myservo.write(pos);
    uint8_t range = vl.readRange();
    Serial.println(String(range) + "p" + String(pos * Pi / 180) + "p" + String(pos));
    delay(10);
  }
  /* Terugkeer scan (optioneel)
  for (pos = 180; pos >= 0; pos -= 0.5) {
    myservo.write(pos);
    uint8_t range = vl.readRange();
    Serial.println(String(range) + "p" + String(pos * Pi / 180) + "p" + String(pos));
    delay(10);
  }
  */
  myservo.write(0);
  delay(2000);
}

Processing Code (Visualisatie)

Verander het Arduino poortnummer (bijv. "COM3") voordat je draait.

import processing.serial.*;
Serial myPort;
String val;
int range, i = 0;
float pos;

void setup() {
  size(550, 500);
  String portName = "COMx"; // x = jouw Arduino poortnummer
  myPort = new Serial(this, portName, 115200);
  background(255);
}

void draw() {
  if (myPort.available() > 0) {
    val = myPort.readStringUntil('\n');
    if (val != null) {
      String[] nums = split(val, "p");
      if (nums.length == 3) {
        range = int(nums[0]);
        pos = float(nums[1]);
        i = int(nums[2]);
        if (i == 180) { background(255); }
      }
    }
  }
  translate(25, -50);
  line(250, 500, 250 - 2 * (range * cos(pos)), 500 - 2 * (range * sin(pos)));
}
Een Arduino LIDAR Systeem Bouwen met VL6180X en Servomotor

De snelheid van de sensor is beperkt tot 10Hz en de reactie van de servo is slecht bij hogere snelheid. Als iemand een hoge snelheid LIDAR wil bouwen, gebruik dan een stappenmotor of DC motor met feedback systeem. Gebruik slipringen voor continue rotatie (Adafruit slipring).

Vragen, suggesties zijn welkom!

Code

  • Arduino code
  • Processing code

Schema's

Zie schakelingsschema hierboven.

Productieproces

  1. Gaslampen: Evolutie, Ontwerp en Moderne Productie
  2. Laser Pointer: Ontwerp, Productie en Veiligheidsoverzicht
  3. Zaklamp: van ontstaan tot moderne innovatie
  4. De Kaleidoscoop: Van Brewsters Wetenschap tot Modern Ontwerp
  5. Semiconductor Lasers: Precieze Lichtgeneratie voor Moderne Technologie
  6. De kunst en wetenschap van fotografische processen: Van daguerreotypen tot moderne film
  7. Verkeerslichten: Techniek, Geschiedenis en Toekomstige Innovaties
  8. Van Vuur tot Draad: De Evolutie en Productie van de Moderne Glühlampe
  9. Optische Vezel: Technologie, Productie en Toekomst
  10. Gebarenbestuurde RGB-tafellamp – Interactief, Handvrij Verlichten
  11. Kodiak 3D LiDAR: Precieze ruimtevaart-afstandsmeting voor hoge-baan missies