tier4 / nebula

A universal LiDAR and radar driver for ROS 2, supporting Hesai, Velodyne, Robosense and Continental sensors.
https://tier4.github.io/nebula/
Apache License 2.0
51 stars 51 forks source link

feat: support Aeva Aeries II #169

Open mojomex opened 4 months ago

mojomex commented 4 months ago

PR Type

Description

Add support for Aeva Aeries II:

Review Procedure

Remarks

This is a fairly minimal implementation for now.

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

mojomex commented 4 months ago

:green_circle: Evaluation

:green_circle: Pointcloud Output

Pointcloud Field Image
azimuth azimuth
elevation elevation
distance distance
range rate range_rate_-2_2
intensity intensity
channel channel
return type* returtn_type_strongest_secondstrongest
timestamp** time_stamp_0_1e8

*: red: strongest, magenta: second strongest. ~Currently, there is no documented way to get or set the return mode without the proprietary API. Nebula is currently hard-coded for the default configuration.~ fixed in 7ea9137. Return modes are now correctly handled. **: clamped to [red, magenta] = [0 ns, 1e8 ns]. Timestamps are loosely proportional to increasing elevation.

:green_circle: Performance

The pointcloud is published consistently at around 10 Hz: pointcloud_10hz

:green_circle: Hardware Monitor

Diagnostic Image
temperature monitor_temperature
system info monitor_sysinfo
SPC converter monitor_spc_converter
scanner monitor_scanner
health codes*** monitor_health
configuration monitor_config

***: :warning: Currently, the descriptions of health codes are under NDA and cannot be put into Nebula.

:green_circle: PTP & Synchronization

PTP has been tested with all provided mechanisms (1588v2, gPTP, automotive) and works with all of them using the vendor-provided configurations.

Pointcloud timestamps take around 1-2 min to converge.

Description Image
PTP started, sensor syncs shortly after ptp_start
~100s later, timestamp converges to ToS sync_converged
HW monitor shows converged state monitor_converged
HW monitor shows PTP info monitor_ptp

:green_circle: Error Handling & Recovery

Currently, Nebula does not attempt to recover from communication errors and instead exits, instead of continuing in a possibly corrupted state. Errors that have been observed:

All of these errors only occur during startup. No crashes / errors were observed during runtime.

:green_circle: Parameters

All parameters from the sensor's manifest that have more than one possible value have been added to Nebula. No attempt was made to convert them to the common naming scheme used in the other drivers (e.g. return_mode for Aeva is second_peak_type).

Validation:

mojomex commented 4 months ago

@drwnz All issues from yesterday have been addressed and I could not find any bugs or unexpected behavior since. I think this is ready to merge.

codecov-commenter commented 3 months ago

Codecov Report

Attention: Patch coverage is 0.24845% with 803 lines in your changes missing coverage. Please review.

Project coverage is 24.05%. Comparing base (3284357) to head (dfb1a02). Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
nebula_ros/src/aeva/aeva_ros_wrapper.cpp 0.00% 167 Missing :warning:
...nebula_hw_interfaces_aeva/connections/reconfig.hpp 0.00% 101 Missing :warning:
...ebula_hw_interfaces_aeva/connections/telemetry.hpp 0.00% 78 Missing :warning:
nebula_ros/src/aeva/hw_monitor_wrapper.cpp 0.00% 77 Missing :warning:
...nebula_hw_interfaces_aeva/connections/aeva_api.hpp 0.00% 67 Missing :warning:
...rc/nebula_aeva_hw_interfaces/aeva_hw_interface.cpp 0.00% 49 Missing :warning:
.../src/nebula_decoders_aeva/aeva_aeries2_decoder.cpp 0.00% 38 Missing :warning:
...hw_interfaces_common/connections/stream_buffer.hpp 0.00% 23 Missing :warning:
...common/include/nebula_common/aeva/config_types.hpp 0.00% 17 Missing :warning:
...bula_hw_interfaces_aeva/connections/pointcloud.hpp 0.00% 17 Missing :warning:
... and 22 more
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #169 +/- ## ========================================== - Coverage 26.10% 24.05% -2.05% ========================================== Files 100 125 +25 Lines 9218 10012 +794 Branches 2215 2309 +94 ========================================== + Hits 2406 2408 +2 - Misses 6423 7215 +792 Partials 389 389 ``` | [Flag](https://app.codecov.io/gh/tier4/nebula/pull/169/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tier4) | Coverage Δ | | |---|---|---| | [differential](https://app.codecov.io/gh/tier4/nebula/pull/169/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tier4) | `24.05% <0.24%> (?)` | | | [total](https://app.codecov.io/gh/tier4/nebula/pull/169/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tier4) | `?` | | Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tier4#carryforward-flags-in-the-pull-request-comment) to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

mojomex commented 1 week ago

:green_circle: Confirmed working with FW 14.0.0 after the latest commits: image