stereolabs / zed-ros2-wrapper

ROS 2 wrapper for the ZED SDK
https://www.stereolabs.com/docs/ros2/
Apache License 2.0
134 stars 139 forks source link

colcon build error. #179

Closed Hensbag closed 8 months ago

Hensbag commented 8 months ago

Preliminary Checks

Description

I want to install use my zed2 camera with

cuda_version": "11.6 cudnn_version": "8.4.1.50-1+cuda11.6 tensorrt_version": "8.4.2-1+cuda11.6 I used ZED sdk 3.7.7 when I try to build my zed_ws it ' s failing I use humble on ubuntu 22.04

Steps to Reproduce

1.I installed Cuda tensorrt cudnn 2.tried to build my package

Expected Result

colcon build succes

Actual Result

Starting >>> zed_interfaces Finished <<< zed_interfaces [0.70s]
Starting >>> zed_components --- stderr: zed_components
/home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp: In member function ‘void stereolabs::ZedCamera::initParameters()’: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:267:5: error: ‘set_on_parameters_set_callback’ was not declared in this scope 267 | set_on_parameters_set_callback(std::bind(&ZedCamera::callback_paramChange, this, _1)); | ^~~~~~~~~~ In file included from /opt/ros/humble/include/rclcpp/rclcpp/logging.hpp:24, from /opt/ros/humble/include/rclcpp/rclcpp/client.hpp:40, from /opt/ros/humble/include/rclcpp/rclcpp/callback_group.hpp:24, from /opt/ros/humble/include/rclcpp/rclcpp/any_executable.hpp:20, from /opt/ros/humble/include/rclcpp/rclcpp/memory_strategy.hpp:25, from /opt/ros/humble/include/rclcpp/rclcpp/memory_strategies.hpp:18, from /opt/ros/humble/include/rclcpp/rclcpp/executor_options.hpp:20, from /opt/ros/humble/include/rclcpp/rclcpp/executor.hpp:37, from /opt/ros/humble/include/rclcpp/rclcpp/executors/multi_threaded_executor.hpp:25, from /opt/ros/humble/include/rclcpp/rclcpp/executors.hpp:21, from /opt/ros/humble/include/rclcpp/rclcpp/rclcpp.hpp:155, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/include/zed_camera_component.hpp:31, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:25: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp: In member function ‘void stereolabs::ZedCamera::getGeneralParams()’: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:327:35: warning: too many arguments for format [-Wformat-extra-args] 327 | RCLCPP_WARN(get_logger(), "'pub_frame_rate' cannot be bigger than 'grab_frame_rate'", paramName.c_str()); | ^~~~~~~~~~~~~~ /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp: In member function ‘bool stereolabs::ZedCamera::getCamera2BaseTransform()’: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:2443:108: error: no matching function for call to ‘rclcpp::Duration::Duration(double)’ 2443 | mTfBuffer->lookupTransform(mCameraFrameId, mBaseFrameId, TIMEZERO_SYS, rclcpp::Duration(0.1)); | ^ In file included from /opt/ros/humble/include/rclcpp/rclcpp/time.hpp:24, from /opt/ros/humble/include/rclcpp/rclcpp/clock.hpp:24, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/tools/include/sl_tools.h:49, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/include/zed_camera_component.hpp:29, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:25: /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:48:3: note: candidate: ‘template<class Rep, class Period> rclcpp::Duration::Duration(const std::chrono::duration<_Rep1, _Period1>&)’ 48 | Duration(const std::chrono::duration<Rep, Period> & duration) // NOLINT(runtime/explicit) | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:48:3: note: template argument deduction/substitution failed: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:2443:108: note: mismatched types ‘const std::chrono::duration<_Rep1, _Period1>’ and ‘double’ 2443 | mTfBuffer->lookupTransform(mCameraFrameId, mBaseFrameId, TIMEZERO_SYS, rclcpp::Duration(0.1)); | ^ In file included from /opt/ros/humble/include/rclcpp/rclcpp/time.hpp:24, from /opt/ros/humble/include/rclcpp/rclcpp/clock.hpp:24, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/tools/include/sl_tools.h:49, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/include/zed_camera_component.hpp:29, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:25: /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:151:3: note: candidate: ‘rclcpp::Duration::Duration()’ 151 | Duration() = default; | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:151:3: note: candidate expects 0 arguments, 1 provided /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:61:3: note: candidate: ‘rclcpp::Duration::Duration(const rclcpp::Duration&)’ 61 | Duration(const Duration & rhs); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:61:29: note: no known conversion for argument 1 from ‘double’ to ‘const rclcpp::Duration&’ 61 | Duration(const Duration & rhs); | ~~~^ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:59:12: note: candidate: ‘rclcpp::Duration::Duration(const rcl_duration_t&)’ 59 | explicit Duration(const rcl_duration_t & duration); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:59:44: note: no known conversion for argument 1 from ‘double’ to ‘const rcl_duration_t&’ {aka ‘const rcl_duration_s&’} 59 | explicit Duration(const rcl_duration_t & duration); | ~~~~~^~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:53:3: note: candidate: ‘rclcpp::Duration::Duration(const Duration&)’ 53 | Duration(const builtin_interfaces::msg::Duration & duration_msg); // NOLINT(runtime/explicit) | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:53:54: note: no known conversion for argument 1 from ‘double’ to ‘const Duration&’ {aka ‘const builtininterfaces::msg::Duration<std::allocator >&’} 53 | Duration(const builtin_interfaces::msg::Duration & duration_msg); // NOLINT(runtime/explicit) | ~~~~~~~~^~~~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:42:12: note: candidate: ‘rclcpp::Duration::Duration(std::chrono::nanoseconds)’ 42 | explicit Duration(std::chrono::nanoseconds nanoseconds); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:42:46: note: no known conversion for argument 1 from ‘double’ to ‘std::chrono::nanoseconds’ {aka ‘std::chrono::duration<long int, std::ratio<1, 1000000000> >’} 42 | explicit Duration(std::chrono::nanoseconds nanoseconds); | ~~~~~^~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:39:3: note: candidate: ‘rclcpp::Duration::Duration(int32_t, uint32_t)’ 39 | Duration(int32_t seconds, uint32_t nanoseconds); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:39:3: note: candidate expects 2 arguments, 1 provided /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp: In member function ‘bool stereolabs::ZedCamera::getSens2CameraTransform()’: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:2497:109: error: no matching function for call to ‘rclcpp::Duration::Duration(double)’ 2497 | mTfBuffer->lookupTransform(mDepthFrameId, mCameraFrameId, TIMEZERO_SYS, rclcpp::Duration(0.1)); | ^ In file included from /opt/ros/humble/include/rclcpp/rclcpp/time.hpp:24, from /opt/ros/humble/include/rclcpp/rclcpp/clock.hpp:24, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/tools/include/sl_tools.h:49, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/include/zed_camera_component.hpp:29, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:25: /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:48:3: note: candidate: ‘template<class Rep, class Period> rclcpp::Duration::Duration(const std::chrono::duration<_Rep1, _Period1>&)’ 48 | Duration(const std::chrono::duration<Rep, Period> & duration) // NOLINT(runtime/explicit) | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:48:3: note: template argument deduction/substitution failed: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:2497:109: note: mismatched types ‘const std::chrono::duration<_Rep1, _Period1>’ and ‘double’ 2497 | mTfBuffer->lookupTransform(mDepthFrameId, mCameraFrameId, TIMEZERO_SYS, rclcpp::Duration(0.1)); | ^ In file included from /opt/ros/humble/include/rclcpp/rclcpp/time.hpp:24, from /opt/ros/humble/include/rclcpp/rclcpp/clock.hpp:24, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/tools/include/sl_tools.h:49, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/include/zed_camera_component.hpp:29, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:25: /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:151:3: note: candidate: ‘rclcpp::Duration::Duration()’ 151 | Duration() = default; | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:151:3: note: candidate expects 0 arguments, 1 provided /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:61:3: note: candidate: ‘rclcpp::Duration::Duration(const rclcpp::Duration&)’ 61 | Duration(const Duration & rhs); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:61:29: note: no known conversion for argument 1 from ‘double’ to ‘const rclcpp::Duration&’ 61 | Duration(const Duration & rhs); | ~~~^ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:59:12: note: candidate: ‘rclcpp::Duration::Duration(const rcl_duration_t&)’ 59 | explicit Duration(const rcl_duration_t & duration); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:59:44: note: no known conversion for argument 1 from ‘double’ to ‘const rcl_duration_t&’ {aka ‘const rcl_duration_s&’} 59 | explicit Duration(const rcl_duration_t & duration); | ~~~~~^~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:53:3: note: candidate: ‘rclcpp::Duration::Duration(const Duration&)’ 53 | Duration(const builtin_interfaces::msg::Duration & duration_msg); // NOLINT(runtime/explicit) | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:53:54: note: no known conversion for argument 1 from ‘double’ to ‘const Duration&’ {aka ‘const builtininterfaces::msg::Duration<std::allocator >&’} 53 | Duration(const builtin_interfaces::msg::Duration & duration_msg); // NOLINT(runtime/explicit) | ~~~~~~~~^~~~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:42:12: note: candidate: ‘rclcpp::Duration::Duration(std::chrono::nanoseconds)’ 42 | explicit Duration(std::chrono::nanoseconds nanoseconds); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:42:46: note: no known conversion for argument 1 from ‘double’ to ‘std::chrono::nanoseconds’ {aka ‘std::chrono::duration<long int, std::ratio<1, 1000000000> >’} 42 | explicit Duration(std::chrono::nanoseconds nanoseconds); | ~~~~~^~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:39:3: note: candidate: ‘rclcpp::Duration::Duration(int32_t, uint32_t)’ 39 | Duration(int32_t seconds, uint32_t nanoseconds); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:39:3: note: candidate expects 2 arguments, 1 provided /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp: In member function ‘bool stereolabs::ZedCamera::getSens2BaseTransform()’: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:2551:107: error: no matching function for call to ‘rclcpp::Duration::Duration(double)’ 2551 | mTfBuffer->lookupTransform(mDepthFrameId, mBaseFrameId, TIMEZERO_SYS, rclcpp::Duration(0.1)); | ^ In file included from /opt/ros/humble/include/rclcpp/rclcpp/time.hpp:24, from /opt/ros/humble/include/rclcpp/rclcpp/clock.hpp:24, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/tools/include/sl_tools.h:49, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/include/zed_camera_component.hpp:29, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:25: /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:48:3: note: candidate: ‘template<class Rep, class Period> rclcpp::Duration::Duration(const std::chrono::duration<_Rep1, _Period1>&)’ 48 | Duration(const std::chrono::duration<Rep, Period> & duration) // NOLINT(runtime/explicit) | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:48:3: note: template argument deduction/substitution failed: /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:2551:107: note: mismatched types ‘const std::chrono::duration<_Rep1, _Period1>’ and ‘double’ 2551 | mTfBuffer->lookupTransform(mDepthFrameId, mBaseFrameId, TIMEZERO_SYS, rclcpp::Duration(0.1)); | ^ In file included from /opt/ros/humble/include/rclcpp/rclcpp/time.hpp:24, from /opt/ros/humble/include/rclcpp/rclcpp/clock.hpp:24, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/tools/include/sl_tools.h:49, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/include/zed_camera_component.hpp:29, from /home/hasan/zed_ws/src/zed-ros2-wrapper/zed_components/src/zed_camera/src/zed_camera_component.cpp:25: /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:151:3: note: candidate: ‘rclcpp::Duration::Duration()’ 151 | Duration() = default; | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:151:3: note: candidate expects 0 arguments, 1 provided /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:61:3: note: candidate: ‘rclcpp::Duration::Duration(const rclcpp::Duration&)’ 61 | Duration(const Duration & rhs); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:61:29: note: no known conversion for argument 1 from ‘double’ to ‘const rclcpp::Duration&’ 61 | Duration(const Duration & rhs); | ~~~^ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:59:12: note: candidate: ‘rclcpp::Duration::Duration(const rcl_duration_t&)’ 59 | explicit Duration(const rcl_duration_t & duration); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:59:44: note: no known conversion for argument 1 from ‘double’ to ‘const rcl_duration_t&’ {aka ‘const rcl_duration_s&’} 59 | explicit Duration(const rcl_duration_t & duration); | ~~~~~^~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:53:3: note: candidate: ‘rclcpp::Duration::Duration(const Duration&)’ 53 | Duration(const builtin_interfaces::msg::Duration & duration_msg); // NOLINT(runtime/explicit) | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:53:54: note: no known conversion for argument 1 from ‘double’ to ‘const Duration&’ {aka ‘const builtininterfaces::msg::Duration<std::allocator >&’} 53 | Duration(const builtin_interfaces::msg::Duration & duration_msg); // NOLINT(runtime/explicit) | ~~~~~~~~^~~~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:42:12: note: candidate: ‘rclcpp::Duration::Duration(std::chrono::nanoseconds)’ 42 | explicit Duration(std::chrono::nanoseconds nanoseconds); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:42:46: note: no known conversion for argument 1 from ‘double’ to ‘std::chrono::nanoseconds’ {aka ‘std::chrono::duration<long int, std::ratio<1, 1000000000> >’} 42 | explicit Duration(std::chrono::nanoseconds nanoseconds); | ~~~~~^~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:39:3: note: candidate: ‘rclcpp::Duration::Duration(int32_t, uint32_t)’ 39 | Duration(int32_t seconds, uint32_t nanoseconds); | ^~~~ /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:39:3: note: candidate expects 2 arguments, 1 provided gmake[2]: [CMakeFiles/zed_camera_component.dir/build.make:90: CMakeFiles/zed_camera_component.dir/src/zed_camera/src/zed_camera_component.cpp.o] Error 1 gmake[1]: [CMakeFiles/Makefile2:164: CMakeFiles/zed_camera_component.dir/all] Error 2 gmake: *** [Makefile:146: all] Error 2

