一、遇到的问题
使用ROS2高频发送分辨率比较大的图像时候,接收端有可能出现频发丢帧的现象
二、解决办法:
1、更换DDS
系统默认DDS一般为: rmw_fastrtps_cpp
需要更换为:rmw_cyclonedds_cpp
1.1 从ROS 2 apt仓库安装:
sudo apt install ros-foxy-rmw-cyclonedds-cpp
1.2切换到rmw_cyclonedds
通过指定环境变量,从其他rmw切换到rmw_cyclonedds。
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
2、扩大接受缓存
DDS tuning information — ROS 2 Documentation: Foxy documentation
sudo sysctl -w net.core.rmem_max=2147483647
三、其他说明
1、扩大接受缓存,能够有效减少图像数据丢帧频率,但是图像是否会有更大延时,需要进一步验证
2、切换dds,能够进一步减少丢帧现象