Let me start with a small list of what troubled us the most:
- MultiThreading capabilities are not explained well within DriveWorks (or not implemented well).
We have been told that the SAL is not thread safe, but we have proven in our code that it can work in multithreaded environment without locks.
ImageStreamers seems to be a great source of SegFaults for a great number of developers trying to tackle the multithreading with DW. When we reimplemented NvMediaProducer and CudaConsumer using NvMedia library we fixed the issue.
We believe in fast pipelines in our car software, therefore lack of multithreading in your samples is confusing as the potential is clearly there.
- Some useful parts were removed from DriveWorks 1.2.
For example - Object tracking is now not consistent with DriveNet. It DW 0.6 there was sample using both DriveNet object detector and tracker. I suppose it was left out for next release because it didn’t make it to the deadline?
- Some tools/parts doesn’t work for us out of the box.
Recording tools might use some love. We had to reimplement them ourselves.
You cannot use H264 serialization (CameraSerializer) on virtual camera - we don’t quite understand why the encoder needs a handle to the sensor, when the image properties are later passed to the serializer anyways. The use case is when you want to visualize some new stuff on already recorded data.
- Some concepts could use some more space in the documentation.
Like F-Theta camera model - We were completely unaware we could use it on Pinhole cameras.
Some parameters are only mentioned in the docs.
Proper migration guide.
If you think the information is too detailed, then put it in the extra section. I think the developers would gladly read some extra information on interesting topic.
- Drive PX2 fans are noisy even when not under workload.
Improvements and good things:
- Camera calibration and tools around it definitely got improved by a leap. While it’s still not perfect it was a huge improvement.
We think that new teams would appreciate some interactive intrinsics calibration. Even if you could calibrate only at 4 FPS, it would still be helpful as the extra frames could get dropped. It would be choppy - yes - but helpful.
Speed gains. This seems to be opposed by making the platform less stable (^ see ImageStreamers), yet I listed it as a plus.
NvMedia framework has a lot of different and also interesting samples.
Documentation got improved.
We still think there is a lot of room for improvement (check the previous list), but some parts got upgraded and they weren’t just plain copy-paste from previous version.
What we wish for:
Greater C++ standard support on the board. At the moment we are cross compiling and linking the C++ lib statically, which is not ideal.
Our greatest wish is for open sourcing. If you could consider open sourcing some of the libraries (like DriveWorks), we believe that the current development community around Drive platform, under the supervision of the NVIDIA, could greatly contribute to the project by fixing the issues and improving the software - thus making the platform more attractive.
Samples for NvMedia framework to be remade in C++ with nice component design -> so the developer could extract some required parts rather easily. Also adding CMake support to the samples might save the developers some time.
I might ask around the office some more and update the list.
Also if you would like to discuss any point I have mentioned feel free to contact me.