海康的相机没有ros驱动,而且对linux开发不太用好(windows的支持还是不错的),就重写了sdk接口,并创建了ros节点封装成ros包,方便linux环境下ros的调用,用于开发后面的算法,完整版ros驱动:https://github.com/luckyluckydadada/HIKROBOT-MVS-ROS-package
机器视觉工业相机客户端MVS V2.1.0(Linux)
相机型号:MV-CA013 或 016
适用于海康机器视觉工业相机系列(以太网传输和usb传输同样适用),相机接入pc或开发板的usb3.0接口或网口。
海康机器人-机器视觉-下载中心杭州海康机器人股份有限公司海康机器人HIKROBOT是面向全球的机器视觉和移动机器人产品及解决方案提供商,业务聚焦于工业物联网、智慧物流和智能制造,构建开放合作生态,为工业和物流领域用户提供服务,以创新技术持续推动智能化,引领智能制造进程https://www.hikrobotics.com/machinevision/service/download?module=01、选linux的最新版:机器视觉工业相机客户端MVS V2.1.0(Linux)
2、下载好的软件安装包,拷贝至 linux 系统中
3、 安装前,需要获取系统 root 权限,使用“sudo su”或者“su root”命令,需要输入密码。
4、打开 MVS 安装包所在文件夹,使用“tar –xzvf MVS-2.0.0_x86_64_20191126.tar.gz”对安装包进行解压(不同硬件平台,解压后有不同的安装包,本文以 x86 架构、64 位安装包为例进行讲解)
解压
MVS_Linux_STD_V2.1.0_201228.zip解压后,目录中含有多种架构已经编译好并打包的*.dpkg包,另外还有tar.gz(也含编译好的so和bin文件)。
MVS-2.1.0_aarch64_20201228.deb MVS-2.1.0_i386_20201228.deb
MVS-2.1.0_aarch64_20201228.tar.gz MVS-2.1.0_i386_20201228.tar.gz
MVS-2.1.0_armhf_20201228.deb MVS-2.1.0_x86_64_20201228.deb
MVS-2.1.0_armhf_20201228.tar.gz MVS-2.1.0_x86_64_20201228.tar.gz
MVS-2.1.0_arm-none_20201228.tar.gz
树莓派选armhf架构,jetson选aarch64,pc机选x86_64,i386是32位pc。
armhf和aarch64区别就是armhf是armv7架构,如树莓派。aarch64是armv8架构,如jetson nano。
arm-none只有Samples,没有编译好的bin,也没有dpkg包,海康也没有提供源码,所以用不上。
所有的tar包都包含另一个MVS.tar.gz,继续解压后是海康打包的so和Samples。
Samples说明参照MVS/Samples/README-CH,安装完sdk后可以在每个sample子目录敲make编译生成可执行程序。
因为海康没有提供源码,只提供编译好的so来给我们调用,所以下面的tar包安装也不用编译。
5、解压完成以后,会在文件夹中生成对应的文件夹(如:MVS2.0.0_x86_64_20191126.tar.gz)。如下
图所示:
6、打开解压后的文件夹(cd MVS-2.0.0_x86_64_20191126)。运行安装脚本“./setup.sh”安装 MVS,安装过程如下图所示
7、 安装完成后,会在文件夹/opt 文件夹中生成 MVS 文件夹。MVS 文件夹中一般包含:bin、doc、deriver、include、lib、lincese、logserver、Samples 文件夹(不同版本可能存在差异)。如下图所示:
8、编译demo
解压tar包,包含另一个MVS.tar.gz,继续解压,找到Samples目录。
Samples说明参照MVS/Samples/README-CH,安装完sdk后可以在每个Sample子目录敲make编译生成可执行程序。
如:
cd Samples/64/ImageProcess/
make
./ImageProcess
[device 0]:
Device Model Name: MV-CE060-10UC
UserDefinedName:
Please Intput camera index: 0 # 只有一个相机此处填0,用于指定相机
Now you GetOneFrame, Width[3072], Height[2048], nFrameNum[0]
0 to do nothing
1 to convert RGB
2 to save as BMP # 2 为保存照片到当前目录
Please Input Index: 2
save image succeed
Press enter to exit.
打开当前目录的image.bmp照片,说明sdk的开发环境测试成功。
如果只是想使用相机的采集的topic做算法开发,直接clone ros的驱动包https://github.com/luckyluckydadada/HIKROBOT-MVS-ROS-package,参照Readme安装即可。
9. 示例程序能够正常运行,安装完成,进入 cd /opt/MVS/bin 路径下,执行./MVS.sh 命令即可打开
MVS 客户端;也可进入 cd /opt/MVS/Samples 路径下,运行测试相关示例程序
dpkg包安装(二选一)
dpkg -i MVS-2.1.0_x86_64_20201228.deb
安装在 /opt/MVS下,这里有个问题,运行需要去cd /opt/MVS/bin/ 再./MVS运行。
可选操作:
虽然环境变量配置了lib目录,但是没有配置bin目录,而且即使配置了bin目录,在其他目录也会运行失败,因为MVS调用的很多lib没有在/opt/MVS/lib目录,而在bin目录,可能是担心lib重名吧。
可以按如下方法修改方法,找到对应行:
vim ~/.bashrc
export PATH=$PATH:/opt/MVS/bin:
export MVCAM_COMMON_RUNENV=/opt/MVS/lib
export LD_LIBRARY_PATH=/opt/MVS/lib/64:/opt/MVS/lib/32:/opt/MVS/bin:$LD_LIBRARY_PATH
下划线部分是我增加的内容,重启终端生效。
任意目录命令行敲MVS打开设备。
上面谨慎修改,因为/opt/MVS/bin目录加入到LD_LIBRARY_PATH后,会同样将这个目录里的libQt5*等库引入全局可见,跟系统安装的libQt版本不一致,比如我的rviz在调用Qt这个库的时候出现了不匹配打不开的情况,使用系统自带的则正常打开,所以谨慎修改。
tar包安装(二选一)
tar -xvf MVS-2.1.0_x86_64_20201228.tar.gz
cd MVS-2.1.0_x86_64_20201228
sudo bash setup.sh
可选操作同上。
2 MVS 卸载
软件卸载时有以下两种方法:
方法一:
1. 执行 cd /opt 进入 opt 目录下;
2. 执行/opt/MVS/logserver/RemoveServer.sh 删除软件;
3. 执行 rm –r /opt/MVS 删除所在文件的文件夹。
方法二:
1. 获取 root 权限;
2. 执行 dpkg –r MVS。(只支持 deb 方式安装 MVS 时使用)
3 注意事项
一、 防火墙关闭方式
Linux 系统下如果枚举不到相机,则需要关闭防火墙。以下是不同 Linux 系统环境下关闭防火墙的方式(仅供参
考,具体可能系统版本不一样方式也不一样):
1、 Ubuntu
启动时是默认关闭的
2、Centos7
临时关闭:service firewalld stop 或 systemctl stop firewalld
永久关闭:chkconfig firewalld off
3、RedHat7
临时关闭:service firewalld stop 或 systemctl stop firewalld
永久关闭:chkconfig firewalld off
二、 网卡相关
Linux 下建议开启巨帧,开启方法(仅供参考)
1、临时开启:ifconfig eth0 mtu 9000
2、永久开启:将"ifconfig eth0 mtu 9000"语句写到配置文件,重启生效。
注意:eth0 代表网卡名字,不同系统名字有可能不一样;9000 代表最大接收包的大小,一些较老的网卡最大接
收包或许无法达到,需根据实际来设置,并且相机侧需将 GEVSCPSPacketSize 节点设置成相应大小。
三、 脚本说明
1、set_env_path.sh:设置环境变量,将 SDK 动态库放入系统环境变量中。
2、set_rp_filter.sh:禁用 rpfilter,使 pc 的 IP 网段和相机的 IP 网段不在同一网段时也能枚举的上。
3、set_socket_buffer_size.sh:当出现 GigE 丢包时,可开大 socket 缓存,用来减缓丢包。
4、set_usb_priority.sh:设置 udev 规则,使之能在非管理员权限下使用 u3 相机。
5、 set_usbfs_memory_size.sh:设置 usb 缓存,使之能兼容多个大分辨率 u3 相机。
4 常见问题
1、U3 相机在取流时候出现 no data 情况
3、set_socket_buffer_size.sh:当出现 GigE 丢包时,可开大 socket 缓存,用来减缓丢包。
4、set_usb_priority.sh:设置 udev 规则,使之能在非管理员权限下使用 u3 相机。
5、 set_usbfs_memory_size.sh:设置 usb 缓存,使之能兼容多个大分辨率 u3 相机。
4 常见问题
1、U3 相机在取流时候出现 no data 情况:
报错截图
解决方式:
解压安装包后,cd 到文件夹根目录下“source ./set_usb_priority.sh”和“source set_usbfs_memory_size.sh”。
2021/06/02/UN3#505//700
3、set_socket_buffer_size.sh:当出现 GigE 丢包时,可开大 socket 缓存,用来减缓丢包。
4、set_usb_priority.sh:设置 udev 规则,使之能在非管理员权限下使用 u3 相机。
5、 set_usbfs_memory_size.sh:设置 usb 缓存,使之能兼容多个大分辨率 u3 相机。
4 常见问题
1、U3 相机在取流时候出现 no data 情况:
报错截图
解决方式:
解压安装包后,cd 到文件夹根目录下“source ./set_usb_priority.sh”和“source set_usbfs_memory_size.sh”。
2、如果运行 demo 提示报错找不到 libMvCameraControl.so,是由于环境变量没有生效导致。报错如下图所示:
Cannot find –lMvCameraControl
解决方法:
a) 安装完 MVS 以后重启设备,使环境变量生效。
b) 跳转到安装包所在路径,并输入:“source ./set_env_path.sh”,使环境变量生效。如下图所示:
重启电脑!!!!
启动相机驱动:
cd到相机的工作空间(cd 到 ws_hikrobot_camera)下运行
source ./devel/setup.bash
roslaunch hikrobot_camera hikrobot_camera.launch
##rviz
source ./devel/setup.bash
roslaunch hikrobot_camera hikrobot_camera_rviz.launch