On Wed, Nov 20, 2019 at 11:45 PM RealSense Customer Support < ***@***.***> wrote:
------------------------------
Still need any further clarification for this topic? If not, will close
this.
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<
#812
?email_source=notifications&email_token=AL36LNGMOQKYXTTU3KW3ILTQUYOA3A5CNFSM4HW5VIIKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEZBK7Y#issuecomment-556930431>,
or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/AL36LNBUFJGY73J7V4WN7VDQUYOA3ANCNFSM4HW5VIIA
>
The lack of this package up-to-date source breaks all ros1 installs done from source. Hence, the issue at hand should be open. While one can compile using the source
here
. The package has not been updated or known to work since ros kinetic.
This renders Realsense's useless in real world robotic scenarios. For example, using the Jetson Nano for inference with Realsense. That is, the Nano official image has Ubuntu 18.04 and running native ros1 with python3 requires installation from source. Other hacks are possible (like docker, upgrading manually) none of which will work with realsense (at least not with 435i or 455).
Hi
@dnovischi
ddynamic_reconfigure can be manually installed using
sudo apt install
with specific versions for Kinetic, Melodic and Noetic. This instruction is used instead of cloning the source.
Kinetic
sudo apt install ros-kinetic-ddynamic-reconfigure
Melodic
sudo apt install ros-melodic-ddynamic-reconfigure
Noetic
sudo apt install ros-noetic-ddynamic-reconfigure
Hi
@MartyG-RealSense
, I don't understand how having some packages solves the issue.
The setup is the following:
Jetson Nano with Official Ubuntu 18.04 installed:
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
Ros Noetic (full desktop) compiled and installed from source using official instructions
here
. The installation was checked and is working flawlessly (with default python3.6) on Ubuntu 18.04 official Jetson Nano image:
$ roscore
... logging to /home/jetson/.ros/log/56d5b7c4-8844-11ed-873c-ae8a2019ff15/roslaunch-jetson-antrobot3.local-26833.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://jetson-antrobot3.local:38921/
ros_comm version 1.15.15
SUMMARY
========
PARAMETERS
* /rosdistro: noetic
* /rosversion: 1.15.15
NODES
auto-starting new master
process[master]: started with pid [26843]
ROS_MASTER_URI=http://jetson-antrobot3.local:11311/
setting /run_id to 56d5b7c4-8844-11ed-873c-ae8a2019ff15
process[rosout-1]: started with pid [26856]
started core service [/rosout]
^C[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
Librealsense 2.50.0 compiled from source using official instructions
here
. And udev rules checked to see if they were installed properly.
Install compatible Realsense 435i firmware version 5.13.0.50 as specified officially
here
. Firmware checked with (x86 PC) realsense-viewer and ros noetic instalation via rviz, rqt and command line and is working properly.
Cloned the realsense-ros repo and checkout ros1-legacy with compatible tag version 2.3.2. Installed the only version of ddynamic_reconfigure installable possible on ubuntu18.04 :
sudo apt install ros-melodic-ddynamic-reconfigure
(for which, I'm sorry, but I fail to see the relevance of since we're talking about ros-noetic installation through source).
Tried to compile the realsense-ros using the official steps
here
which of course give:
$ catkin_make clean
Base path: /home/jetson/catkin_ws
Source space: /home/jetson/catkin_ws/src
Build space: /home/jetson/catkin_ws/build
Devel space: /home/jetson/catkin_ws/devel
Install space: /home/jetson/catkin_ws/install
####
#### Running command: "cmake /home/jetson/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/jetson/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/jetson/catkin_ws/install -G Unix Makefiles" in "/home/jetson/catkin_ws/build"
####
-- The C compiler identification is GNU 8.4.0
-- The CXX compiler identification is GNU 8.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- 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: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- 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/jetson/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/noetic
-- This workspace overlays: /opt/ros/noetic
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.6.9", minimum required is "3")
-- Using PYTHON_EXECUTABLE: /usr/bin/python3
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/jetson/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /usr/bin/python3 (found version "3.6.9")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Using Python nosetests: /usr/bin/nosetests3
-- catkin 0.8.10
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 2 packages in topological order:
-- ~~ - realsense2_description
-- ~~ - realsense2_camera
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'realsense2_description'
-- ==> add_subdirectory(realsense-ros/realsense2_description)
-- +++ processing catkin package: 'realsense2_camera'
-- ==> add_subdirectory(realsense-ros/realsense2_camera)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Could NOT find ddynamic_reconfigure (missing: ddynamic_reconfigure_DIR)
-- Could not find the required component 'ddynamic_reconfigure'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by
"ddynamic_reconfigure" with any of the following names:
ddynamic_reconfigureConfig.cmake
ddynamic_reconfigure-config.cmake
Add the installation prefix of "ddynamic_reconfigure" to CMAKE_PREFIX_PATH
or set "ddynamic_reconfigure_DIR" to a directory containing one of the
above files. If "ddynamic_reconfigure" provides a separate development
package or SDK, be sure it has been installed.
Call Stack (most recent call first):
realsense-ros/realsense2_camera/CMakeLists.txt:11 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/jetson/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/jetson/catkin_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed
Now as per my previous post, I have already tried to use the source available
here
suggested in the official compilation steps. The compilation succeeds but nothing works.
I have also tried to install the ros-noetic ddynamic-reconfigure package:
sudo apt install ros-noetic-ddynamic-reconfigure
which, of course, is not installable on ubuntu 18.04:
sudo apt install ros-noetic-ddynamic-reconfigure
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ros-noetic-ddynamic-reconfigure : Depends: libgcc-s1 (>= 3.0) but it is not installable
Depends: libstdc++6 (>= 9) but 8.4.0-1ubuntu1~18.04 is to be installed
Depends: ros-noetic-dynamic-reconfigure but it is not going to be installed
Depends: ros-noetic-roscpp but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
So,
@MartyG-RealSense
what am I missing? What is the solution for installations from source?
In the RealSense ROS1 wrapper, ddynamic_reconfigure is a required component. It allows changes to settings to be made dynamically during runtime after launch instead of in a launch file or roslaunch instruction before launch. It is not required in the ROS2 wrapper.
ddynamic_reconfigure can be installed by cloning its source as the wrapper installation instructions suggest. Whilst it is certainly valid to install it this way, I personally always recommend installing it from packages instead by using the apt-install packages for particular ROS1 branches that I listed above. The reason for this recommendation is simply because it is an easy installation method.
Checking carefully through your detailed description of your complete installation procedure on Jetson, I cannot see anything that is obviously incorrect and you have installed the various components in the appropriate order (librealsense, ROS, ddynamic_reconfigure, RealSense ROS1 wrapper). Your librealsense / Python installation is also working correctly.
There are occasionally problems with the ROS1 wrapper that are not correctable no matter what is tried, but are suddenly resolved if the entire
catkin_ws/src
catkin workspace folder is deleted and the wrapper is built from source again by following the instructions from the beginning after the catkin_ws/src folder is recreated. Choose to either install ddynamic_reconfigure from source or packages but do not use both methods.
In the RealSense ROS1 wrapper, ddynamic_reconfigure is a required component. It allows changes to settings to be made dynamically during runtime after launch instead of in a launch file or roslaunch instruction before launch. It is not required in the ROS2 wrapper.
So the best bet when using Jetson Nano is to do a distribution upgrade to ubuntu 20.04 and switch to ROS2?
Does the same apply to Jetson Xavier NX?
There are occasionally problems with the ROS1 wrapper that are not correctable no matter what is tried, but are suddenly resolved if the entire catkin_ws/src catkin workspace folder is deleted and the wrapper is built from source again by following the instructions from the beginning after the catkin_ws/src folder is recreated. Choose to either install ddynamic_reconfigure from source or packages but do not use both methods.
I'll give it a try. Also can you post your way of re-configuring udev rules?
On the other hand, what's your recommended way of using Realsense (435i and/or 455) with Jetson Nano based on a python3.x version? (I really don't care about the OS, as long as I can run ROS on python3. Our code requires tensorrt compiled models to run inside of ros nodes).
Thanks and Happy New Year!
PS: I'll post findings for this in more appropriate issue, as continuing the discussion here is kind of out of scope. (Probably in
#2580
)
You are very welcome!
A RealSense user provides a complete guide at
#2197 (comment)
for using Python 3 with Jetson Nano and RealSense D455.
The guide at the link below may also be worth reading, although it is not specific to RealSense or Jetson.
https://idorobotics.com/2020/08/19/setting-up-ros-with-python-3-and-opencv/