We are currently using VDS to get video stream from CarMaker cameras in ROS setup. Recently, I’ve learnt about CMRosIf, I was wondering whether getting video stream via CMROSIf would be possible as well and how its performance would compare to VDS?
Getting VDS directly from CarMaker to ROS isn’t possible at the moment.
We’ve had multiple implementations in the past with VDS data being sent over TCP/IP to a local ROS node, and the ROS node basically re-sends this data as a ROS message stream. The performance of this is at best the same as VDS, but likely slightly worse due to the additional overhead.
Thanks for your feedback.
I guess, I can publish directly Carmaker’s RSI images via CmROSIf to other ROS nodes instead of using VDS interface then. Do you have any data regarding performance?
Also I found Aslan-CarMaker integration projects and it is written that currently maximum 3 RSI camera can be used. What is a reason for the restriction? In my understanding, we can publish images from RSI cameras via CMROSIf and then ROS shall deal with everything else.
That was a joint promotional project between IPG and Streetdrone, and it was adapted for their vehicle. Their car had 3 cameras, so we placed 3 cameras as well in this project. You can extend the project to support more if you like, but this whole setup still uses the VDS in the background to send the stream of pixels to ROS. These streams are processed on the GPU, which has two limitations:
- Not everyone has the required PSM license to work with physical sensor models like the CameraRSI needed for VDS
- I can have 3 cameras on a 20 series NVidia and achieve real time performance. More than that, and my GPU struggles a lot to process all the information. You will need a better graphics card if you want more cameras.
Thanks for the excellent answer.
I checked Camera RSI interface. It seems there is no way to go around VDS when dealing with RSI cameras and I won’t be able to write images directly into ROS message from CarMaker node.
Maybe that’s what you meant by your first answer, please correct me otherwise.
Yes that is exactly correct, the image data will always be written from CarMaker to a TCP/IP port, then this data is read and re-transmitted over ROS in a specific ROS node. Direct writing to ROS is not currently possible.