Sharing an open-source 3D spatial sensing ecosystem for HM-LD1 dToF LiDAR (ROS 1/ROS 2, Jetson, Android, & Demos)

:waving_hand: Hey everyone,

In our recent robotics and autonomous systems development, we’ve been working heavily with solid-state dToF (Direct Time-of-Flight) sensors. One particular unit we’ve spent a lot of time testing, integrating, and writing drivers for is the MRP HM-LD1 — a compact, lightweight (28g, ~1.2W) 40 X 30 resolution dToF depth sensor powered by SPAD technology.

Since we often see developers asking for reliable, cost-effective outdoor 3D perception tools that work natively with ROS and edge AI boards, we decided to fully open-source our complete driver and application software stack.

Below is a breakdown of what we’ve built, our open-source repos, and some honest performance data we gathered during outdoor stress testing.

:gear: Quick Hardware Specs

For those curious about the underlying sensor module:

  • Principle & Tech: dToF with stacked SPAD array; 940nm VCSEL (Class 1 eye-safe)

  • Resolution & FOV: 40 X 30 pixels at 10 fps; 60°(H) X 45°(V) FOV

  • Effective Range: Indoor: 0.5m – 25m | Outdoor: 0.2m – 8.0m

  • Interfaces: UART, UVC (USB Video Class), and UDP

  • Official Specs & HW Info: MRP HM-LD1 Product Page

:open_file_folder: Open-Source Repositories & Demos

We wanted to make sure the sensor can drop right into existing toolchains without painful boilerplate setup. Here are the open-source projects we’ve released:

:bar_chart: Real-World Outdoor Testing (109 klux Strong Sunlight)

Solid-state LiDAR performance under direct, harsh sunlight is always a hot topic. We ran static tests using 10% and 70% reflectance boards outdoors under ~109 klux sunlight:

  • Front-light (0.3m – 8.0m): Mean Absolute Error (MAE) sat at ~0.055m, with a maximum absolute error of ~0.090m at 8m. Measurements showed a consistent, slight underestimation trend relative to true distance.

  • Back-light (0.3m – 8.0m): MAE was ~0.043m, with a max error of ~0.140m observed at the 8m mark.

Developer takeaway: It holds up surprisingly well for short-to-mid range outdoor obstacle avoidance, but for production UAVs or UGVs, we strongly recommend implementing ROI (Region of Interest) filtering and point-count thresholds to screen out ambient noise.

:speech_balloon: Let’s Discuss

Have you been experimenting with dToF/SPAD sensors in your own ROS 2 or mobile robotics projects? How do you usually handle ambient light rejection in your obstacle avoidance pipelines?

PRs, issues, and contributions to any of the repos are more than welcome. Let me know what you think!

1 Like