DW_SAL_CANNOT_INITIALIZE error on recorder-tui tool

Hi.

We have tried to capture Lidar data using the recorder-tui tool.
The following about our Set-Up:

* Drive AGX * Velodyne Lidar HDL-32e

We have doubts about the value of a device parameter in lidar parameters.

When the device parameter was set VELO_HDL32E, the recorder-tui tool failed to start. The error was DW_SAL_CANNOT_INITIALIZE.
When the device parameter was set VELO_VLP16HR, the recorder-tui tool worked properly.

Are you aware about such the behavior of the recorder-tui tool?

For your information, sample_lidar_replay did the same behavior.

"parameter": "device=VELO_HDL32E,ip=192.168.1.201,port=2368,scan-frequency=10,protocol=udp", "parameter": "device=VELO_VLP16HR,ip=192.168.1.201,port=2368,scan-frequency=10,protocol=udp",

Thanks
Masa

Dear masa_t,
Could you double check the required parameters for velodyne HDL32E

Dear SivaRamaKrishna.

Thank you for your prompt reply.

Could you please tell me what I have to check? Is it our rig-file of recorder-tui tool?

We are using Velodyne HDL32E. Why does recorder-tui tool work properly when I set VELO_VLP16HR?

Dear masa_t,
could you please check with device=VELO_HDL32E, ip=192.168.1.211,port=2211,scan-frequency=10 for Velodyne HDL32E

Dear SivaRamaKrishna.

I tried the parameters that you instructed, but failed to start with the DW_SAL_CANNOT_INITIALIZE error.
Our lidar uses an IP address of 192.168.1.201 and a port number of 2368. Therefore I think that connection is failing.

Please let me make a correction. The error when specifying VELO_HDL32E was DW_FAILURE.

device=VELO_HDL32E,ip=192.168.1.211,port=2211,scan-frequency=10

[24-07-2019 09:12:29] Platform: Detected DDPX - Tegra A
[24-07-2019 09:12:29] Initialize DriveWorks SDK v2.0.2081
[24-07-2019 09:12:29] Release build with GNU 4.9.4 from heads/buildbrain-branch-0-g36b127f against Drive PDK v5.1.0.2
[24-07-2019 09:12:29] TimeSource: monotonic epoch time offset is 1563926534295583
[24-07-2019 09:12:29] PTP Time is available from NVPPS Driver
[24-07-2019 09:12:29] Platform: number of GPU devices detected 2
[24-07-2019 09:12:29] Platform: currently selected GPU device discrete ID 0
[24-07-2019 09:12:29] SDK: Resources mounted from /usr/local/driveworks-2.0/data/
[24-07-2019 09:12:29] SDK: Create NvMediaDevice
[24-07-2019 09:12:29] egl::Display: found 2 EGL devices
[24-07-2019 09:12:29] egl::Display: use drm device: drm-nvdc
[24-07-2019 09:12:29] Platform: currently selected GPU device integrated ID 1
[24-07-2019 09:12:29] Loading rig file: lexus_lidar/nvidia_forum.json
[24-07-2019 09:12:29] SensorFactory::createSensor() -> lidar.socket, device=VELO_HDL32E,ip=192.168.1.211,port=2211,scan-frequency=10
[24-07-2019 09:12:29] Destination IP address and Horizontal Resolution is used only by OUSTER Lidar
Return Mode is used only by Velodyne Lidar
[24-07-2019 09:12:44] SensorManager: DW_SAL_CANNOT_INITIALIZE: LidarSocket::checkDeviceData, 192.168.1.211:2211 is not connected
[24-07-2019 09:12:44] SensorManager: Failed to add sensor from rig: lidar.socket device=VELO_HDL32E,ip=192.168.1.211,port=2211,scan-frequency=10 (Error: DW_SAL_CANNOT_INITIALIZE)
terminate called after throwing an instance of 'dw::core::Exception'
  what():  DW_SAL_CANNOT_INITIALIZE: SensorManager: Failed to add sensors from rig
