激光雷达标定入门(7)海康摄像头驱动

如果你在使用海康威视摄像头时遇到了编译报错的问题,可能是链接库的路径配置不正确。下面是解决这个问题的步骤和原理:

1. 克隆海康摄像头驱动代码

首先,你需要将海康摄像头的驱动代码克隆到你的工作空间中。使用以下命令:

git clone https://github.com/guangqianzhang/hika_ros.git

2. 编译报错

在编译过程中,你可能会遇到类似以下的错误:

/usr/bin/ld: cannot find -lhcnetsdk
/usr/bin/ld: cannot find -lPlayCtrl
collect2: error: ld returned 1 exit status

这些错误表明编译器找不到相应的链接库。

3. 找不到链接库的解决方法

解决办法可以参考这篇博客中提到的方法,它解释了在Linux下编译C或C++文件时可能会遇到找不到链接库的问题。

原理是这么个原理,但是解决不了上面出现的编译问题,我把原理梳理一下:

① 链接库文件存在于usr/lib目录下

如果链接库文件存在于usr/lib目录下,你可以使用以下命令修复链接:

ln -s lib***.so.6(某个数字) lib***.so

例如:

ln -s libhcnetsdk.so.6 libhcnetsdk.so
ln -s libPlayCtrl.so.6 libPlayCtrl.so

② 链接库文件不存在于usr/lib目录下

如果链接库文件不存在于usr/lib目录下,你需要在系统根目录中搜索这些库文件,并使用以下命令将其复制到usr/lib目录下:

sudo cp 库文件名 /usr/lib

例如:

sudo cp libhcnetsdk.so /usr/lib
sudo cp libPlayCtrl.so /usr/lib

分割线============================================

最终参考这篇博客的思路解决上面的问题:

根据上面的提示:提示找不到相关库文件
其实在程序包中是有相关库文件的,只是系统在编译的时候找不到,尝试了很多种办法之后,决定直接复制到/usr/lib下面

激光雷达标定入门(7)海康摄像头驱动_第1张图片

解决办法如下:

复制库文件

1、在/usr/lib/ 下面创建一个文件夹hik

sudo mkdir hik

2、在自己包下面的库文件中打开终端,准备复制

root@1bbaa109b262:/home/user/calibration/ros_ws/src/hika_ros/src/hikan_robot-B/lib# sudo cp -i libhcnetsdk.so /usr/lib/hik/
root@1bbaa109b262:/home/user/calibration/ros_ws/src/hika_ros/src/hikan_robot-B/lib# sudo cp -i libPlayCtrl.so /usr/lib/hik/

4. 问题终止线

在执行上述步骤后,无论是在容器中创建还是在容器外创建,还是不能够catkin_make,还是会报一样的错误.

回归本质找问题,仔细看报错问题,应该是CMaklist文件链接不到相应的库,所以回头去看CMakelist文件

link_directories(../../../hikan_robot-B/src/hikan_robot-B/lib)

这一句有问题,路径不对

应该是

link_directories(../../../hika_ros/src/hikan_robot-B/lib)

这样编译就能顺利过.
激光雷达标定入门(7)海康摄像头驱动_第2张图片

5. 启动摄像头节点

最后,使用以下命令启动摄像头节点:

source devel/setup.bash
roslaunch hikvision_ros hik.launch

至此,应该能够成功驱动海康摄像头了。希望能够解决大家在实际工程中遇到的问题。

你可能感兴趣的:(激光雷达标定入门,海康摄像头,雷达标定,相机标定)