6 điểm bởi GN⁺ 2025-04-20 | 4 bình luận | Chia sẻ qua WhatsApp
  • PiLiDAR là một dự án đang trong quá trình thực hiện nhằm kết hợp Raspberry Pi 4, LDRobot LiDAR, Raspberry Pi HQ Camera và động cơ bước để tạo ra máy quét panorama 3D 360° DIY
  • Các chức năng cốt lõi gồm driver serial tùy chỉnh cho LD06·LD19·STL27L, tạo panorama cầu 360° 6K, và tạo cảnh 3D bằng cách ghép các mặt phẳng 2D theo góc và độ lệch
  • Panorama được tạo bằng cách stitching ảnh mắt cá với Hugin, duy trì phơi sáng dựa trên EXIF và cân bằng trắng bằng tối ưu lặp color gain; cảnh 3D lấy mẫu vertex color từ panorama
  • Kết quả có thể được trực quan hóa bằng Open3D và xuất ra PCD·PLY·e57; việc căn chỉnh nhiều cảnh dùng global registration và tinh chỉnh ICP, còn tạo bề mặt dùng Poisson Surface Meshing
  • Chi phí linh kiện, không gồm bộ nguồn, vào khoảng 200~280 USD tính đến tháng 4/2025; Poisson Surface Meshing rất chậm trên Pi4 nên khuyến nghị chạy trên PC

PiLiDAR tạo ra gì

  • PiLiDAR là dự án tự chế máy quét panorama 3D 360° dựa trên Raspberry Pi, hiện được đánh dấu là đang thực hiện
  • Cấu hình được chia thành ba phần lớn
    • LiDAR: driver serial tùy chỉnh cho LDRobot LD06, LD19, STL27L
    • Panorama: tạo bản đồ cầu 360° 6K
    • 3D Scene: dựng cảnh 3D bằng cách ghép các mặt phẳng 2D theo góc và độ lệch

Chức năng xử lý LiDAR

  • Driver LiDAR bao gồm kiểm tra tính toàn vẹn gói bằng CRC
  • PWM phần cứng của Raspberry Pi sử dụng rpi_hardware_pwm và được hiệu chỉnh bằng curve fitting
  • Hỗ trợ trực quan hóa live 2D và xuất dữ liệu
    • Định dạng xuất là numpy hoặc CSV

Tạo panorama và cảnh 3D

  • Panorama cầu 360° 6K được tạo bằng cách stitching ảnh mắt cá với Hugin Panorama photo stitcher
  • Phơi sáng camera được giữ ổn định bằng cách đọc dữ liệu EXIF của ảnh chụp tự động
  • Cân bằng trắng được giữ nhất quán bằng cách tối ưu lặp color gain
  • Cảnh 3D được dựng bằng cách ghép các mặt phẳng 2D dựa trên góc và độ lệch
    • Lấy mẫu vertex color từ panorama
    • Hỗ trợ trực quan hóa Open3D và xuất PCD, PLY, e57
    • Việc căn chỉnh nhiều cảnh dùng global registration và tinh chỉnh ICP
    • Poisson Surface Meshing rất chậm trên Pi4 nên khuyến nghị chạy trên PC

Kết quả sơ bộ và thời gian quét

  • Kết quả sơ bộ dựa trên một lần quét đơn, chưa registration và chưa hậu xử lý
  • Quét bên ngoài được cung cấp dưới dạng ví dụ colormapped intensity, quét bên trong là ví dụ vertex color
  • Ví dụ thời gian quét như sau
    • Khởi tạo: 12 giây
    • Chụp 4 ảnh: 17 giây
    • Quét 0.167° × 0.18°: 1 phút 24 giây
    • Stitching và dọn dẹp: 37 giây

Cấu hình phần cứng và chi phí

  • LiDAR dùng một trong ba loại
    • LDRobot LD06: 80 USD
    • LDRobot LD19: 70 USD
    • LDRobot STL27L: 160 USD
  • Camera và ống kính là tổ hợp Raspberry Pi HQ Camera và ArduCam M12 Lens, được ghi là 60 USD
  • Raspberry Pi 4 được ghi là 50 USD, NEMA17 42-23 stepper và driver A4988 là 10 USD
  • Nguồn cấp có hai cách
    • v1: 2 pin 18650 và step-down converter
    • v2: pin sạc dự phòng USB 10.000mAh và step-up converter
  • Tổng chi phí, không gồm bộ nguồn, vào khoảng 200~280 USD tính đến tháng 4/2025
  • Các link mua hàng chỉ là ví dụ, không nhất thiết là nơi mua được khuyến nghị

