Repository navigation
Conversation
Signed-off-by: Autumn60 <harada.akiro@gmail.com> Signed-off-by: Autum60 <akiro.harada@tier4.jp>
…ponding tests 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 #523 +/- ##
==========================================
+ Coverage 45.71% 46.80% +1.09%
==========================================
Files 136 145 +9
Lines 10363 11057 +694
Branches 1282 1348 +66
==========================================
+ 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:
|
5 tasks
Autumn60
marked this pull request as ready for review
October 29, 2026 02:58
Autumn60
marked this pull request as draft
October 29, 2026 02:58
Autumn60
marked this pull request as ready for review
October 29, 2026 03:02
Autumn60
marked this pull request as draft
November 2, 2026 00:33
This branch has not been deployed
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 the Hesai FTX140, a solid-state lidar using point cloud UDP protocol 7.3.
Note
This branch is stacked on the fault message PR and the AT128P PR, so until they are merged, it also contains their commits. Only the last commit,
feat(nebula_hesai): add FTX140 support, belongs to this PR. I will rebase it ontomainonce the other two are merged.Decoder
The FTX140 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.DecodeError::PACKET_IGNORED).First(sensor default),LastandStrongestare supported. Dual return modes are rejected in the configuration.Hardware interface
Inventory: the FTX140 has the same 216-byte inventory layout as the AT128P, so
HesaiInventory_AT128Pis reused. Like the AT128P, it reports0as its product model, so it is handled like the AT128 (PTC only).Status:
HesaiLidarStatusFTXreads the lidar status. It has the AT128 layout, but the temperature fields are not reported because the sensor does not fill them.Sensor setup (
setup_sensor): the FTX140 has its own config info layout (HesaiConfig_FTX, 47 bytes without spin rate, sync angle or GPS port) and supports fewer setting commands, so it gets its owncheck_and_set_config(). It compares and, if needed, sets only:0, as the FTX140 does not support it.3like on the OT128. The FTX140 expects the PTP status (enabled) before the profile, so the payload is{1, 3, domain, network, switch type}. The schema restrictsptp_profiletoautomotiveaccordingly.Spin rate, sync angle and lidar range do not exist on the FTX140 and are skipped. The command layouts follow the public FTX TCP API Reference (ARF04-en-260620).
Other changes
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_ftx140: calibration against reference directions from the Hesai SDK, rejection of invalid calibration data, full frame decoding, zoom mode, bottom-up rows, FoV cropping, ignoring IMU and fault message packets, and the supported (single) return modes.test_hesai_hw_interface: PTC commands of the FTX140, the config info layout, and the sensor setup. The mock sensor now records requests and can return custom responses, so the tests check the exact set commands: all three when the config differs, none when it matches.(Optional) With a sensor, launch the driver:
Test results
nebula_hesai,nebula_hesai_decodersandnebula_hesai_hw_interfacespass (ROS 2 Jazzy, Agnocast disabled). This includes the tests of the two PRs this one depends on.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