Robotics StackExchange | Archived questions

ros_astra_camera install error (undefined reference error)

Hi All,

I have an error with installing rosastracamera. I have already successfully built libuvccamera in another workspace but there are still error about libuvccamera. Is it because of path issues or i didnt really install properly?

I'm currently using a Pi4 with raspbian buster with ros melodic.

Please help me. I need this to install the astra pro camera driver for my final year project.

    [ 98%] Built target astra_camera_node
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::~CameraDriver()':
camera_driver.cpp:(.text+0xcb4): undefined reference to `uvc_free_frame'
/usr/bin/ld: camera_driver.cpp:(.text+0xcd4): undefined reference to `uvc_exit'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::getUVCExposureCb(astra_camera::GetUVCExposureRequest_<std::allocator<void> >&, astra_camera::GetUVCExposureResponse_<std::allocator<void> >&)':
camera_driver.cpp:(.text+0xe84): undefined reference to `uvc_get_exposure_abs'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::setUVCExposureCb(astra_camera::SetUVCExposureRequest_<std::allocator<void> >&, astra_camera::SetUVCExposureResponse_<std::allocator<void> >&)':
camera_driver.cpp:(.text+0xef8): undefined reference to `uvc_set_ae_mode'
/usr/bin/ld: camera_driver.cpp:(.text+0xf14): undefined reference to `uvc_set_ae_mode'
/usr/bin/ld: camera_driver.cpp:(.text+0x104c): undefined reference to `uvc_set_exposure_abs'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::getUVCGainCb(astra_camera::GetUVCGainRequest_<std::allocator<void> >&, astra_camera::GetUVCGainResponse_<std::allocator<void> >&)':
camera_driver.cpp:(.text+0x10e4): undefined reference to `uvc_get_gain'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::setUVCGainCb(astra_camera::SetUVCGainRequest_<std::allocator<void> >&, astra_camera::SetUVCGainResponse_<std::allocator<void> >&)':
camera_driver.cpp:(.text+0x1154): undefined reference to `uvc_set_gain'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::getUVCWhiteBalanceCb(astra_camera::GetUVCWhiteBalanceRequest_<std::allocator<void> >&, astra_camera::GetUVCWhiteBalanceResponse_<std::allocator<void> >&)':
camera_driver.cpp:(.text+0x11ac): undefined reference to `uvc_get_white_balance_temperature'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::setUVCWhiteBalanceCb(astra_camera::SetUVCWhiteBalanceRequest_<std::allocator<void> >&, astra_camera::SetUVCWhiteBalanceResponse_<std::allocator<void> >&)':
camera_driver.cpp:(.text+0x1220): undefined reference to `uvc_set_white_balance_temperature_auto'
/usr/bin/ld: camera_driver.cpp:(.text+0x123c): undefined reference to `uvc_set_white_balance_temperature_auto'
/usr/bin/ld: camera_driver.cpp:(.text+0x125c): undefined reference to `uvc_set_white_balance_temperature'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::Start()':
camera_driver.cpp:(.text+0x12cc): undefined reference to `uvc_init'
/usr/bin/ld: camera_driver.cpp:(.text+0x12ec): undefined reference to `uvc_perror'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::Stop()':
camera_driver.cpp:(.text+0x1440): undefined reference to `uvc_exit'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::ReconfigureCallback(libuvc_camera::UVCCameraConfig&, unsigned int)':
camera_driver.cpp:(.text+0x1594): undefined reference to `uvc_set_scanning_mode'
/usr/bin/ld: camera_driver.cpp:(.text+0x1710): undefined reference to `uvc_set_ae_mode'
/usr/bin/ld: camera_driver.cpp:(.text+0x1884): undefined reference to `uvc_set_ae_priority'
/usr/bin/ld: camera_driver.cpp:(.text+0x1a0c): undefined reference to `uvc_set_exposure_abs'
/usr/bin/ld: camera_driver.cpp:(.text+0x1c08): undefined reference to `uvc_set_focus_auto'
/usr/bin/ld: camera_driver.cpp:(.text+0x1d7c): undefined reference to `uvc_set_focus_abs'
/usr/bin/ld: camera_driver.cpp:(.text+0x1ef0): undefined reference to `uvc_set_gain'
/usr/bin/ld: camera_driver.cpp:(.text+0x2074): undefined reference to `uvc_set_iris_abs'
/usr/bin/ld: camera_driver.cpp:(.text+0x21f0): undefined reference to `uvc_set_brightness'
/usr/bin/ld: camera_driver.cpp:(.text+0x2374): undefined reference to `uvc_set_pantilt_abs'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::ImageCallback(uvc_frame*)':
camera_driver.cpp:(.text+0x2974): undefined reference to `uvc_yuyv2bgr'
/usr/bin/ld: camera_driver.cpp:(.text+0x2994): undefined reference to `uvc_perror'
/usr/bin/ld: camera_driver.cpp:(.text+0x2a24): undefined reference to `uvc_mjpeg2rgb'
/usr/bin/ld: camera_driver.cpp:(.text+0x2a44): undefined reference to `uvc_perror'
/usr/bin/ld: camera_driver.cpp:(.text+0x2b0c): undefined reference to `uvc_any2bgr'
/usr/bin/ld: camera_driver.cpp:(.text+0x2b2c): undefined reference to `uvc_perror'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::OpenCamera(libuvc_camera::UVCCameraConfig&)':
camera_driver.cpp:(.text+0x3e80): undefined reference to `uvc_find_devices'
/usr/bin/ld: camera_driver.cpp:(.text+0x3ea0): undefined reference to `uvc_perror'
/usr/bin/ld: camera_driver.cpp:(.text+0x3f24): undefined reference to `uvc_unref_device'
/usr/bin/ld: camera_driver.cpp:(.text+0x4070): undefined reference to `uvc_open'
/usr/bin/ld: camera_driver.cpp:(.text+0x417c): undefined reference to `uvc_get_bus_number'
/usr/bin/ld: camera_driver.cpp:(.text+0x4194): undefined reference to `uvc_get_device_address'
/usr/bin/ld: camera_driver.cpp:(.text+0x42bc): undefined reference to `uvc_get_bus_number'
/usr/bin/ld: camera_driver.cpp:(.text+0x42d4): undefined reference to `uvc_get_device_address'
/usr/bin/ld: camera_driver.cpp:(.text+0x42e4): undefined reference to `uvc_strerror'
/usr/bin/ld: camera_driver.cpp:(.text+0x4348): undefined reference to `uvc_unref_device'
/usr/bin/ld: camera_driver.cpp:(.text+0x4364): undefined reference to `uvc_set_status_callback'
/usr/bin/ld: camera_driver.cpp:(.text+0x43d4): undefined reference to `uvc_get_stream_ctrl_format_size'
/usr/bin/ld: camera_driver.cpp:(.text+0x4400): undefined reference to `uvc_perror'
/usr/bin/ld: camera_driver.cpp:(.text+0x4410): undefined reference to `uvc_close'
/usr/bin/ld: camera_driver.cpp:(.text+0x4420): undefined reference to `uvc_unref_device'
/usr/bin/ld: camera_driver.cpp:(.text+0x4534): undefined reference to `uvc_print_diag'
/usr/bin/ld: camera_driver.cpp:(.text+0x4558): undefined reference to `uvc_start_streaming'
/usr/bin/ld: camera_driver.cpp:(.text+0x4578): undefined reference to `uvc_perror'
/usr/bin/ld: camera_driver.cpp:(.text+0x4588): undefined reference to `uvc_close'
/usr/bin/ld: camera_driver.cpp:(.text+0x4598): undefined reference to `uvc_unref_device'
/usr/bin/ld: camera_driver.cpp:(.text+0x45bc): undefined reference to `uvc_free_frame'
/usr/bin/ld: camera_driver.cpp:(.text+0x45e4): undefined reference to `uvc_allocate_frame'
/usr/bin/ld: CMakeFiles/camera_node.dir/src/libuvc_camera/camera_driver.cpp.o: in function `libuvc_camera::CameraDriver::CloseCamera()':
camera_driver.cpp:(.text+0x4788): undefined reference to `uvc_close'
/usr/bin/ld: camera_driver.cpp:(.text+0x47a4): undefined reference to `uvc_unref_device'
collect2: error: ld returned 1 exit status
make[2]: *** [ros_astra_camera/CMakeFiles/camera_node.dir/build.make:163: /home/pi/catkin_ws/devel/lib/astra_camera/camera_node] Error 1
make[1]: *** [CMakeFiles/Makefile2:3405: ros_astra_camera/CMakeFiles/camera_node.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Invoking "make -j4 -l4" failed

Asked by jackkj on 2020-03-09 07:38:37 UTC

Comments

Can you please provide the list of steps you performed to build this? What is the content of your workspace? Where did you get the astra_camera code from? etc

Asked by marguedas on 2020-03-09 13:05:45 UTC

I followed the steps and also downloaded from astra_git My workspace currently has dynamic_reconfigure, Image_common, rgbd_launch, ros_astra_camera and rplidar_ros.

Asked by jackkj on 2020-03-09 14:28:39 UTC

As for downloading it's dependencies (libuvs and libuvc_camera) i have follow the steps on answer. As for others, i have git clone from their git repo and cmake . and make

Asked by jackkj on 2020-03-09 14:32:46 UTC

Unfortunately that's not really enough information to help you debug this.

By list of steps if meant a reproducible example: an exact list of commands to run. Ideally with the full console output of the build as well. To get more details about the invocation that fails you can run make in verbose mode:

VERBOSE=1 catkin_make_isolated --install

I tried reproducing the issue but without the manual cloning and cmake make invocations. Instead I used rosinstall_generator to give a list of repositories and tags to clone. This allows me to stay lazy and mostly to clone only release version of the code and not the default branch (that may be experimental or broken). I could not reproduce your issue, the build passed. Here is the Dockerfile I used, that may help you find out what differs from your setup

Asked by marguedas on 2020-03-10 12:34:33 UTC

Thank you very much !!! By following the steps in your docker file the driver successfully installed.

Asked by jackkj on 2020-03-12 07:51:21 UTC

Answers