• ubuntu18.04 下海康工业相机hikrobot_camera的使用及问题的解决


    海康的相机没有ros驱动,而且对linux开发不太用好(windows的支持还是不错的),就重写了sdk接口,并创建了ros节点封装成ros包,方便linux环境下ros的调用,用于开发后面的算法,完整版ros驱动:https://github.com/luckyluckydadada/HIKROBOT-MVS-ROS-package

    环境

    • Ubuntu 18.04
    • 机器视觉工业相机客户端MVS V2.1.0(Linux)

    • 相机型号:MV-CA013  或 016

    适用于海康机器视觉工业相机系列(以太网传输和usb传输同样适用),相机接入pc或开发板的usb3.0接口或网口。

    下载海康mvs sdk

    海康机器人-机器视觉-下载中心杭州海康机器人股份有限公司海康机器人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

  • 相关阅读:
    设计模式在芯片验证中的应用——备忘录
    HTML网页设计制作——响应式网页影视动漫资讯bootstrap网页(9页)
    Git_04_撤销工作区的修改
    【深度学习】【Python】【Deepfashion2】 YOLOv5训练Deepfashion2数据集
    【C字符串函数】——对C语言中有关字符串库函数的实现及模拟
    Elasticsearch 查询分析器简介
    LeetCode·707.设计链表·架构题
    c++ 新的函数声明语法
    聊聊Excel的大批量导入导出
    Python 机器学习入门之逻辑回归
  • 原文地址:https://blog.csdn.net/LSG_Down/article/details/127685563