【问题标题】:Install OV7251 driver in RPI-3B+ to use with ROS在 RPI-3B+ 中安装 OV7251 驱动程序以与 ROS 一起使用
【发布时间】:2020-06-27 01:21:44
【问题描述】:

我想安装 OV7251 摄像头驱动程序以使用我最近购买的模块 Arducam OV7251 MIPI,因为我需要执行称为虚拟惯性导航 (VIN) 的类似 SLAM 的系统,并且全​​局快门摄像头是首选这个。就我的系统而言,我在运行 Ubuntu 16.04 的 RPI-3B+ 上使用 ROS Kinetic。我正在使用这款相机,因为它接近我的价格点(

我想使用这台相机并将其数据发布到一个主题,这样我用于 VIN 的存储库OpenVINS 就可以跟踪相机的位置。现在,我正在使用的相机除了制造商的 github 页面之外没有太多内容,该页面在 Ubuntu 上不起作用,并且无法连接到 ROS。现在,我对 RPI(包括 ROS)相当缺乏经验,因为我最初想在 Arduino 上执行此操作,但这主要是不可能的,所以我怀疑我能否编写一个简单的 ROS 节点,更不用说与CSI 端口。

目前,我无法为此找到许多库,而且事实证明,给予我的帮助并不重要。相机本身没有 RPI 支持的驱动程序,这就是为什么我找不到任何 /dev/video 库,cheese 什么都没有出现,并且命令 $ Vcgencmd get_camera 没有返回检测到的设备。有人建议进行内核黑客攻击,以便使用 here 之类的库来启用 menuconfig 中的模块。虽然我对内核黑客不太了解,但他建议我遵循this 指南,在运行 defconfig 行后,我应该在 menuconfig 中搜索“OV7251”并将唯一弹出的模块化。尽管多次闪烁并重复此过程以确保我没有选择错误的分支、rpi-5.4.y 分支或错误的型号 RPI-3B+,但每次重新启动后,我最终都卡在了彩虹屏幕上.我知道彩虹屏幕要么意味着低功耗,这不是因为我之前运行过它,要么是内核错误,这很可能是有意义的。

现在,虽然我非常想修复彩虹屏错误,但我也想知道,在安装了 OV7251 驱动程序后,如何让它与 ROS 一起工作以将数据发送到主题?由于我怀疑我是否可以编写自己的节点,是否有一个库可以让我执行此操作,或者以前由于缺少驱动程序而无法工作的库现在是否突然可以工作,或者我是否必须采用现有的一个并且修改它?在任何情况下,一个更底层的教程来完成这个会很方便,因为我是新手。

但是,如果这不是软件,并且不支持这个相机的原因是有充分的理由的,有没有其他便宜的全局快门相机我可以使用?在我的各种搜索中,我似乎找不到很多,但也许你们在这个领域都有更好的运气/经验。虽然,我确实设法找到了同一家制造商的another 库,它恰好支持我的相机型号,甚至还有一个适用于 ubuntu 的 ROS 节点。但是,我相信如果可以做到这一点,那么只需 CSI 端口就可以做到这一点,而不是为 pi 购买额外的 40 美元 USB 摄像头帽,与此同时,我开始怀疑这家公司的有效性存储库。

但事实上,我在 RPI 的 CSI 端口上发现的关于这台相机主题的信息很少,这家公司有多出名,这让我害怕它可能是不可能的,如果是的话,请给我一些其他的好东西并希望有记录良好的相机,这很可能需要很多。如果用我设置的参数根本不可能得到我想要的结果,那么卷帘快门相机会对 VIN 的性能产生多大的影响,此外,是否有任何专门为卷帘快门设计的数据集可以最大限度地减少质量下降?这个地形对我来说太陌生了。

【问题讨论】:

标签: linux ubuntu linux-kernel raspberry-pi camera


【解决方案1】:

好的,所以我让一个 rpi 工程师在 rpi 的固件中为 ov7251 添加了 dtoverlay,并且最近的 rpi-update 在内核中有覆盖。

我执行sudo rpi-update 来安装更新,然后我将dtoverlay=ov7251 添加到/boot/config.txt 以启用覆盖,我通过运行sudo nano /boot/config.txt 对其进行了编辑。并且存储库只有一个依赖项v4l-utils,通过运行sudo apt-get install v4l-utils 可以很容易地安装它。最后我运行sudo reboot 来初始化更改。

为了将图像拉入 ROS,我编辑了一个名为 usb_cam 的 v4l2 节点,以接受 ov7251 相机使用的像素格式 (Y10)。我的叉子可以找到here。为了安装它,(因为原始仓库的文档对安装说得很少),我跑了:

cd ~/catkin_ws/src
git clone https://github.com/ai-are-better-than-humans/usb_cam.git
cd ..
catkin_make

然后你所要做的就是roslaunch usb_cam usb_cam-test.launch 来启动节点。我的开始是黑暗的,所以我不得不进入启动文件并稍微调整一下亮度。当您在那里时,请确保 pixel_format 参数的值为 Y10

你应该得到一个 sensor_msgs::Image 消息被发布到一个名为“/image_raw”的主题,你可以运行rqt_graph 来可视化它。非常感谢树莓派论坛上的 6by9,不要认为没有他我就无法完成,他做了很多我非常感谢的工作。 Thought id 在这里分享知识,以防有人发现它有用。

编辑:我听说如果节点占用过多 CPU,您也可以使用 catkin_make --pkg usb_cam -DCMAKE_BUILD_TYPE=Release 而不是 catkin_make 进行编译。另外,如果您在编译时看到大量错误消息,那很好,它仍然应该可以工作,但是如果您想摆脱它们,可以参考来自 ros 线程的this 答案:

看来您需要安装 libavcodec。我不知道确切的 命令从我的头顶安装它,但格式看起来 像这样:

sudo apt-get install libavcodec

确切的包名可能不是 libav编解码器。它可能看起来像 libavcodec-VERSION-NUMBER 或 libavcodec-开发。在这些情况下,您可以搜索带有 像这样的命令:

apt-cache search libavcodec

这将找到所有包含文本的包 包含“libavcodec”。这应该为您找到正确的包 安装。

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多