【ROS2+深度相机】Orbbec相机时图像传输延迟显著 (DDS数据分发服务配置)

发布时间:2026/8/7 12:49:12
【ROS2+深度相机】Orbbec相机时图像传输延迟显著 (DDS数据分发服务配置) 5.1.3. 针对Orbbec相机与ROS2的Fast DDS优化 — OrbbecSDK V2 ROS2 封装 文档DDS - 古月教学文档使用默认配置时Fast DDS表现出次优的传输效率导致在ROS2中使用Orbbec相机时图像传输延迟显著。本文档提供了优化Fast DDS以提高图像传输效率的指导。问题描述通过有损的连接通常为WiFi传输时容易导致IP分片丢失。此时其余接受到的IP片段会被用来填充内核缓冲区。默认情况下Linux内核会不断尝试重新合并这些分片的数据30分钟后会超时。内核缓冲区默认大小为256KB当这个缓冲区饱和时就无法有新的片段进入连接会进入待机模式解决方法—— 调整系统参数配置DDSIP分片时间路径:/proc/sys/net/ipv4/ipfrag_time默认值30秒目的: 定义IP分片保留在内存中的持续时间。调整: 减少此值以缩短未接收到分片的时间窗口这有助于减少延迟。考虑到您环境的具体需求因为此设置会影响所有传入的分片。示例: 设置为3秒。sudo sysctl net.ipv4.ipfrag_time3IP分片内存阈值路径:/proc/sys/net/ipv4/ipfrag_high_thresh默认值262144字节目的: 设置用于重组IP分片的最大内存。调整: 增加此值以允许更多内存用于分片重组这可以改善较大数据包的处理。示例: 增加到128 MB。sudo sysctl net.ipv4.ipfrag_high_thresh134217728最大缓冲区大小最重要、最有效目的: 配置接收和发送数据的最大缓冲区大小这对高吞吐量数据传输至关重要。调整: 设置接收和发送操作的最大缓冲区大小。命令:sudo sysctl -w net.core.rmem_max2147483647 sudo sysctl -w net.core.rmem_default2147483647 sudo sysctl -w net.core.wmem_max2147483647 sudo sysctl -w net.core.wmem_default2147483647或者通过将这些设置添加到/etc/sysctl.d/10-fastrtps-max.conf文件中使其永久生效。sudo gedit /etc/sysctl.d/10-fastrtps-max.conf将以下行添加到文件中net.core.rmem_max2147483647 net.core.rmem_default2147483647 net.core.wmem_max2147483647 net.core.wmem_default2147483647然后保存并退出文件加载命令。sudo sysctl -p有关详细指导请参考 ROS 2 DDS调优文档。调整系统参数总结# 创建并编辑配置文件 sudo gedit /etc/sysctl.d/10-fastrtps-max.conf # 写入下面的内容 net.ipv4.ipfrag_time3 net.ipv4.ipfrag_high_thresh134217728 net.core.rmem_max2147483647 net.core.rmem_default2147483647 net.core.wmem_max2147483647 net.core.wmem_default2147483647 # 加载此项配置 sudo sysctl -p配置DDS# 新建配置文件 sudo gedit ~/shm_fastdds.xml内容?xml version1.0 encodingUTF-8? profiles xmlnshttp://www.eprosima.com/XMLSchemas/fastRTPS_Profiles transport_descriptors transport_descriptor transport_idUDP_transport/transport_id typeUDPv4/type maxInitialPeersRange10/maxInitialPeersRange maxMessageSize65000/maxMessageSize sendBufferSize1048576/sendBufferSize receiveBufferSize1048576/receiveBufferSize /transport_descriptor /transport_descriptors participant profile_nameparticipant_profile_ros2 is_default_profiletrue rtps nameprofile_for_ros2_context/name userTransports transport_idUDP_transport/transport_id /userTransports useBuiltinTransportsfalse/useBuiltinTransports sendSocketBufferSize1048576/sendSocketBufferSize listenSocketBufferSize1048576/listenSocketBufferSize builtin initialPeersList locator udpv4 address239.255.0.1/address /udpv4 /locator /initialPeersList /builtin /rtps /participant data_writer profile_namedefault publisher profi qos publishMode kindASYNCHRONOUS/kind /publishMode latencyBudget duration sec0/sec nanosec1000000/nanosec /duration /latencyBudget /qos historyMemoryPolicyPREALLOCATED_WITH_REALLOC /data_writer data_reader profile_namedefault subscription prue qos data_sharing kindAUTOMATIC/kind /data_sharing latencyBudget duration sec0/sec nanosec1000000/nanosec /duration /latencyBudget /qos historyMemoryPolicyPREALLOCATED_WITH_REALLOC /data_reader /profiles环境变量设置以下环境变量以使用自定义Fast DDS配置文件export RMW_IMPLEMENTATIONrmw_fastrtps_cpp export FASTRTPS_DEFAULT_PROFILES_FILE$HOME/shm_fastdds.xml export RMW_FASTRTPS_USE_QOS_FROM_XML1此配置旨在优化数据流并减少传输延迟提高Orbbec相机系统在ROS2环境中的响应性和可靠性。基本概念DDSdata distribution service 数据分发服务所有节点都可以在DataBus上发布和订阅消息。但它的先进之处在于通信中包含了很多并行的通路每个节点可以只关心自己感兴趣的消息忽略不感兴趣的消息discovery发现发现网络内谁在发布消息、谁在订阅消息、彼此之间如何找到对方serialization序列化将数据编码为字节、将字节反编码为数据transport传输层序列化后的字节数据的传输形式UDP最常见、延迟低、适合局域网实时数据流、但不保证数据可靠跨机器局域网通信TCP更可靠但时延、抖动更大网络环境差、跨复杂网络SHM共享内存同机进程间高效数据传输形式同一台机器多个进程传大数据QoS通信质量策略DDS最核心配置项负责管理DDS通信的实际策略比如我们遥控一个无人机航拍如果网络情况不好的话遥控器向无人机发送运动指令的过程可以用reliable通信模式保证每一个命令都可以顺利发送给无人机但是可能会有一些延时无人机传输图像的过程可以用best effort模式保证视频的流畅性但是可能会有掉帧。Reliability可靠性Best Effort尽力而为传输数据不管数据是否丢失不补也不等图像、点云、高频传感器Reliable尽量保证数据到达需要确认、重传等机制命令、关键状态、低频且不能丢弃的数据Durability持久性Volatile只关注当前网络中在线的发布者和订阅者Transient Local发布者会暂存最近消息后来加入网络的订阅者也能拿到历史消息History历史策略Keep last N只保留最近N条Keep all计量保存所有数据Depth队列深度配合History看此项配置决定保存几条如果太小数据稍微抖动就会丢数据如果太大内存占用较大Deadline数据更新最大周期即发布者至少多久给一次数据订阅者至少多久收到一次数据判断话题通信是否超时Liveiness节点存活检测QoS兼容发布者和订阅者的QoS策略必须匹配否则通信失败常见的数据流类型与其配置数据流类型配置选项传感器流best efforkeep last小depth优先低延迟控制、命令、关键状态流reliable较小depth更重视确定性

相关新闻