Cross-Compilation ROS Melodic with DriveWorks 3.5

Please provide the following info (check/uncheck the boxes after creating this topic):
Software Version
DRIVE OS Linux 5.2.6
DRIVE OS Linux 5.2.6 and DriveWorks 4.0
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.8.0.10363
other

Host Machine Version
[*] native Ubuntu 18.04
other

I want to install ROS Melodic and cross compile it with DriveWorks.

My primary purpose of including it is to publish images from a DriveWorks application and then subscribe to those images from another process.

Please advice what all steps should I follow in order to install it on host for cross-compilation as well as on target Pegasus system.

Hi @raji
Please refer to the blog post. Thanks.

Hi @VickNV ,

I followed your post and github link.
Until Cross-Compile ROS step everything worked fine.
At this step I’m facing the below CMake error and unable to find any reference to resolve it.

<== Finished processing package [53 of 57]: 'rostopic'

==> Processing catkin package: 'topic_tools'
==> Creating build directory: 'build_isolated/topic_tools'
==> Building with env: '/home/lidar/ros_catkin_ws/install_isolated/env.sh'
==> cmake /home/lidar/ros_catkin_ws/src/ros_comm/topic_tools -DCATKIN_DEVEL_PREFIX=/home/lidar/ros_catkin_ws/devel_isolated/topic_tools -DCMAKE_INSTALL_PREFIX=/home/lidar/ros_catkin_ws/install_isolated -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.7m -DCMAKE_TOOLCHAIN_FILE=~/Downloads/Toolchain-V5L.cmake -G Unix Makefiles in '/home/lidar/ros_catkin_ws/build_isolated/topic_tools'
-- The C compiler identification is GNU 7.3.1
-- The CXX compiler identification is GNU 7.3.1
-- Check for working C compiler: /home/lidar/Documents/Nvidia_Drive/DRIVE_OS_5.2.0_SDK_Linux_OS_DRIVE_AGX_XAVIER/DRIVEOS/toolchains/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
-- Check for working C compiler: /home/lidar/Documents/Nvidia_Drive/DRIVE_OS_5.2.0_SDK_Linux_OS_DRIVE_AGX_XAVIER/DRIVEOS/toolchains/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/lidar/Documents/Nvidia_Drive/DRIVE_OS_5.2.0_SDK_Linux_OS_DRIVE_AGX_XAVIER/DRIVEOS/toolchains/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
-- Check for working CXX compiler: /home/lidar/Documents/Nvidia_Drive/DRIVE_OS_5.2.0_SDK_Linux_OS_DRIVE_AGX_XAVIER/DRIVEOS/toolchains/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using CATKIN_DEVEL_PREFIX: /home/lidar/ros_catkin_ws/devel_isolated/topic_tools
-- Using CMAKE_PREFIX_PATH: /home/lidar/ros_catkin_ws/install_isolated
-- This workspace overlays: /home/lidar/ros_catkin_ws/install_isolated
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.6.9", minimum required is "2") 
-- Using PYTHON_EXECUTABLE: /usr/bin/python3
-- Using Debian Python package layout
-- Found PY_em: /home/lidar/.local/lib/python3.6/site-packages/em.py  
-- Using empy: /home/lidar/.local/lib/python3.6/site-packages/em.py
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/lidar/ros_catkin_ws/build_isolated/topic_tools/test_results
-- gtest not found, C++ tests can not be built. Please install the gtest headers globally in your system to enable gtests
-- Using Python nosetests: /usr/bin/nosetests3
-- catkin 0.7.29
-- BUILD_SHARED_LIBS is on
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- topic_tools: 0 messages, 8 services
CMake Warning at /home/lidar/ros_catkin_ws/install_isolated/share/catkin/cmake/test/gtest.cmake:160 (message):
  skipping gtest 'topic_tools-utest' in project 'topic_tools' because gtest
  was not found
Call Stack (most recent call first):
  /home/lidar/ros_catkin_ws/install_isolated/share/catkin/cmake/test/gtest.cmake:89 (_catkin_add_executable_with_google_test)
  /home/lidar/ros_catkin_ws/install_isolated/share/catkin/cmake/test/gtest.cmake:37 (_catkin_add_google_test)
  CMakeLists.txt:85 (catkin_add_gtest)


-- Configuring done
CMake Error at CMakeLists.txt:96 (add_dependencies):
  The dependency target "topic_tools-test_shapeshifter" of target "tests"
  does not exist.


-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    PYTHON_INCLUDE_DIR


