我最近遇到了一个问题,可以描述为:只要程序需要运行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系统并造成了这种情况,还是有其他原因?谢谢!
答案 0 :(得分:0)
这可能是访问权限问题,也许在用户模式下运行,您需要将自己添加到UNIX“视频”组(请参阅此explanation)
sudo adduser $USER video
然后注销并重新登录。不需要重新启动,只需插上Kinect循环(如果已连接,拔下插头并重新插入),然后重试。希望它有所帮助!