diff --git a/CMakeLists.txt b/CMakeLists.txt index c7362612..7f4f34c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,18 +7,20 @@ ADD_SUBDIRECTORY( octomap ) ADD_SUBDIRECTORY( octovis ) # make complete package release from source -SET(PKG_NAME "${PROJECT_NAME}.tar.gz") -SET(DIST_DIR "${CMAKE_BINARY_DIR}/dist") -ADD_CUSTOM_TARGET("dist" - rm -rf "${DIST_DIR}" "${CMAKE_BINARY_DIR}/${PKG_NAME}" - COMMAND mkdir "${DIST_DIR}" - COMMAND svn export --force -q "${PROJECT_SOURCE_DIR}" "${DIST_DIR}/${PROJECT_NAME}" - COMMAND tar -czf "${CMAKE_BINARY_DIR}/${PKG_NAME}" -C "${DIST_DIR}" --exclude=".hidden" "${PROJECT_NAME}" - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" -) - -# also build subproject's dist for completeness -ADD_DEPENDENCIES(dist dist-octomap dist-octovis) - +IF (NOT WIN32) + SET(PKG_NAME "${PROJECT_NAME}.tar.gz") + SET(DIST_DIR "${CMAKE_BINARY_DIR}/dist") + ADD_CUSTOM_TARGET("dist" + rm -rf "${DIST_DIR}" "${CMAKE_BINARY_DIR}/${PKG_NAME}" + COMMAND mkdir "${DIST_DIR}" + COMMAND svn export --force -q "${PROJECT_SOURCE_DIR}" "${DIST_DIR}/${PROJECT_NAME}" + COMMAND tar -czf "${CMAKE_BINARY_DIR}/${PKG_NAME}" -C "${DIST_DIR}" --exclude=".hidden" "${PROJECT_NAME}" + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" + ) + + # also build subproject's dist for completeness + ADD_DEPENDENCIES(dist dist-octomap dist-octovis) +ENDIF() + diff --git a/octomap/CMakeLists.txt b/octomap/CMakeLists.txt index 96d398aa..0b99db17 100644 --- a/octomap/CMakeLists.txt +++ b/octomap/CMakeLists.txt @@ -123,15 +123,17 @@ IF(DOXYGEN_FOUND) ENDIF(DOXYGEN_FOUND) # make package release from source -SET(OCTOMAP_PKG_NAME "${PROJECT_NAME}-${OCTOMAP_VERSION}.tar.gz") -SET(DIST_DIR "${CMAKE_BINARY_DIR}/dist-${PROJECT_NAME}") -ADD_CUSTOM_TARGET("dist-${PROJECT_NAME}" - rm -rf "${DIST_DIR}" "${CMAKE_BINARY_DIR}/${OCTOMAP_PKG_NAME}" - COMMAND mkdir "${DIST_DIR}" - COMMAND svn export --force -q "${PROJECT_SOURCE_DIR}" "${DIST_DIR}/${PROJECT_NAME}" - COMMAND tar -czf "${CMAKE_BINARY_DIR}/${OCTOMAP_PKG_NAME}" -C "${DIST_DIR}" --exclude=".hidden" "${PROJECT_NAME}" - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" -) +IF (NOT WIN32) + SET(OCTOMAP_PKG_NAME "${PROJECT_NAME}-${OCTOMAP_VERSION}.tar.gz") + SET(DIST_DIR "${CMAKE_BINARY_DIR}/dist-${PROJECT_NAME}") + ADD_CUSTOM_TARGET("dist-${PROJECT_NAME}" + rm -rf "${DIST_DIR}" "${CMAKE_BINARY_DIR}/${OCTOMAP_PKG_NAME}" + COMMAND mkdir "${DIST_DIR}" + COMMAND svn export --force -q "${PROJECT_SOURCE_DIR}" "${DIST_DIR}/${PROJECT_NAME}" + COMMAND tar -czf "${CMAKE_BINARY_DIR}/${OCTOMAP_PKG_NAME}" -C "${DIST_DIR}" --exclude=".hidden" "${PROJECT_NAME}" + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" + ) +ENDIF() # Needs to be last statement: INCLUDE(CPackSettings) @@ -140,5 +142,5 @@ INCLUDE(CPackSettings) MESSAGE ("\n") MESSAGE (STATUS "Compile octomap using: make") MESSAGE (STATUS "Install octomap using: make install") -MESSAGE ( " (be sure to set the correct CMAKE_INSTALL_PREFIX before)") +MESSAGE (STATUS " (be sure to set the correct CMAKE_INSTALL_PREFIX before)") MESSAGE (STATUS "Compile API-documentation using: make docs\n") diff --git a/octomap/include/octomap/OcTreeBase.hxx b/octomap/include/octomap/OcTreeBase.hxx index 6d40b190..e95fbcae 100644 --- a/octomap/include/octomap/OcTreeBase.hxx +++ b/octomap/include/octomap/OcTreeBase.hxx @@ -548,7 +548,7 @@ namespace octomap { std::istream& OcTreeBase::read(std::istream &s) { if (!s.good()){ - OCTOMAP_WARNING_STR(__PRETTY_FUNCTION__ << "Warning: Input filestream not \"good\""); + OCTOMAP_WARNING_STR(__FILE__ << ":" << __LINE__ << "Warning: Input filestream not \"good\""); } this->tree_size = 0; diff --git a/octomap/include/octomap/OcTreeDataNode.hxx b/octomap/include/octomap/OcTreeDataNode.hxx index 0e24f4ee..56727991 100644 --- a/octomap/include/octomap/OcTreeDataNode.hxx +++ b/octomap/include/octomap/OcTreeDataNode.hxx @@ -176,7 +176,7 @@ namespace octomap { s.read((char*)&children_char, sizeof(char)); - std::bitset<8> children ((unsigned long) children_char); + std::bitset<8> children ((unsigned long long) children_char); // std::cout << "read: " << log_odds_occupancy << " " // << children.to_string,std::allocator >() << std::endl; diff --git a/octovis/CMakeLists.txt b/octovis/CMakeLists.txt index c1143cd6..aa462b69 100644 --- a/octovis/CMakeLists.txt +++ b/octovis/CMakeLists.txt @@ -56,16 +56,21 @@ set(INSTALL_TARGETS_DEFAULT_ARGS SET( BUILD_VIEWER 0) # Look for required libraries: -FIND_PACKAGE(OpenGL REQUIRED) -FIND_PACKAGE(Qt4 REQUIRED) -FIND_PACKAGE(QGLViewer) -IF(QGLViewer_FOUND) - SET( BUILD_VIEWER 1) +FIND_PACKAGE(OpenGL) +FIND_PACKAGE(Qt4) +IF (OpenGL-NOTFOUND OR Qt4-NOTFOUND) + MESSAGE ( "OpenGL and QT4 are required for octovis but could not be found.") ELSE() - MESSAGE ( "\n") - MESSAGE ( "libQGLViewer could not be found or generated.") + FIND_PACKAGE(QGLViewer) + IF(QGLViewer_FOUND) + SET( BUILD_VIEWER 1) + ELSE() + MESSAGE ( "\n") + MESSAGE ( "libQGLViewer could not be found or generated.") + ENDIF() ENDIF() + IF(BUILD_VIEWER) MESSAGE(STATUS "\n") MESSAGE(STATUS "viewer octovis will be built") @@ -100,15 +105,17 @@ IF(BUILD_VIEWER) DESTINATION lib/cmake/octovis/) # make package release from source - SET(OCTOVIS_PKG_NAME "${PROJECT_NAME}-${OCTOVIS_VERSION}.tar.gz") - SET(DIST_DIR "${CMAKE_BINARY_DIR}/dist-${PROJECT_NAME}") - ADD_CUSTOM_TARGET("dist-${PROJECT_NAME}" - rm -rf "${DIST_DIR}" "${CMAKE_BINARY_DIR}/${OCTOVIS_PKG_NAME}" - COMMAND mkdir "${DIST_DIR}" - COMMAND svn export --force -q "${PROJECT_SOURCE_DIR}" "${DIST_DIR}/${PROJECT_NAME}" - COMMAND tar -czf "${CMAKE_BINARY_DIR}/${OCTOVIS_PKG_NAME}" -C "${DIST_DIR}" --exclude=".hidden" "${PROJECT_NAME}" - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" - ) + IF (NOT WIN32) + SET(OCTOVIS_PKG_NAME "${PROJECT_NAME}-${OCTOVIS_VERSION}.tar.gz") + SET(DIST_DIR "${CMAKE_BINARY_DIR}/dist-${PROJECT_NAME}") + ADD_CUSTOM_TARGET("dist-${PROJECT_NAME}" + rm -rf "${DIST_DIR}" "${CMAKE_BINARY_DIR}/${OCTOVIS_PKG_NAME}" + COMMAND mkdir "${DIST_DIR}" + COMMAND svn export --force -q "${PROJECT_SOURCE_DIR}" "${DIST_DIR}/${PROJECT_NAME}" + COMMAND tar -czf "${CMAKE_BINARY_DIR}/${OCTOVIS_PKG_NAME}" -C "${DIST_DIR}" --exclude=".hidden" "${PROJECT_NAME}" + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" + ) + ENDIF () # #installation: # # store all header files to install: diff --git a/octovis/CMakeLists_src.txt b/octovis/CMakeLists_src.txt index 654dff1b..608702ba 100644 --- a/octovis/CMakeLists_src.txt +++ b/octovis/CMakeLists_src.txt @@ -70,10 +70,9 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR}) add_library(octovis-static STATIC ${viewerlib_SRCS}) target_link_libraries(octovis-static) set_target_properties(octovis-static PROPERTIES OUTPUT_NAME octovis) -SET_TARGET_PROPERTIES(octovis-static PROPERTIES PREFIX "lib") add_library(octovis-shared SHARED ${viewerlib_SRCS}) -target_link_libraries(octovis-shared) +target_link_libraries(octovis-shared ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} octomath octomap ${QGLViewer_LIBRARIES}) set_target_properties(octovis-shared PROPERTIES OUTPUT_NAME octovis) @@ -81,9 +80,8 @@ set_target_properties(octovis-shared PROPERTIES OUTPUT_NAME octovis) # If this is NOT done, then the ui_*.h files will not be generated add_executable(octovis ${viewer_SRCS} ${viewer_UIS_H} ${viewer_MOC_SRCS} ${viewer_RES}) -# link the target against the Qt libraries. which libraries exactly, is defined by the "include(${QT_USE_FILE})" line above, which sets up this variable. target_link_libraries(octovis - ${QGLViewer_LIBRARIES} +# ${QGLViewer_LIBRARIES} ${QT_LIBRARIES} ${OCTOMAP_LIBRARIES} octovis-shared diff --git a/octovis/CMakeModules/FindQGLViewer.cmake b/octovis/CMakeModules/FindQGLViewer.cmake index be0a2752..7e032009 100644 --- a/octovis/CMakeModules/FindQGLViewer.cmake +++ b/octovis/CMakeModules/FindQGLViewer.cmake @@ -24,6 +24,7 @@ FIND_PATH( QGLViewer_INCLUDE_DIR qglviewer.h ) FIND_LIBRARY( QGLViewer_LIBRARY_DIR_UBUNTU qglviewer-qt4 ) +FIND_LIBRARY( QGLViewer_LIBRARY_DIR_WINDOWS QGLViewer2 ${QGLVIEWER_BASE_DIR}) FIND_LIBRARY( QGLViewer_LIBRARY_DIR_OTHER QGLViewer ${QGLVIEWER_BASE_DIR}) SET( BUILD_LIB_FROM_SOURCE 0) @@ -36,8 +37,14 @@ IF( QGLViewer_INCLUDE_DIR ) GET_FILENAME_COMPONENT( QGLViewer_LIBRARY_DIR ${QGLViewer_LIBRARY_DIR_UBUNTU} PATH CACHE ) SET( QGLViewer_LIBRARIES qglviewer-qt4) SET( QGLViewer_FOUND 1 CACHE BOOL "Do we have QGLViewer?" FORCE ) + ELSEIF(QGLViewer_LIBRARY_DIR_WINDOWS) + # strip filename from path + GET_FILENAME_COMPONENT( QGLViewer_LIBRARY_DIR ${QGLViewer_LIBRARY_DIR_WINDOWS} PATH CACHE ) + SET( QGLViewer_LIBRARIES QGLViewer2) + SET( QGLViewer_FOUND 1 CACHE BOOL "Do we have QGLViewer?" FORCE ) + MESSAGE(STATUS "QGLViewer2.lib found in ${QGLViewer_LIBRARY_DIR}") ELSEIF(QGLViewer_LIBRARY_DIR_OTHER) - MESSAGE(STATUS "QGLViewer found in ${QGLViewer_LIBRARY_DIR_OTHER}") + MESSAGE(STATUS "QGLViewer found: ${QGLViewer_LIBRARY_DIR_OTHER}") # strip filename from path GET_FILENAME_COMPONENT( QGLViewer_LIBRARY_DIR ${QGLViewer_LIBRARY_DIR_OTHER} PATH CACHE ) SET( QGLViewer_LIBRARIES QGLViewer) @@ -51,54 +58,63 @@ IF( QGLViewer_INCLUDE_DIR ) ELSE() SET( BUILD_LIB_FROM_SOURCE 1) ENDIF() + + # build own libQGLViewer + IF(BUILD_LIB_FROM_SOURCE) + + IF (WIN32) + MESSAGE("Cannot generate QGLViewer2 from source automatically.") + MESSAGE("Please build libQGLViewer from source, instructions to do so") + MESSAGE("can be found in octovis/README.txt") + MESSAGE("Please rerun CMAKE when you are ready.") + + ELSE (WIN32) + IF(QGLVIEWER_BASE_DIR) + MESSAGE(STATUS "Trying to build libQGLViewer from source in ${QGLVIEWER_BASE_DIR}") + + FIND_PROGRAM(QMAKE-QT4 qmake-qt4) + IF (QMAKE-QT4) + MESSAGE(STATUS "\t generating Makefile using qmake-qt4") + EXECUTE_PROCESS( + WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR} + COMMAND qmake-qt4 + OUTPUT_QUIET + ) + ELSE(QMAKE-QT4) + MESSAGE(STATUS "\t generating Makefile using qmake") + EXECUTE_PROCESS( + WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR} + COMMAND qmake-qt4 + OUTPUT_QUIET + ) + ENDIF(QMAKE-QT4) + + MESSAGE(STATUS "\t building library") + EXECUTE_PROCESS( + WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR} + COMMAND make + OUTPUT_QUIET + ) + ENDIF(WIN32) + + ELSE() + MESSAGE(STATUS "QGLViewer sources NOT found. Exiting.") + ENDIF() + + FIND_LIBRARY(QGLViewer_LIBRARY_DIR_OTHER QGLViewer ${QGLVIEWER_BASE_DIR}) + FIND_PATH(QGLLIB libQGLViewer.so ${QGLVIEWER_BASE_DIR}) -IF(BUILD_LIB_FROM_SOURCE) - - # build own libQGLViewer - IF(QGLVIEWER_BASE_DIR) - MESSAGE(STATUS "Trying to build libQGLViewer from source in ${QGLVIEWER_BASE_DIR}") - - FIND_PROGRAM(QMAKE-QT4 qmake-qt4) - IF (QMAKE-QT4) - MESSAGE(STATUS "\t generating Makefile using qmake-qt4") - EXECUTE_PROCESS( - WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR} - COMMAND qmake-qt4 - OUTPUT_QUIET - ) - ELSE(QMAKE-QT4) - MESSAGE(STATUS "\t generating Makefile using qmake") - EXECUTE_PROCESS( - WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR} - COMMAND qmake-qt4 - OUTPUT_QUIET - ) - ENDIF(QMAKE-QT4) - - MESSAGE(STATUS "\t building library") - EXECUTE_PROCESS( - WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR} - COMMAND make - OUTPUT_QUIET - ) - ELSE() - MESSAGE(STATUS "QGLViewer sources NOT found. Exiting.") - ENDIF() - - FIND_LIBRARY(QGLViewer_LIBRARY_DIR_OTHER QGLViewer ${QGLVIEWER_BASE_DIR}) - FIND_PATH(QGLLIB libQGLViewer.so ${QGLVIEWER_BASE_DIR}) - - IF (NOT QGLLIB) - MESSAGE(STATUS "\nfailed to build libQGLViewer") - SET( QGLViewer_FOUND 0 CACHE BOOL "Do we have QGLViewer?" FORCE ) - ELSE() - MESSAGE(STATUS "Successfully built ${QGLLIB}") - SET( QGLViewer_INCLUDE_DIR ${QGLVIEWER_BASE_DIR} CACHE PATH "QGLViewer Include directory" FORCE) - SET( QGLViewer_LIBRARY_DIR ${QGLVIEWER_BASE_DIR} CACHE PATH "QGLViewer Library directory" FORCE) - # TODO: also include "m pthread QGLViewerGen QGLViewerUtility"? - SET( QGLViewer_LIBRARIES QGLViewer) - SET( QGLViewer_FOUND 1 CACHE BOOL "Do we have QGLViewer?" FORCE ) - ENDIF() + IF (NOT QGLLIB) + MESSAGE(STATUS "\nfailed to build libQGLViewer") + SET( QGLViewer_FOUND 0 CACHE BOOL "Do we have QGLViewer?" FORCE ) + ELSE() + MESSAGE(STATUS "Successfully built ${QGLLIB}") + SET( QGLViewer_INCLUDE_DIR ${QGLVIEWER_BASE_DIR} CACHE PATH "QGLViewer Include directory" FORCE) + SET( QGLViewer_LIBRARY_DIR ${QGLVIEWER_BASE_DIR} CACHE PATH "QGLViewer Library directory" FORCE) + # TODO: also include "m pthread QGLViewerGen QGLViewerUtility"? + SET( QGLViewer_LIBRARIES QGLViewer) + SET( QGLViewer_FOUND 1 CACHE BOOL "Do we have QGLViewer?" FORCE ) + ENDIF() ENDIF() diff --git a/octovis/src/CameraFollowMode.cpp b/octovis/src/CameraFollowMode.cpp index 58802fb5..44a0a786 100644 --- a/octovis/src/CameraFollowMode.cpp +++ b/octovis/src/CameraFollowMode.cpp @@ -62,7 +62,7 @@ void CameraFollowMode::play() { if (scanNode) emit appendToCameraPath(ROBOT_TRAJECTORY_ID, scanNode->pose); else{ - std::cerr << "Error in " << __PRETTY_FUNCTION__<<": invalid node ID "<< i-1 << std::endl; + std::cerr << "Error in " << __FILE__ << ":" << __LINE__ <<" : invalid node ID "<< i-1 << std::endl; } } emit playCameraPath(ROBOT_TRAJECTORY_ID, 0); diff --git a/octovis/src/OcTreeDrawer.cpp b/octovis/src/OcTreeDrawer.cpp index 3c8543eb..ac86eae3 100644 --- a/octovis/src/OcTreeDrawer.cpp +++ b/octovis/src/OcTreeDrawer.cpp @@ -761,13 +761,13 @@ namespace octomap { // draw binary occupied cells if (m_occupiedThresSize != 0) { - if (m_colorMode != CM_PRINTOUT) glColor4f(0.0, 0.0, 1.0, m_alphaOccupied); + if (m_colorMode != CM_PRINTOUT) glColor4f(0.0f, 0.0f, 1.0f, m_alphaOccupied); drawCubes(m_occupiedThresArray, m_occupiedThresSize, m_occupiedThresColorArray); } // draw delta occupied cells if (m_occupiedSize != 0) { - if (m_colorMode != CM_PRINTOUT) glColor4f(0.2, 0.7, 1.0, m_alphaOccupied); + if (m_colorMode != CM_PRINTOUT) glColor4f(0.2f, 0.7f, 1.0f, m_alphaOccupied); drawCubes(m_occupiedArray, m_occupiedSize, m_occupiedColorArray); } } @@ -788,14 +788,14 @@ namespace octomap { // draw binary freespace cells if (m_freeThresSize != 0) { - if (m_colorMode != CM_PRINTOUT) glColor4f(0.0, 1.0, 0., 0.3); + if (m_colorMode != CM_PRINTOUT) glColor4f(0.0f, 1.0f, 0.0f, 0.3f); drawCubes(m_freeThresArray, m_freeThresSize); } // draw delta freespace cells if (m_freeSize != 0) { - if (m_colorMode != CM_PRINTOUT) glColor4f(0.5, 1.0, 0.1, 0.3); + if (m_colorMode != CM_PRINTOUT) glColor4f(0.5f, 1.0f, 0.1f, 0.3f); drawCubes(m_freeArray, m_freeSize); } } @@ -942,7 +942,7 @@ namespace octomap { glPushMatrix(); - float length = .15; + float length = 0.15f; GLboolean lighting, colorMaterial; glGetBooleanv(GL_LIGHTING, &lighting); diff --git a/octovis/src/ViewerSettingsPanel.cpp b/octovis/src/ViewerSettingsPanel.cpp index 15e065ae..d9fdf950 100644 --- a/octovis/src/ViewerSettingsPanel.cpp +++ b/octovis/src/ViewerSettingsPanel.cpp @@ -50,7 +50,7 @@ void ViewerSettingsPanel::on_nextScanButton_clicked(){ } void ViewerSettingsPanel::on_fastFwdScanButton_clicked(){ - unsigned increase = std::min(5, int(m_numberScans)-int(m_currentScan)); + unsigned increase = min(5, int(m_numberScans)-int(m_currentScan)); m_currentScan += increase; scanProgressChanged(); emit addNextScans(increase); @@ -70,7 +70,7 @@ void ViewerSettingsPanel::on_firstScanButton_clicked(){ } void ViewerSettingsPanel::scanProgressChanged(){ - ui.scanProgressBar->setMaximum(std::max(1,int(m_numberScans))); + ui.scanProgressBar->setMaximum(max(1,int(m_numberScans))); if (m_currentScan == m_numberScans){ ui.nextScanButton->setEnabled(false); @@ -116,7 +116,6 @@ void ViewerSettingsPanel::setTreeDepth(int depth){ } void ViewerSettingsPanel::leafSizeChanged(){ - double leafSize = m_resolution * pow(2,_TREE_MAX_DEPTH-m_treeDepth); + double leafSize = m_resolution * pow(2.0, (int) (_TREE_MAX_DEPTH-m_treeDepth)); ui.leafSize->setText(QString::number(leafSize)+" m"); - } diff --git a/octovis/src/ViewerWidget.cpp b/octovis/src/ViewerWidget.cpp index f7eff2cb..01637317 100644 --- a/octovis/src/ViewerWidget.cpp +++ b/octovis/src/ViewerWidget.cpp @@ -26,9 +26,13 @@ #include +#ifndef M_PI_2 + #define M_PI_2 1.5707963267948966192E0 +#endif + using namespace std; -namespace octomap{ +namespace octomap { ViewerWidget::ViewerWidget(QWidget* parent) : QGLViewer(parent), m_zMin(0.0),m_zMax(1.0) { @@ -51,7 +55,7 @@ void ViewerWidget::init() { } void ViewerWidget::resetView(){ - this->camera()->setOrientation(-M_PI_2, M_PI_2); + this->camera()->setOrientation((float) -M_PI_2, (float) M_PI_2); this->showEntireScene(); updateGL();