Failed <<< zed_components [6.17s, exited with code 2]

Summary: 1 package finished [7.04s] 1 package failed: zed_components 1 package had stderr output: zed_components 2 packages not processed

ZED Camera model

ZED2

Environment

ubuntu 22.04
nvidia rtx2060 6gb
ros humble
zed sdk 3.7.7

Anything else?

also I'm trying to imply this camera to autonomous driving stack called autoware which is not supported by this autonomous stack.any help would be appreciated .

Patrick-AA commented 8 months ago

Hello,

Are you using the tag for SDK version 3.7 foxy-v3.7 ?

Hensbag commented 8 months ago

there is a sdk version 3.7.7 'https://download.stereolabs.com/zedsdk/3.7/cu117/ubuntu22' Since I use Cuda 11.6 and cudnn_version": "8.4.1.50-1+cuda11.6 tensorrt_version": "8.4.2-1+cuda11.6 it seemed ok with me since the autonomous driving stack autoware using it.I want to try it with humble because there is no galactic version.

PenghuySrean commented 8 months ago

I am running wsl2 ubuntu 20 (ros2 foxy), my cuda version is 12, hence I have installed the compatible version of zed-sdk accordingly. while trying to build the package I found this error threw on the terminal.

CMake Error at /mnt/c/Program Files (x86)/ZED SDK/zed-config.cmake:55 (message):
  You've selected the 32bit version of Unix Makefiles.

   Please delete the cache (file->Delete Cache) and use the 64bit version. (Unix Makefiles Win64)
Call Stack (most recent call first):
  CMakeLists.txt:78 (find_package)

I am not sure how to the change the configuration from 32bit to 64bit. I am not sure where the 32 bit was configured.