Động cơ, hộp số và in 3D

Thông số LiDAR và giao thức serial

  • Thông số LD06
    • Tần số lấy mẫu: 4500Hz
    • baudrate: 230400
    • Tần số quét: 5~13Hz
    • Khoảng cách: 2cm~12m
    • Ánh sáng môi trường: 30kLux
  • Thông số STL27L
    • Tần số lấy mẫu: 21600Hz
    • baudrate: 921600
  • Gói LD06 có tổng cộng 48 byte, cấu trúc big endian
    • Ký tự bắt đầu: 1 byte, giá trị cố định 0x54
    • Độ dài dữ liệu: 1 byte, hiện cố định ở 12 điểm đo
    • Tốc độ: 2 byte, góc mỗi giây
    • Góc bắt đầu và góc kết thúc: mỗi giá trị 2 byte, đơn vị 0,01 độ
    • Dữ liệu: 36 byte, 12 điểm dữ liệu × 3 byte
    • Mỗi điểm dữ liệu gồm 2 byte khoảng cách và 1 byte luminance
    • Timestamp: 2 byte, đơn vị ms, đếm lại khi đạt 30000
    • CRC check: 1 byte
  • Góc của từng điểm dữ liệu được tính bằng cách nội suy tuyến tính giữa góc bắt đầu và góc kết thúc

Kết nối và thiết lập Raspberry Pi

  • Kết nối LD06 hoặc STL27L gồm UART Tx, PWM, GND, VCC 5V
  • Kết nối GPIO Raspberry Pi dùng các chân sau
    • 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
  • Nút nguồn được nối cứng vào Pin 3 và bật gpio-shutdown
  • Vì GPIO3 được dùng cho nút nguồn, gia tốc kế GY-521 MPU 6060 ánh xạ chân I2C tùy chỉnh bằng i2c-GPIO
    • SDA: GPIO22
    • SCL: GPIO27
  • Nút quét được tự động khởi động bằng cách đăng ký script GPIO interrupt làm systemd service
  • Quyền UART có thể cấp tạm thời cho /dev/ttyS0, hoặc theo cách mới là dùng quy tắc udev để thiết lập nhóm dialoutMODE="0660"

Phần mềm và thao tác từ xa

  • PWM phần cứng Raspberry Pi được dùng bằng cách bật overlay pwm-2chan và cài RPi Hardware PWM library
  • Cần cài Hugin và plugin enblend để stitching panorama
  • Điều khiển nguồn cổng USB dùng công cụ CLI uhubctl
  • Jupyter chạy với tùy chọn --ip--no-browser để truy cập mạng từ xa
  • Với trực quan hóa Open3D từ xa, tài liệu nói nên dùng Plotly thay vì Open3D Web Visualizer
    • Plotly có vẻ render phía client
    • Open3D Web Visualizer được nói là render phía host và stream chuỗi JPG, gây tải cho CPU và Wi-Fi của Pi

Lưu dữ liệu quét và xử lý sự cố

  • Có kèm quy trình clone và cài đặt usb_dump để dump dữ liệu quét ra bộ nhớ USB
  • File cấu hình chỉ định /home/pi/PiLiDAR/scans làm thư mục nguồn
  • Các mục xử lý sự cố gồm
    • CP210x Universal Windows Driver cho Windows
    • RPi.GPIO RuntimeError: Failed to add edge detection do giao diện sysfs GPIO bị gỡ bỏ trong Raspberry Pi OS Bookworm
    • Dùng rpi-lgpio làm phương án thay thế
    • Tắt tăng tốc phần cứng khi VS Code chạy kém trên Raspberry Pi
    • Do không có wheel pye57 cho Raspberry Pi arm64, cần cài libxerces-c-dev rồi build
    • Quy trình thêm thiết lập Wi-Fi bằng wpa_supplicant.conf qua SSH

Triển khai tham khảo và nguồn cảm hứng

