Open bmegli opened 1 year ago
Range
onlyI had to enforce multipart data, otherwise it is sent as chunk buffer (not supported yet)
roslaunch camera_aravis photoneo_motioncam.launch enable_intensity:=false
rostopic hz /camera/Range/image_raw
10 FPS even without texture
average rate: 10.257
min: 0.068s max: 0.180s std dev: 0.01178s window: 306
Range
but enforce texture from Laser (disabled)Texture is not streamed. This is just to test if it affects anything.
roslaunch camera_aravis photoneo_motioncam.launch enable_intensity:=false texture_source:=Laser
rostopic hz /camera/Range/image_raw
average rate: 14.663
min: 0.054s max: 0.129s std dev: 0.00522s window: 467
Ok, this means that device computes texture even if streaming of that component is disabled.
Ideally we would want to disable texture computation completely for added fps in Range
Asked Photoneo about possibility to disable texture source completely or fastest setting in the absence:
This means that we should test Range
+ ColorCamera
with texture source Laser
Range
+ ColorCamera
roslaunch camera_aravis photoneo_motioncam.launch enable_intensity:=false enable_color_camera:=true
rostopic hz /camera/Range/image_raw
rostopic hz /camera/ColorCamera/image_raw
average rate: 8.260
min: 0.090s max: 0.145s std dev: 0.01162s window: 213
average rate: 8.252
min: 0.080s max: 0.160s std dev: 0.01720s window: 207
Range
+ 1932x1096 ColorCamera
+ enforce texture from Laser
Intensity
not streamed, Laser texture is only to get more FPS
roslaunch camera_aravis photoneo_motioncam.launch enable_intensity:=false enable_color_camera:=true texture_source:=Laser
rostopic hz /camera/Range/image_raw
rostopic hz /camera/ColorCamera/image_raw
average rate: 8.464
min: 0.086s max: 0.235s std dev: 0.01461s window: 251
average rate: 8.449
min: 0.072s max: 0.171s std dev: 0.01800s window: 177
Very small FPS gain.
Maybe chunked data would be better than multipart? (if sent before collecting everything
Range
+ 1288x730 ColorCamera
roslaunch camera_aravis photoneo_motioncam.launch enable_intensity:=false enable_color_camera:=true color_resolution:=Resolution_1288x730
rostopic hz /camera/Range/image_raw
rostopic hz /camera/ColorCamera/image_raw
average rate: 9.866
min: 0.067s max: 0.167s std dev: 0.01278s window: 224
average rate: 9.862
min: 0.068s max: 0.172s std dev: 0.01102s window: 227
Quite close to device computed color texture
Range
+ 1288x730 ColorCamera
, enforce Laser
textureIntensity not streamed, Laser texture is only to get more FPS
roslaunch camera_aravis photoneo_motioncam.launch enable_intensity:=false enable_color_camera:=true color_resolution:=Resolution_1288x730 texture_source:=Laser
rostopic hz /camera/Range/image_raw
rostopic hz /camera/ColorCamera/image_raw
average rate: 9.899
min: 0.056s max: 0.161s std dev: 0.01483s window: 278
average rate: 9.899
min: 0.056s max: 0.161s std dev: 0.01483s window: 278
Unlike with Range
only, texture source did very little difference
Range
+ Intensity
The default
roslaunch camera_aravis photoneo_motioncam.launch
rostopic hz /camera/Range/image_raw
rostopic hz /camera/Intensity/image_raw
average rate: 9.840
min: 0.070s max: 0.159s std dev: 0.01294s window: 249
average rate: 9.863
min: 0.064s max: 0.175s std dev: 0.01419s window: 237
Result like Range
+ 1288x730 ColorCamera
but the other one should not need to align data
Range
+ Intensity
texture source Laser
roslaunch camera_aravis photoneo_motioncam.launch color_resolution:=Resolution_1288x730 texture_source:=Laser
rostopic hz /camera/Range/image_raw
rostopic hz /camera/Intensity/image_raw
average rate: 11.758
min: 0.066s max: 0.106s std dev: 0.00513s window: 210
average rate: 11.759
min: 0.068s max: 0.103s std dev: 0.00476s window: 223
Range
+ Intensity
with chunked data (not multipart)From:
roslaunch camera_aravis photoneo_motioncam.launch
rostopic hz /camera/Intensity/image_raw
average rate: 9.805
min: 0.069s max: 0.168s std dev: 0.01454s window: 222
We would not get anything in ROS
Range
as we are currently not testing for chunks attached to Image payload
This is exactly the same as multipart performance
Range
+ 1932x1096 ColorCamera
+ enforce texture from Laser
+ jumbo frames OS MTU + jumbo frames aravis MTUsudo ifconfig enp60s0 mtu 9000
ip a
# ...
2: enp60s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
# ...
roslaunch camera_aravis photoneo_motioncam.launch enable_intensity:=false enable_color_camera:=true texture_source:=Laser mtu:=9000
rostopic hz /camera/Range/image_raw
rostopic hz /camera/ColorCamera/image_raw
Before adapting MTU in camera_aravis, after stabilizing
average rate: 8.024
min: 0.039s max: 0.503s std dev: 0.02526s window: 385
average rate: 7.952
min: 0.023s max: 0.829s std dev: 0.03735s window: 554
After adapting MTU in camera_aravis with rosrun rqt_reconfigure rqt_reconfigure
to 9000
average rate: 9.957
min: 0.049s max: 0.192s std dev: 0.01319s window: 1127
average rate: 9.953
min: 0.064s max: 0.183s std dev: 0.00905s window: 1385
MTU affects result drastically.
Especially in high bandwidth case like this.
Repeating experiment with firmware 1.13.3
Current extend branch (> 4.1.4)
sudo ip link set dev enp60s0 mtu 9000
roslaunch camera_aravis photoneo_motioncam.launch color_resolution:=Resolution_3864x2192 enable_color_camera:=true enable_intensity:=false texture_source:=Laser mtu:=9000
rostopic hz /camera/Range/image_raw
rostopic hz /camera/ColorCamera/image_raw
average rate: 5.540
min: 0.170s max: 0.230s std dev: 0.00711s window: 254
average rate: 5.535
min: 0.155s max: 0.251s std dev: 0.01082s window: 205
~ 5.5 fps with 4K RGB
The bottleneck is probably link bandwidth
Current extend branch (> 4.1.4)
sudo ip link set dev enp60s0 mtu 9000
roslaunch camera_aravis photoneo_motioncam.launch operation_mode:=Scanner color_resolution:=Resolution_3864x2192 enable_color_camera:=true enable_intensity:=false texture_source:=Laser mtu:=9000
rostopic hz /camera/Range/image_raw
rostopic hz /camera/ColorCamera/image_raw
average rate: 2.202
min: 0.388s max: 0.543s std dev: 0.02330s window: 44
average rate: 2.201
min: 0.372s max: 0.547s std dev: 0.02811s window: 55
~ 2.2 fps in scanner mode with 4K RGB
This is likely just scanning time result
Placeholder for results
If not specified:
Camera
Color
OutputTopology
isRegularGrid
Range
onlyRange
only, TS =Laser
Range
+ 1932x1096ColorCamera
Range
+ 1932x1096ColorCamera
, TS =Laser
Range
+ 1932x1096ColorCamera
, TS =Laser
+MTU
=9000Range
+ 1288x730ColorCamera
Range
+ 1288x730ColorCamera
, TS =Laser
Range
+ 3864x2192ColorCamera
, TS =Laser
+MTU
=9000Scanner
Range
+ 3864x2192ColorCamera
, TS =Laser
+MTU
=9000Range
+Intensity
Range
+Intensity
fromLaser
Range
+Intensity
(chunked)Device firmware notes
With MotionCam firmware 1.13.3 values I get are a bit lower, for example for
Range
+ 1932x1096ColorCamera
, TS =Laser
+MTU
=9000The reason seems to be device not accepting any MTU changes above 1500 (GevSCPPacketSize)