diff --git a/docs/point_types.md b/docs/point_types.md index 63f629f99..dcde09409 100644 --- a/docs/point_types.md +++ b/docs/point_types.md @@ -1,56 +1,60 @@ # Nebula point cloud types -Nebula supports three point cloud output types. +Nebula currently supports the below point cloud output types. However, it can easily be extended to support other custom point cloud types. These definitions can be found in the `nebula_common/include/point_types.hpp`. ## PointXYZIR -| Field | Type | Units | Description | -| ------------- | ------- | ----- | -------------------------------------------------------------------- | -| `x` | `float` | `m` | Contains the abscissa member of the point in cartesian coordinates. | -| `y` | `float` | `m` | Contains the ordinate member of the point in cartesian coordinates. | -| `z` | `float` | `m` | Contains the applicate member of the point in cartesian coordinates. | -| `intensity` | `uint8` | | Contains the laser energy return value as reported by the sensor. | -| `return type` | `uint8` | | Contains the lase return type according to the sensor configuration. | - -## PointXYZICAETR - -| Field | Type | Units | Description | -| ------------- | ------- | ----- | -------------------------------------------------------------------- | -| `x` | `float` | `m` | Contains the abscissa member of the point in cartesian coordinates. | -| `y` | `float` | `m` | Contains the ordinate member of the point in cartesian coordinates. | -| `z` | `float` | `m` | Contains the applicate member of the point in cartesian coordinates. | -| `intensity` | `uint8` | | Contains the laser energy return value as reported by the sensor. | -| `channel` | `uint8` | | Contains the laser channel id. | -| `azimuth` | `float` | `rad` | Contains the azimuth of the current point. | -| `elevation` | `float` | `rad` | Contains the elevation of the current point. | -| `timestamp` | `float` | `ns` | Contains the relative time to the triggered scan time. | -| `return type` | `uint8` | | Contains the lase return type according to the sensor configuration. | +| Field | Type | Units | Description | +| ----------- | -------- | ----- | -------------------------------------------------- | +| `x` | `float` | `m` | Cartesian x coordinate. | +| `y` | `float` | `m` | Cartesian y coordinate. | +| `z` | `float` | `m` | Cartesian z coordinate. | +| padding | 4 bytes | | | +| `intensity` | `float` | | Intensity of the return as reported by the sensor. | +| `ring` | `uint16` | | Ring ID - only defined for rotational LiDARs. | ## PointXYZICATR -| Field | Type | Units | Description | -| ------------- | ------- | --------- | -------------------------------------------------------------------- | -| `x` | `float` | `m` | Contains the abscissa member of the point in cartesian coordinates. | -| `y` | `float` | `m` | Contains the ordinate member of the point in cartesian coordinates. | -| `z` | `float` | `m` | Contains the applicate member of the point in cartesian coordinates. | -| `intensity` | `uint8` | | Contains the laser energy return value as reported by the sensor. | -| `channel` | `uint8` | | Contains the laser channel id. | -| `azimuth` | `float` | `degrees` | Contains the azimuth of the current point. | -| `timestamp` | `float` | `ns` | Contains the relative time to the triggered scan time. | -| `return type` | `uint8` | | Contains the lase return type according to the sensor configuration. | +| Field | Type | Units | Description | +| ------------- | -------- | --------- | ------------------------------------------------------- | +| `x` | `float` | `m` | Cartesian x coordinate. | +| `y` | `float` | `m` | The point's cartesian y coordinate. | +| `z` | `float` | `m` | Cartesian z coordinate. | +| padding | 4 bytes | | | +| `intensity` | `uint8` | | Intensity of the return as reported by the sensor. | +| `channel` | `uint16` | | The ID of the laser channel that produced the point. | +| `azimuth` | `float` | `degrees` | Azimuth in polar coordinates. | +| `timestamp` | `uint32` | `ns` | Time of detection relative to the pointcloud timestamp. | +| `return type` | `uint8` | | Return (echo) type. | ## PointXYZIRADT -| Field | Type | Units | Description | -| ------------- | ------- | --------- | -------------------------------------------------------------------------- | -| `x` | `float` | `m` | Contains the abscissa member of the point in cartesian coordinates. | -| `y` | `float` | `m` | Contains the ordinate member of the point in cartesian coordinates. | -| `z` | `float` | `m` | Contains the applicate member of the point in cartesian coordinates. | -| `intensity` | `uint8` | | Contains the laser energy return value as reported by the sensor. | -| `return type` | `uint8` | | Contains the lase return type according to the sensor configuration. | -| `azimuth` | `float` | `degrees` | Contains the azimuth of the current point. | -| `distance` | `float` | `m` | Contains the distance from the sensor origin to this echo on the XY plane. | -| `timestamp` | `float` | `ns` | Contains the relative time to the triggered scan time. | +| Field | Type | Units | Description | +| ------------- | -------- | --------- | ------------------------------------------------------- | +| `x` | `float` | `m` | Cartesian x coordinate. | +| `y` | `float` | `m` | Cartesian y coordinate. | +| `z` | `float` | `m` | Cartesian z coordinate. | +| padding | 4 bytes | | | +| `intensity` | `float` | | Intensity of the return as reported by the sensor. | +| `return type` | `uint8` | | Return (echo) type. | +| `azimuth` | `float` | `degrees` | Azimuth in polar coordinates. | +| `distance` | `float` | `m` | Distance from the sensor origin. | +| `timestamp` | `double` | `ns` | Time of detection relative to the pointcloud timestamp. | + +## NebulaPoint = PointXYZIRCAEDT + +| Field | Type | Units | Description | +| ------------- | -------- | ----- | ------------------------------------------------------- | +| `x` | `float` | `m` | Cartesian x coordinate. | +| `y` | `float` | `m` | Cartesian y coordinate. | +| `z` | `float` | `m` | Cartesian z coordinate. | +| `intensity` | `uint8` | | Intensity of the return as reported by the sensor. | +| `return type` | `uint8` | | Return (echo) type. | +| `channel` | `uint16` | | Laser channel ID. | +| `azimuth` | `float` | `rad` | Azimuth in polar coordinates. | +| `elevation` | `float` | `rad` | Elevation in polar coordinates. | +| `distance` | `float` | `m` | Distance from the sensor origin. | +| `timestamp` | `uint32` | `ns` | Time of detection relative to the pointcloud timestamp. | diff --git a/docs/supported_sensors.md b/docs/supported_sensors.md index 82821c29b..55fb1a381 100644 --- a/docs/supported_sensors.md +++ b/docs/supported_sensors.md @@ -1,44 +1,55 @@ # Supported sensors -Nebula currently supports the following sensor models, where `sensor_model` is the ROS parameter to be used at launch: +Nebula currently supports the sensor models listed below. The test status column indicates how many of the sensors' features are supported. + +For all sensors, the respective configuration file is found under `nebula_ros/config///` where + +- `` is either lidar or radar, +- `` is the vendor of the sensor and +- `` is listed in the table below. + +The launch file for a given vendor is called `_launch_all_hw.xml`. +The `sensor_model` parameter below decides which sensor driver is launched. ## Hesai LiDARs -| Model | `sensor_model` | Configuration file | Test status | -| ------------- | -------------- | ------------------ | ----------- | -| Pandar64 | Pandar64 | Pandar64.yaml | ✅ | -| Pandar 40P | Pandar40P | Pandar40P.yaml | ✅ | -| Pandar XT32 | PandarXT32 | PandarXT32.yaml | ✅ | -| Pandar XT32M | PandarXT32M | PandarXT32M.yaml | ⚠️ | -| Pandar QT64 | PandarQT64 | PandarQT64.yaml | ✅ | -| Pandar QT128 | PandarQT128 | PandarQT128.yaml | ⚠️ | -| Pandar AT128 | PandarAT128 | PandarAT128.yaml | ✅\* | -| Pandar 128E4X | Pandar128E4X | Pandar128E4X.yaml | ⚠️ | +| Model | `sensor_model` | Configuration file | Test status | +| ------------ | -------------- | ----------------------- | ----------- | +| Pandar64 | Pandar64 | Pandar64.param.yaml | ✅ | +| Pandar 40P | Pandar40P | Pandar40P.param.yaml | ✅ | +| Pandar XT32 | PandarXT32 | PandarXT32.param.yaml | ✅ | +| Pandar XT32M | PandarXT32M | PandarXT32M.param.yaml | ⚠️ | +| Pandar QT64 | PandarQT64 | PandarQT64.param.yaml | ✅ | +| Pandar QT128 | PandarQT128 | PandarQT128.param.yaml | ⚠️ | +| Pandar AT128 | PandarAT128 | PandarAT128.param.yaml | ✅\* | +| Pandar OT128 | Pandar128E4X | Pandar128E4X.param.yaml | ⚠️ | + +\*: AT128 needs software version 3.50.8 or newer for the `scan_angle` setting to work correctly. ## Velodyne LiDARs | Model | `sensor_model` | Configuration file | Test status | | ------------ | -------------- | ------------------ | ----------- | -| VLP-16 | VLP16 | VLP16.yaml | ⚠️ | +| VLP-16 | VLP16 | VLP16.param.yaml | ⚠️ | | VLP-16-HiRes | VLP16 | | ❌ | -| VLP-32 | VLP32 | VLP32.yaml | ⚠️ | -| VLS-128 | VLS128 | VLS128.yaml | ⚠️ | +| VLP-32 | VLP32 | VLP32.param.yaml | ⚠️ | +| VLS-128 | VLS128 | VLS128.param.yaml | ⚠️ | ## Robosense LiDARs | Model | `sensor_model` | Configuration file | Test status | | ------ | -------------- | ------------------ | ----------- | -| Bpearl | Bpearl | Bpearl.yaml | ⚠️ | -| Helios | Helios | Helios.yaml | ⚠️ | +| Bpearl | Bpearl | Bpearl.param.yaml | ⚠️ | +| Helios | Helios | Helios.param.yaml | ⚠️ | ## Continental radars | Model | `sensor_model` | Configuration file | Test status | | ------ | -------------- | ------------------ | ----------- | -| ARS548 | ARS548 | ARS548.yaml | ⚠️ | +| ARS548 | ARS548 | ARS548.param.yaml | ⚠️ | +| SRR520 | SRR520 | SRR520.param.yaml | ⚠️ | Test status: ✅: complete ⚠️: some functionality yet to be tested -❌: untested -\*: AT128 needs software version 3.50.8 or newer for the `scan_angle` setting to work correctly. +❌: untested diff --git a/docs/usage.md b/docs/usage.md index cb635954c..a14497449 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -14,6 +14,8 @@ For example, for a Hesai Pandar40P sensor: ros2 launch nebula_ros hesai_launch_all_hw.xml sensor_model:=Pandar40P ``` +Refer to the list of [supported sensors](supported_sensors.md) for more information on the avaliable sensors and configuration options. + ## Sensor configuration WIP diff --git a/nebula_tests/continental/parameter_descriptors.cpp b/nebula_tests/continental/parameter_descriptors.cpp index d2d265780..3f26adf10 100644 --- a/nebula_tests/continental/parameter_descriptors.cpp +++ b/nebula_tests/continental/parameter_descriptors.cpp @@ -1,3 +1,5 @@ +// Copyright 2024 TIER IV, Inc. + #include "parameter_descriptors.hpp" namespace nebula diff --git a/nebula_tests/continental/parameter_descriptors.hpp b/nebula_tests/continental/parameter_descriptors.hpp index 6d4e38504..db37cdb10 100644 --- a/nebula_tests/continental/parameter_descriptors.hpp +++ b/nebula_tests/continental/parameter_descriptors.hpp @@ -1,3 +1,17 @@ +// Copyright 2024 TIER IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #pragma once #include