在Ubuntu上安装AVT Mako的Vimba和ROS SDK,保存图像,录制bag,从bag中提取图像

1 说明

在Ubuntu系统上,安装AVT Mako相机的Vimba SDK,能够获取图像和保存图像。
安装ROS SDK,能够发布相机的话题,然后录制这个话题的bag,最后从bag中提取出图片。

2 开发环境

2.1 硬件

  • AVT Mako相机;电源(12VDC,1.25A);电源线;网线
  • 惠普笔记本电脑

2.2 系统

Ubuntu 14.04

2.3 SDK

Vimba

3 开发步骤

3.1 组装相机

将相机、电源、电源线、网线连接起来,如图1所示。

图1 相机组装示意图

3.2 修改以太网适配器IP地址

在笔记本电脑上编辑网络连接,添加以太网,选择IPv4设置,地址为169.254.1.2,子网掩码为255.255.0.0,网关为空,如图2所示。


图2 编辑以太网连接

3.3 安装SDK

(1)下载SDK

https://www.alliedvision.com/en/products/software.html上下载Vimba v2.1.3 Linux"~"目录下。

(2)解压

tar -xf ./Vimba_V2.1.3_Linux.tgz

(3)设置权限

cd ~/Vimba_2_1/VimbaGigETL
sudo ./Install.sh

3.4 使用SDK

(1)给相机供电,将网线另一端插入笔记本电脑以太网接口。
(2)打开VimbaViewer

sudo -E ~/Vimba_2_1/Tools/Viewer/Bin/x86_64bit/VimbaViewer

VimbaViewer界面如图3所示。


图3 VimbaViewer

点击图3中的“Mako G-192C”,打开图4所示界面。


图4 Mako G-192C(FULL ACCESS)

点击图4工具栏的“Freerun”按钮,窗口左侧会显示相机采集的图像,如图5所示。窗口右侧可以调节相机的参数,如亮度、白平衡、曝光时间、色调等,详细内容可参考文档。


图5 获取图像并调节参数

此时,再查看图3的窗口,会显示一些调试信息,相机的型号,IP地址,S/N,ID等,如图6所示,这些信息在多相机应用时很重要。


图6 调试信息和相机信息

4 保存图像

Vimba SDK中提供了Vimba C APIVimba C++ API,而且有使用手册参考。

4.1 方式1

在图5所示的窗口中,点击File-->Save Image As,然后选择保存路径,最后保存即可。

4.2 方式2

可通过~/Vimba_2_1/VimbaC/Examples/Bin/x86_64bit目录下的可执行文件SynchronousGrab保存单个图像。

4.3 方式3

可通过~/Vimba_2_1/VimbaCPP/Examples/Bin/x86_64bit目录下的可执行文件
AsynchronousOpenCVRecorder保存视频。
注意:此API依赖OpenCV 3.0,需要提前安装。
在实际使用中,还要根据需求在以上方法的基础上进行二次开发。

5 安装ROS驱动

创建ROS工作空间,下载avt_vimba_camera驱动,编译工作空间。

mkdir -p ~/avt_catkin_ws/src
cd ~/avt_catkin_ws/src
git clone https://github.com/srv/avt_vimba_camera
cd ..
catkin_make

6 启动launch,发布相机话题

打开~/avt_catkin_ws/src/avt_vimba_camera/launch/mono_camera.launch,将参数“guid”、“ip”、“camera_info_url”改为自己相机的。

<param name="guid" value="50-0503343290"/>
        <param name="ip" value=""/>
        <param name="camera_info_url" value="file://$(find avt_vimba_camera)/calibrations/calibration_50-0503343290.yaml"/>

启动launch,发布相机话题:

source ~/avt_catkin_ws/devel/setup.bash
roslaunch avt_vimba_camera mono_camera.launch

查看发布的话题:

rostopic list

7 录制bag

rosbag recore -O avt /camera/image_raw

按ctrl+c结束录制,以下命令可查询bag信息。

rosbag info avt.bag

8 从bag中提取图片

参考https://www.cnblogs.com/arkenstone/p/6676203.html,此方法实测可行。
打开一个终端

rosrun image_view extract_images _sec_per_frame:=0.01 ima:=/camera/image_raw

打开另一个终端

rosbag play avt.bag

其他方法参考:
[1] https://blog.csdn.net/corfox_liu/article/details/50920332?locationNum=15
[2] https://blog.csdn.net/Draonly/article/details/74642747https://blog.csdn.net/Draonly/article/details/74642747

9 总结

这个开发过程,没有中文资料可以参考,全是啃官网的英文文档,给我的感觉是杂、细,对初学者不友好。
虽然过程很艰难,但是最后实现后感觉一切都值得。
这种工业相机必须配备镜头才能用,我的这个镜头焦距35mm, 属于远视,也就是远景看得清楚而且视野窄,近景基本看不到,所以要根据需求选择合适的镜头。
突然想到,目前图像目标检测领域使用深度学习处理小目标检测的问题,如果使用这种带远视镜头的工业相机,就不用大费周折了。
在实际的自动驾驶中,配备两种相机,一种近视,一种远视,还是觉得,能在硬件上或者输入上解决的问题,就没必要在算法上煞费苦心,还不一定能得到较好的效果。

猜你喜欢

转载自blog.csdn.net/learning_tortosie/article/details/81333220