dorian3d / DLoopDetector

Fast loop detector for sequences of monocular images

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Will you support the latest DBoW2?

sunbingfengPI opened this issue · comments

I found that the latest DBoW2 has removed DVision and Boost dependencies, but this DLoopDetector repo still depends on them.

Moreover, it compiled failed with the latest DBoW2.

The main reason about it is that FBrief::TDescriptor in the latest DBoW2 has been changed to std::bitset<L> from boost::dynamic_bitset<>.

Appreciate it if you could update it to the latest DBoW2.

Thanks!

@sunbingfengPI

It seems this issue solved the problem.

#15 (comment)

However, I couldn't solve it with this issue.

May I ask have you solved the problem?

I used the old DBOW2 library(commit id: 67edcbc16903b314e9f19fd0bce6e93eef5e6635) instead.

You could set the GIT_TAG to use the history commit to hack over it.

        ExternalProject_Add(${name}
          PREFIX ${DEPENDENCY_DIR}
          GIT_REPOSITORY http://github.com/dorian3d/${name}
          GIT_TAG ${tag}
          INSTALL_DIR ${DEPENDENCY_INSTALL_DIR}
          CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
          DEPENDS ${dependency})      

Wish it may help.

Thanks a lot @sunbingfengPI . I solved the problem with your suggestions.

The modifications I made are as follows. I am using Ubuntu 14.04.

`
macro(GetDependency name other_dependency tag)
find_package(${name} QUIET
PATHS ${DEPENDENCY_INSTALL_DIR})
if(${${name}_FOUND})
message("${name} library found, using it from the system")
include_directories(${${name}_INCLUDE_DIRS})
add_custom_target(${name})
else(${${name}FOUND})
message("${name} library not found in the system, it will be downloaded on build")
option(DOWNLOAD
${name}dependency "Download ${name} dependency" ON)
if(${DOWNLOAD
${name}dependency})
ExternalProject_Add(${name}
PREFIX ${DEPENDENCY_DIR}
GIT_REPOSITORY http://github.com/dorian3d/${name}
# GIT_TAG master
GIT_TAG ${tag}
INSTALL_DIR ${DEPENDENCY_INSTALL_DIR}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
DEPENDS ${other_dependency})
else()
message(SEND_ERROR "Please, activate DOWNLOAD
${name}dependency option or download manually")
endif(${DOWNLOAD
${name}_dependency})
endif(${${name}_FOUND})
endmacro(GetDependency)

GetDependency(DLib "" master)
GetDependency(DBoW2 DLib 67edcbc16903b314e9f19fd0bce6e93eef5e6635)
`

You are welcome! @junzhang2016