4 bình luận

 
GN⁺ 2025-04-20
Ý kiến trên Hacker News
  • Thật sự rất ngầu. Nếu là sản phẩm phần cứng, tôi khuyên nên ghi kèm liên kết và chi phí ước tính khi lập bảng kê linh kiện (BOM)
    Giá sẽ thay đổi, nhưng nếu có một khoảng chi phí đại khái thì sẽ giúp ích rất nhiều cho người xem trên những nơi như HN để quyết định có tự làm thử hay không. Điều quan trọng không phải là con số chính xác mà là quy mô ước chừng
    Những gì đã tìm hiểu rồi thì nên ghi lại. Dù không vì người khác thì cũng hữu ích cho chính bạn trong tương lai. Có nhiều linh kiện tên dễ gây nhầm lẫn, nên nếu có liên kết thì sẽ dễ xác nhận có đúng cùng một món hay không; trong lúc làm dự án thì bạn đã mua linh kiện rồi, nên có sẵn liên kết và giá gần như không tốn thêm thời gian
    Chỉ vài ngày hay vài tuần trôi qua là chẳng ai còn nhớ, nên cần tài liệu hóa. Ghi lại 10 giây có thể tránh được việc mất 30 phút tìm lại sau này. Đây là một trong những bài học lớn nhất tôi học được khi mới bắt đầu làm kỹ sư, và phải đấu tranh với cái phần ngu ngốc trong đầu cứ thì thầm rằng “việc này chẳng tiết kiệm thời gian đâu”. Tài liệu hóa code cũng tương tự[0]
    Các con số tôi tìm sơ khoảng 15 phút là như sau và có thể không chính xác. Lidar có thể là một trong các loại 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; camera và ống kính $60 https://amazon.com/Arducam-Raspberry-Camera-Distortion-Compatible/dp/…; Raspberry Pi 4 $50; động cơ bước NEMA17 42-23 $10 https://www.amazon.com/SIMAX3D-Nema17-Stepper-Motor/dp/B0CQLFNSMJ
    Ngay cả chưa tính bộ nguồn và buck converter thì cũng vào khoảng $200~$280
    [0] Khi tôi mới viết đoạn code đó, chỉ có tôi và Chúa biết chuyện gì đang diễn ra; nhưng thời gian trôi qua, giờ chỉ còn Chúa biết

    • Những dự án học tập kiểu này có vẻ sẽ trở nên khó tiếp cận hơn nhiều vì thuế quan cực đoan và việc bãi bỏ miễn thuế cho hàng giá trị nhỏ
      Có thể phải nhân giá trong bảng kê linh kiện lên 2 hoặc 3 lần tùy nguồn và số chuyến giao hàng
      Thật sự buồn khi từ chỗ có thể tiếp cận các tài liệu học tập rẻ và tốt để giới thiệu điện tử học cho trẻ em và người lớn, rồi chúng biến mất vì bị đánh thuế dưới danh nghĩa như nâng cao năng lực cạnh tranh của Mỹ. Đúng là một pha phản lưới nhà hoàn toàn
    • Vì nó đã có trên GitHub, bạn có thể giúp bằng cách gửi PR bảng kê linh kiện
    • Tôi biết buck converter là gì, nhưng vẫn tò mò vì sao nó được gọi là ‘buck converter’
      Xem từ điển cũng không thấy nghĩa nào gần với “giảm lượng của thứ gì đó”. [0]
      Wikipedia cũng không đi sâu vào từ nguyên. [1]
      [0] https://www.merriam-webster.com/dictionary/buck
      [1] https://en.wikipedia.org/wiki/Buck_converter
    • Thật ngạc nhiên là mức này vẫn quá đắt đối với các công ty như Tesla
    • Đây là bình luận vô ơn nhất tôi thấy hôm nay, kiểu dồn ép rằng “đáng lẽ phải làm thế này”
      Vậy thì tự làm đi
      Với người có gia đình và cực kỳ thiếu thời gian, chỉ hoàn thành được dự án thôi đã quá sức rồi, khả năng cao là gần như không thể tài liệu hóa thêm. Nếu sau này phải làm lại thì có khi tôi sẽ không làm nữa. Không phải ai cũng sống trong tầng hầm nhà mẹ và có đầy thời gian rảnh
  • Máy quét thực tế ở đây: [1]
    Khoảng cách tối đa 12m, và có vẻ từ mốc này trở đi mọi thứ bắt đầu đắt lên. Nguồn sáng, bộ lọc và cảm biến đều phải tốt hơn
    Với hầu hết robot nhỏ thì vậy là đủ, và cũng có thể ổn cho mục đích phát hiện trẻ em và chó một cách đáng tin cậy quanh xe, như một cảm biến phụ trợ cho xe tự lái. Nhưng LIDAR tầm xa gắn phía trên thì vẫn còn khó
    [1] https://www.ldrobot.com/

    • Tôi muốn biết việc tăng giá này thực sự đến từ đâu. Tìm kiếm cũng không ra nhiều
      Suy đoán đầu tiên của tôi là từ khoảng cách này trở đi, an toàn laser trở thành một quy trình điều khiển chủ động. Gương của máy quét laser phải liên tục chuyển động để năng lượng có hại cho võng mạc người không bị tích lũy, nên cần một hệ thống điều khiển bắt buộc về an toàn, liên tục giám sát tốc độ và vị trí gương, và tắt laser nếu gương chậm lại quá mức. Tôi sai đến mức nào nhỉ?
  • Có nhiều thứ từng tốt hơn trong “những ngày xưa tươi đẹp”, nhưng thật đáng kinh ngạc khi được sống trong thời đại mà một cá nhân có tài có thể tự tay tạo ra công nghệ như thế này

  • Hơi liên quan một chút: tôi đang tìm một cách rẻ để đo khoảng cách với độ chính xác khoảng 10 micron ở khoảng cách cỡ 300mm. Có ý tưởng nào không?

    • Có vẻ nằm trong phạm vi của digital readout (DRO) dùng cho máy phay và máy tiện
      my mechanics vừa đăng video thay thế cách đây vài ngày, thiết bị cũ có độ chính xác 5 micron
      Giá thì tôi không rõ
    • Điều quan trọng là khe hở cần đo có dịch chuyển nhiều không, và hệ thống đo có thể chạm vào hoặc được cố định hay không
      Có vẻ một cặp thước cặp tốt cũng làm được. Tùy yêu cầu về độ chính xác, cũng có thể dùng cách tiếp cận tương tự: đặt một lưới cell điện dung trượt trên cell đo, vi điều khiển đọc các giá trị khi di chuyển rồi dùng Atan2() cho kết quả cuối cùng. Phần “thước đo” trong đó, khi tách riêng, được gọi là DRO (Digital ReadOut)
    • Tôi từng gặp vấn đề tương tự và đã phải làm một thiết bị tùy chỉnh đắt đến mức không muốn thừa nhận. Vì vậy tôi khuyên nên xem các bộ DRO cho máy phay CNC trước
      Nếu không bị giới hạn ngân sách thì cũng có các giải pháp bàn dịch chuyển vòng kín hoàn chỉnh:
      https://www.pi-usa.us/en/
      https://xeryon.com
      Chúc may mắn, và hãy chuẩn bị tinh thần trước cú sốc giá
    • Tôi có vài ý tưởng thiết kế hệ thống DIY, nhưng mấu chốt là bạn có thể bỏ bao nhiêu tiền và thời gian cho thử nghiệm
      “Rẻ” theo tiêu chuẩn của bạn là khoảng bao nhiêu cũng rất quan trọng
      Tôi đang nghĩ đến việc tự động hóa theo hướng này:
      https://youtu.be/hnHjrz_inQU?si=dNzXVBVFsr7e8m_6
      Laser và cảm biến camera bán sẵn, nếu tự mày mò, cũng có thể cho độ chính xác khá bất ngờ
    • Để lấy ý tưởng thì cái này cũng đáng xem: https://youtu.be/qMYBwbTIL-0
  • Ví dụ Sketchfab thật tuyệt vời. Có thể đi quanh trong không gian 3D như một mô phỏng khoa học viễn tưởng
    Tuy nhiên thao tác bằng chuột quá khó hiểu. Nó hiện biểu tượng “nắm kéo”, nhưng thực tế không có cảm giác đang nắm gì cả, và hướng di chuyển lại ngược nên cảm thấy hoàn toàn thiếu tự nhiên

  • Có lẽ cũng có thể tháo các linh kiện kiểu này từ robot hút bụi trên eBay hoặc Goodwill

    • “Linh kiện kiểu này” ở đây là cảm biến LIDAR
  • Thật sự ấn tượng. Tôi chỉ lướt qua dự án nên có thể trong đó đã có rồi, nhưng tôi tò mò liệu có dữ liệu về độ chính xác không
    Ví dụ độ chính xác ở khoảng cách 10m; nếu LIDAR này không hoạt động ở khoảng cách đó thì tôi cũng muốn biết ở khoảng cách ngắn hơn
    Tôi quen với máy quét FARO, chúng dùng cơ chế khác và đủ chính xác để đo đạc công trình kiến trúc
    Tôi cũng biết thị trường máy quét có nhiều nhánh, trong đó có những người cần độ chính xác và những người tạo nội dung cho các media kiểu game. Dự án này thật sự khó tin

  • Gần đây tôi đang thử chút photogrammetry để quét các phòng và không gian trong nhà. Đến giờ Metashape có vẻ phù hợp nhất, nhưng độ chính xác vẫn chưa tốt lắm, và tôi cũng đang cải thiện kỹ thuật chụp
    Mục tiêu chính là biến nội thất các tòa nhà thật thành mô hình số để lưu giữ và phân tích. Tôi từng cân nhắc LIDAR một lúc nhưng gạt đi vì nghĩ quá khó và đắt, nhưng dự án này có vẻ đang làm lung lay giả định đó
    Tôi tò mò phần mềm hậu xử lý trông như thế nào. Liệu có thể lấy point cloud rồi kết hợp với dữ liệu khác như ảnh DSLR để tạo texture không?
    Nhìn vào hình thứ hai[1], một phần tường không được quét vì bị đèn treo che, và có lẽ LIDAR cũng không thấy phần trên ghế sofa. Có thể ghép hai hoặc nhiều point cloud để nhìn phía sau vật thể và các góc không? Phần mềm có thể tự căn chỉnh dựa trên các bức tường hoặc điểm chung để nhận ra đó là cùng một căn phòng ngoài đời, hay sẽ phải chỉnh tay khá nhiều? Với LIDAR có thứ gì tương đương coded target hoặc ARTag[0] không? Có mở rộng được sang nhiều phòng không?
    Tôi muốn biết nó có đáng cân nhắc so với photogrammetry làm tốt hay không, hay chỉ tốn công hơn
    Xin lỗi vì câu hỏi ở mức tôi còn không biết mình không biết gì
    0: https://en.wikipedia.org/wiki/ARTag
    1: https://github.com/PiLiDAR/PiLiDAR/raw/main/images/interior....

    • Hơi quảng cáo lộ liễu, nhưng nếu bạn có iPhone Pro hoặc iPad Pro tích hợp Lidar thì nên thử Dot3D. Nó làm được tất cả các chức năng bạn mô tả và được làm cho dễ dùng
  • Cảm ơn đã chia sẻ công trình tuyệt vời này. Tôi tò mò về khả năng mở rộng và hiệu năng của PiLiDAR khi áp dụng cho các tập dữ liệu ngoài trời quy mô lớn
    Nếu bạn đã benchmark trên các bộ dữ liệu như SemanticKITTI hoặc nuScenes, liệu bạn có thể cho biết thời gian chạy, mức dùng bộ nhớ, và nó tổng quát hóa tốt đến đâu vượt ra ngoài các cảnh trong nhà được dùng trong bài báo không?

    • Có vẻ có chút hiểu nhầm. Nếu tôi sai thì mong được sửa, nhưng đây không phải là mô hình để xử lý dữ liệu mà là máy quét LIDAR DIY để thu nhận dữ liệu
      Các bộ dữ liệu như vậy thường được tạo bằng camera RGBA, rồi point cloud được sinh ra sau trong bước hậu xử lý
      Vì vậy đây không phải mô hình xử lý, mà là một bản hack phần cứng để lấy dữ liệu độ sâu thực tế. Bạn có thể tải lên bất cứ thứ gì mình muốn
  • Đây chính là thứ tôi đã tìm vài tuần trước. Tôi đã để các linh kiện trong giỏ Amazon suốt mấy tuần để prototype một thứ đại khái tương tự, nhưng vẫn chưa chắc về việc chọn máy quét LIDAR thực tế
    Khi quay lại sau kỳ nghỉ Easter, tôi sẽ xem cái này như điểm xuất phát

 
chcv0313 2025-04-22

Cộng đồng đèn pin là gì vậy?

 
savvykang 2025-05-03

https://www.reddit.com/r/flashlight/
Đây là một cộng đồng nhỏ trên Reddit, có thể xem như tương đương với diễn đàn phụ về đèn pin trên DC Inside ở Hàn Quốc.

 
chcv0313 2025-05-20

Cảm ơn bạn