JetsonHacks

Developing on NVIDIA® Jetson™ for AI on the Edge

Intel RealSense Package for ROS on NVIDIA Jetson TX1

Intel provides an open source ROS package for their RealSense cameras. In this article, we install the package on the Jetson TX1. In the video, we even take the package out for a spin with a RealSense R200 camera connected to a Jetson TX1. Looky here:

Background

The Intel RealSense cameras are small form factor RGBD cameras that provide high performance at an inexpensive price point. For many robotic applications, the RealSense camera is a good fit. Getting the RealSense ROS packages up and running on the Jetson TX1 is fairly straightforward.

Installation

The RealSense ROS package has two prerequisites on the Jetson TX1. First, modify the Jetson TX1 kernel to allow the Jetson to understand the different video modes of the RealSense cameras. This previous article describes the process: Intel RealSense Camera Installation – NVIDIA Jetson TX1.

The librealsense installation article above installs librealsense on the TX1. This is strictly not necessary as the RealSense ROS packages needs librealsense to be installed from source in the Catkin Workspace. However, following the article allows for easy testing. Note that you can uninstall the librealsense library if desired:

$ cd librealsense
$ sudo make uninstall

The second prerequisite is that ROS must be installed on the Jetson TX1, along with a Catkin Workspace. Here is an earlier article Robot Operating System (ROS) on NVIDIA Jetson TX1 about the installation process.

Install RealSense Packages for ROS

There are convenience scripts to install the Intel RealSense ROS package on the Github JetsonHacks account. After the prerequisites mentioned above have been installed:

$ git clone https://github.com/jetsonhacks/installRealSenseROSTX1
$ cd installRealSenseROSTX1
$ ./installRealSenseROSTX1 <catkin workspace name>

Where catkin_workspace_name is the name of the Catkin Workspace to place the RealSense package. In the video, the workspace is named jetsonbot.

Launch files for the camera node/nodelet are available in the realsense_camera source directory in the launch folder. There are also rviz launch files in the rviz folder.

Notes

There is a file called Notes.txt in the installRealSenseROSTX1 directory which has some short notes for installing rviz and rqt-reconfigure to help visualize the output from the RealSense camera and adjust camera parameters on the Jetson TX1.

The installation above shows a Jetson TX1 running L4T 24.2.1. The scripts install Intel RealSense ROS package version 1.5.

Unlike most of articles and videos on JetsonHacks, installation of the Intel RealSense packages requires some prerequisites to be installed before installation. While previous articles cover the steps involved, be aware that this is a little more complicated than most of the software installation articles on this site.

As always, the scripts made available from JetsonHacks only provide a guide for how to complete the described task, you may have to modify them to suit your needs.

Facebook
Twitter
LinkedIn
Reddit
Email
Print

