LiDAR چیست؟ چرا از سونار بهتر است؟
LiDAR (Light Detection And Ranging) از لیزر برای اندازهگیری فاصله استفاده میکند — دقیقتر، سریعتر و با برد بیشتر از سونار. دو نوع رایج برای DIY:
TF-Luna: یک ToF (Time-of-Flight) لیزری با برد ۸ متر، ارتباط UART/I2C و قیمت ~۱۸۰K — مناسب اجتناب از موانع در یک جهت.
RPLIDAR A1: یک LiDAR چرخان ۳۶۰° با برد ۱۲ متر و ۸۰۰۰ نقطه/ثانیه — مناسب نقشهبرداری کامل محیط (SLAM). قیمت ~۸۰۰K اما قدرتمندترین ابزار DIY برای ناوبری است.
🛠️ کارت پروژه
| مقایسه | TF-Luna: ارزان، ساده / RPLIDAR: کامل، گران |
| پروسسور | TF-Luna: Arduino / RPLIDAR: Raspberry Pi + ROS |
کد TF-Luna با آردوینو
// TF-Luna از طریق UART (9600 baud)
#include <SoftwareSerial.h>
SoftwareSerial tfLuna(10, 11); // RX=10, TX=11
int getTFDistance(){
if(tfLuna.available() >= 9){
if(tfLuna.read() == 0x59 && tfLuna.peek() == 0x59){
tfLuna.read(); // دومین header
int dist = tfLuna.read() | (tfLuna.read() << 8);
int strength = tfLuna.read() | (tfLuna.read() << 8);
tfLuna.read(); tfLuna.read(); tfLuna.read(); // بقیه بسته
if(strength > 100) return dist; // اطمینان از سیگنال قوی
}
}
return -1;
}
void setup(){
tfLuna.begin(115200); // TF-Luna default 115200
// تغییر به 9600 با دستور TFMini:
// byte cmd[] = {0x5A,0x08,0x06,0x01,0x01,0x00,0x00,0x67};
}
void loop(){
int d = getTFDistance();
if(d > 0 && d < 50){ // مانع در ۵۰cm
stopAndAvoid();
}
}
راهاندازی RPLIDAR A1 روی Raspberry Pi + ROS
# نصب ROS Noetic روی Raspberry Pi (Ubuntu 20.04)
sudo apt install ros-noetic-rplidar-ros
# اجرای RPLIDAR node:
roslaunch rplidar_ros rplidar_a1.launch
# مشاهده نقشه در Rviz:
rosrun rviz rviz
# اضافه کردن LaserScan display → topic: /scan