PiLiDAR - Raspberry Pi LiDAR tarayıcı
(github.com/PiLiDAR)- PiLiDAR, Raspberry Pi 4, LDRobot LiDAR, Raspberry Pi HQ Camera ve step motoru birleştirerek DIY 360° 3D panoramik tarayıcı yapmayı amaçlayan, çalışması süren bir proje
- Temel özellikleri; LD06, LD19 ve STL27L için özel seri sürücüler, 6K 360° küresel panorama oluşturma ve 2D düzlemleri açı ve ofsetlerle birleştirerek 3D sahne üretiminden oluşuyor
- Panoramalar, balıkgözü fotoğrafların Hugin ile stitch edilmesiyle oluşturuluyor; EXIF tabanlı pozlama korunuyor ve renk kazançları yinelemeli olarak optimize edilerek beyaz dengesi ayarlanıyor; 3D sahne ise panoramadan vertex color örnekliyor
- Çıktılar Open3D ile görselleştirilebiliyor ve PCD, PLY, e57 olarak dışa aktarılabiliyor; birden fazla sahnenin hizalanmasında global registration ve ICP ince ayarı, yüzey oluşturmada Poisson Surface Meshing kullanılıyor
- Parça maliyeti, güç kaynağı hariç Nisan 2025 itibarıyla yaklaşık 200~280 dolar; Poisson Surface Meshing Pi4 üzerinde çok yavaş olduğundan PC’de çalıştırılması öneriliyor
PiLiDAR ne üretiyor
- PiLiDAR, Raspberry Pi tabanlı olarak kendi 360° 3D panoramik tarayıcınızı yapmaya yönelik bir proje ve şu anda çalışma aşamasında olarak belirtiliyor
- Yapı genel olarak üç bölüme ayrılıyor
- LiDAR: LDRobot LD06, LD19, STL27L için özel seri sürücüler
- Panorama: 6K 360° küresel harita oluşturma
- 3D Scene: 2D düzlemleri açı ve ofsete göre birleştirerek 3D sahne oluşturma
LiDAR işleme özellikleri
- LiDAR sürücüsü CRC paket bütünlüğü kontrolü içeriyor
- Raspberry Pi’nin donanımsal PWM’i rpi_hardware_pwm ile kullanılıyor ve eğri uydurma ile kalibre ediliyor
- 2D canlı görselleştirme ve dışa aktarma destekleniyor
- Dışa aktarma biçimleri numpy veya CSV
Panorama ve 3D sahne oluşturma
- 6K 360° küresel panorama, balıkgözü fotoğrafların Hugin Panorama photo stitcher ile stitch edilmesiyle oluşturuluyor
- Kamera pozlaması, otomatik çekilen görüntülerin EXIF verileri okunarak sabit tutuluyor
- Beyaz dengesi, renk kazançları yinelemeli olarak optimize edilerek tutarlı hale getiriliyor
- 3D sahne, 2D düzlemlerin açı ve ofset temelinde birleştirilmesiyle oluşturuluyor
- Panoramadan vertex color örnekleniyor
- Open3D görselleştirme ile PCD, PLY ve e57 dışa aktarma destekleniyor
- Birden fazla sahnenin hizalanmasında global registration ve ICP ince ayarı kullanılıyor
- Poisson Surface Meshing Pi4 üzerinde çok yavaş olduğundan PC’de çalıştırılması öneriliyor
Ön sonuçlar ve tarama süresi
- Ön sonuçlar tek bir taramaya dayanıyor; registration ve son işleme yapılmamış durumda
- Dış mekân taraması colormapped intensity, iç mekân taraması ise vertex color örneği olarak sunuluyor
- Tarama süresi örnekleri şöyle
- Başlatma: 12 saniye
- 4 fotoğraf çekimi: 17 saniye
- 0.167° × 0.18° tarama: 1 dakika 24 saniye
- Stitching ve temizlik: 37 saniye
Donanım bileşenleri ve maliyet
- LiDAR için üç seçenekten biri kullanılıyor
- LDRobot LD06: 80 dolar
- LDRobot LD19: 70 dolar
- LDRobot STL27L: 160 dolar
- Kamera ve lens, Raspberry Pi HQ Camera ile ArduCam M12 Lens kombinasyonu; 60 dolar olarak belirtilmiş
- Raspberry Pi 4 50 dolar, NEMA17 42-23 step motor ve A4988 sürücü 10 dolar olarak belirtilmiş
- Güç kaynağı için iki yöntem var
- v1: 2 adet 18650 pil ve step-down converter
- v2: 10.000mAh USB powerbank ve step-up converter
- Toplam maliyet, güç kaynağı hariç Nisan 2025 itibarıyla yaklaşık 200~280 dolar
- Satın alma bağlantıları yalnızca örnek niteliğinde; mutlaka önerilen satıcılar değiller
Motor, dişli kutusu ve 3D baskı
- Tahrik kısmında A4988 bipolar step motor sürücüsü ve NEMA17 42×42×23 bipolar step motor kullanılıyor
- Step motor 17HE08-1004S; torku 17 Ncm olarak belirtiliyor
- 3D baskı parçaları için ayrı PiLiDAR-Hardware Repo içinde housing ve ek parça dosyaları bulunuyor
- Lens adaptörü ve dişli kutusu için harici modeller kullanılıyor
LiDAR özellikleri ve seri protokol
- LD06 özellikleri
- Örnekleme frekansı: 4500Hz
- baudrate: 230400
- Tarama frekansı: 5~13Hz
- Mesafe: 2cm~12m
- Ortam ışığı: 30kLux
- STL27L özellikleri
- Örnekleme frekansı: 21600Hz
- baudrate: 921600
- LD06 paketi toplam 48 bayt, big endian yapısında
- Başlangıç karakteri: 1 bayt, sabit değer
0x54 - Veri uzunluğu: 1 bayt, şu anda 12 ölçüm noktası olarak sabit
- Hız: 2 bayt, saniye başına açı
- Başlangıç açısı ve bitiş açısı: her biri 2 bayt, birim 0,01 derece
- Veri: 36 bayt, 12 veri noktası × 3 bayt
- Her veri noktası 2 bayt mesafe ve 1 bayt luminance’tan oluşuyor
- Zaman damgası: 2 bayt, ms biriminde; 30000’e ulaşınca yeniden sayıyor
- CRC check: 1 bayt
- Başlangıç karakteri: 1 bayt, sabit değer
- Her veri noktasının açısı, başlangıç ve bitiş açıları arasında doğrusal interpolasyon yapılarak hesaplanıyor
Raspberry Pi bağlantısı ve ayarlar
- LD06 veya STL27L bağlantısı UART Tx, PWM, GND, VCC 5V’den oluşuyor
- Raspberry Pi GPIO bağlantıları şunları kullanıyor
- LD06 UART0 Rx: GP15
- LD06 PWM0: GP18
- Power Button: GP03
- Scan Button: GP17
- A4988 direction: GP26
- A4988 step: GP19
- A4988 microstepping mode: GP5, GP6, GP13
- Güç düğmesi Pin 3’e doğrudan bağlanıyor ve
gpio-shutdownetkinleştiriliyor - GY-521 MPU 6060 ivmeölçer, GPIO3 güç düğmesi için kullanıldığından i2c-GPIO ile özel I2C pinlerine eşleniyor
- SDA: GPIO22
- SCL: GPIO27
- Tarama düğmesi, GPIO interrupt script’i systemd servisi olarak kaydedilerek otomatik başlatılıyor
- UART izinleri geçici olarak
/dev/ttyS0için izin verilerek ya da yeni yöntemle udev kuralları kullanılıpdialoutgrubu veMODE="0660"ayarlanarak yapılandırılıyor
Yazılım ve uzaktan çalışma
- Raspberry Pi donanımsal PWM’i,
pwm-2chanoverlay’i etkinleştirilip RPi Hardware PWM library kurularak kullanılıyor - Panorama stitching için Hugin ve enblend eklentisi kuruluyor
- USB port güç kontrolü için uhubctl CLI aracı kullanılıyor
- Jupyter, uzak ağ erişimi için
--ipve--no-browserseçenekleriyle çalıştırılıyor - Uzak Open3D görselleştirme için Open3D Web Visualizer yerine Plotly kullanmanın daha iyi olduğu belirtiliyor
- Plotly istemci tarafında render ediyor gibi görünüyor
- Open3D Web Visualizer’ın ana makine tarafında render edip JPG dizisini stream ettiği, bunun da Pi’nin CPU’suna ve Wi‑Fi’ına yük bindirdiği belirtiliyor
Tarama verilerini kaydetme ve sorun giderme
- Taramaları USB depolamaya dump etmek için usb_dump klonlama ve kurulum prosedürü dahil edilmiş
- Yapılandırma dosyası, kaynak dizin olarak
/home/pi/PiLiDAR/scansyolunu belirtiyor - Sorun giderme maddeleri şunları içeriyor
- Windows için CP210x Universal Windows Driver
- Raspberry Pi OS Bookworm’da sysfs GPIO arayüzünün kaldırılması nedeniyle oluşan
RPi.GPIO RuntimeError: Failed to add edge detection - Alternatif olarak rpi-lgpio kullanımı
- Raspberry Pi’de VS Code performansı kötü olduğunda donanım hızlandırmayı devre dışı bırakma
- Raspberry Pi arm64 için pye57 wheel bulunmadığından
libxerces-c-devkurulduktan sonra derleme - SSH üzerinden Wi‑Fi ayarı eklemek için
wpa_supplicant.confprosedürü
Referans uygulamalar ve ilham kaynakları
- LD06 ile ilgili ilham LIDAR_LD06_python_loder ve Lidar_LD06_for_Arduino projelerinden alınmış
- 360 kamera stitching için ShaunPrice’ın StereoPi destekli fork’u ve BrianBock’un 360-camera script’leri referans alınmış
- Başka bir Python LiDAR uygulaması olarak pyLIDAR anılıyor
- ICP ile ilgili uygulamalar için Doppler-ICP, KISS-ICP, Lidar-Visualizer referanslar arasında yer alıyor
4 yorum
Hacker News yorumları
Gerçekten harika. Bir donanım ürünüyse malzeme listesi (BOM) hazırlarken bağlantıları ve tahmini maliyetleri de yazmayı öneririm
Fiyatlar değişecektir ama kabaca bir maliyet aralığı olması, HN gibi yerlerde görüp kendin denemeye değip değmeyeceğine karar vermede çok yardımcı olur. Önemli olan kesin rakam değil, yaklaşık ölçek
Zaten araştırdıklarını yazmak iyi olur. Başkaları için olmasa bile gelecekteki kendin için faydalı. Adı karışan çok parça var; bağlantı olursa aynı ürün olup olmadığını kontrol etmek kolaylaşır. Proje sırasında parçaları zaten satın almış olduğundan bağlantı ve fiyat elindedir, neredeyse ek zaman almaz
Birkaç gün ya da hafta geçince kimse hatırlamaz, bu yüzden belgelemek gerekir. 10 saniye yazmak, sonradan 30 dakika yeniden aramayı önleyebilir. Mühendis olarak başlarken öğrendiğim en büyük derslerden biri buydu; kafanın içinde “zaman kazandırmaz” diye fısıldayan aptal tarafla savaşmak gerekiyor. Kod dokümantasyonu da aynı[0]
Kabaca 15 dakikada bulduğum değerler şöyle; doğru olmayabilir. Lidar; LD06 $80 https://www.aliexpress.us/item/3256803352905216.html, LD19 $70 https://amazon.com/DTOF-D300-Distance-Obstacle-Education/dp/…, STL27L $160 https://www.dfrobot.com/product-2726.html seçeneklerinden biri; kamera ve lens $60 https://amazon.com/Arducam-Raspberry-Camera-Distortion-Compatible/dp/…, Raspberry Pi 4 $50, NEMA17 42-23 step motor $10 https://www.amazon.com/SIMAX3D-Nema17-Stepper-Motor/dp/B0CQLFNSMJ
Güç kaynağı ve buck converter hariç bile yaklaşık $200~$280 tutuyor
[0] Kodu ilk yazdığımda ne olduğunu ben ve Tanrı biliyorduk; zaman geçti, artık sadece Tanrı biliyor
Malzeme listesi fiyatlarını, kaynağa ve gönderi sayısına bağlı olarak 2 ya da 3 ile çarpmak gerekebilir
Çocuklara ve yetişkinlere elektroniği tanıtacak ucuz ve iyi öğrenme materyallerine erişebildiğimiz bir durumdan, ABD rekabet gücünü artırma gibi gerekçelerle vergilenip bunun yok olması gerçekten moral bozucu. Tam bir kendi kalesine gol
Sözlüğe baktığımda da “bir şeyin miktarını azaltmak”a yakın bir anlam göremiyorum. [0]
Wikipedia da etimolojiyi ayrıntılı ele almıyor. [1]
[0] https://www.merriam-webster.com/dictionary/buck
[1] https://en.wikipedia.org/wiki/Buck_converter
O zaman kendin yap
Ailesi olduğu için zamanı çok kısıtlı biri olarak, projeyi tamamlamak bile başlı başına zor; dokümantasyona neredeyse hiç sıra gelmeyebilir. Sonradan tekrar yapmak gerekse belki de hiç yapmam. Herkes annesinin bodrumunda yaşayıp bol boş zamana sahip değil
Gerçek tarayıcı burada: [1]
Maksimum mesafe 12 m; sanki bu noktadan itibaren pahalılaşmaya başlıyor. Işık kaynağı, filtre ve sensörün hepsinin daha iyi olması gerekiyor
Çoğu küçük robot için yeterli; otonom araçlarda yardımcı sensör gibi, aracın çevresindeki çocukları ve köpekleri güvenilir biçimde algılama amacı için de uygun olabilir. Ama üst tarafa takılan uzun menzilli LIDAR hâlâ zor
[1] https://www.ldrobot.com/
İlk tahminim, bu mesafeden itibaren lazer güvenliğinin aktif bir kontrol süreci haline gelmesi olabilir. Lazer tarayıcı aynasının sürekli hareket etmesi gerekir ki insan retinasına zararlı enerji birikmesin; dolayısıyla ayna hızını ve konumunu sürekli izleyen, çok yavaşlarsa lazeri kapatan güvenlik açısından zorunlu bir kontrol sistemi gerekiyor. Ne kadar yanılıyorum acaba?
“Eski güzel günler”de daha iyi olan çok şey vardı, ama yetenekli bireylerin böyle teknolojileri kendi başına yapabildiği bir çağda yaşamak gerçekten şaşırtıcı
Biraz bağlantılı olarak, yaklaşık 300 mm mesafede uzaklığı yaklaşık 10 mikron doğrulukla ucuza ölçmenin bir yolunu arıyorum. Fikri olan var mı?
my mechanics birkaç gün önce bir değiştirme videosu yayımladı; mevcut ekipman 5 mikron doğruluktaydı
Fiyatını pek bilmiyorum
İyi bir kumpas çiftiyle bile mümkün görünüyor. Hassasiyet gereksinimine bağlı olarak aynı yaklaşımı kullanabilirsin. Ölçüm hücresinin üzerinden kayan kapasitif hücrelerden oluşan bir ızgara koyup, bir mikrodenetleyicinin hareket ederken değerleri okuması ve nihai sonuçta Atan2() kullanması şeklinde. Bunun sadece ölçüm kısmına DRO (Digital ReadOut) deniyor
Bütçe kısıtın yoksa hazır kapalı çevrim sahne çözümleri de var:
https://www.pi-usa.us/en/
https://xeryon.com
Bol şans; fiyat etiketinin şokuna da hazırlıklı ol
Senin ölçütüne göre “ucuz”un ne olduğu da önemli
Şu yöndeki şeyi otomatikleştirmeyi düşünüyorum:
https://youtu.be/hnHjrz_inQU?si=dNzXVBVFsr7e8m_6
Hazır lazerler ve kamera sensörleri de DIY olarak uğraşıldığında oldukça beklenmedik hassasiyetler verebiliyor
Sketchfab örneği harika. Bir bilimkurgu simülasyonu gibi 3B uzayın içinde dolaşabiliyorsun
Ancak fare kontrolleri çok kafa karıştırıcı. Bir “tutma” ikonu çıkıyor ama gerçekte tutuyormuş hissi vermiyor; hareket yönü de ters olduğu için tamamen doğal dışı hissettiriyor
eBay ya da Goodwill’deki robot süpürgelerden bu tür parçaları söküp alabilmek de mümkün olabilir
Gerçekten muhteşem. Projeye sadece hızlıca göz attım, belki zaten vardır ama doğruluk verileri olup olmadığını merak ediyorum
Örneğin 10 m mesafedeki doğruluğu; bu LIDAR o mesafede çalışmıyorsa daha kısa bir mesafeyi de bilmek isterim
FARO tarayıcılara aşinayım; farklı türde bir mekanizma kullanıyorlar ve bina ölçümleri için yeterince doğrular
Tarayıcı pazarının da birkaç kola ayrıldığını gördüm; bunların arasında doğruluğa ihtiyaç duyanlar ve oyun gibi medya içerikleri üretenler var. Bu proje gerçekten inanılmaz
Son zamanlarda iç mekân odaları ve alanları taramak için fotogrametriyle biraz uğraşıyorum. Şimdilik Metashape en uygunu gibi görünüyor ama hassasiyet hâlâ pek iyi değil; çekim tekniğini de geliştirmeye çalışıyorum
Ana hedefim gerçek bina içlerini koruma ve analiz için dijital modellere dönüştürmek. LIDAR’ı da bir ara düşündüm ama çok zor ve pahalı diye rafa kaldırmıştım; bu proje o varsayımı sarsıyor gibi
Son işleme yazılımı nasıl bir şey merak ediyorum. Nokta bulutu elde edip bunu DSLR fotoğrafları gibi başka verilerle birleştirerek doku kaplama yapılabilir mi?
İkinci görüntüye[1] bakınca, asılı lambanın arkasında kaldığı için duvarın bir kısmı taranmamış ve muhtemelen LIDAR kanepenin üstünü de görememiş. Nesnelerin ve köşelerin arkasını görmek için iki ya da daha fazla nokta bulutu birleştirilebilir mi? Yazılım ortak duvarları veya noktaları temel alıp bunun aynı gerçek oda olduğunu otomatik hizalayabilir mi, yoksa elle epey ayar yapmak mı gerekir? LIDAR’da coded target ya da ARTag[0] karşılığı bir şey var mı? Birden fazla odaya ölçeklenebilir mi?
İyi yapılmış fotogrametriyle karşılaştırınca değerlendirmeye değer mi, yoksa sadece daha fazla zahmet mi getirir merak ediyorum
Ne bilmediğimi bile bilmediğim düzeyde sorular, kusura bakmayın
0: https://en.wikipedia.org/wiki/ARTag
1: https://github.com/PiLiDAR/PiLiDAR/raw/main/images/interior....
Bu harika çalışmayı paylaştığın için teşekkürler. PiLiDAR’ın büyük ölçekli dış mekân veri kümelerine uygulandığında ölçeklenebilirliği ve performansını merak ediyorum
SemanticKITTI ya da nuScenes gibi veri kümelerinde benchmark yaptıysanız, çalışma süresi, bellek kullanımı ve makalede kullanılan iç mekân sahnelerinin ötesine ne kadar iyi genellendiği hakkında bilgi verebilir misiniz?
Bu tür veri kümeleri genelde RGBA kamerayla oluşturulur ve nokta bulutu daha sonra son işleme aşamasında üretilir
Yani bir işleme modeli değil, gerçek derinlik verisi elde etmeye yönelik bir donanım hack’i. İstediğin her şeyi buna ekleyebilirsin
Birkaç hafta önce aradığım şey tam da buydu. Kabaca benzer bir şeyi prototiplemek için parçaları haftalardır Amazon sepetimde tutuyordum ama asıl LIDAR tarayıcı seçimi konusunda emin olamamıştım
Easter tatilinden döndüğümde bunu başlangıç noktası olarak incelemeliyim
El feneri topluluğu da ne?
https://www.reddit.com/r/flashlight/
Kabaca Türkiye’deki Ekşi Sözlük’ün el feneri başlığına benzer, Reddit içindeki küçük bir topluluk.
Teşekkür ederim