Please provide the following info (check/uncheck the boxes after clicking “+ Create Topic”):
Software Version
DRIVE OS Linux 5.2.0
DRIVE OS Linux 5.2.0 and DriveWorks 3.5
NVIDIA DRIVE™ Software 10.0 (Linux)
NVIDIA DRIVE™ Software 9.0 (Linux)
other DRIVE OS version
other
Target Operating System
Linux
QNX
other
Hardware Platform
NVIDIA DRIVE™ AGX Xavier DevKit (E3550)
NVIDIA DRIVE™ AGX Pegasus DevKit (E3550)
other
SDK Manager Version
1.5.0.7774
other
Host Machine Version
native Ubuntu 18.04
other
Hello, we have 4 cameras Sekonix SF3324 and I am trying to rectify the images with dwRectifier_warpNvMedia
. We are using the pinhole model.
Here is how I warp the images :
bool UndistortWrapper::undistortImage(const dwImageHandle_t& in_image, dwImageNvMedia& out_image)
{
dwImageNvMedia* in_image_nvmedia;
CHECK_DW_ERROR_ROS(dwImage_getNvMedia(&in_image_nvmedia, in_image))
CHECK_DW_ERROR_ROS(dwRectifier_warpNvMedia(&out_image, in_image_nvmedia, rectifier_))
return true;
}
And here’s how I call it :
undistortWrapper_->undistortImage(imageHandle_, *image_nvmedia);
But this function is slow and I cannot run it at 30Hz. I looked at the cpu usage with htop and the process is maxing out one thread and processing the images at only 8hz per camera.
I have created a thread pool and I rectify the images in different threads and I now reach 22 Hz but still not 30 Hz.
Am I missing something here ? Why is this function so slow and why is the CPU under so much load. I understood that dwRectifier_warpNvMedia
would use the Tegra VIC engine and be pretty fast.
Do you have any idea to improve the speed so we can reach 30 Hz publishing rate ?
Thanks !