28 Responses

  1. Hi! I’ve just re-flashed my TX1 to Jetpack L4T 2.3.1 and wanted to setup the realsense driver based on this tutorial. I executed directly the script “./installRealSenseROSTX1” and everything went fine (both librealsense and the ros wrapper got installed). When launching an error popped up ‘uvc kernel module not loaded’ as expected since I didn’t patch anything.

    Now, my question is: In your other article (https://jetsonhacks.com/2016/10/06/intel-realsense-camera-installation-nvidia-jetson-tx1/) which section do I need to follow; ‘Kernel and Module Building’ or ‘USB Video Class Module’ in order to get rid of the error.

    Best regards,
    Badabais

    1. My experience is that you have to do both. You have to get all the kernel source files, setup the local version of the kernel, build etc. After that you patch the UVC Module to add the RealSense video modes and build it. That should all be covered in the link you posted. Thanks for reading!

  2. Hi – been following and mimicking you with a TK1, ROS and a Realsense, brilliant, thanks very much for a gentle but comprehensive intro! I’m saving up for a TX1 now…

    Question: Have you explored rtabmap with TX1, ROS and Realsense? Would dearly love to see how it’s done as I just can’t get that combination to work with a TK1 properly

  3. Hey once I get drivers installed and get the camera to publish the data, how do I make it to a point where I can make the surrounding and save the data. I basically want to learn how to build an autonomous robot using this camera at the end. Could you please, PLEASE, help me with it? Thanks!

  4. Hi! Using your instructions for tk1 to me rather easily it was succeeded to deliver R200 on jetson tk1. But here in attempt to set on TX1 there is an error VDSO32L arch/arm64/kernel/vdso32/vdso32.so.dbg
    /bin/sh: 1: -Wp,-MD,arch/arm64/kernel/vdso32/.vdso32.so.dbg.d: not found
    and there doesn’t take place compilation of the module for UVC. how will get rid of this error? I’ve just re-flashed my TX1 to Jetpack L4T 2.3.1.

      1. in case of compilation of a kernel there is also an error. I several times, on steps repeated actions and from https://jetsonhacks.com/2016/10/06/intel-realsense-camera-installation-nvidia-jetson-tx1/, and all the same in case of start of programs there is a message of UVCIOC_CTRL_QUERY:UVC_SET_CUR error 2, No such file or directory. As there is the single error in case of compilation of a kernel of VDSO32L arch/arm64/kernel/vdso32/vdso32.so.dbg
        / bin/sh: 1: – Wp, – MD, arch/arm64/kernel/vdso32/.vdso32.so.dbg.d: not found I assumed that the error in case of start of the program is a consequence of an error in case of compilation of a kernel. at a forum on R/200 there is a response what the error of UVCIOC_CTRL_QUERY:UVC_SET_CUR error 2 says about what was incorrectly compiled by Real sence software for a platform :(, I attentively watched all videos to your publications on RealSence, but unfortunately the place where goes to video compilation of VDSO32L is absent therefore I would like to ask when you execute compilation of a kernel whether there is a similar error? whether it is possible to ask you to send on my EMAIL archive of the VDSO32 folder from TX1 working for you with the camera RealSense.

    1. I use version of the L4T 24.2.1.
      $ uname -r issues my version 3.10.96-V.0.3
      and the added draver for operation of rp-liadar A2 (210X) works normally, i.e. the version of a kernel is activated and normally works.

    2. whether it is possible to ask you to send on my EMAIL archive of the VDSO32 folder from TX1 working for you with the camera RealSense? the camera didn’t start working 🙁

  5. Thanks for the video. I have successfully run the sample code. However, I find that when I run catkin_make in jetsonbot package. I get the error, the log is shown below:

    Base path: /home/ubuntu/jetsonbot
    Source space: /home/ubuntu/jetsonbot/src
    Build space: /home/ubuntu/jetsonbot/build
    Devel space: /home/ubuntu/jetsonbot/devel
    Install space: /home/ubuntu/jetsonbot/install
    ####
    #### Running command: “make cmake_check_build_system” in “/home/ubuntu/jetsonbot/build”
    ####
    — Using CATKIN_DEVEL_PREFIX: /home/ubuntu/jetsonbot/devel
    — Using CMAKE_PREFIX_PATH: /home/ubuntu/jetsonbot/devel;/opt/ros/kinetic
    — This workspace overlays: /home/ubuntu/jetsonbot/devel;/opt/ros/kinetic
    — Using PYTHON_EXECUTABLE: /usr/bin/python
    — Using Debian Python package layout
    — Using empy: /usr/bin/empy
    — Using CATKIN_ENABLE_TESTING: ON
    — Call enable_testing()
    — Using CATKIN_TEST_RESULTS_DIR: /home/ubuntu/jetsonbot/build/test_results
    — Found gtest sources under ‘/usr/src/gtest’: gtests will be built
    — Using Python nosetests: /usr/bin/nosetests-2.7
    — catkin 0.7.6
    — BUILD_SHARED_LIBS is on
    — ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    — ~~ traversing 2 packages in topological order:
    — ~~ – librealsense
    — ~~ – realsense_camera
    — ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    — +++ processing catkin package: ‘librealsense’
    — ==> add_subdirectory(librealsense)
    — Building in a ROS environment
    Traceback (most recent call last):
    File “/opt/ros/kinetic/share/catkin/cmake/parse_package_xml.py”, line 113, in
    main()
    File “/opt/ros/kinetic/share/catkin/cmake/parse_package_xml.py”, line 108, in main
    with open(args.outfile, ‘w’, **kwargs) as ofile:
    IOError: [Errno 13] Permission denied: ‘/home/ubuntu/jetsonbot/build/librealsense/catkin_generated/package.cmake’
    CMake Error at /opt/ros/kinetic/share/catkin/cmake/safe_execute_process.cmake:11 (message):
    execute_process(/usr/bin/python
    “/opt/ros/kinetic/share/catkin/cmake/parse_package_xml.py”
    “/home/ubuntu/jetsonbot/src/librealsense/package.xml”
    “/home/ubuntu/jetsonbot/build/librealsense/catkin_generated/package.cmake”)
    returned error code 1
    Call Stack (most recent call first):
    /opt/ros/kinetic/share/catkin/cmake/catkin_package_xml.cmake:63 (safe_execute_process)
    /opt/ros/kinetic/share/catkin/cmake/catkin_package_xml.cmake:39 (_catkin_package_xml)
    /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:99 (catkin_package_xml)
    librealsense/CMakeLists.txt:26 (catkin_package)

    — Configuring incomplete, errors occurred!
    See also “/home/ubuntu/jetsonbot/build/CMakeFiles/CMakeOutput.log”.
    See also “/home/ubuntu/jetsonbot/build/CMakeFiles/CMakeError.log”.
    Makefile:1760: recipe for target ‘cmake_check_build_system’ failed
    make: *** [cmake_check_build_system] Error 1
    Invoking “make cmake_check_build_system” failed

  6. Looks like there’s some kind of permissions issue:
    IOError: [Errno 13] Permission denied: ‘/home/ubuntu/jetsonbot/build/librealsense/catkin_generated/package.cmake’

  7. Hi I have tried to use jetpack 2.3 and it installed ubuntu 16.04. I’m beginner with tx1. So to follow the above tutorial I should have ubuntu 14.04 or 16.04?

      1. Hi Kangalow, thanks a lot for reply.
        I think I made a mistake while asking the question. I flashed L4T 24.2.1 on TX1. I also checked it using “head -n 1 /etc/nv_tegra_release” command.
        I’m not sure about what version of ubuntu it supposed to install. In my case it installed ubuntu 16.04. I just wanted to confirm will the above tutorial work in my setting or does it require ubuntu 14.04? If it require ubuntu 14.04, do you know what should I change while using jetpack 2.3 and l4t 24.2.1 ? I’m complete beginner and I’m really sorry if my question annoys you.

        1. I’m not quite sure how to answer your question. The Jetson TX1 runs an Ubuntu variant called L4T. The version of L4T on your Jetson is 24.2.1 which is the same as the article. All of the compilation takes place on the Jetson TX1. If the Jetson is running L4T 24.2.1, it is running a variant of 64-bit Ubuntu 16.04 with Kernel 3.10.96. I’m not sure why you would downgrade it somehow to 14.04.

  8. Hi, I have followed all the steps and successfully built everything (I am very grateful for the help you gave us) but when I launch the r200_nodelet_rgbd.launch file, I get the following error:

    [ERROR] [1523450187.306938559]: Failed to load nodelet [/camera/driver] of type [realsense_camera/R200Nodelet] even after refreshing the cache: Failed to load library /home/nvidia/jetsonbot/devel/lib//librealsense_camera_nodelet.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 = libopencv_core3.so.3.3: cannot open shared object file: No such file or directory)
    [ERROR] [1523450187.307130799]: The error before refreshing the cache was: Failed to load library /home/nvidia/jetsonbot/devel/lib//librealsense_camera_nodelet.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 = libopencv_core3.so.3.3: cannot open shared object file: No such file or directory)
    [FATAL] [1523450187.322090955]: Failed to load nodelet ‘/camera/driver` of type `realsense_camera/R200Nodelet` to manager `camera_nodelet_manager’

    (…and many more, all related to the file libopencv_core3.so.3.3)

    It seems that the library libopencv_core3.so.3.3 is missing. Have you already had this problem? Could you help me in making in work?
    Thank you so much,
    Emanuele

      1. Hi, thank you for your prompt reply. I installed the Jetpack 3.2 with L4T R28.2 on my NVIDIA Jetson TX1.
        Then, I followed the guides (in this very order):

        https://jetsonhacks.com/2017/08/14/intel-realsense-camera-librealsense-nvidia-jetson-tx-dev-kits/

        https://jetsonhacks.com/2016/10/12/robot-operating-system-ros-on-nvidia-jetson-tx1/

        https://jetsonhacks.com/2016/10/26/intel-realsense-package-for-ros-on-nvidia-jetson-tx1/

        Both ROS and the librealsense standalone examples are working fine. The only software that is not working is the realsense package for ROS. It returns the errors that I wrote down in the previous post.

        Thanks,
        E.

        1. I forgot to mention that I installed only these components on the TX1:
          – CUDA Toolkit
          – cuDNN
          – OpenCV

        2. The articles are written using L4T 28.1, which is a different version of OpenCV. I’m not quite sure what changes need to be made for running under L4T 28.2.

          1. I will try to understand what’s happening… then I think I will roll back to the Jetpack 3.1. 🙂
            Thank you again.

            1. Hi, I installed Jetpack 3.1 but it still doesn’t work. Now the error is the following:

              [ERROR] [1523891613.261685983]: /camera/driver – Error calling rs_create_context ( api_version:11100 ):
              uvcvideo kernel module is not loaded

              [FATAL] [1523891613.492027546]: Failed to load nodelet ‘/camera/ir_rectify_ir` of type `image_proc/rectify` to manager `camera_nodelet_manager’
              [FATAL] [1523891613.492027598]: Failed to load nodelet ‘/camera/driver` of type `realsense_camera/R200Nodelet` to manager `camera_nodelet_manager’
              [FATAL] [1523891613.493475566]: Failed to load nodelet ‘/camera/depth_rectify_depth` of type `image_proc/rectify` to manager `camera_nodelet_manager’
              [FATAL] [1523891613.493514837]: Failed to load nodelet ‘/camera/disparity_depth` of type `depth_image_proc/disparity` to manager `camera_nodelet_manager’
              [FATAL] [1523891613.493601816]: Failed to load nodelet ‘/camera/register_depth_rgb` of type `depth_image_proc/register` to manager `camera_nodelet_manager’
              [FATAL] [1523891613.493713743]: Failed to load nodelet ‘/camera/depth_metric` of type `depth_image_proc/convert_metric` to manager `camera_nodelet_manager’
              [FATAL] [1523891613.494075410]: Failed to load nodelet ‘/camera/points_xyzrgb_sw_registered` of type `depth_image_proc/point_cloud_xyzrgb` to manager `camera_nodelet_manager’
              […]

              I am starting to hate ROS deeply… 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

Disclaimer

Some links here are affiliate links. If you purchase through these links I will receive a small commission at no additional cost to you. As an Amazon Associate, I earn from qualifying purchases.

Books, Ideas & Other Curiosities