Aborted (core dumped)

device=VELO_HDL32E,ip=192.168.1.201,port=2368,scan-frequency=10

[24-07-2019 10:23:39] Platform: Detected DDPX - Tegra A
[24-07-2019 10:23:39] Initialize DriveWorks SDK v2.0.2081
[24-07-2019 10:23:39] Release build with GNU 4.9.4 from heads/buildbrain-branch-0-g36b127f against Drive PDK v5.1.0.2
[24-07-2019 10:23:39] TimeSource: monotonic epoch time offset is 1563926534295583
[24-07-2019 10:23:39] PTP Time is available from NVPPS Driver
[24-07-2019 10:23:39] Platform: number of GPU devices detected 2
[24-07-2019 10:23:39] Platform: currently selected GPU device discrete ID 0
[24-07-2019 10:23:39] SDK: Resources mounted from /usr/local/driveworks-2.0/data/
[24-07-2019 10:23:39] SDK: Create NvMediaDevice
[24-07-2019 10:23:39] egl::Display: found 2 EGL devices
[24-07-2019 10:23:39] egl::Display: use drm device: drm-nvdc
[24-07-2019 10:23:39] Platform: currently selected GPU device integrated ID 1
[24-07-2019 10:23:39] Loading rig file: lexus_lidar/192.168.1.200_error.json
[24-07-2019 10:23:39] SensorFactory::createSensor() -> lidar.socket, device=VELO_HDL32E,ip=192.168.1.201,port=2368,scan-frequency=10,protocol=udp
[24-07-2019 10:23:39] Destination IP address and Horizontal Resolution is used only by OUSTER Lidar
Return Mode is used only by Velodyne Lidar
[24-07-2019 10:23:39] SensorManager: DW_FAILURE: DecoderVelodyne::processStatus, device type does not match product ID 0x21
[24-07-2019 10:23:39] SensorManager: Failed to add sensor from rig: lidar.socket device=VELO_HDL32E,ip=192.168.1.201,port=2368,scan-frequency=10,protocol=udp (Error: DW_FAILURE)
terminate called after throwing an instance of 'dw::core::Exception'
  what():  DW_FAILURE: SensorManager: Failed to add sensors from rig
Aborted (core dumped)

device=VELO_VLP16HR,ip=192.168.1.201,port=2368,scan-frequency=10

[24-07-2019 09:15:53] Platform: Detected DDPX - Tegra A
[24-07-2019 09:15:53] Initialize DriveWorks SDK v2.0.2081
[24-07-2019 09:15:53] Release build with GNU 4.9.4 from heads/buildbrain-branch-0-g36b127f against Drive PDK v5.1.0.2
[24-07-2019 09:15:53] TimeSource: monotonic epoch time offset is 1563926534295583
[24-07-2019 09:15:53] PTP Time is available from NVPPS Driver
[24-07-2019 09:15:54] Platform: number of GPU devices detected 2
[24-07-2019 09:15:54] Platform: currently selected GPU device discrete ID 0
[24-07-2019 09:15:54] SDK: Resources mounted from /usr/local/driveworks-2.0/data/
[24-07-2019 09:15:54] SDK: Create NvMediaDevice
[24-07-2019 09:15:54] egl::Display: found 2 EGL devices
[24-07-2019 09:15:54] egl::Display: use drm device: drm-nvdc
[24-07-2019 09:15:54] Platform: currently selected GPU device integrated ID 1
[24-07-2019 09:15:54] Loading rig file: lexus_lidar/192.168.1.200.json
[24-07-2019 09:15:54] SensorFactory::createSensor() -> lidar.socket, device=VELO_VLP16HR,ip=192.168.1.201,port=2368,scan-frequency=10,protocol=udp
[24-07-2019 09:15:54] Destination IP address and Horizontal Resolution is used only by OUSTER Lidar
Return Mode is used only by Velodyne Lidar
[24-07-2019 09:15:54] DecoderVelodyne : Changing return mode to STRONGEST
[24-07-2019 09:15:54] LidarSocket::LidarSocket, connected to 192.168.1.201:2368
Rig: 192.168.1.200.json NewSink: /dev/null
[24-07-2019 09:15:54] SensorManager: started
Press s<Enter> to start, just <Enter> to see progress, q<Enter> to quit.

