Skip to content

Error when running single_stream sample application in Docker container created using DockerFile.deepstream.ros2.eloquent #8

Open
@ctslick

Description

@ctslick

I've built a Docker container using this Dockerfile from the repo:
https://github.com/NVIDIA-AI-IOT/ros2_jetson/blob/main/docker/DockerFile.deepstream.ros2.eloquent

I then follow steps here (to run an example) inside the container:
https://github.com/NVIDIA-AI-IOT/ros2_deepstream

  1. cd /workspace/ros2_ws/src/ros2_deepstream/
  2. colcon build
  3. source /opt/ros/eloquent/setup.bash
  4. . install/setup.bash
  5. ros2 run single_stream_pkg single_stream --ros-args -p input_source:="/dev/video0"

Steps 1-4 run fine, but running step #5 I receive this error:

** (process:139): WARNING **: 18:44:29.567: Failed to load shared library 'libgstreamer-1.0.so.0' referenced by the typelib: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0)
Traceback (most recent call last):
File "/workspace/ros2_ws/src/ros2_deepstream/install/single_stream_pkg/lib/single_stream_pkg/single_stream", line 11, in
load_entry_point('single-stream-pkg==0.0.0', 'console_scripts', 'single_stream')()
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 480, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 2693, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 2324, in load
return self.resolve()
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 2330, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/workspace/ros2_ws/src/ros2_deepstream/install/single_stream_pkg/lib/python3.6/site-packages/single_stream_pkg/single_stream.py", line 24, in
from single_stream_pkg.single_stream_class import InferencePublisher
File "/workspace/ros2_ws/src/ros2_deepstream/install/single_stream_pkg/lib/python3.6/site-packages/single_stream_pkg/single_stream_class.py", line 39, in
from gi.repository import GObject, Gst
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 656, in _load_unlocked
File "", line 626, in _load_backward_compatible
File "/usr/lib/python3/dist-packages/gi/importer.py", line 146, in load_module
dynamic_module = load_overrides(introspection_module)
File "/usr/lib/python3/dist-packages/gi/overrides/init.py", line 125, in load_overrides
override_mod = importlib.import_module(override_package_name)
File "/usr/lib/python3.6/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/usr/lib/python3/dist-packages/gi/overrides/Gst.py", line 58, in
class Bin(Gst.Bin):
File "/usr/lib/python3/dist-packages/gi/module.py", line 181, in getattr
interfaces = tuple(interface for interface in get_interfaces_for_object(info)
File "/usr/lib/python3/dist-packages/gi/module.py", line 105, in get_interfaces_for_object
interfaces.append(getattr(module, name))
File "/usr/lib/python3/dist-packages/gi/overrides/init.py", line 39, in getattr
return getattr(self.introspection_module, name)
File "/usr/lib/python3/dist-packages/gi/module.py", line 220, in getattr
wrapper = metaclass(name, bases, dict
)
File "/usr/lib/python3/dist-packages/gi/types.py", line 234, in init
register_interface_info(cls.info.get_g_type())
TypeError: must be an interface

This shared object file () is located here (inside the container);
root@ubuntu:/# find . -name libgstreamer-1.0.so.0
./usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
./usr/lib/aarch64-linux-gnu/tegra/libgstreamer-1.0.so.0

So I tried:

  • export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0:$LD_LIBRARY_PATH
  • (receive same error as above)
  • export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/tegra/libgstreamer-1.0.so.0:$LD_LIBRARY_PATH
  • (receive same error as above)

I'm not sure where to go from here. It seems the container is not built correctly to run code from the ros2_deepstream repo, even though that is the intended purpose of these containers?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions