本文采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。
TOPIC 频率带宽延迟查看
1
2
3
4
5
6
7
8
9
10
11
|
# 查看节点topic 实时频率
ros2 topic hz /topic_name # 消息发布频率
ros2 topic bw /topic_name # 消息带宽(MB/s)
ros2 topic delay /topic_name # 消息延迟
-d 2 # 每2秒输出一次统计信息
-w 50 # 改变统计窗口为50条消息
# 查看点云信息
ros2 topic echo --no-arr /livox/lidar
|
输出:
1
2
|
average delay: 0.001
min: 0.000s max: 0.015s std dev: 0.00105s window: 6399
|
统计原理:
订阅消息: ros2 topic hz 创建一个匿名订阅者订阅你指定的 topic。
记录时间戳: 每收到一条消息,记录 rclcpp::Time(或 rclpy 中的 rospy.Time) 的接收时间。
计算时间间隔: 根据当前消息与上一条消息的时间戳差值,得到一个时间间隔序列。
滑动窗口统计:
- 默认保留最近 100 条消息之间的间隔(可通过
-w 修改窗口大小);
- 对这些间隔值做统计分析,得到:
- 平均频率(频率 = 1 / 平均时间间隔)
- 最小/最大间隔
- 标准差(衡量是否抖动大)
ros2 topic bw /topic_name 输出单位 MB/s 是 “兆字节每秒”,不是 Mbps(兆位每秒),两者相差 8 倍;
1 MB/s = 8 Mbps
实际问题分析
-
统一设备内订阅端延迟大
-
不同设备内订阅端延迟大
-
Navi 项目IMU 数据缺失问题
常用命令
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
|
sudo apt update
sudo apt install stress -y
# 模拟 1 个 CPU 核心 100% 占用,持续 60 秒
stress --cpu 1 --timeout 60s
# 同时压测 CPU 和内存
stress --cpu 2 --vm 1 --vm-bytes 128M --timeout 30s
# -u:UDP 模式
# -b 600M:目标带宽 600 Mbps
# -t 1:只测试 1 秒
iperf3 -c 192.168.41.3 -p 12345 -u -b 600M -t 1
iperf3 -s
# 查看网络路由
sudo apt-get install traceroute
traceroute 93.184.216.34
# 查看指定网口数据收情况
ifconfig eth0
ip -s link show dev eth0
ethtool -S eth0
sudo iftop -i eth0
sudo apt-get install nload
nload eth0
|