最近我遇到了一個問題,可以這樣描述:只要程序需要運行時,就需要root權限。使用kinect時需要root權限
我的工具鏈的設置是:ubuntu14 + ROS靛藍+ opencv_2.4.11 + openni_1.5.7.10 + primesense_5.1.2.1 + kinect_v1
的現象如下:
當我試圖通過openni NiViewer檢查出Kinect的輸出,如果我沒有「須藤」運行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系統並導致此問題,還是有其他原因?謝謝!
感謝Vtik,我用一種殘酷的方法解決了這個問題,我簡單地搜索了與openni相關的usr/lib中的所有文件,並將它們集中爲只讀訪問,然後問題消失。不過,我會將你的回答標記出來,希望它能幫助其他人解決同樣的問題。 –