При использовании kinect требуется привилегия Root

#ubuntu #kinect #ros #openni

#ubuntu #kinect #ros #openni

Вопрос:

Недавно я столкнулся с проблемой, которую можно описать следующим образом: привилегия Root требуется всякий раз, когда программе требуется kinect для запуска.

Моя настройка цепочки инструментов: ubuntu14 ros indigo opencv_2.4.11 openni_1.5.7.10 primesense_5.1.2.1 kinect_v1

Явления заключаются в следующем:

  1. Когда я пытаюсь проверить вывод kinect через openni NIViewer, если я запускаю NIViewer без «sudo», я получу следующее сообщение

    Не удалось перечислить один или несколько из следующих узлов:

    Устройство: PrimeSense / SensorV2 / 5.1.0.41: устройство не подключено!

    Нажмите любую клавишу, чтобы продолжить . . .

    Но kinect работает нормально, как только я добавляю ‘sudo’ для открытия NIViewer.

  2. Я пытаюсь запустить образец opencv «openni_capture.cpp » в qt во время компиляции отображается ошибка, в которой отказано в разрешении при доступе libopenni.so , я проверяю свойства этого файла, и он показывает «нет» для пользователей, отличных от владельца. Поэтому я предоставляю другим пользователям доступ только для чтения, и компиляция прошла. Но когда я запускаю встроенный исполняемый файл, он показывает другую ошибку:

    Не удается открыть объект захвата. CvCapture_OpenNI::CvCapture_OpenNI : не удалось перечислить производственные деревья: не удается создать ни одного узла запрошенного типа!

    до сих пор у меня было ощущение, что, возможно, все, что связано с kinect, нуждается в привилегиях root, поэтому я перехожу к папке, содержащей исполняемый файл, и вручную запускаю его с помощью «sudo», после чего kinect снова работает.

Я знаю, что могу избежать этой проблемы, войдя в систему с правами root (против чего выступают многие люди), но я действительно хочу знать, что происходит. И я помню, что перед установкой ROS мне не нужно было использовать ‘sudo’ для открытия NIViewer. ROS каким-то образом изменяет систему Ubuntu и вызывает это, или есть другая причина? Спасибо!

Ответ №1:

Это может быть проблемой с правами доступа, и, возможно, для запуска в пользовательском режиме вам нужно добавить себя в группу UNIX ‘video’ (см. Это объяснение)

 sudo adduser $USER video
  

Затем выйдите из системы и снова войдите. Перезагрузка не требуется, просто подключите Kinect (если он уже подключен, отключите и снова подключите) и повторите попытку. Надеюсь, это поможет!

Комментарии:

1. Спасибо Vtik, я решил это жестоким методом, я просто искал все файлы в usr / lib, которые связаны с openni, и коллективно предоставлял им доступ только для чтения, после чего проблема исчезла. Тем не менее, я отмечу, что ваш ответ принят, надеюсь, он поможет другим с той же проблемой.