======OCULUS====== ==== Lancer la démo de l'oculus sur l'ordinateur Bellatrix ==== Configurer l'affichage et lancer oculusd (démarre la localisation par la caméra infra-rouge) : cd ~/bureau/wiki ./xr1 Lancer OculusWorldDemo : cd ~/Oculus/ovr_sdk_linux_0.4.3/Samples/OculusWorldDemo make run ==== oculus linux ==== Les anciens SDK ne sont plus disponibles sur le site de Oculus. Les nouveaux SDK sont exclusivement sur Windows. Pour trouver les dernières versions de SDK compatibles avec Linux : https://wiki.archlinux.org/index.php/Oculus_Rift ==== oculus et cmake ==== L'ordre le linkage des bibliothèques est important à cause des interdépendances. Par exemple avec l'ordre suivant : target_link_libraries(displayOculus ${catkin_LIBRARIES}) target_link_libraries(displayOculus ${OpenCV_LIBRARIES}) target_link_libraries(displayOculus ${OPENGL_LIBRARY}) target_link_libraries(displayOculus ${GLFW_LIBRARIES}) target_link_libraries(displayOculus ${GLEW_LIBRARY}) target_link_libraries(displayOculus rt) target_link_libraries(displayOculus Xrandr) target_link_libraries(displayOculus Xxf86vm) target_link_libraries(displayOculus pthread) target_link_libraries(displayOculus ${OVR_LIBRARIES}) on a l'erreur suivante : /usr/bin/ld: /home/jcombier/Oculus/ovr_sdk_linux_0.4.3/LibOVR/Lib/Linux/Debug/x86_64/libovr.a(OVR_SharedMemory.o): référence au symbole non défini «shm_unlink@@GLIBC_2.2.5» /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/librt.so: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit statusf Avec cet ordre il n'y a plus d'erreur : target_link_libraries(displayOculus ${catkin_LIBRARIES}) target_link_libraries(displayOculus ${OpenCV_LIBRARIES}) target_link_libraries(displayOculus ${OVR_LIBRARIES}) target_link_libraries(displayOculus Xxf86vm) target_link_libraries(displayOculus pthread) target_link_libraries(displayOculus Xrandr) target_link_libraries(displayOculus ${OPENGL_LIBRARY}) target_link_libraries(displayOculus ${GLFW_LIBRARIES}) target_link_libraries(displayOculus ${GLEW_LIBRARY}) target_link_libraries(displayOculus rt) On a trouvé une solution en modifiant directement la ligne de compilation g++ qui avait été généré par la commande catkin_make. Trois documents sont ajoutés : CMakeLists.txt (version qui fonctionne), CMakeLists.txt.save (version initiale qui ne fonctionne pas), tentative compilation (fichier qui retrace notre démarche) ==== Résolution erreur : X Error of failed request: GLXBadFBConfig ==== Après des mises à jour de paquets (sans doute des paquets de NVIDIA) sur l'ordinateur bellatrix, le SDK de l'Oculus ne fonctionnait plus. L'erreur suivante était affichée : X Error of failed request: GLXBadFBConfig Major opcode of failed request: 155 (GLX) Minor opcode of failed request: 21 (X_GLXGetFBConfigs) Serial number of failed request: 135 Current serial number in output stream: 135 Elle survenait lors de l’exécution de la fonction bool SDKWindow::getVisualFromDrawable(GLXDrawable drawable, XVisualInfo* vinfoOut) dans LibOVR/Src/Displays/OVR_Linux_SDKWindow.cpp. Une modification de cette fonction permet de résoudre le problème : bool SDKWindow::getVisualFromDrawable(GLXDrawable drawable, XVisualInfo* vinfoOut) { _XDisplay* display = glXGetCurrentDisplay(); //********** Ajout int screen; int value; glXQueryContext(display, glXGetCurrentContext(), GLX_FBCONFIG_ID, &value); glXQueryContext(display, glXGetCurrentContext(), GLX_SCREEN, &screen); const int attribs[] = {GLX_FBCONFIG_ID, value, None}; int numElems; GLXFBConfig* config = glXChooseFBConfig(display, screen, attribs, &numElems); { XVisualInfo* chosen = glXGetVisualFromFBConfig(display, *config); *vinfoOut = *chosen; XFree(config); XFree(chosen); return true; } return false; //*********** Retrait // unsigned int value; // glXQueryDrawable(display, drawable, GLX_FBCONFIG_ID, &value); // XVisualInfo* chosen = glXGetVisualFromFBConfig(display, reinterpret_cast(value)); // *vinfoOut = *chosen; // return true; } Modification d'après [[https://forums.oculus.com/fr/discussion/16664/solved-glxbaddrawable-under-linux]] et [[https://github.com/jherico/OculusSDK/pull/51/files]]