Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Neta branch #746

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,7 @@ my_settings.txt
borrar/*

*/ExecMean.txt

#Neta's added ignores
Dependencies.md
cmake-build-release/
236 changes: 144 additions & 92 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8)
project(ORB_SLAM3)

IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release)
SET(CMAKE_BUILD_TYPE Release)
ENDIF()

MESSAGE("Build type: " ${CMAKE_BUILD_TYPE})
Expand All @@ -12,127 +12,176 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=native")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native")

# Check C++11 or C++0x support
# Check C++14 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++11.")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++14.")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_definitions(-DCOMPILEDWITHC0X)
message(STATUS "Using flag -std=c++0x.")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_definitions(-DCOMPILEDWITHC0X)
message(STATUS "Using flag -std=c++0x.")
else()
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++14 support. Please use a different C++ compiler.")
endif()

LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)

find_package(OpenCV 4.4)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 4.4 not found.")
endif()
#find_package(OpenCV 4.4)
# if(NOT OpenCV_FOUND)
# message(FATAL_ERROR "OpenCV > 4.4 not found.")
# endif()

MESSAGE("OPENCV VERSION:")
MESSAGE(${OpenCV_VERSION})
#MESSAGE("OPENCV VERSION:")
#MESSAGE(${OpenCV_VERSION})

find_package(Eigen3 3.1.0 REQUIRED)
find_package(Pangolin REQUIRED)
find_package(realsense2)

include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/CameraModels
${PROJECT_SOURCE_DIR}/Thirdparty/Sophus
${EIGEN3_INCLUDE_DIR}
${Pangolin_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/CameraModels
${PROJECT_SOURCE_DIR}/Thirdparty/Sophus
${EIGEN3_INCLUDE_DIR}
${Pangolin_INCLUDE_DIRS}
)

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)

add_library(${PROJECT_NAME} SHARED
src/System.cc
src/Tracking.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/ORBextractor.cc
src/ORBmatcher.cc
src/FrameDrawer.cc
src/Converter.cc
src/MapPoint.cc
src/KeyFrame.cc
src/Atlas.cc
src/Map.cc
src/MapDrawer.cc
src/Optimizer.cc
src/Frame.cc
src/KeyFrameDatabase.cc
src/Sim3Solver.cc
src/Viewer.cc
src/ImuTypes.cc
src/G2oTypes.cc
src/CameraModels/Pinhole.cpp
src/CameraModels/KannalaBrandt8.cpp
src/OptimizableTypes.cpp
src/MLPnPsolver.cpp
src/GeometricTools.cc
src/TwoViewReconstruction.cc
src/Config.cc
src/Settings.cc
include/System.h
include/Tracking.h
include/LocalMapping.h
include/LoopClosing.h
include/ORBextractor.h
include/ORBmatcher.h
include/FrameDrawer.h
include/Converter.h
include/MapPoint.h
include/KeyFrame.h
include/Atlas.h
include/Map.h
include/MapDrawer.h
include/Optimizer.h
include/Frame.h
include/KeyFrameDatabase.h
include/Sim3Solver.h
include/Viewer.h
include/ImuTypes.h
include/G2oTypes.h
include/CameraModels/GeometricCamera.h
include/CameraModels/Pinhole.h
include/CameraModels/KannalaBrandt8.h
include/OptimizableTypes.h
include/MLPnPsolver.h
include/GeometricTools.h
include/TwoViewReconstruction.h
include/SerializationUtils.h
include/Config.h
include/Settings.h)
src/System.cc
src/Tracking.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/ORBextractor.cc
src/ORBmatcher.cc
src/FrameDrawer.cc
src/Converter.cc
src/MapPoint.cc
src/KeyFrame.cc
src/Atlas.cc
src/Map.cc
src/MapDrawer.cc
src/Optimizer.cc
src/Frame.cc
src/KeyFrameDatabase.cc
src/Sim3Solver.cc
src/Viewer.cc
src/ImuTypes.cc
src/G2oTypes.cc
src/CameraModels/Pinhole.cpp
src/CameraModels/KannalaBrandt8.cpp
src/OptimizableTypes.cpp
src/MLPnPsolver.cpp
src/GeometricTools.cc
src/TwoViewReconstruction.cc
src/Config.cc
src/Settings.cc
src/test.cpp
include/System.h
include/Tracking.h
include/LocalMapping.h
include/LoopClosing.h
include/ORBextractor.h
include/ORBmatcher.h
include/FrameDrawer.h
include/Converter.h
include/MapPoint.h
include/KeyFrame.h
include/Atlas.h
include/Map.h
include/MapDrawer.h
include/Optimizer.h
include/Frame.h
include/KeyFrameDatabase.h
include/Sim3Solver.h
include/Viewer.h
include/ImuTypes.h
include/G2oTypes.h
include/CameraModels/GeometricCamera.h
include/CameraModels/Pinhole.h
include/CameraModels/KannalaBrandt8.h
include/OptimizableTypes.h
include/MLPnPsolver.h
include/GeometricTools.h
include/TwoViewReconstruction.h
include/SerializationUtils.h
include/Config.h
include/Settings.h)

add_subdirectory(Thirdparty/g2o)

