Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ars548): initial driver #123

Merged
merged 55 commits into from
Mar 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
ca66948
feat: initial implementation of the continentla ars548 driver
knzo25 Dec 13, 2023
7e3f2f7
chore: refactor before sending PR
knzo25 Dec 13, 2023
ad02d9a
fix: fixed errors with naming and symbols after the refactoring
knzo25 Dec 13, 2023
3d071a2
chore: fixed spell misses
knzo25 Dec 13, 2023
c08b660
chore: more spell fixes
knzo25 Dec 13, 2023
b197664
fix: updated the build_repos to point to the custom transport drivers…
knzo25 Dec 14, 2023
b7f36e3
chore: removed duplicated message file
knzo25 Dec 14, 2023
b672eb5
Update nebula_ros/src/continental/continental_ars548_hw_interface_ros…
knzo25 Dec 14, 2023
ee0802c
chore: addressed comments from the review related con consitency and …
knzo25 Dec 14, 2023
182c571
Merge branch 'feat/continental_drivers' of github.com:knzo25/nebula i…
knzo25 Dec 14, 2023
31703e5
chore: removed default parameters in line with the awf guidelines
knzo25 Dec 14, 2023
d383931
chore: replaced the confusing position orientation name by simply oti…
knzo25 Dec 14, 2023
0096618
chore: removed unused `using`
knzo25 Dec 14, 2023
2ee484f
feat: implemented boost endian approach
knzo25 Dec 20, 2023
475a057
chore: removed the old implementation
knzo25 Dec 20, 2023
6d3fa3b
Merge branch 'main' into feat/continental_drivers
knzo25 Dec 20, 2023
4ce4874
chore: mixed misspells
knzo25 Dec 20, 2023
4475d2b
Merge branch 'feat/continental_drivers' of github.com:knzo25/nebula i…
knzo25 Dec 20, 2023
2338af7
fix: fixed short circuit in conditional statement, missing lock, and …
knzo25 Dec 20, 2023
8a0f944
feat: added use_receive_time options, enriched the PointCloud2 messag…
knzo25 Jan 24, 2024
b84f6a2
Merge branch 'main' into feat/continental_drivers
knzo25 Jan 24, 2024
2506fb7
feat: added the missing steerin angle input
knzo25 Jan 24, 2024
871b78a
feat: missing features for proper vehicle integration. fixed fixes an…
knzo25 Feb 1, 2024
cfd2b7c
fix: had implemented the reference point correction for all relevant …
knzo25 Feb 6, 2024
098f400
feat: implemented changes from another branch (for the ars548). diano…
knzo25 Feb 16, 2024
858c011
Merge branch 'main' into feat/continental_drivers
knzo25 Feb 16, 2024
2801c8b
chore: spell fix
knzo25 Feb 16, 2024
95ef8a2
Merge branch 'feat/continental_drivers' of github.com:knzo25/nebula i…
knzo25 Feb 16, 2024
73d5127
Merge branch 'main' into feat/continental_drivers
knzo25 Mar 5, 2024
61cbd38
fix: covariance matrix
knzo25 Mar 6, 2024
ec80eab
chore: added documentation on the ros wrapper regarding the reference…
knzo25 Mar 6, 2024
da81bd6
chore: added documentation regarding the dropped packages estimation
knzo25 Mar 6, 2024
800b351
fix: replaced if-elses by switches and fixed a status vatiable decoding
knzo25 Mar 6, 2024
6ee8aa6
Merge remote-tracking branch 'upstream/main' into feat/continental_dr…
knzo25 Mar 6, 2024
1916f2a
chore: spell fixes
knzo25 Mar 6, 2024
c7937d5
feat: refactored parameter setting into custom services (as much as p…
knzo25 Mar 7, 2024
f1e1779
chore: added documentation regarding the multi hw interface
knzo25 Mar 7, 2024
bab11b3
chore: reverted pre-commit related changes (it will not pass pre-comm…
knzo25 Mar 8, 2024
45dbd8b
feat: added unit tests for the ars548
knzo25 Mar 8, 2024
13f493a
Merge remote-tracking branch 'upstream/main' into feat/continental_dr…
knzo25 Mar 8, 2024
a08edbd
chore: spell fix
knzo25 Mar 8, 2024
6e1a8ab
fix: reflected the change of a status message in checks and changed t…
knzo25 Mar 12, 2024
d5194d7
feat: there are cases (probably involving the mounting yaw) in which …
knzo25 Mar 14, 2024
d813f4a
feat: generalized launch script to support ars548 and updated the readme
knzo25 Mar 14, 2024
55c94c2
Merge branch 'main' into feat/continental_drivers
knzo25 Mar 14, 2024
3329a79
Merge branch 'main' into feat/continental_drivers
knzo25 Mar 14, 2024
d4e2688
fix: merge error
knzo25 Mar 14, 2024
851dd86
chore: spell fix
knzo25 Mar 15, 2024
aeaad50
chore: fixed another spelling
knzo25 Mar 15, 2024
764e584
chore: yet another spell fix
knzo25 Mar 15, 2024
1007571
chore: deleted SRR files that leaked into the ARS branch
knzo25 Mar 18, 2024
423112d
feat: added an option to set all the parameters directly via services
knzo25 Mar 18, 2024
fb1b08b
chore: updated cspell dict
knzo25 Mar 18, 2024
f0c57f4
Merge branch 'main' into feat/continental_drivers
knzo25 Mar 19, 2024
6a7ff4c
Merge branch 'main' into feat/continental_drivers
knzo25 Mar 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"Adctp",
"AT",
"block_id",
"extrinsics",
"gprmc",
"Hesai",
"memcpy",
Expand Down Expand Up @@ -39,6 +40,8 @@
"gptp",
"Idat",
"Vdat",
"autosar",
"srvs",
"manc",
"ipaddr",
"ntoa"
Expand Down
55 changes: 27 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
Nebula is a sensor driver platform that is designed to provide a unified framework for as wide a variety of devices as possible.
While it primarily targets Ethernet-based LiDAR sensors, it aims to be easily extendable to support new sensors and interfaces.
Nebula provides the following features:

- Support for Velodyne and Hesai sensors, with other LiDAR vendor support under development
- ROS 2 interface implementations
- TCP/IP and UDP communication implementations
Expand All @@ -14,10 +15,8 @@ Nebula provides the following features:
- Receiving and interpretation of diagnostics information from the sensor
- Support for multiple return modes and labelling of return types for each point


With a rapidly increasing number of sensor types and models becoming available, and varying levels of vendor and third-party driver support, Nebula creates a centralized driver methodology. We hope that this project will be used to facilitate active collaboration and efficiency in development projects by providing a platform that reduces the need to re-implement and maintain many different sensor drivers. Contributions to extend the supported devices and features of Nebula are always welcome.


## How to build

Nebula builds on ROS Galactic and Humble.
Expand Down Expand Up @@ -85,27 +84,27 @@ ros2 launch nebula_ros nebula_launch.py sensor_model:=Pandar64 config_file:=your

Supported models, where sensor_model is the ROS param to be used at launch:

| Manufacturer | Model | sensor_model | Configuration file | Test status |
| ------------ | ------------- | ------------ | ------------------ | ----------- |
| HESAI | Pandar 64 | Pandar64 | Pandar64.yaml | :heavy_check_mark: |
| HESAI | Pandar 40P | Pandar40P | Pandar40P.yaml | :heavy_check_mark: |
| HESAI | Pandar XT32 | PandarXT32 | PandarXT32.yaml | :heavy_check_mark: |
| HESAI | Pandar XT32M | PandarXT32M | PandarXT32M.yaml | :warning: |
| HESAI | Pandar QT64 | PandarQT64 | PandarQT64.yaml | :heavy_check_mark: |
| HESAI | Pandar QT128 | PandarQT128 | PandarQT128.yaml | :warning: |
| HESAI | Pandar AT128 | PandarAT128 | PandarAT128.yaml | :heavy_check_mark:* |
| HESAI | Pandar 128E4X | Pandar128E4X | Pandar128E4X.yaml | :warning: |
| Velodyne | VLP-16 | VLP16 | VLP16.yaml | :warning: |
| Velodyne | VLP-16-HiRes | VLP16 | | :x: |
| Velodyne | VLP-32 | VLP32 | VLP32.yaml | :warning: |
| Velodyne | VLS-128 | VLS128 | VLS128.yaml | :warning: |
| Manufacturer | Model | sensor_model | Configuration file | Test status |
| ------------ | ------------- | ------------ | ------------------ | -------------------- |
| HESAI | Pandar 64 | Pandar64 | Pandar64.yaml | :heavy_check_mark: |
| HESAI | Pandar 40P | Pandar40P | Pandar40P.yaml | :heavy_check_mark: |
| HESAI | Pandar XT32 | PandarXT32 | PandarXT32.yaml | :heavy_check_mark: |
| HESAI | Pandar XT32M | PandarXT32M | PandarXT32M.yaml | :warning: |
| HESAI | Pandar QT64 | PandarQT64 | PandarQT64.yaml | :heavy_check_mark: |
| HESAI | Pandar QT128 | PandarQT128 | PandarQT128.yaml | :warning: |
| HESAI | Pandar AT128 | PandarAT128 | PandarAT128.yaml | :heavy_check_mark:\* |
| HESAI | Pandar 128E4X | Pandar128E4X | Pandar128E4X.yaml | :warning: |
| Velodyne | VLP-16 | VLP16 | VLP16.yaml | :warning: |
| Velodyne | VLP-16-HiRes | VLP16 | | :x: |
| Velodyne | VLP-32 | VLP32 | VLP32.yaml | :warning: |
| Velodyne | VLS-128 | VLS128 | VLS128.yaml | :warning: |
| Continental | ARS548 | ARS548 | ARS548.yaml | :warning: |

Test status:\
:heavy_check_mark:: complete\
:warning:: some functionality yet to be tested\
:x:: untested\
*: AT128 needs software version 3.50.8 or newer for the `scan_angle` setting to work correctly.

\*: AT128 needs software version 3.50.8 or newer for the `scan_angle` setting to work correctly.

## ROS parameters

Expand Down Expand Up @@ -215,27 +214,26 @@ Parameters shared by all supported models:

#### Driver parameters

| Parameter | Type | Default | Accepted values | Description |
| ---------------- | ------ | -------- | -------------------- | --------------------------------------- |
| frame_id | string | velodyne | | ROS frame ID |
| calibration_file | string | | | LiDAR calibration file |
| min_range | double | 0.3 | meters, >= 0.3 | Minimum point range published |
| max_range | double | 300.0 | meters, <= 300.0 | Maximum point range published |
| cloud_min_angle | uint16 | 0 | degrees [0, 360] | FoV start angle |
| cloud_max_angle | uint16 | 359 | degrees [0, 360] | FoV end angle |
| Parameter | Type | Default | Accepted values | Description |
| ---------------- | ------ | -------- | ---------------- | ----------------------------- |
| frame_id | string | velodyne | | ROS frame ID |
| calibration_file | string | | | LiDAR calibration file |
| min_range | double | 0.3 | meters, >= 0.3 | Minimum point range published |
| max_range | double | 300.0 | meters, <= 300.0 | Maximum point range published |
| cloud_min_angle | uint16 | 0 | degrees [0, 360] | FoV start angle |
| cloud_max_angle | uint16 | 359 | degrees [0, 360] | FoV end angle |

## Software design overview

![DriverOrganization](docs/diagram.png)


## Hesai Sensor Setup

New Hesai sensors do not provide a Web UI to verify and set up the sensor parameters. Instead, these offer a TCP-based protocol to obtain and set the configuration. Nebula sets these sensors at launch. However, settings such as Destination IP, Sensor IP, IP Mask, and Data Port might cause undesired sensor functioning if the driver gets mistakenly launched with inappropriate values. To overcome this problem, Nebula provides an additional setup script for these settings to avoid such scenarios.

The script requires the installation of dependencies via pip:

`$ pip3 install scripts/requirements.txt # first-time setup`
`$ pip3 install scripts/requirements.txt # first-time setup`

Once the dependencies are installed, the setup script can be invoked using the following command:

Expand Down Expand Up @@ -274,6 +272,7 @@ Run profiling for each version you want to compare:
git checkout my_improved_branch
./scripts/profiling_runner.bash improved -m Pandar64 -b ~/my_rosbag -c 2 -t 20 -n 3
```

Show results:

```bash
Expand Down
4 changes: 2 additions & 2 deletions build_depends.repos
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ repositories:
# TCP version of transport drivers
transport_drivers:
type: git
url: https://github.com/MapIV/transport_drivers
version: boost
url: https://github.com/knzo25/transport_drivers
mojomex marked this conversation as resolved.
Show resolved Hide resolved
version: feat/multicast_support
Loading
Loading