Close Menu

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Your PC deserves around-the-clock privacy protection—get AdGuard’s Family Plan for $16

    At $75, who gives a crap if you drop this Chromebook?

    Getting sick of all the Prime Video ads? Amazon quietly doubled them

    Facebook X (Twitter) Instagram
    • Artificial Intelligence
    • Business Technology
    • Cryptocurrency
    • Gadgets
    • Gaming
    • Health
    • Software and Apps
    • Technology
    Facebook X (Twitter) Instagram Pinterest Vimeo
    Tech AI Verse
    • Home
    • Artificial Intelligence

      How far will AI go to defend its own survival?

      June 2, 2025

      The internet thinks this video from Gaza is AI. Here’s how we proved it isn’t.

      May 30, 2025

      Nvidia CEO hails Trump’s plan to rescind some export curbs on AI chips to China

      May 22, 2025

      AI poses a bigger threat to women’s work, than men’s, report says

      May 21, 2025

      AMD CEO Lisa Su calls China a ‘large opportunity’ and warns against strict U.S. chip controls

      May 8, 2025
    • Business

      Google links massive cloud outage to API management issue

      June 13, 2025

      The EU challenges Google and Cloudflare with its very own DNS resolver that can filter dangerous traffic

      June 11, 2025

      These two Ivanti bugs are allowing hackers to target cloud instances

      May 21, 2025

      How cloud and AI transform and improve customer experiences

      May 10, 2025

      Cookie-Bite attack PoC uses Chrome extension to steal session tokens

      April 22, 2025
    • Crypto

      Another LastPass User Loses $200,000 in Crypto to Hackers

      June 13, 2025

      Stellar (XLM) Price Hits Monthly Low – What’s Next?

      June 13, 2025

      Crypto Founder Sentenced to 8 Months in Prison on Wash Trading Charges

      June 13, 2025

      3 Altcoins That Are Thriving Despite Today’s Brief Market Crash

      June 13, 2025

      Top Altcoins Trending in Nigeria as Traders Shift Beyond Bitcoin, Ethereum

      June 13, 2025
    • Technology

      Your PC deserves around-the-clock privacy protection—get AdGuard’s Family Plan for $16

      June 14, 2025

      At $75, who gives a crap if you drop this Chromebook?

      June 14, 2025

      Getting sick of all the Prime Video ads? Amazon quietly doubled them

      June 14, 2025

      Bad news for older PCs: DDR4 memory is nearing an end

      June 14, 2025

      Want the best iPadOS 26 experience this fall? Get this M3 iPad Air for just $499

      June 14, 2025
    • Others
      • Gadgets
      • Gaming
      • Health
      • Software and Apps
    Shop Now
    Tech AI Verse
    You are at:Home»Technology»Raspberry Pi Lidar Scanner
    Technology

    Raspberry Pi Lidar Scanner

    TechAiVerseBy TechAiVerseApril 19, 2025No Comments7 Mins Read5 Views
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr Email Reddit
    Raspberry Pi Lidar Scanner
    Share
    Facebook Twitter LinkedIn Pinterest WhatsApp Email

    Raspberry Pi Lidar Scanner

    PiLiDAR – DIY 360° 3D Panorama Scanner

    WORK IN PROGRESS

    Core Features:

    • LiDAR: custom serial driver for LDRobot LD06, LD19 or STL27L

      • CRC package integrity check
      • Hardware PWM calibrated using curve fitting
      • 2D live visualization and export (numpy or CSV)
    • Panorama: 6K 360° spherical map

      • stitched from fisheye photos using Hugin Panorama photo stitcher
      • constant camera exposure by reading EXIF data of automatic
      • constant white balance by iterative optimization of color gains
    • 3D Scene: assembly of 3D scenes from 2D planes based on angle and offsets

      • sampling vertex colors from panorama
      • Open3D visualization and export (PCD, PLY or e57)
      • aligning multiple scenes using global registration and ICP fine-tuning
      • Poisson Surface Meshing (very slow on Pi4, recommended to run on PC)

    preliminary results

    single scans, no registration, no post processing.
    klick the images to open the pointclouds in Sketchfab.

    Exterior Scan (colormapped Intensity)

    Interior Scan (Vertex Colors)

    Hardware Specs:

    • LDRobot LD06, LD19 or STL27L LiDAR

    • Raspberry Pi HQ Camera with ArduCam M12 Lens (M25156H18, p.7)

    • Raspberry Pi 4

    • NEMA17 42-23 stepper with A4988 driver

    • Power Supply:

      • v1: 2x 18650 Batteries (7.2V) with step-down converter
      • v2: 10.000 mAh USB Powerbank with step-up converter


    Rev. 1 using 2x 18650 Batteries and Buck Converter


    Rev. 2 using 10.000 mAh Powerbank and Boost Converter

    stepper driver, motor and gearbox

    • A4988 bipolar stepper driver (tutorial)
    • NEMA17 42x42x23 bipolar stepper (17HE08-1004S, 17 Ncm torque)
    • 3D-printed planetary reduction gearbox (see FDM / 3D printing)

    LDRobot LiDAR Specs


    angular resolution of LD06 (left) vs. STL27L (right)

    LD06:

    • sampling frequency: 4500 Hz
    • baudrate 230400
    • Sales page
    • mechanical Datasheet
    • Protocol Description

    STL27L:

    • sampling frequency: 21600 Hz
    • baudrate 921600
    • datasheet
    • wiki
    • ROS2 driver git

    Scan duration:
    12s initialisation
    17s shooting 4x photos
    1:24m scanning 0.167° x 0.18°
    37s stitching, cleanup

    wiring


    Breadboard Rev. 2

    LD06 / STL27L:

    • UART Tx (yellow)
    • PWM (white)
    • GND (black)
    • VCC 5V (red)

    Raspberry Pi:

    • LD06 UART0 Rx: GP15
    • LD06 PWM0: GP18
    • Power Button: GP03
    • Scan Button: GP17
    • A4988 direction: GP26, step: GP19
    • A4988 microstepping mode: GP5, GP6, GP13

    Setup

    Power Button (Wakeup & Shutdown)

    • Wakeup is hardwired to Pin 3

    • enable gpio-shutdown

      > /boot/firmware/config.txt “>

        echo "dtoverlay=gpio-shutdown" >> /boot/firmware/config.txt 
      
    • if necesessary:

        sudo nano /etc/systemd/logind.conf
        HandlePowerKey=poweroff
      

    enable i2c-GPIO for GY-521 Accelerometer

    GY-521 (MPU 6060): Accelerometer, Gyroscope and thermometer
    i2c adress: 0x68

    Since GPIO3 is hardwired to the Power Button, we need to use i2c-GPIO to map custom i2c pins (tutorial). Unlike serial is not getting crossed, so we connect SDA-SDA and SCL-SCL.
    SDA: GPIO22
    SCL: GPIO27

    disable ic2_arm and enable i2c-gpio in /boot/firmware/config.txt

    dtparam=i2c_arm=off
    dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=1,i2c_gpio_sda=22,i2c_gpio_scl=27
    

    search for devices on i2c bus 3:

    Power LED and CPU fan

    > /boot/firmware/config.txt

    # Power LED Heartbeat:
    echo “dtparam=pwr_led_trigger=timer” >> /boot/firmware/config.txt”>

    # CPU fan at lower temp
    echo "dtoverlay=gpio-fan,gpiopin=4,temp=45000" >> /boot/firmware/config.txt
    
    
    # Power LED Heartbeat:
    echo "dtparam=pwr_led_trigger=timer" >> /boot/firmware/config.txt
    

    Scan Button: register GPIO interrupt

    make script executable:

    chmod +x gpio_interrupt.py
    

    create new service for autostart

    sudo nano /etc/systemd/system/pilidar.service
    

    content:

    [Unit]
    Description=PiLiDAR-Button
    After=network.target
    
    [Service]
    Type=simple
    User=pi
    Environment=LG_WD=/tmp
    ExecStart=/usr/bin/python3 /home/pi/PiLiDAR/gpio_interrupt.py
    Restart=no
    
    [Install]
    WantedBy=multi-user.target
    

    reload daemon, enable and start service:

    sudo systemctl daemon-reload
    sudo systemctl enable pilidar.service
    sudo systemctl start pilidar.service
    

    check service if necessary:

    sudo systemctl status pilidar.service
    

    set Permission for UART on Raspberry Pi

    temporary solution:

    sudo chmod a+rw /dev/ttyS0
    

    old solution: make it permanent by disabling password for chmod:

    sudo visudo
    pi ALL=(ALL:ALL) NOPASSWD: /usr/bin/chmod a+rw /dev/ttyS0
    

    then execute the temporary solution from python:

    import subprocess
    command = "sudo chmod a+rw /dev/ttyS0"
    process = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
    output, error = process.communicate()
    

    new solution: grant permissions to the serial port using udev rules

    (TODO: check and remove old!)

    • forget about visudo and the subprocess call above.
    • Open a terminal and run the following command: sudo nano /etc/udev/rules.d/50-ttyS0.rules
    • Write the following line in the file and save it: KERNEL=="ttyS0",GROUP="dialout",MODE="0660"
    • Run the following command to check if your user is a member of the dialout group: groups
    • If you see dialout in the output, you are already a member of the group. If not, run the following command to add your user to the group: sudo usermod -a -G dialout pi
    • Run the following command to reload the udev rules: sudo udevadm control --reload-rules
    • Unplug and replug the serial device, or reboot the system, to apply the changes.

    Hardware PWM on Raspberry Pi

    enable GPIO_18 (PWM0) and GPIO_19 (PWM1)

    > /boot/firmware/config.txt “>

    echo "dtoverlay=pwm-2chan" >> /boot/firmware/config.txt 
    

    check if “pwm_bcm2835” now exists:

    Install RPi Hardware PWM library:

    pip install rpi-hardware-pwm
    

    Panorama Stitching

    install Hugin with enblend plugin

    sudo apt-get install hugin-tools enblend
    

    power switching the USB port

    using uhubctl cli tool. install:

    sudo apt-get install uhubctl
    

    list all available hubs and devices

    powering Raspberry Pi’s USB-3-Ports (Hub 2) off / on

    sudo uhubctl -l 2 -a off
    sudo uhubctl -l 2 -a on
    

    jupyter over remote-ssh

    start jupyter for network access:

    jupyter notebook --ip 192.168.1.16 --no-browser PiLiDAR.ipynb
    

    FDM / 3D printing

    3D model files:

    • Housing and additional parts (obj and 3mf) in mechanical_design/v2/export.

    • M12 to C-Mount lens adapter (thingiverse.com)

    • NEMA17 planetary reduction gearbox (printables.com)


    Housing CAD model Rev. 2


    FDM printing the old front panel (Rev. 1) in PETG

    Serial Protocol

    LD06

    baudrate 230400, data bits 8, no parity, 1 stopbit
    sampling frequency 4500 Hz, scan frequency 5-13 Hz, distance 2cm – 12 meter, ambient light 30 kLux

    total package size: 48 Byte, big endian.

    • starting character:Length 1 Byte, fixed value 0x54, means the beginning of data packet;
    • Data Length: Length 1 Byte, the first three digits reserved, the last five digits represent the number of measured points in a packet, currently fixed value 12;
    • speed:Length 2 Byte, in degrees per second;
    • Start angle: Length: 2 Byte; unit: 0.01 degree;
    • Data: Length 36 Byte; containing 12 data points with 3 Byte each: 2 Byte distance (unit: 1 mm), 1 Byte luminance. For white objects within 6m, the typical luminance is around 200.
    • End Angle: Length: 2 Byte; unit: 0.01 degree;
    • Timestamp: Length 2 Bytes in ms, recount if reaching to MAX 30000;
    • CRC check: Length 1 Byte

    The Angle value of each data point is obtained by linear interpolation of the starting angle and the ending angle.
    The calculation method of the angle is as following:

    step = (end_angle – start_angle)/(len – 1)  
    angle = start_angle + step*i  
    

    len is the length of the packet, and the i value range is [0, len].

    remote Open3D Visualization

    using Web Visualizer Plotly to display 3D pointclouds works great in Jupyter.

    Plotly seems to render client-sided, unlike Open3D Web Visualizer which renders host-sided and streams jpg sequences, which strains the Pi’s both CPU and WIFI.

    Dumping Scans to USB Storage

    1. Clone the Repo and run the installer:

      cd /home/pi/PiLiDAR
      git clone https://github.com/LaserBorg/usb_dump --depth 1
      cd usb_dump && chmod +x install.sh && ./install.sh "$(pwd)"
      
    2. Create the config file:
      usbdump.json”>

      echo '{"source_directories": ["/home/pi/PiLiDAR/scans"], "target_root_directory": null}' > usbdump.json
      

    Troubleshoot USB_dump:

    • Check the log file:

    • to uninstall the service, run

      chmod +x uninstall.sh && ./uninstall.sh
      
    • if the mount point is still persistend after being removed, just delete them.

      Troubleshooting

      Windows Serial Driver

      get CP210x_Universal_Windows_Driver.zip here:
      https://www.waveshare.com/wiki/DTOF_LIDAR_STL27L#Software_Download

      RPi.GPIO RuntimeError: Failed to add edge detection

      current bookworm version has deprecated sysfs GPIO interface removed.
      use LGPIO as described here:

      sudo apt remove python3-rpi.gpio
      sudo apt update
      
      sudo apt install python3-rpi-lgpio
      
      # or in an env without system packages:
      pip3 install rpi-lgpio
      

      LGPIO creates temp-files (issue) like “.lgd-nfy0”. gpio-interrupt.py executes ‘export LG_WD=/tmp’ to set it’s CWD.

      poor performance of VS Code on Raspberry Pi

      disable hardware acceleration for VS Code (source)

      Preferences: Configure Runtime Arguments  
      Set "disable-hardware-acceleration": true
      

      pye57 on Raspberry Pi

      there is no wheel for arm64. build requires libxerces:

      sudo apt install libxerces-c-dev
      pip install pye57
      

      add WIFI via SSH

      tutorial:

      sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
      
      # make sure country code is set:
      country=DE
      

      add entry to wpa_supplicant.conf

      sudo wpa_passphrase "YOUR_SSID" "YOUR_PASSWORD" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
      

      references:

      inspirations

      • LIDAR_LD06_python_loder and Lidar_LD06_for_Arduino by Inoue Minoru (“henjin0“)
      • ShaunPrice’s StereoPi-supporting fork of BrianBock’s 360-camera script (Article on Medium)

      another Lidar implementation in Python

      • pyLIDAR

      hardware PWM using GPIOZero

      ICP implementations:

      • Aeva Doppler-ICP
      • Photogrammetry & Robotics Bonn KISS-ICP and Lidar-Visualizer

      3D Demo Data for global registration, ICP, meshing etc.:

      • BunnyMesh.ply from 20220201-data
      • DemoICPPointClouds.zip from 20220301-data

      Using a MOSFET for switching: tutorial

      A4988 Enable, Sleep and Reset tutorial

    Share. Facebook Twitter Pinterest LinkedIn Reddit WhatsApp Telegram Email
    Previous ArticleSsl.com: DCV bypass and issue fake certificates for any MX hostname
    Next Article The Web Is Broken – Botnet Part 2
    TechAiVerse
    • Website

    Jonathan is a tech enthusiast and the mind behind Tech AI Verse. With a passion for artificial intelligence, consumer tech, and emerging innovations, he deliver clear, insightful content to keep readers informed. From cutting-edge gadgets to AI advancements and cryptocurrency trends, Jonathan breaks down complex topics to make technology accessible to all.

    Related Posts

    Your PC deserves around-the-clock privacy protection—get AdGuard’s Family Plan for $16

    June 14, 2025

    At $75, who gives a crap if you drop this Chromebook?

    June 14, 2025

    Getting sick of all the Prime Video ads? Amazon quietly doubled them

    June 14, 2025
    Leave A Reply Cancel Reply

    Top Posts

    New Akira ransomware decryptor cracks encryptions keys using GPUs

    March 16, 202523 Views

    OpenAI details ChatGPT-o3, o4-mini, o4-mini-high usage limits

    April 19, 202518 Views

    Rsync replaced with openrsync on macOS Sequoia

    April 7, 202514 Views

    Arizona moves to ban AI use in reviewing medical claims

    March 12, 202511 Views
    Don't Miss
    Technology June 14, 2025

    Your PC deserves around-the-clock privacy protection—get AdGuard’s Family Plan for $16

    Your PC deserves around-the-clock privacy protection—get AdGuard’s Family Plan for $16 Skip to content Image:…

    At $75, who gives a crap if you drop this Chromebook?

    Getting sick of all the Prime Video ads? Amazon quietly doubled them

    Bad news for older PCs: DDR4 memory is nearing an end

    Stay In Touch
    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • Vimeo

    Subscribe to Updates

    Get the latest creative news from SmartMag about art & design.

    About Us
    About Us

    Welcome to Tech AI Verse, your go-to destination for everything technology! We bring you the latest news, trends, and insights from the ever-evolving world of tech. Our coverage spans across global technology industry updates, artificial intelligence advancements, machine learning ethics, and automation innovations. Stay connected with us as we explore the limitless possibilities of technology!

    Facebook X (Twitter) Pinterest YouTube WhatsApp
    Our Picks

    Your PC deserves around-the-clock privacy protection—get AdGuard’s Family Plan for $16

    June 14, 20250 Views

    At $75, who gives a crap if you drop this Chromebook?

    June 14, 20250 Views

    Getting sick of all the Prime Video ads? Amazon quietly doubled them

    June 14, 20250 Views
    Most Popular

    Ethereum must hold $2,000 support or risk dropping to $1,850 – Here’s why

    March 12, 20250 Views

    Xiaomi 15 Ultra Officially Launched in China, Malaysia launch to follow after global event

    March 12, 20250 Views

    Apple thinks people won’t use MagSafe on iPhone 16e

    March 12, 20250 Views
    © 2025 TechAiVerse. Designed by Divya Tech.
    • Home
    • About Us
    • Contact Us
    • Privacy Policy
    • Terms & Conditions

    Type above and press Enter to search. Press Esc to cancel.