You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Use cuda::std::complex instead of thrust::complex
thrust types do not have a consistent ABI between TUs compiled with and without nvcc
* Support ROS2 jazzy
* Use std::complex in host code & cuda::std::complex in device code
* Remove debugging leftover
* Support ROS2 Jazzy standalone on Windows
* Update docs
@@ -62,8 +61,8 @@ An introduction to the RGL API along with an example can be found [here](docs/Us
62
61
63
62
`RobotecGPULidar` library can be built with extensions enhancing RGL with additional functions:
64
63
-`PCL` - adds nodes and functions for point cloud processing that uses [Point Cloud Library](https://pointclouds.org/). See [documentation](docs/PclExtension.md).
65
-
-`ROS2` - adds a node to publish point cloud messages to [ROS2](https://www.ros.org/). Check [ROS2 extension doc](docs/Ros2Extension.md) for more information, build instructions, and usage.
66
-
-`UDP` - adds a node to publish raw lidar packets, as emitted by physical lidar. Only available in the closed-source version.
64
+
-`ROS2` - adds a nodes for point cloud publishing to [ROS2](https://www.ros.org/). See [documentation](docs/Ros2Extension.md).
65
+
-`UDP` - adds a nodes for raw lidar packets publishing, as emitted by physical lidar. Only available in the closed-source version.
Copy file name to clipboardExpand all lines: docs/Ros2Extension.md
+37-35Lines changed: 37 additions & 35 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,10 @@
1
1
# RGL ROS2 extension
2
2
3
-
The extension introduces the node to publish [PointCloud2](https://docs.ros2.org/foxy/api/sensor_msgs/msg/PointCloud2.html) messages to ROS2. RGL creates a ROS2 node named `RobotecGPULidar` and registers publishers based on constructed RGL nodes.
3
+
The extension introduces nodes to publish [PointCloud2](https://docs.ros2.org/foxy/api/sensor_msgs/msg/PointCloud2.html) messages to ROS2. RGL creates a ROS2 node named `RobotecGPULidar` and registers publishers based on constructed RGL nodes.
4
4
5
5
Supported ROS2 distributions:
6
6
- Humble
7
+
- Jazzy
7
8
8
9
Supported DDS implementations for ROS2 standalone build:
-**standalone** - ROS2 installation is not required on the target machine. RGL build will include all required ROS2 dependencies.
17
-
-**overlay** - Assumes the existence of supported ROS2 installation on the target machine. RGL will try to use the existing installation of ROS2 dependencies.
18
+
-**overlay** - Assumes the existence of supported ROS2 installation on the target machine. RGL will use ROS2 libraries already installed on the system.
18
19
19
-
Before building RGL PCL extension, it is necessary to get the required dependencies.
20
+
Before building RGL ROS2 extension, it is necessary to get the required dependencies.
20
21
For some, the process has been automated - run `setup.py --install-ros2-deps` to get them.
21
22
22
-
### Ubuntu 22
23
+
### Ubuntu 22/24
23
24
24
25
#### Prerequisites
25
26
26
-
- Requirements listed in the main [README](../README.md) (section `Building on Ubuntu`).
27
-
- ROS2 installed on the system and sourced.
27
+
- Requirements listed in the main [README](../README.md#building-on-ubuntu-2224).
@@ -40,45 +46,38 @@ For some, the process has been automated - run `setup.py --install-ros2-deps` to
40
46
41
47
#### Steps for standalone
42
48
1. Use script `setup.py` with option `--with-ros2-standalone`
43
-
- You can specify run-time search path(s) of RGL dependencies by adding the option `--lib-rpath <paths>`. This can be useful if you want RGL to search forROS2 librariesin a different directory than RGL, e.g., if you work with a library providing its own ROS2 libraries, such as [ROS2ForUnity](https://github.com/RobotecAI/ros2-for-unity).
44
-
2. Copy all ROS2 libraries from `<build-dir>/ros2_standalone/` to `libRobotecGPULidar.so` location (or location defined with `--lib-rpath`).
49
+
- You can specify run-time search path(s) of RGL dependencies by adding the option `--lib-rpath <paths>`. This can be useful if you want RGL to search forROS2 librariesin a different directory than RGL, e.g., if you work with a library that also provides its ROS2 libraries, such as [ROS2ForUnity](https://github.com/RobotecAI/ros2-for-unity).
50
+
2. Copy all ROS2 libraries from `<build-dir>/lib/ros2_standalone/` to `libRobotecGPULidar.so` location (or location defined with `--lib-rpath`).
51
+
52
+
#### Tips for integrating RGL with [AWSIM](https://github.com/tier4/AWSIM/tree/main)
53
+
54
+
AWSIM project includes two ROS-based plugins: [ROS2ForUnity](https://github.com/RobotecAI/ros2-for-unity) and [RGLUnityPlugin](https://github.com/tier4/AWSIM/tree/main/Assets/RGLUnityPlugin). Since AWSIM is configured to run in a standalone mode (where ROS does not need to be installed on the host machine), all necessary ROS libraries are included within the project.
55
+
Ros2ForUnity and RGLUnityPlugin share a common set of ROS libraries (e.g., `librcl.so`).
56
+
To avoid duplication - since Unity does not support having multiple instances of the same libraries - one of the solutions is to store all ROS libraries in a single plugin.
57
+
In this case, the ROS libraries are stored in the ROS2ForUnity plugin, and RGL is configured with a runtime search path to access them.
45
58
46
-
#### Tips for integrating RGL + ROS2 standalone with Unity and [ROS2ForUnity](https://github.com/RobotecAI/ros2-for-unity) plugin.
*$ORIGIN represents the directory in which an object (library) originated. It is resolved at run-time.*\
52
64
*Your rpath may differ. It depends on your relative location between RGLUnityPlugin and Ros2ForUnity.*
53
-
2. Copy library `<build-dir>/libRobotecGPULidar.so` to the appropriate directory in your RGLUnityPlugin.
54
-
3. Copy all ROS2 libraries from `<build-dir>/ros2_standalone/` to `Ros2ForUnity\Plugins\Linux\x86_64` directory. Skip for duplicates.
55
-
56
-
RGL's ROS2 standalone build is dependent on ROS2ForUnity's ROS2 standalone build. RobotecGPULidar library will find ROS2 because we have set the appropriate rpath forthe ROS2 librariesin ROS2ForUnity.
65
+
2. Copy library `<build-dir>/lib/libRobotecGPULidar.so` to the appropriate directory in your RGLUnityPlugin.
66
+
3. Copy all ROS2 libraries from `<build-dir>/lib/ros2_standalone/` to `Ros2ForUnity\Plugins\Linux\x86_64` directory. **Skip for duplicates**.
57
67
58
68
### Windows
59
69
60
70
#### Prerequisites
61
71
62
-
- Requirements listed in the main [README](../README.md) (section `Building on Windows`).
63
-
- ROS2 installed on the system and sourced.
64
-
- Fixed ROS2 logging macros in rclcpp package to make it compile with C++20. More about this bug: [github PR](https://github.com/ros2/rclcpp/pull/2063).
72
+
- Requirements listed in the main [README](../README.md#building-on-windows).
73
+
- ROS2 installed on the system and sourced. We recommend installation from a pre-built binary package:
- [ROS2 Humble only] Fixed ROS2 logging macros in rclcpp package to make it compile with C++20. More about this bug: [github PR](https://github.com/ros2/rclcpp/pull/2063).
65
77
- Use `fix_ros2_humble.py` script to apply those changes:
- If you have installed ROS2 from pre-built binaries, there is `rmw_cyclonedds_cpp` package missing. You need to build this one from the source:
71
-
1. Make sure you have installed [ROS2 prerequisites](https://docs.ros.org/en/humble/Installation/Alternatives/Windows-Development-Setup.html#installing-prerequisites).
72
-
2. A good practice is to disable Windows path limits, [see](https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry).
73
-
3. Run `x64 Native Tools Command Prompt for VS 2019`, setup development folder (e.g., `C:\rosrmw`), clone ROS2 repos, and build:
4. Before building RGL, source`rosrmw` workspace: `call C:\rosrmw\install\setup.bat`.
81
-
82
81
83
82
#### Steps for overlay
84
83
1. Run `x64 Native Tools Command Prompt for VS 2019` and navigate to RGL repository.
@@ -87,14 +86,17 @@ RGL's ROS2 standalone build is dependent on ROS2ForUnity's ROS2 standalone build
87
86
#### Steps for standalone
88
87
1. Run `x64 Native Tools Command Prompt for VS 2019` and navigate to RGL repository.
89
88
2. Run `python setup.py --with-ros2-standalone`command to build RGL with ROS2 extension and install ROS2 libraries.
90
-
3. Copy all ROS2 libraries from `<build-dir>/ros2_standalone/` into `RobotecGPULidar.dll` location, or extend environment variable `Path` appropriately.
89
+
3. Copy all ROS2 libraries from `<build-dir>/lib/ros2_standalone/` into `RobotecGPULidar.dll` location, or extend environment variable `Path` appropriately.
90
+
91
+
#### Tips for integrating RGL with [AWSIM](https://github.com/tier4/AWSIM/tree/main)
92
+
93
+
See description from [Ubuntu section](#tips-for-integrating-rgl-with-awsim) for more details.
91
94
92
-
#### Tips for integrating RGL + ROS2 standalone with Unity and [ROS2ForUnity](https://github.com/RobotecAI/ros2-for-unity) plugin.
93
95
1. Build RGL with ROS2 standalone as described above.
94
-
2. Copy `<build-dir>/RobotecGPULidar.dll` and all depend libraries located in`<build-dir>` to the appropriate directory in your RGLUnityPlugin.
95
-
3. Copy all ROS2 libraries from `<build-dir>/ros2_standalone/` to `Ros2ForUnity\Plugins\Windows\x86_64` directory. Skip for duplicates.
96
+
2. Copy `<build-dir>/RobotecGPULidar.dll` and all dependent libraries located in`<build-dir>` to the appropriate directory in your RGLUnityPlugin.
97
+
3. Copy all ROS2 libraries from `<build-dir>/lib/ros2_standalone/` to `Ros2ForUnity\Plugins\Windows\x86_64` directory. Skip for duplicates.
96
98
97
-
RGL's ROS2 standalone build is dependent on ROS2ForUnity's ROS2 standalone build. RobotecGPULidar library will find ROS2 because ROS2ForUnity sets the environment variable `Path`for the ROS2 libraries.
99
+
*Note:* On Windows there is no `-rpath` linker flag to modify an executable’s search path. Instead, the `Path` environment variable can be set. ROS2ForUnity handles this automatically before the simulation starts.
0 commit comments