适用于 ROS 2 的奥比中光相机 Fast DDS 优化指南
在使用默认配置时,Fast DDS 的传输效率可能不佳,这会导致在 ROS 2 中使用奥比中光相机时出现明显的图像传输延迟。本文档旨在指导您如何优化 Fast DDS 以提高图像传输效率。
1. 调整系统参数
IP 分片(IP Fragmentation)存活时间
IP 分片内存阈值
最大缓冲区大小
您也可以通过将这些设置添加到 /etc/sysctl.d/10-fastrtps-max.conf 文件中,使其永久生效。
1
|
sudo gedit /etc/sysctl.d/10-fastrtps-max.conf
|
在文件中添加以下内容:
1
2
3
4
|
net.core.rmem_max=2147483647
net.core.rmem_default=2147483647
net.core.wmem_max=2147483647
net.core.wmem_default=2147483647
|
保存并退出文件后,运行 sudo sysctl -p 来应用更改。
更多详细指导,请参考 ROS 2 DDS Tuning Documentation。
2. Fast DDS 配置
下面是一个经过优化的 Fast DDS 配置文件示例,专为在 ROS 2 中与奥比中光相机一起使用而设计。此配置通过调整缓冲区大小和传输设置来增强整体数据传输性能。
配置文件:shm_fastdds.xml
将此文件放置在 $HOME 目录下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
<?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>
|
环境变量
设置以下环境变量以使用自定义的 Fast DDS 配置文件:
1
2
3
|
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=$HOME/shm_fastdds.xml
export RMW_FASTRTPS_USE_QOS_FROM_XML=1
|
此配置旨在优化数据流并减少传输延迟,从而提高奥比中光相机系统在 ROS 2 环境中的响应速度和可靠性。