2016-10-13 143 views
2

最近我遇到了一個問題,可以這樣描述:只要程序需要運行時,就需要root權限。使用kinect時需要root權限

我的工具鏈的設置是:ubuntu14 + ROS靛藍+ opencv_2.4.11 + openni_1.5.7.10 + primesense_5.1.2.1 + kinect_v1

的現象如下:

  1. 當我試圖通過openni NiViewer檢查出Kinect的輸出,如果我沒有「須藤」運行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系統並導致此問題,還是有其他原因?謝謝!

回答

0

這可能是一個訪問權限的問題,也許在用戶模式下運行,你需要自己添加到UNIX「視頻」組(見本explanation

sudo adduser $USER video 

然後註銷並回。不需要重新啓動,只需將Kinect(如果已連接,拔出並重新插入)循環,然後重試即可。希望能幫助到你 !

+0

感謝Vtik,我用一種殘酷的方法解決了這個問題,我簡單地搜索了與openni相關的usr/lib中的所有文件,並將它們集中爲只讀訪問,然後問題消失。不過,我會將你的回答標記出來,希望它能幫助其他人解決同樣的問題。 –

相關問題