This project implements a time-of-flight lidar from scratch.
Could also serve as a platform for optical communication with pulse position modulation (PPM).
Parameter | Value | Comment |
---|---|---|
Resolution distance (single shot) | 10 cm | temporal resolution ~700ps |
Resolution distance (histogram mode) | <3mm | temporal resolution <20ps |
Resolution angle | 0.1125° | 200 steps per rev, 16 micro steps |
Pulse Length | 1ns | FWHM |
Pulse Repetition Frequency | 10MHz | configurable |
Minimum Distance | 5cm | |
Maximum Distance | >10m | white surface |
Field of view | 360°, 2-axis | only obstructed by PCB |
The system comprised the following modules:
- ToF PCB (Optical transceiver)
- Laser: Infrared 850nm high speed
- Photo Diode: 2 options - either APD or Si photo multiplier array
- Microcontroller for configuration and monitoring purposes
- Motor PCB
- Microcontroller for profile and step/direction generation
- PWM driver ICs
- Signal Driver PCB
- Drivers and received 50 Ohms high speed signal
- Variable Delay IC for test and calibration purposes
- FPGA board (Olimex)
- Softcore RiscV CPU
- Tx Sync generation
- time-to-digital converter implemented with LUTs (between Rx and Tx Sync)
- histogram measurement
- FPGA logicware and software
- Raspberry Pi 3 Model B
- For programming, debugging and communication, see raspice40
- Opto-mechanics, 2-axis gimbal
- including focusing and adjustment optics
- Python Software
- Coordination of gimbal position and time-of-flight data
- Point cloud generation
- compact 2-axis gimbal covering full 3D / 360° field of view, no moving electronics
- time-to-digital converter (TDC) implemented within low cost FPGA including calibration thereof
- Common control and status interface in SW and FPGA modules (Gepin)
- Automated testing environment in Python
- Soft core RiscV in low-cost FPGA (VexRiscV)
- APD or SiPM photo detector options
- This has been an educational project to learn about: PCB design, RF electronics, FPGA design, CAD design, Optics, microcontrollers and Python
- Design is not done for a product but for testability and modularity (prototype)
- A high power pulsed laser diode and driver designed for lidar would greatly increase range and resolution
- PCBs: KiCad
- Mechanics: Autodesk Fusion 360
- FPGA: SpinalHDL, Yosys, NextPnR
- Microcontroller: Arduino and Atmel Visual Studio
- Control and Status Registers: Cheby
Configuration with OPV310 laser and MTAPD-06-013 photo diode.
2d scans (scanner at origin):
3d point cloud:
- Hackaday article, incl pdf report: 3D Time-of-Flight Lidar from Scratch
- Youtube video: Gimbal Movement Tests