对于我在大学的最后一年项目,我正在扩展一个名为 Rviz for Android 的应用程序。这是一款适用于 Android 平板电脑的应用程序,它使用 ROS(机器人操作系统)来显示来自机器人的信息。该项目的主要意图本质上与传统的增强现实相反——我不是将数字化的东西投影到现实世界的视图上,而是将来自平板电脑相机的现实世界的视图投影到数字化视图上。世界(抽象地图)。该应用程序的预期目的是当平板电脑四处移动时,现实世界的视图应该在地图上移动。
为了在屏幕上移动摄像头的视图,我使用平板电脑的加速度计并计算行进距离。这本质上是有缺陷的,因此,运动远非准确(这本身并不重要——它是我报告的好材料)。为了改善摄像机源的移动,我希望使用放置在现实世界中预定义位置的标记,目的是如果检测到标记,视图会跳转到标记的位置。不幸的是,虽然有许多处理标记检测的 SDK(例如 Qualcomm SDK),但它们都面向适当的增强现实(也就是说,在标记上覆盖一些东西)。
到目前为止,我确定的唯一两个可能有用的框架是 OpenCV(看起来确实很有前途,尽管我对 C++ 不是很熟悉)和 AndAR,它似乎又非常专注于传统的 AR 用途,但我可能能够修改。这些框架中的任何一个都适合吗?还有其他方法可以实现解决方案吗?
如果它有帮助,这是我正在扩展的应用程序的源代码,这是 Android 上 ROS 的源代码(使用相机的代码在“android_gingerbread_mr1”文件夹中。我还可以提供一个链接到我对 Rviz 的扩展,如果这也有帮助的话。非常感谢!
编辑:我目前遇到的主要问题是尝试集成访问相机的两个单独的类(OpenCV 中的 JavaCameraView 和 ROS 中的 CameraPreviewView)。他们都需要同时活跃,但他们做的事情不同。我确信我可以将它们结合起来。如前所述,如果需要,我将链接到/上传有问题的类。