电脑系统:ubuntu20.04
相机:小觅相机D1000-IR-120
问题:
按照官方教程安装SDK后,试图通过例程获取图像
./samples/_output/bin/get_stereo_image
终端报段错误,也就是运行失败。
问题分析:
运行ls /dev/video*
发现系统中有八个video,也就是/dev/video0-7.通过插拔测试,发现前四个为内置相机产生的,后四个为外置的小觅相机。使用usb_cam中的指令roslaunch usb_cam usb_cam-test.launch
打开/dev/video0为内置相机画面,修改lauinch文件打开/dev/video4为小觅相机画面,且均正常显示。
判断应该是SDK中默认打开的是/dev/video0,但是video0是内置相机,导致运行错误。因此有了两种想法,1. 禁用内置相机,仅使用小觅相机。2. 修改SDK中的某些文件使得其默认打开/dev/video4。但是第二种方法因为对SDK不熟悉,并未找到修改路径。所以只能想方法禁用内置相机。
解决方案:
网上搜索到的大多数的禁用相机方法,blacklist会导致所有相机均被禁用。
执行指令sudo lshw | grep uvc
会列出硬件信息并筛选uvc相关的组件。通过插拔小觅相机可以判断哪个是内置相机。与网上的方法不同,直接使用该指令并未展示总线信息,因此记住uvc信息后再次执行sudo lshw
列出所有的硬件信息,并逐条筛选,在实验室笔记本上我筛选到了内置相机是bus info: usb@3:7,因此再次执行echo 0 | sudo tee /sys/bus/usb/devices/3-7/bConfigurationValue
禁用特定的 USB 设备。
后续再次执行ls /dev/video*
会发现只剩四个。并且通过SDK能够正常的运行小觅相机,并获取画面。