【问题标题】:How to determinate object position with openCV in the world coordinate如何在世界坐标中使用openCV确定对象位置
【发布时间】:2014-05-12 10:27:25
【问题描述】:

我正在尝试为我大学的机器人班实施一项任务。 该项目的主要任务是用KUKA-youbot机器人抓取杯子。

我发现它的主要问题是关于项目的视觉计算部分。 更准确地说,我使用的是 Kinect(将安装在机器人手臂上),一开始我想用这个程序来找到杯子:

  1. 开始前拍个杯子(真的很近)
  2. 使用 openCV 从安装在机械臂上的 kinect 实时计算图像的关键点和实时图像的关键点。
  3. 此时我可以使用 OpenCV 映射两个图像之间的关键点。
  4. 使用 kinect 在同一时刻拍摄的 3d 点云图像实时映射图像的 2d 点。计算 3d 图像中的质心,从而知道杯子的位置。

问题在于,如果实时图像接近(如 1 米),则关键点提取并将它们与其他对象映射效果很好,否则特别是如果场景中有其他对象,openCV 算法会检测到其他重要的功能和映射不起作用。

我正在使用这个:http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html

正如您在第一张照片中看到的那样,机器人靠近杯子,一切顺利, http://postimg.org/image/byx8danpt/ 在这里,我们离杯子很远,没有任何效果。 http://postimg.org/image/9lhhzxk4z/

我想知道我的项目是否还有其他更实用的方法。也许是基于模型的东西,而不是像我最初的想法那样基于特征的东西。

谢谢 卢卡

【问题讨论】:

  • 您是否尝试使用相机校准,我的提示是将您的捕获设备(kinect 或相机)修复到您的机器人手臂上,而不是真正修复它,这样您就可以轻松计算位置!
  • 你的意思是把kinect固定在要抓取的物体(杯子)附近,把世界坐标的中心放在机器人初始位置,然后对机器人校准kinect?
  • 是的,我会这么说,实际上您将相机固定在哪里并不重要,但校准将为您提供像素与真实世界坐标之间的数学联系
  • 顺便说一句,你肯定需要更多的 feature_homography 来识别你的杯子,我猜这将是很多算法的组合,所以你可以确定它在哪里房间
  • 好的,谢谢!我会尝试这样做。

标签: opencv computer-vision robotics object-recognition keypoint


【解决方案1】:

您可以尝试使用棋盘校准,使用以下函数:findChessboardCorners() 和 calibrateCamera()。使用这些功能,您可以创建坐标系并从图像中找到对象在现实世界中的位置。

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 1970-01-01
    • 2015-08-10
    • 2013-03-21
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多