新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > LiDAR激光雷達(dá)技術(shù)原理及Arduino示例代碼糾錯(cuò)

LiDAR激光雷達(dá)技術(shù)原理及Arduino示例代碼糾錯(cuò)

作者:硬之城 時(shí)間:2024-04-30 來(lái)源:搜狐科技 收藏

(Light Detection and Ranging,LiDAR)即激光探測(cè)和測(cè)距,又稱光學(xué)雷達(dá),是自動(dòng)駕駛領(lǐng)域的一種基礎(chǔ)感測(cè)技術(shù)。LIDAR是激光科技與雷達(dá)技術(shù)的組合,以下以無(wú)人機(jī)和自動(dòng)駕駛領(lǐng)域常用的LIDAR-Lite系列為例,介紹LIDAR與Arduino開(kāi)發(fā)板的連接幾測(cè)距示例。

本文引用地址:http://www.butianyuan.cn/article/202404/458254.htm

LiDAR工作原理

LiDAR工作原理與通信雷達(dá)一樣,都是飛行時(shí)間測(cè)量法(Time of Flight,TOF),只是發(fā)射介質(zhì)采用的是對(duì)人畜無(wú)害的紅外光束(Light Pluses),而不是無(wú)線電波。


LiDAR示意圖

LiDAR通過(guò)發(fā)射、反射和接收紅外光束來(lái)探測(cè)白天或黑夜下的特定物體及動(dòng)態(tài)數(shù)據(jù),甚至由于反射度的不同,車道線和路面也是可以區(qū)分開(kāi)來(lái)的。對(duì)于車用,光速是每秒30萬(wàn)公里,要區(qū)分目標(biāo)厘米級(jí)別的精確距離,對(duì)傳輸時(shí)間測(cè)量分辨率必須做到1納秒。要如此精確的測(cè)量時(shí)間,對(duì)應(yīng)的測(cè)量系統(tǒng)的成本就很難降低,還需要使用巧妙的方法降低測(cè)量難度。


激光雷達(dá)LiDAR系統(tǒng)組成

LiDAR系統(tǒng)一般包括激光發(fā)射光源、接收器、伺服電機(jī)、斜面鏡和光學(xué)旋轉(zhuǎn)編碼器(又稱圓光柵)幾部分。通過(guò)旋轉(zhuǎn)的機(jī)械鏡面測(cè)量激光發(fā)出和收到回波的時(shí)間差,LiDAR可確定目標(biāo)的方位和距離。由于激光雷達(dá)主動(dòng)發(fā)射激光,因此受環(huán)境光變化的影響小,測(cè)距精確。

LiDAR與Arduino連接

LIDAR是激光科技與雷達(dá)技術(shù)的組合,不但應(yīng)用前景廣闊,使用也非常簡(jiǎn)便。通過(guò)Arduino開(kāi)發(fā)板就能實(shí)現(xiàn)測(cè)距應(yīng)用,必要的物料BOM表如下: USB micro-B電纜 USB 2.0 A-B型 x1 電阻器 1/4W 500歐姆 x1 SparkFun Arduino開(kāi)發(fā)板 DEV-15123 x1 LIDAR-Lite v3傳感器 Garmin SEN-14032 x1 電容器 1000uF/25V去耦鋁電解電容器 x1 面包板 x1 跳線 若干


LIDAR-Lite激光雷達(dá)

其中,LIDAR-Lite前方有兩個(gè)鏡筒,里面分別是激光發(fā)射器和接收器,用以發(fā)現(xiàn)和檢測(cè)目標(biāo)。側(cè)面的電氣接口用來(lái)連接6-wire電纜。底部的4個(gè)安裝孔用來(lái)固定傳感器,螺絲規(guī)格為 #6 or M3.5。 LIDAR-Lite有6個(gè)引線,用來(lái)與控制板通信。其功能分別為: 紅色:5V,連接5V電源。 橙色:PWR EN,電源使能(內(nèi)部上拉) 黃色:MODE,模式控制(用于PWM模式) 綠色:SCL,I2C時(shí)鐘 藍(lán)色:SDA,I2C數(shù)據(jù) 黑色:GND,接地線

LIDAR-Lite的引線及功能說(shuō)明

由于LIDAR-Lite工作于4.5V to 5.5V,消耗的連續(xù)電流高達(dá)135mA (待機(jī)狀態(tài)為105mA),為了維持穩(wěn)定工作,需要在5V電源和GND之間連接一個(gè)680μF電容器,并盡量靠近LIDAR傳感器單元。 用于SCL和SD線路的I2C總線上拉電阻器一般為4.7kΩ,如果鏈路較長(zhǎng)或系統(tǒng)器件較多,可改用較小阻值的電阻元件。當(dāng)線路長(zhǎng)度超過(guò)允許長(zhǎng)度時(shí),可采用總線擴(kuò)展器。


LIDAR傳感器與Arduino開(kāi)發(fā)板連接

按照電路圖將LIDAR傳感器與RedBoard或者其他Arduino兼容開(kāi)發(fā)板連接,IDAR-Lite就可以通過(guò)I2C總線來(lái)測(cè)量距離了。

LiDAR庫(kù)文件及代碼

連接好電路圖后,用USB電纜將LiDAR連接到PC,就可以安裝專門的Arduino庫(kù)文件了。這很簡(jiǎn)單,打開(kāi)Arduino Library Manager按照提示操作就OK了。如果這些庫(kù)文件沒(méi)有鏈接到Arduino IDE,就需要手動(dòng)操作,過(guò)程也不復(fù)雜。

庫(kù)文件裝好后,打一個(gè)新的Arduino sketch,拷入如下代碼:

/**

* LIDARLite I2C Example

* Author: Garmin

* Modified by: Shawn Hymel (SparkFun Electronics)

* Date: June 29, 2017

*

* Read distance from LIDAR-Lite v3 over I2C

*

* See the Operation Manual for wiring diagrams and more information:

* http://static.garmin.com/pumac/LIDAR_Lite_v3_Operation_Manual_and_Technical_Specifications.pdf

*/

#include <Wire.h>#include <LIDARLite.h>

// Globals

LIDARLite lidarLite;int cal_cnt = 0;

void setup()

{

Serial.begin(9600); // Initialize serial connection to display distance readings

lidarLite.begin(0, true); // Set configuration to default and I2C to 400 kHz

lidarLite.configure(0); // Change this number to try out alternate configurations

}

void loop()

{

int dist;

// At the beginning of every 100 readings,

// take a measurement with receiver bias correction

if ( cal_cnt == 0 ) {

dist = lidarLite.distance(); // With bias correction

} else {

dist = lidarLite.distance(false); // Without bias correction

}

// Increment reading counter

cal_cnt++;

cal_cnt = cal_cnt % 100;

// Display distance

Serial.print(dist);

Serial.println(" cm");

delay(10);

}

代碼上傳成功后,打開(kāi)Serial Monitor,就可以看到如下顯示的測(cè)量結(jié)果。

LIDAR傳感器的測(cè)距結(jié)果

如果Serial Monitor顯示有誤(nack error),大部分情況是I2C總線連接問(wèn)題,因?yàn)镮2C總線對(duì)接觸不良非常敏感,最好是事先在面包板上焊接幾根導(dǎo)線出來(lái)。當(dāng)然,也可能是上拉電阻太大了,可換個(gè)小一點(diǎn)阻值的試試,直到正常測(cè)量為止。



關(guān)鍵詞: 激光雷達(dá)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