Dear masa_t,
Could you please check the below items

  • Connect only VELO_HDL32E and open http://192.168.1.211/ to open the configuration page. You can see the port number as 2368 by default. Please refer to Velodyne HDL32E manual for more details about configuration
  • ./sample_lidar_replay --protocol=lidar.socket --params=device=VELO_HDL32E,ip=192.168.1.211,port=2368,scan-frequency=10
  • If above works use the recorder with same config

I confirmed that the port number is 2368.

The result of sample_lidar_replay is as follows.

  • I can’t change Lidar’s IP address from 192.168.1.201 to 192.168.1.211 right now, because other members are also using it.
$ ./sample_lidar_replay --protocol=lidar.socket --params=device=VELO_HDL32E,ip=192.168.1.201,port=2368,scan-frequency=10
Starting my sample application...
[24-07-2019 13:58:13] Platform: Detected DDPX - Tegra A
[24-07-2019 13:58:13] Initialize DriveWorks SDK v2.0.2081
[24-07-2019 13:58:13] Release build with GNU 4.9.4 from heads/buildbrain-branch-0-g36b127f against Drive PDK v5.1.0.2
[24-07-2019 13:58:13] TimeSource: monotonic epoch time offset is 1563941277296057
[24-07-2019 13:58:13] PTP Time is available from NVPPS Driver
[24-07-2019 13:58:13] Platform: number of GPU devices detected 2
[24-07-2019 13:58:13] Platform: currently selected GPU device discrete ID 0
[24-07-2019 13:58:13] SDK: Resources mounted from .././data/
[24-07-2019 13:58:13] SDK: Create NvMediaDevice
[24-07-2019 13:58:13] SDK: use EGL display as provided
[24-07-2019 13:58:13] SensorFactory::createSensor() -> lidar.socket, device=VELO_HDL32E,ip=192.168.1.201,port=2368,scan-frequency=10
[24-07-2019 13:58:13] Destination IP address and Horizontal Resolution is used only by OUSTER Lidar
Return Mode is used only by Velodyne Lidar
[24-07-2019 13:58:13] Driveworks exception thrown: DW_FAILURE: DecoderVelodyne::processStatus, device type does not match product ID 0x21

terminate called after throwing an instance of 'std::runtime_error'
  what():  [2019-07-24 13:58:13] DW Error DW_FAILURE executing DW function:
 dwSAL_createSensor(&m_lidarSensor, params, m_sal)
 at /dvs/git/dirty/gitlab-master_av/dw/sdk/samples/sensors/lidar/lidar_replay/main.cpp:113
Aborted (core dumped)

Dear masa_t,
Could you please check running ./sample_lidar_replay --protocol=lidar.socket --params=device=VELO_HDL32E,ip=192.168.1.211,port=2368,scan-frequency=10

Dear SivaRamaKrishna

I confirmed with tcpdump that Lidar data is received from IP: 192.168.1.201, PORT: 2368.

Dear masa_t,
Thank you for confirming the IP details. I will check with team and get back to you on this issue.

Dear masa_t,
Each Lidar will have its own IP. Could you confirm if only one Velodyne HDL32E is in the network.
You can change IP address in the configuration page(Refer page 72 in Velodyne HDL32E manual, You can open configuration page with URL https://<LIDAR_IP>, by default IP is 192.168.1.201 for Velodyne HDL32E) to see if the sample working with new IP and can revert back the IP if needed.
We do not see any issue with Velodyne HDL32E with lidar replay sample.
We are using the IP and port number shown in the configuration page. Note that, we have modified the default IP numbers to make sure each Lidar has its own IP