前段时间,我看到了一个演示“小型玩具坦克”的演示,上面装有一个摄像头。这辆战车能够绕着地板行驶并检测物体,然后移动/转向避开物体。
有趣的是,它使用了单个摄像头视觉系统,据我所知,它利用了地板平面。然后使用特征相对于电动机和行进方向在场景中移动的速率来评估并因此绘制场景地图。

我问的原因是,这是几年前(5+)的单摄像头系统,因此(根据我的记忆) )是相对较低的计算负载。
我打算在Raspberry PI上尝试此方法,以构建用于映射一个房间或一组房间的汽车/坦克。

评论

欢迎来到Ben机器人。请查看“如何提问”并浏览一些有关如何根据实际遇到的问题编写实用,可回答问题的提示。谢谢,

#1 楼

很难确切地说出他们在做什么,但是您在这里可能要使用的术语是“光流”和“自我运动”。听起来好像已经进行了某些功能检测和匹配(例如SURF或SIFT之类的东西),或者还抛出了前景/背景分割。运动分析的许多功能。 OpenCV应该在Raspberry Pi上运行,尽管您的算法可能会受到计算能力的限制。

#2 楼

基于WildCrustcean的响应,另一种可能性是立体视觉。尽管我们经常将立体视觉视为使用两个摄像机,但这些技术实际上只需要在空间中位移的图像和位移模型。换句话说,我可以拍摄一张图像,然后移动,然后拍摄另一张图像。只要我知道这两个图像之间的转换,就可以使用立体视觉技术计算到图像中某个点的距离。

评论


$ \ begingroup $
我认为您正在谈论的技术称为“运动构造”。
$ \ endgroup $
– Kozuch
16年4月9日在14:30

#3 楼

它可能一直在使用Parellel跟踪和映射PTAM。 PTAM是同时定位和制图(SLAM)问题的实现,该问题使用单个摄像头构建世界3D地图并通过跟踪视觉特征进行定位。

我们在Intel Atom上运行Ubuntu,我记得它并没有占用太多处理器。不过,我们最终没有使用,主要是因为我们无法在机器人要运行的环境中找到它来找到足够的功能。

#4 楼

通常,除非您具有有关世界的额外信息,否则您无法从单个图像中提取公制距离测量值。例如,如果您知道世界是平面的(或者您可以检测到地板,它是一个平面区域),则可以估计单应性。

单应性是平面之间的投影变换(3x3矩阵)。给定相机固有的校准能力,您可以将此平面感应的单应性分解为旋转和平移。翻译是按比例的。您可以通过知道相机到地板(平面)的距离来解决此比例尺的歧义。单应性使您可以将第一个图像扭曲到第二个图像上。平面上的对象将对齐,并且会有一个小的误差。不在平面上的对象将无法对齐。这称为视差。

实现此目标的一种方法是


从两个图像中提取特征。
匹配特征或跟踪它们。
使用RANSAC估算单应性。
使用校准将单应性分解为旋转和平移。
将第一张图像扭曲到第二张图像上。错误较大的像素不在地面上,可能会成为障碍。 /doc/camera_calibration_and_3d_reconstruction.html)。

祝你好运。

PS单应性分解还将为您提供平面法线。但是,由于您假设这是接地平面,因此我们有法线指向上方。可以在校准过程中完成更精确的解决方案。您可以使用棋盘格目标并估计其姿势。该姿势将具有一个平面法线并与摄影机保持距离。