Skip to content

Support for Hesai FT120 #410

Open
Open

Description

@mgiardino-be

For our project, we got a couple of Hesai FT120 solid state LIDAR. As this sensor is not yet supported, we integrated it into Nebula, following the documentations guidelines.

After rebasing our local branch over recent commit 222ac51, resulting changes should be in the "large contributions" camp (total diff file is more than 1600 lines).
Main changes are:

  • definition of new packet for the FT120 sensor (header, block and tail);
  • management of the sensor calibration file (it is a binary file format, that contains azimuth and elevation angles for each pixel of the sensor; a new subclass of HesaiCalibrationConfigurationBase was added);
  • a dedicated child class of AngleCorrector to manage the computations and storage of lookup tables for sin/cos;
  • a new child class of HesaiScanDecoder to manage the decoding (this was developed last November, so maybe it maintains the structure of the decoder before the last refactors);
  • minor additions to manage the new sensor.

There are a couple of dirty hacks (the second template parameter of the dedicated AngleCorrector is used to provide the total sensor column count; different standard parameter for rotating sensors must be declared but are not used, e.g. rotation_speed), and we don't have tests (we see the sensor output in Rviz, and for us is good enough; and we don't have idea how to build the tests).

Image

Should I open a PR?

Thank you for the great work!

Activity

  1. mojomex commented on Feb 24, 2026

    @mojomex
    Collaborator

    Hi @mgiardino-be, thank you for contributing!

    We'd love to see FT120 in Nebula, so a PR would be greatly appreciated. Given that the packet headers alone are probably hundreds of lines already, the large diff might actually be warranted in this case. We can go over the details in PR review 👍

    Since we don't have an FT120 to test with ourselves, could you provide a PCAP (e.g. recorded with Wireshark) containing all host-sensor communication (TCP+UDP) from before Nebula starts until after you close it? That way we can add unit tests from ground-truth data.

    Let me know if you have any other questions!

  2. mgiardino-be commented on Feb 25, 2026

    @mgiardino-be
    Author

    I've recorded a PCCAP file with Wireshark. There is:

    • about 3.4 seconds at the beginning with just the sensor;
    • from 3.4 s to about 10.0 s, I run Nebula;
    • after 10.0 s, Nebula has been closed and there is only the sensor.

    Sensor IP: 192.168.1.201
    Host IP: 192.168.1.101

    The resulting reading look like this image:
    Image

    And here is the PCAP file:
    FT120_record.pcap.gz

    I'm going to build a clean branch on my repo fork, before opening a PR.

    Have a nice day
    MG

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions