【发布时间】: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
现象如下:
-
当我尝试通过 openni NiViewer 查看 kinect 输出时,如果我在没有 'sudo' 的情况下运行 NiViewer,我将收到以下消息
以下一个或多个节点无法枚举:
设备:PrimeSense/SensorV2/5.1.0.41:设备未连接!
按任意键继续。 . .
但是一旦我添加“sudo”来打开 NiViewer,kinect 就会正常运行。
-
我尝试在 qt 中运行一个 opencv 示例“openni_capture.cpp”,在编译期间,它显示访问 libopenni.so 时权限被拒绝的错误,我检查了该文件的属性,它对除用户以外的用户显示“无”所有者。所以我给其他用户只读权限并且编译通过了。但是当我运行构建的可执行文件时,它会显示另一个错误:
无法打开捕获对象。 CvCapture_OpenNI::CvCapture_OpenNI : 无法枚举生产树:无法创建任何请求类型的节点!
直到现在我觉得可能所有与 kinect 相关的东西都需要 root 权限,所以我导航到包含可执行文件的文件夹并使用“sudo”手动运行它,然后 kinect 再次工作。
我知道我可以通过以 root 身份登录来避免这个问题(许多人反对),但我真的很想知道发生了什么。我记得在安装 ROS 之前,我不必使用 'sudo' 来打开 NiViewer。 ROS是否以某种方式改变了ubuntu系统并导致了这种情况,还是有其他原因?谢谢!
【问题讨论】: