【问题标题】:Root privilege is needed when using kinect使用kinect时需要root权限
【发布时间】:2017-05-25 19:56:10
【问题描述】:

我最近遇到一个问题,可以描述为:当程序需要运行kinect时,需要root权限。

我的工具链设置是:ubuntu14 + ros indigo + opencv_2.4.11 + openni_1.5.7.10 + primesense_5.1.2.1 + kinect_v1

现象如下:

  1. 当我尝试通过 openni NiViewer 查看 kinect 输出时,如果我在没有 'sudo' 的情况下运行 NiViewer,我将收到以下消息

    以下一个或多个节点无法枚举:

    设备:PrimeSense/SensorV2/5.1.0.41:设备未连接!

    按任意键继续。 . .

    但是一旦我添加“sudo”来打开 NiViewer,kinect 就会正常运行。

  2. 我尝试在 qt 中运行一个 opencv 示例“openni_capture.cpp”,在编译期间,它显示访问 libopenni.so 时权限被拒绝的错误,我检查了该文件的属性,它对除用户以外的用户显示“无”所有者。所以我给其他用户只读权限并且编译通过了。但是当我运行构建的可执行文件时,它会显示另一个错误:

    无法打开捕获对象。 CvCapture_OpenNI::CvCapture_OpenNI : 无法枚举生产树:无法创建任何请求类型的节点!

    直到现在我觉得可能所有与 kinect 相关的东西都需要 root 权限,所以我导航到包含可执行文件的文件夹并使用“sudo”手动运行它,然后 kinect 再次工作。

我知道我可以通过以 root 身份登录来避免这个问题(许多人反对),但我真的很想知道发生了什么。我记得在安装 ROS 之前,我不必使用 'sudo' 来打开 NiViewer。 ROS是否以某种方式改变了ubuntu系统并导致了这种情况,还是有其他原因?谢谢!

【问题讨论】:

    标签: ubuntu kinect ros openni


    【解决方案1】:

    这可能是访问权限问题,并且可能要在用户模式下运行,您需要将自己添加到 UNIX“视频”组(请参阅此explanation

    sudo adduser $USER video
    

    然后注销并重新登录。不需要重新启动,只需插入循环 Kinect(如果已连接,请拔下并重新插入),然后重试。希望对您有所帮助!

    【讨论】:

    • 感谢Vtik,我用粗暴的方法解决了这个问题,我简单地搜索了usr/lib中与openni相关的所有文件,并集体授予它们只读访问权限,然后问题就消失了。不过,我会将您的答案标记为已接受,希望它可以帮助遇到同样问题的其他人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2023-03-29
    • 1970-01-01
    • 2019-08-17
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多