Closed gezp closed 2 years ago
benchmark test for image pipeline
测试命令:
# 下载代码
git clone https://github.com/robomaster-oss/rmoss_interfaces.git
git clone -b rmoss_cam_component_container https://github.com/robomaster-oss/rmoss_core.git
# 编译后运行命令
ros2 launch rmoss_cam benchmark.launch.py
限于ROS Galactic版本的rclcpp_compoenet
并没有合并Rolling
特性(为每一个Node分配一个独立专用线程),因此采用manual composition进行测试。在Intel(R) i7-8700主机上测试结果如下:
CPU: Intel(R) i7-8700 (6Cores 12Threads), Memory: 32GB | delay time(s) |
---|---|
normal process | 0.00249732 |
manual composition | 0.00120593 |
manual composition with CamServerManager |
0.000213741 |
使用CamServerManager
的manual composition的延迟比多进程ROS节点方法降低了90%左右,具有明显性能提升。
设备信息 NUC8 i5 bek CPU: Intel® Core™ i5-8259U CPU @ 2.30GHz × 8 Mem: 7.6 GiB
[benchmark_test-2] start test for normal process
[benchmark_test-2] result for <benchmark_cam1>:
[benchmark_test-2] fps:87.4122
[benchmark_test-2] delay:0.00527591
[benchmark_test-2] start test for normal component
[benchmark_test-2] result for <benchmark_cam2>:
[benchmark_test-2] fps:100.224
[benchmark_test-2] delay:0.00173974
[benchmark_test-2] start test for intra-component
[benchmark_test-2] result for <benchmark_cam3>:
[benchmark_test-2] fps:100.181
[benchmark_test-2] delay:0.00064917
[benchmark_test-2] start test for normal process
[benchmark_test-2] result for <benchmark_cam1>:
[benchmark_test-2] fps:92.7605
[benchmark_test-2] delay:0.00308627
[benchmark_test-2] start test for normal component
[benchmark_test-2] result for <benchmark_cam2>:
[benchmark_test-2] fps:100.195
[benchmark_test-2] delay:0.00188324
[benchmark_test-2] start test for intra-component
[benchmark_test-2] result for <benchmark_cam3>:
[benchmark_test-2] fps:100.198
[benchmark_test-2] delay:0.000420136
[benchmark_test-2] start test for normal process
[benchmark_test-2] result for <benchmark_cam1>:
[benchmark_test-2] fps:99.6199
[benchmark_test-2] delay:0.00496471
[benchmark_test-2] start test for normal component
[benchmark_test-2] result for <benchmark_cam2>:
[benchmark_test-2] fps:100.202
[benchmark_test-2] delay:0.00405021
[benchmark_test-2] start test for intra-component
[benchmark_test-2] result for <benchmark_cam3>:
[benchmark_test-2] fps:100.194
[benchmark_test-2] delay:0.00104779
test result on Raspberrypi 4B with 2GB RAM (ARM platform)
[benchmark_test-2] start test for normal process
[benchmark_test-2] result for <benchmark_cam1>:
[benchmark_test-2] fps:33.8542
[benchmark_test-2] delay:0.0388991
[benchmark_test-2] start test for normal component
[benchmark_test-2] result for <benchmark_cam2>:
[benchmark_test-2] fps:73.3764
[benchmark_test-2] delay:0.0212094
[benchmark_test-2] start test for intra-component
[benchmark_test-2] result for <benchmark_cam3>:
[benchmark_test-2] fps:100.203
[benchmark_test-2] delay:0.002392
解决https://github.com/robomaster-oss/rmoss_core/issues/8.
增加基于
CamServerManager
的component container
,实现容器内节点之间图像直接传输,而不经过ROS通信机制。CamNodeFactory
(继承rclcpp_components::NodeFactory
), 定义新的的API,将CamServerManager
传递给Node节点CamComponentManager
(继承rclcpp_components::ComponentManager
),覆盖create_component_factory()
API, ,优先尝试加载CamNodeFactory
类型,否则加载普通rclcpp_components类型节点。