在机器人上使用2个固定摄像头避障

时间:2011-09-24 19:50:44

标签: graphics opencv computer-vision robotics

我将开始研究一个机器人项目,该项目涉及一个移动机器人,它安装了2个相机(1.3 MP),固定在0.5米之间。我也有一些超声波传感器,但它们只有10个metter范围和我的环境相当大(例如,采取一个大型仓库,有许多支柱,盒子,墙壁等。)我的主要任务是识别障碍物,并找到机器人必须采取的大致“最佳”路线为了在“粗糙”的环境中航行(底层根本不光滑)。所有图像处理都不是在机器人上进行的,而是在装有NVIDIA GT425 2Gb Ram的计算机上进行的。

我的问题是:

  1. 我是否应将相机安装在旋转支架上,以便更广角度拍照?

  2. 基于两个视图在这么小的距离之间创建一个合理的3D重建是否可行?如果是这样,我可以在多大程度上将其用于避障和最佳路线建设?

  3. 如果可以对环境进行大致准确的3D表示,那么如何将其用作创建环境地图? (考虑下面的例子:机器人必须扫过一个相当大的区域,如果它不会经过两次相同的地方(或路线),它将是节能的;但是当从一个方向进行3D重建时,它怎么能分辨出来?如果它来自那里,如果来自相反的方向)

  4. 我在类似的问题上找到了这个response,但我仍然关注3D重建的准确性(例如考虑到相机之间的小分辨率和距离,位于100米的几个盒子)。 / p>

    我刚刚开始收集这个项目的信息,所以如果你已经开展了类似的工作,请给我一些指导(以及一些链接:D)我应该如何处理这个特定的任务。

    提前致谢, Tamash

2 个答案:

答案 0 :(得分:1)

如果您想避障,可能最容易使用超声波传感器。如果机器人以适合人类环境的速度移动,那么它们的10m范围可以让您有足够的时间来停止机器人。请记住,没有任何系统可以保证您不会意外碰到某些东西。

  

(2)只在两个视图之间的这么小的距离上创建一个合理的3D重建是可行的吗?如果是这样,我可以在多大程度上将其用于避障和最佳路线建设?

是的,这是可能的。看看ROS和他们的vSLAM。 http://www.ros.org/wiki/vslamhttp://www.ros.org/wiki/slam_gmapping将是众多可能资源中的两种。

  

然而,当从一个方向进行3D重建时,如果它来自相反的方向,它怎么能告诉它是否已经存在

嗯,您正在尝试根据测量结果和地图找到您的位置。这应该是可能的,从哪个方向创建地图无关紧要。但是,存在循环闭包问题。因为您在尝试寻找方法的同时创建3D地图,所以您不知道自己是在新地方还是在以前见过的地方。

结论 这是一项艰巨的任务!

实际上,它不止一个。首先,你有简单的避障(即Don't drive into things.)。然后你想同时进行本地化和制图(SLAM,阅读维基百科),最后你想做路径规划(即扫地而不覆盖两次)。

我希望有帮助吗?

答案 1 :(得分:1)

  1. 如果你的意思是每只眼睛独立旋转,我会说不。您将无法获得进行立体声对应所需的准确度,并使校准成为一场噩梦。但是如果你想让机器人的整个“头部”转动,那么这可能是可行的。但你应该在关节上有一些好的编码器。

  2. 如果您使用ROS,有一些工具可以帮助您将两个立体图像转换为三维点云。 http://www.ros.org/wiki/stereo_image_proc。您的基线(相机之间的距离)与您在不同范围内的分辨率之间存在折衷。大基线=在远距离处具有更高的分辨率,但它也具有较大的最小距离。我不认为我会期望静态立体声装置的准确度超过几厘米。当你将机器人的位置不确定性复合在一起时,这种准确性只会变得更糟。

    2.5。对于映射和避障,我要做的第一件事是分割地平面。地平面去绘图,上面的一切都是障碍。查看PCL的某些点云操作功能:http://pointclouds.org/

  3. 如果您不能像SICK或Hokuyo那样简单地将平面激光放在机器人上,那么我可能会尝试将3d点云转换为伪激光扫描,然后使用现成的SLAM代替试图做视觉猛击。我想你会有更好的结果。

  4. 其他想法: 现在Microsoft Kinect已经发布,通常更容易(也更便宜)使用它来获取3d点云而不是实际的立体声。

    这个项目听起来很像DARPA LAGR计划。 (学习应用于地面机器人)。该计划已经结束,但您可以追踪从中发表的论文。