Repository navigation
Conversation
Signed-off-by: Autum60 <akiro.harada@tier4.jp>
Signed-off-by: Autum60 <akiro.harada@tier4.jp>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #520 +/- ##
==========================================
+ Coverage 45.71% 46.80% +1.09%
==========================================
Files 136 145 +9
Lines 10363 11057 +694
Branches 1282 1347 +65
==========================================
+ Hits 4737 5175 +438
- Misses 5624 5858 +234
- Partials 2 24 +22
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Collaborator
|
Hi @Autumn60, thanks for the contribution!
That way review will be much easier on our side. |
Signed-off-by: Autum60 <akiro.harada@tier4.jp>
This was referenced Oct 28, 2026
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Type
Related Links
Description
This PR adds support for two Hesai sensors, the AT128P and the FTX140, and makes the generic Hesai decoder ignore fault message packets.
AT128P
The AT128P uses the same point cloud packet format (protocol 4.3) as the AT128E2X, so it is implemented as
PandarAT128P, a subclass ofPandarAT128.FirstandFirstStrongestare supported.get_return_type()swaps them before classifying..dat) and the PTC handling of the AT128 are reused. Like the AT128, the lidar range is not set over PTC.HesaiInventory_AT128P_FTXhandles the 216-byte inventory, which has a part number after the serial number.0as its product model, which would be mistaken for a Pandar40P. The AT128 model number is reported instead, so the sensor is handled like the AT128 (PTC only).FTX140
The FTX140 is a solid-state lidar using point cloud UDP protocol 7.3. It gets its own decoder,
HesaiFtx140Decoder.HesaiFtxCalibration): the sensor provides a fisheye camera model instead of per-pixel angles. The model consists of focal length, principal point, four radial distortion coefficients and a tilt of the image plane. The ray direction of each pixel is computed from this model on load.FT::CorrectionV3::generate_pixel_vectors()of the Hesai LiDAR SDK 2.0, so points match the ones produced by Hesai's tools.HesaiLidarStatusFTXreads the lidar status. It has the AT128 layout, but the temperature fields are not reported because the sensor does not fill them.setup_sensor) is not supported, because the FTX140 does not support most setting commands (e.g. PTP config, lidar range). The node keeps the sensor's settings and logs a warning. This is noted indocs/supported_sensors.md.Fault message packets
Sensors such as the AT128P send fault messages (SOP
0xCDDC, 99 bytes) to the data port alongside point cloud packets.HesaiDecodertreated them as truncated point cloud packets and loggedPacket size mismatchfor each one, about 200 times per second per sensor.DecodeError::PACKET_IGNORED. Other truncated packets are still reported asPACKET_PARSE_FAILED.Other changes
AT128P.dat,FTX140.dat).Review Procedure
Build and run the unit tests:
colcon build --packages-up-to nebula_hesai --cmake-args -DBUILD_TESTING=ON colcon test --packages-select nebula_hesai nebula_hesai_decoders nebula_hesai_hw_interfaces colcon test-result --verboseNew tests:
test_hesai_at128p: return type handling of the AT128P, and the fault message handling ofHesaiDecoder.test_hesai_ftx140: calibration against reference directions from the Hesai SDK, rejection of invalid calibration data, full frame decoding, zoom mode, bottom-up rows, FoV cropping, and ignoring IMU and fault message packets.test_hesai_hw_interface: PTC commands of the AT128P and FTX140, and the inventory layout with the part number.(Optional) With a sensor, launch the driver:
Test results
nebula_hesai,nebula_hesai_decodersandnebula_hesai_hw_interfacespass (ROS 2 Jazzy, Agnocast disabled).Remarks
HesaiFtxCalibration. Please check whether this is acceptable for the license of this repository.Pre-Review Checklist for the PR Author
PR Author should check the checkboxes below when creating the PR.
Checklist for the PR Reviewer
Reviewers should check the checkboxes below before approval.
Post-Review Checklist for the PR Author
PR Author should check the checkboxes below before merging.
CI Checks