CMake Generate step failed.  Build files cannot be regenerated correctly.
<== Failed to process package 'topic_tools': 
  Command '['/home/lidar/ros_catkin_ws/install_isolated/env.sh', 'cmake', '/home/lidar/ros_catkin_ws/src/ros_comm/topic_tools', '-DCATKIN_DEVEL_PREFIX=/home/lidar/ros_catkin_ws/devel_isolated/topic_tools', '-DCMAKE_INSTALL_PREFIX=/home/lidar/ros_catkin_ws/install_isolated', '-DCMAKE_BUILD_TYPE=Release', '-DPYTHON_EXECUTABLE=/usr/bin/python3', '-DPYTHON_INCLUDE_DIR=/usr/include/python3.7m', '-DCMAKE_TOOLCHAIN_FILE=~/Downloads/Toolchain-V5L.cmake', '-G', 'Unix Makefiles']' returned non-zero exit status 1

Reproduce this error by running:
==> cd /home/lidar/ros_catkin_ws/build_isolated/topic_tools && /home/lidar/ros_catkin_ws/install_isolated/env.sh cmake /home/lidar/ros_catkin_ws/src/ros_comm/topic_tools -DCATKIN_DEVEL_PREFIX=/home/lidar/ros_catkin_ws/devel_isolated/topic_tools -DCMAKE_INSTALL_PREFIX=/home/lidar/ros_catkin_ws/install_isolated -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.7m '-DCMAKE_TOOLCHAIN_FILE=~/Downloads/Toolchain-V5L.cmake' -G 'Unix Makefiles'

I have already fixed many issue which occurred during the setup except this one.
Please advice as how to resolve it.

I’m not sure if the below messages are related or not. You may need to check them.

Hey @VickNV ,

Thanks it worked.
I installed gTests and then cross-compiled finished successfully.
The below message was the issue:

gtest not found, C++ tests can not be built. Please install the gtest headers globally in your system to enable gtests

Resolved after installing:

https://stackoverflow.com/questions/13513905/how-to-set-up-googletest-as-a-shared-library-on-linux

I’ll keep you posted with further updates.

Thanks.

Hi @VickNV ,

I have listed the outputs.

After running
./nv_sensors_producer

[ INFO] [1655365796.705006365]: camera sensor readFrame success.
[ INFO] [1655365796.738296364]: camera sensor readFrame success.
[ INFO] [1655365796.771821343]: camera sensor readFrame success.
[ INFO] [1655365796.804990573]: camera sensor readFrame success.
[ INFO] [1655365796.838240061]: camera sensor readFrame success.

After running

rosservice call camera_start camera.gmsl "camera-name=SF3324,interface=csi-a,link=0,output-format=processed"
(base) bin$ source ~/install_isolated/setup.bash
(base) bin$ rosservice call camera_start camera.gmsl "camera-name=SF3324,interface=csi-a,link=0,output-format=processed"
success: True
(base) bin$ 

After running:

(base) bin$ sudo -b X -ac -noreset -nolisten tcp
[sudo] password for nvidia: 
(base) bin$ _XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE) 
Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE) 
(EE) 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE) 
(EE) Server terminated with error (1). Closing log file.
(base) bin$ rosrun image_view image_view image:=/cameraData _autosize:=True
[ INFO] [1655365375.117176759]: Initializing nodelet with 7 worker threads.
[ERROR] [1655365375.541319789]: Failed to load nodelet [/image_view] of type [image_view/image] even after refreshing the cache: Failed to load library /opt/ros/melodic/lib//libimage_view.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /usr/lib/libgdal.so.20: undefined symbol: _ZN11xercesc_3_211InputSource11setEncodingEPKDs)
[ERROR] [1655365375.541469551]: The error before refreshing the cache was: Failed to load library /opt/ros/melodic/lib//libimage_view.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /usr/lib/libgdal.so.20: undefined symbol: _ZN11xercesc_3_211InputSource11setEncodingEPKDs)

Please help to resolve the XServer issue.

Please refer to Finalize DRIVE AGX System Setup. Thanks.

@VickNV , I’ve already installed gdm3 ubuntu-unity-desktop in target. Now to run X-server should I forcefully kill that process?

Have you tried rebooting the system?

Before install ubuntu desktop, this command should start X server already. Could you check why it fails on your side?

Yes, I tried to reboot the system but the issue remains. Actually the target is currently deployed on a vehicle and not connected to the host so without starting the desktop I cannot run the commands. I’ll try that once I have another system connected to target.

Actually I wrote a python code which is able to subscribe and visualise the published data from nv_sensors_producer executable by subscribing to the “cameraData” topic.