#169
Discovered other potential vision bottleneck
When we run our vision pipeline, we have
v4l2_camera_node/camera_ros --> CameraNode --> potentially multiple vision nodes at a time.
We currently run them all as separate launch actions, which launches them in different processes. CameraNode subscribes to v4l2, and vision nodes all subscribe to CameraNode stream, which means a lot of inter process communications and copying of image memory buffers
A composable node lets multiple nodes run in one process, which can allow for zero copying img buffers (thru C++ shared_ptr) and also no DDS serialization/deserialization overhead. The main issue is that zero copying (the important one) comes from C++ nodes only. Prob no diff on laptop, but potentially high benefit for a raspberry pi.
Basically, try to keep most of the vision pipeline stuff in same process and try not to expose raw topics or image data to other processes or over network
#169
Discovered other potential vision bottleneck
When we run our vision pipeline, we have
v4l2_camera_node/camera_ros --> CameraNode --> potentially multiple vision nodes at a time.
We currently run them all as separate launch actions, which launches them in different processes. CameraNode subscribes to v4l2, and vision nodes all subscribe to CameraNode stream, which means a lot of inter process communications and copying of image memory buffers
A composable node lets multiple nodes run in one process, which can allow for zero copying img buffers (thru C++ shared_ptr) and also no DDS serialization/deserialization overhead. The main issue is that zero copying (the important one) comes from C++ nodes only. Prob no diff on laptop, but potentially high benefit for a raspberry pi.
Basically, try to keep most of the vision pipeline stuff in same process and try not to expose raw topics or image data to other processes or over network