Difference between revisions of "PCL/OpenNI troubleshooting"
m |
m |
||
Line 28: | Line 28: | ||
Another possibility is that the package in question is just broken, maybe because it is deprecated and pending removal, or because you are using a very recent release of Ubuntu and there is no version for it. I used to get this error a lot when trying to install OpenNI, but I solved it by following the advice above. Also, you can try compiling everything from source. | Another possibility is that the package in question is just broken, maybe because it is deprecated and pending removal, or because you are using a very recent release of Ubuntu and there is no version for it. I used to get this error a lot when trying to install OpenNI, but I solved it by following the advice above. Also, you can try compiling everything from source. | ||
+ | |||
+ | =Trying to overwrite X, which is also in package Y= | ||
+ | |||
+ | During the installation of the PrimeSense drivers (using the ROS approach), you may get an error that says <span style="color:#FF1493">''"trying to overwrite '/etc/openni/GlobalDefaults.ini', which is also in package libopenni-sensor-pointclouds0"''</span>. This is actually a common problem, that can happen with other packages. It means that a file included in one of the new packages is also provided by another package that is already installed. In this case, it is the <span style="color:#1E90FF">''/etc/openni/GlobalDefaults.ini''</span> file, which is already included in the package <span style="color:#228B22">''libopenni-sensor-pointclouds0''</span>, making the installation of <span style="color:#228B22">''libopenni-sensor-primesense0''</span> fail. | ||
+ | |||
+ | In order to fix it, run the following command to manually retry the installation (change the file name as necessary): | ||
+ | |||
+ | <syntaxhighlight lang=Bash>sudo dpkg -i --force-overwrite /var/cache/apt/archives/libopenni-sensor-primesense0_5.1.0.41-3+trusty1_amd64.deb</syntaxhighlight> | ||
+ | |||
+ | This time, you will be prompted whether or not you want to overwrite the file. Choose yes, and then use the following command to make sure there are no packages left pending: | ||
+ | |||
+ | <syntaxhighlight lang=Bash>sudo apt-get -f install</syntaxhighlight> | ||
=No device found / No devices connected= | =No device found / No devices connected= |
Revision as of 16:03, 8 September 2014
Go to root: PhD-3D-Object-Tracking
This page tries to cover all of the issues I ran into while trying to get my Kinect device ready for developing with PCL. If you have any questions regarding this subject or know of a different bug, feel free to send me an email describing it, and I will add it to this section. Just remember to try Google first!
Contents
Unsupported configuration (CUDA)
When you run the CUDA installer on a fairly modern Linux, you may get a message saying that you are trying to install it on an unsupported configuration. What this means is that CUDA can not work with the newest versions of the GCC compiler. As of version 5.5, the highest compatible GCC is 4.6, when 4.7 onwards is usually present.
In order to solve this, you must install version 4.6 and set it as the "official" alternative for compiling (change 4.7 for your current version):
sudo apt-get install gcc-4.6 g++-4.6 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
Now, run the following command and choose GCC 4.6 as alternative:
sudo update-alternatives --config gcc
Whenever you want to switch back ro GCC 4.7 or newer, re-run the previous command. Please mind, that both C and C++ compilers are changed, not just C.
Unmet dependencies
If you get an error like "Depends: X but it is not going to be installed" while installing a package through apt (X being the name of another package), it probably means that there is a conflict between two repositories offering different versions of the same package (e.g. PCL and ROS ones). To solve this, you will have to completely remove one of the repositories and stick with the other.
Another possibility is that the package in question is just broken, maybe because it is deprecated and pending removal, or because you are using a very recent release of Ubuntu and there is no version for it. I used to get this error a lot when trying to install OpenNI, but I solved it by following the advice above. Also, you can try compiling everything from source.
Trying to overwrite X, which is also in package Y
During the installation of the PrimeSense drivers (using the ROS approach), you may get an error that says "trying to overwrite '/etc/openni/GlobalDefaults.ini', which is also in package libopenni-sensor-pointclouds0". This is actually a common problem, that can happen with other packages. It means that a file included in one of the new packages is also provided by another package that is already installed. In this case, it is the /etc/openni/GlobalDefaults.ini file, which is already included in the package libopenni-sensor-pointclouds0, making the installation of libopenni-sensor-primesense0 fail.
In order to fix it, run the following command to manually retry the installation (change the file name as necessary):
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libopenni-sensor-primesense0_5.1.0.41-3+trusty1_amd64.deb
This time, you will be prompted whether or not you want to overwrite the file. Choose yes, and then use the following command to make sure there are no packages left pending:
sudo apt-get -f install
No device found / No devices connected
Microsoft Kinect
If your system does not seem to be able to use Kinect, despite it being correctly plugged and listed by lsusb, then you may have a problem with the installed drivers. I eventually discovered that, in 32-bit Ubuntu, it was necessary to downgrade openni-dev and ps-engine to versions 1.3.2.1 and 5.0.3.3 respectively, using your package manager.
If you use Synaptic, the instructions are simple. Select both mentioned packages, press Ctrl+E to choose the desired version you want installed, and then apply the changes, accepting to overwrite any files. Then, to prevent them from being restored in the next upgrade, select each and click the "Lock Version" option in the "Package" menu. The packages will then be picked up by the "Status: Pinned" filter on the left. Reboot, and everything should be working now.
ASUS Xtion PRO
In order to get our Xtion device working with OpenNI, we have to modify a configuration file:
sudo nano /etc/openni/GlobalDefaults.ini
Find (Ctrl+W) the line that says ";UsbInterface=2" and uncomment it (remove the semicolon at the start). Save the file (Ctrl+O) and close (Ctrl+X). Reboot your computer, and you should be able to use your Xtion device with OpenNI/PCL. Whenever you want to switch back to a Kinect, you must comment the line, or else you will get the same "No devices connected" error.
Compiling OpenNI
glInit() not found / OpenGL isues
If you get this error while compiling OpenNI, and you are sure you have installed all dependencies, then this is due to faulty Makefiles that do not link against GL libraries where they should.
Go to the Platform/Linux/Build/Samples/ subdirectory and find the samples that are giving errors (look at the compiler output to find them). For each one, enter its subdirectory and open the Makefile you will find there. Go to the line that says:
USED_LIBS += glut
And change it to the following:
USED_LIBS += glut GL
The samples should now compile.
Permission denied
If you get this error related to some header (.h) in /usr/include/, it means that OpenNI's installer has given the wrong permissions when moving files there, and the compiler can not access them. Locate the faulty file and change its permissions to allow reading for everyone:
sudo chmod +r -R /usr/include/<file>
Go to root: PhD-3D-Object-Tracking
Links to articles:
PCL/OpenNI tutorial 0: The very basics
PCL/OpenNI tutorial 1: Installing and testing
PCL/OpenNI tutorial 2: Cloud processing (basic)
PCL/OpenNI tutorial 3: Cloud processing (advanced)
PCL/OpenNI tutorial 4: 3D object recognition (descriptors)
PCL/OpenNI tutorial 5: 3D object recognition (pipeline)
PCL/OpenNI troubleshooting