forked from orbbec/OrbbecSDK_ROS2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/AIResearchLab/OrbbecSDK_ROS2
- Loading branch information
Showing
60 changed files
with
693 additions
and
109 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
Here's a professional, English version of the document you provided for your client regarding tuning Fast DDS for Orbbec | ||
camera usage with ROS2: | ||
|
||
--- | ||
|
||
# Fast DDS Optimization for Orbbec Camera with ROS2 | ||
|
||
When operating with the default configuration, Fast DDS exhibits suboptimal transmission efficiency, resulting in | ||
significant image transmission delays when used with the Orbbec camera in ROS2. This document provides guidance on | ||
optimizing Fast DDS to enhance image transfer efficiency. | ||
|
||
## 1. Adjusting System Parameters | ||
|
||
### IP Fragmentation Time | ||
|
||
- **Path**: `/proc/sys/net/ipv4/ipfrag_time` (default: 30 seconds) | ||
- **Purpose**: Defines the duration that IP fragments are kept in memory. | ||
- **Adjustment**: Decrease this value to reduce the time window where no fragments are received, which can help reduce | ||
delays. Consider the specific needs of your environment as this setting affects all incoming fragments. | ||
|
||
**Example**: Set to 3 seconds. | ||
|
||
```bash | ||
sudo sysctl net.ipv4.ipfrag_time=3 | ||
``` | ||
|
||
### IP Fragmentation Memory Threshold | ||
|
||
- **Path**: `/proc/sys/net/ipv4/ipfrag_high_thresh` (default: 262144 bytes) | ||
- **Purpose**: Sets the maximum memory used to reassemble IP fragments. | ||
- **Adjustment**: Increase this value to allow more memory for fragment reassembly, which can improve handling of larger | ||
data packets. | ||
|
||
**Example**: Increase to 128 MB. | ||
|
||
```bash | ||
sudo sysctl net.ipv4.ipfrag_high_thresh=134217728 | ||
``` | ||
|
||
### Maximum Buffer Sizes | ||
|
||
- **Purpose**: Configures the maximum buffer sizes for receiving and sending data, which is critical for high-throughput | ||
data transmission. | ||
- **Adjustment**: Set the maximum buffer sizes for both receiving and sending operations. | ||
|
||
**Commands**: | ||
|
||
```bash | ||
sudo sysctl -w net.core.rmem_max=2147483647 | ||
sudo sysctl -w net.core.rmem_default=2147483647 | ||
sudo sysctl -w net.core.wmem_max=2147483647 | ||
sudo sysctl -w net.core.wmem_default=2147483647 | ||
``` | ||
|
||
Alternatively, make these settings permanent by adding them to the `/etc/sysctl.d/10-fastrtps-max.conf` file. | ||
|
||
```bash | ||
sudo gedit /etc/sysctl.d/10-fastrtps-max.conf | ||
``` | ||
|
||
add blow lines to the file: | ||
|
||
```bash | ||
net.core.rmem_max=2147483647 | ||
net.core.rmem_default=2147483647 | ||
net.core.wmem_max=2147483647 | ||
net.core.wmem_default=2147483647 | ||
``` | ||
|
||
then save and exit the file. run `sudo sysctl -p` to apply the changes. | ||
|
||
For detailed guidance, refer | ||
to [ROS 2 DDS Tuning Documentation](https://docs.ros.org/en/foxy/How-To-Guides/DDS-tuning.html). | ||
|
||
## 2. Fast DDS Configuration | ||
|
||
Below is an example of a Fast DDS configuration file optimized for ROS2 usage with the Orbbec camera. This configuration | ||
enhances the overall data transmission by adjusting buffer sizes and transport settings. | ||
|
||
### Configuration File: `shm_fastdds.xml` | ||
|
||
Place this file in the `$HOME` directory. | ||
|
||
```xml | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles"> | ||
<transport_descriptors> | ||
<transport_descriptor> | ||
<transport_id>UDP_transport</transport_id> | ||
<type>UDPv4</type> | ||
<maxInitialPeersRange>10</maxInitialPeersRange> | ||
<maxMessageSize>65000</maxMessageSize> | ||
<sendBufferSize>1048576</sendBufferSize> | ||
<receiveBufferSize>1048576</receiveBufferSize> | ||
</transport_descriptor> | ||
</transport_descriptors> | ||
<participant profile_name="participant_profile_ros2" is_default_profile="true"> | ||
<rtps> | ||
<name>profile_for_ros2_context</name> | ||
<userTransports> | ||
<transport_id>UDP_transport</transport_id> | ||
</userTransports> | ||
<useBuiltinTransports>false</useBuiltinTransports> | ||
<sendSocketBufferSize>1048576</sendSocketBufferSize> | ||
<listenSocketBufferSize>1048576</listenSocketBufferSize> | ||
<builtin> | ||
<initialPeersList> | ||
<locator> | ||
<udpv4> | ||
<address>127.0.0.1</address> | ||
</udpv4> | ||
</locator> | ||
</initialPeersList> | ||
</builtin> | ||
</rtps> | ||
</participant> | ||
<data_writer profile_name="default publisher profile" is_default_profile="true"> | ||
<qos> | ||
<publishMode> | ||
<kind>ASYNCHRONOUS</kind> | ||
</publishMode> | ||
<latencyBudget> | ||
<duration> | ||
<sec>0</sec> | ||
<nanosec>1000000</nanosec> | ||
</duration> | ||
</latencyBudget> | ||
</qos> | ||
<historyMemoryPolicy>PREALLOCATED_WITH_REALLOC</historyMemoryPolicy> | ||
</data_writer> | ||
<data_reader profile_name="default subscription profile" is_default_profile="true"> | ||
<qos> | ||
<data_sharing> | ||
<kind>AUTOMATIC</kind> | ||
</data_sharing> | ||
<latencyBudget> | ||
<duration> | ||
<sec>0</sec> | ||
<nanosec>1000000</nanosec> | ||
</duration> | ||
</latencyBudget> | ||
</qos> | ||
<historyMemoryPolicy>PREALLOCATED_WITH_REALLOC</historyMemoryPolicy> | ||
</data_reader> | ||
</profiles> | ||
``` | ||
|
||
### Environment Variables | ||
|
||
Set the following environment variables to use the custom Fast DDS profile: | ||
|
||
```bash | ||
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp | ||
export FASTRTPS_DEFAULT_PROFILES_FILE=$HOME/shm_fastdds.xml | ||
export RMW_FASTRTPS_USE_QOS_FROM_XML=1 | ||
``` | ||
|
||
This configuration aims to optimize the data flow and reduce transmission delays, improving the responsiveness and | ||
reliability of the Orbbec camera system in a ROS2 environment. |
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
libOrbbecSDK.so.1.10.9 | ||
libOrbbecSDK.so.1.10.11 |
Binary file renamed
BIN
+10.2 MB
...mera/SDK/lib/arm32/libOrbbecSDK.so.1.10.9 → ...era/SDK/lib/arm32/libOrbbecSDK.so.1.10.11
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
libOrbbecSDK.so.1.10.9 | ||
libOrbbecSDK.so.1.10.11 |
Binary file renamed
BIN
+10.2 MB
...mera/SDK/lib/arm64/libOrbbecSDK.so.1.10.9 → ...era/SDK/lib/arm64/libOrbbecSDK.so.1.10.11
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
libOrbbecSDK.so.1.10.9 | ||
libOrbbecSDK.so.1.10.11 |
Binary file renamed
BIN
+11.3 MB
...camera/SDK/lib/x64/libOrbbecSDK.so.1.10.9 → ...amera/SDK/lib/x64/libOrbbecSDK.so.1.10.11
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.