target_link_libraries(${PROJECT_NAME}
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
-lboost_serialization
-lcrypto
)
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
#/usr/local/lib/arm-linux-gnueabihf/libopencv_core.so
/usr/local/lib/aarch64-linux-gnu/libopencv_aruco.so
/usr/local/lib/aarch64-linux-gnu/libopencv_bgsegm.so
/usr/local/lib/aarch64-linux-gnu/libopencv_bioinspired.so
/usr/local/lib/aarch64-linux-gnu/libopencv_calib3d.so
/usr/local/lib/aarch64-linux-gnu/libopencv_ccalib.so
/usr/local/lib/aarch64-linux-gnu/libopencv_core.so
/usr/local/lib/aarch64-linux-gnu/libopencv_datasets.so
/usr/local/lib/aarch64-linux-gnu/libopencv_dnn_objdetect.so
/usr/local/lib/aarch64-linux-gnu/libopencv_dnn.so
/usr/local/lib/aarch64-linux-gnu/libopencv_dpm.so
/usr/local/lib/aarch64-linux-gnu/libopencv_face.so
/usr/local/lib/aarch64-linux-gnu/libopencv_features2d.so
/usr/local/lib/aarch64-linux-gnu/libopencv_flann.so
/usr/local/lib/aarch64-linux-gnu/libopencv_freetype.so
/usr/local/lib/aarch64-linux-gnu/libopencv_fuzzy.so
/usr/local/lib/aarch64-linux-gnu/libopencv_hdf.so
/usr/local/lib/aarch64-linux-gnu/libopencv_hfs.so
/usr/local/lib/aarch64-linux-gnu/libopencv_highgui.so
/usr/local/lib/aarch64-linux-gnu/libopencv_imgcodecs.so
/usr/local/lib/aarch64-linux-gnu/libopencv_img_hash.so
/usr/local/lib/aarch64-linux-gnu/libopencv_imgproc.so
/usr/local/lib/aarch64-linux-gnu/libopencv_line_descriptor.so
/usr/local/lib/aarch64-linux-gnu/libopencv_ml.so
/usr/local/lib/aarch64-linux-gnu/libopencv_objdetect.so
/usr/local/lib/aarch64-linux-gnu/libopencv_optflow.so
/usr/local/lib/aarch64-linux-gnu/libopencv_phase_unwrapping.so
/usr/local/lib/aarch64-linux-gnu/libopencv_photo.so
/usr/local/lib/aarch64-linux-gnu/libopencv_plot.so
/usr/local/lib/aarch64-linux-gnu/libopencv_reg.so
/usr/local/lib/aarch64-linux-gnu/libopencv_rgbd.so
/usr/local/lib/aarch64-linux-gnu/libopencv_saliency.so
/usr/local/lib/aarch64-linux-gnu/libopencv_sfm.so
/usr/local/lib/aarch64-linux-gnu/libopencv_shape.so
/usr/local/lib/aarch64-linux-gnu/libopencv_stereo.so
/usr/local/lib/aarch64-linux-gnu/libopencv_stitching.so
/usr/local/lib/aarch64-linux-gnu/libopencv_structured_light.so
/usr/local/lib/aarch64-linux-gnu/libopencv_superres.so
/usr/local/lib/aarch64-linux-gnu/libopencv_surface_matching.so
/usr/local/lib/aarch64-linux-gnu/libopencv_text.so
/usr/local/lib/aarch64-linux-gnu/libopencv_tracking.so
/usr/local/lib/aarch64-linux-gnu/libopencv_videoio.so
/usr/local/lib/aarch64-linux-gnu/libopencv_video.so
/usr/local/lib/aarch64-linux-gnu/libopencv_videostab.so
/usr/local/lib/aarch64-linux-gnu/libopencv_xfeatures2d.so
/usr/local/lib/aarch64-linux-gnu/libopencv_ximgproc.so
/usr/local/lib/aarch64-linux-gnu/libopencv_xobjdetect.so
/usr/local/lib/aarch64-linux-gnu/libopencv_xphoto.so
-lboost_serialization
-lcrypto
)

# If RealSense SDK is found the library is added and its examples compiled
if(realsense2_FOUND)
include_directories(${PROJECT_NAME}
${realsense_INCLUDE_DIR}
)
${realsense_INCLUDE_DIR}
)
target_link_libraries(${PROJECT_NAME}
${realsense2_LIBRARY}
)
${realsense2_LIBRARY}
)
endif()


Expand Down Expand Up @@ -388,3 +437,6 @@ if(realsense2_FOUND)
Examples_old/Stereo-Inertial/stereo_inertial_realsense_D435i.cc)
target_link_libraries(stereo_inertial_realsense_D435i_old ${PROJECT_NAME})
endif()



2 changes: 1 addition & 1 deletion Examples/Monocular/mono_euroc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ int main(int argc, char **argv)
int fps = 20;
float dT = 1.f/fps;
// Create SLAM system. It initializes all system threads and gets ready to process frames.
ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, false);
ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, true);
float imageScale = SLAM.GetImageScale();

double t_resize = 0.f;
Expand Down
8 changes: 4 additions & 4 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
make

cd ../../g2o

Expand All @@ -13,7 +13,7 @@ echo "Configuring and building Thirdparty/g2o ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
make

cd ../../Sophus

Expand All @@ -22,7 +22,7 @@ echo "Configuring and building Thirdparty/Sophus ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
make

cd ../../../

Expand All @@ -37,4 +37,4 @@ echo "Configuring and building ORB_SLAM3 ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
make
6 changes: 6 additions & 0 deletions include/MLPnPsolver.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,10 @@ namespace ORB_SLAM3{

bool iterate(int nIterations, bool &bNoMore, vector<bool> &vbInliers, int &nInliers, Eigen::Matrix4f &Tout);

int calc_covariance(arr1, arr2);
float covariance(float arr1[], float arr2[], int n);
float mean(float arr[], int n);

//Type definitions needed by the original code

/** A 3-vector of unit length used to describe landmark observations/bearings
Expand Down Expand Up @@ -247,6 +251,8 @@ namespace ORB_SLAM3{
vector<float> mvMaxError;

GeometricCamera* mpCamera;

Eigen::Matrix3d K;
};

}
Expand Down
Loading