Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
jim-bcom committed Jul 17, 2023
2 parents e37d298 + 085e7c9 commit 21032db
Show file tree
Hide file tree
Showing 84 changed files with 2,195 additions and 383 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*.lo
*.o
*.obj
build/
*build*

# Precompiled Headers
*.gch
Expand Down
5 changes: 1 addition & 4 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
[submodule "SolARWrapper"]
path = SolARWrapper
url = https://github.com/SolarFramework/SwigWrapper.git
branch = .

1 change: 0 additions & 1 deletion JenkinsFile
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
SolArModulePipeline {
moduleName="SolARFramework"
dirName="SolARBuild"
android=true
}
10 changes: 0 additions & 10 deletions JenkinsFile_All
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,6 @@ pipeline {
buildModule("SolARModuleOpenGL",BRANCH,RELEASE,PRE_RELEASE,REMAKEN_VERSION,QMAKE_RULES_VERSION,SKIP_TESTS,UPLOAD_CONAN_PACKAGE)
}
}
stage("SolARModuleOpenGV"){
steps {
buildModule("SolARModuleOpenGV",BRANCH,RELEASE,PRE_RELEASE,REMAKEN_VERSION,QMAKE_RULES_VERSION,SKIP_TESTS,UPLOAD_CONAN_PACKAGE)
}
}
stage("SolARModuleCeres"){
steps {
buildModule("SolARModuleCeres",BRANCH,RELEASE,PRE_RELEASE,REMAKEN_VERSION,QMAKE_RULES_VERSION,SKIP_TESTS,UPLOAD_CONAN_PACKAGE)
}
}
stage("SolARModuleTools"){
steps {
buildModule("SolARModuleTools",BRANCH,RELEASE,PRE_RELEASE,REMAKEN_VERSION,QMAKE_RULES_VERSION,SKIP_TESTS,UPLOAD_CONAN_PACKAGE)
Expand Down
14 changes: 14 additions & 0 deletions SolARFramework.pri
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
HEADERS += interfaces/api/display/I2DOverlay.h \
$$PWD/interfaces/api/pipeline/IServiceManagerPipeline.h \
interfaces/api/pipeline/IAsyncRelocalizationPipeline.h \
interfaces/api/solver/pose/ITrackablePose.h \
interfaces/api/input/devices/IDepthCamera.h \
Expand Down Expand Up @@ -46,12 +47,16 @@ interfaces/api/input/devices/IDevice.h \
interfaces/api/input/devices/IIMU.h \
interfaces/api/input/devices/IRGBDCamera.h \
interfaces/api/input/devices/IStereoCameraCalibration.h \
interfaces/api/input/files/IMeshLoader.h \
interfaces/api/input/files/IPointCloudLoader.h \
interfaces/api/input/files/ITrackableLoader.h \
interfaces/api/input/files/IWorldGraphLoader.h \
interfaces/api/loop/ILoopClosureDetector.h \
interfaces/api/loop/ILoopCorrector.h \
interfaces/api/loop/IOverlapDetector.h \
interfaces/api/output/files/IMeshExporter.h \
interfaces/api/output/files/IPointCloudExporter.h \
interfaces/api/pipeline/IDenseMappingPipeline.h \
interfaces/api/pipeline/IMappingPipeline.h \
interfaces/api/pipeline/IPipeline.h \
interfaces/api/pipeline/IPoseEstimationPipeline.h \
Expand All @@ -62,6 +67,9 @@ interfaces/api/pointCloud/IPCFilterCentroid.h \
interfaces/api/reloc/IKeyframeRetriever.h \
interfaces/api/reloc/IRelocalizer.h \
interfaces/api/reloc/IRegression.h \
interfaces/api/sfm/IMeshing.h \
interfaces/api/sfm/IMultiViewStereo.h \
interfaces/api/sfm/IStructureFromMotion.h \
interfaces/api/sink/ISinkPoseImage.h \
interfaces/api/sink/ISinkPoseTextureBuffer.h \
interfaces/api/sink/ISinkReturnCode.h \
Expand Down Expand Up @@ -90,6 +98,7 @@ interfaces/api/source/ISourceImage.h \
interfaces/api/source/ISourceReturnCode.h \
interfaces/api/storage/ICovisibilityGraphManager.h \
interfaces/api/storage/IKeyframesManager.h \
interfaces/api/storage/ICameraParametersManager.h \
interfaces/api/storage/IPointCloudManager.h \
interfaces/api/storage/IMapManager.h \
interfaces/api/tracking/IOpticalFlowEstimator.h \
Expand All @@ -101,6 +110,7 @@ interfaces/core/SolARFramework.h \
interfaces/core/SolARFrameworkDefinitions.h \
interfaces/datastructure/BufferInternal.hpp \
interfaces/datastructure/CameraDefinitions.h \
interfaces/datastructure/CameraParametersCollection.h \
interfaces/datastructure/CloudPoint.h \
interfaces/datastructure/CoordinateSystem.h \
interfaces/datastructure/DescriptorBuffer.h \
Expand All @@ -115,6 +125,7 @@ interfaces/datastructure/ImageMarker.h \
interfaces/datastructure/Keyframe.h \
interfaces/datastructure/Keypoint.h \
interfaces/datastructure/MathDefinitions.h \
interfaces/datastructure/Mesh.h \
interfaces/datastructure/PointCloud.h \
interfaces/datastructure/PrimitiveInformation.h \
interfaces/datastructure/SquaredBinaryPattern.h \
Expand All @@ -134,10 +145,12 @@ interfaces/base/geom/AReprojectionStereo.h \
interfaces/base/pipeline/AMappingPipeline.h \
interfaces/api/segm/IInstanceSegmentation.h \
interfaces/api/segm/ISemanticSegmentation.h \
interfaces/api/segm/IPanopticSegmentation.h \
interfaces/api/display/IMaskOverlay.h

SOURCES += src/core/Log.cpp \
src/core/SolARFramework.cpp \
src/datastructure/CameraParametersCollection.cpp \
src/datastructure/CloudPoint.cpp \
src/datastructure/CoordinateSystem.cpp \
src/datastructure/DescriptorBuffer.cpp \
Expand All @@ -159,6 +172,7 @@ src/datastructure/CovisibilityGraph.cpp \
src/datastructure/KeyframeRetrieval.cpp \
src/datastructure/KeyframeCollection.cpp \
src/datastructure/Map.cpp \
src/datastructure/Mesh.cpp \
src/base/features/ADescriptorMatcher.cpp \
src/base/features/ADescriptorMatcherGeometric.cpp \
src/base/features/ADescriptorMatcherRegion.cpp \
Expand Down
36 changes: 9 additions & 27 deletions SolARFramework.pro
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ QMAKE_PROJECT_DEPTH = 0
INSTALLSUBDIR = SolARBuild
TARGET = SolARFramework
FRAMEWORK = $$TARGET
VERSION=0.11.0
VERSION=1.0.0

DEFINES += MYVERSION=$${VERSION}
DEFINES += TEMPLATE_LIBRARY
Expand Down Expand Up @@ -51,15 +51,6 @@ linux {
QMAKE_LFLAGS += -ldl
}

macx {
DEFINES += _MACOS_TARGET_
QMAKE_MAC_SDK= macosx
QMAKE_CFLAGS += -mmacosx-version-min=10.7 -std=c11 #-x objective-c++
QMAKE_CXXFLAGS += -mmacosx-version-min=10.7 -std=c11 -std=c++11 -fPIC#-x objective-c++
QMAKE_LFLAGS += -mmacosx-version-min=10.7 -v -lstdc++
LIBS += -lstdc++ -lc -lpthread
}

win32 {

DEFINES += WIN64 UNICODE _UNICODE
Expand All @@ -69,13 +60,6 @@ win32 {
QMAKE_CXXFLAGS_RELEASE += /O2
}

android {
# Needed to access android sink for spdlog
DEFINES += __ANDROID__
ANDROID_ABIS="arm64-v8a"
}


header_interfaces.path = $${PROJECTDEPLOYDIR}/interfaces/
header_interfaces.files = $$files($${PWD}/interfaces/*.h*)

Expand All @@ -93,6 +77,8 @@ header_interfaces_input_devices.path = $${PROJECTDEPLOYDIR}/interfaces/api/input
header_interfaces_input_devices.files = $$files($${PWD}/interfaces/api/input/devices/*.h*)
header_interfaces_input_files.path = $${PROJECTDEPLOYDIR}/interfaces/api/input/files/
header_interfaces_input_files.files = $$files($${PWD}/interfaces/api/input/files/*.h*)
header_interfaces_output_files.path = $${PROJECTDEPLOYDIR}/interfaces/api/output/files/
header_interfaces_output_files.files = $$files($${PWD}/interfaces/api/output/files/*.h*)
header_interfaces_pointCloud.path = $${PROJECTDEPLOYDIR}/interfaces/api/pointCloud/
header_interfaces_pointCloud.files = $$files($${PWD}/interfaces/api/pointCloud/*.h*)
header_interfaces_reloc.path = $${PROJECTDEPLOYDIR}/interfaces/api/reloc/
Expand Down Expand Up @@ -129,6 +115,8 @@ header_base_pipeline.path = $${PROJECTDEPLOYDIR}/interfaces/base/pipeline/
header_base_pipeline.files += $$files($${PWD}/interfaces/base/pipeline/*.h*)
header_interfaces_segm.path = $${PROJECTDEPLOYDIR}/interfaces/api/segm/
header_interfaces_segm.files = $$files($${PWD}/interfaces/api/segm/*.h*)
header_interfaces_sfm.path = $${PROJECTDEPLOYDIR}/interfaces/api/sfm/
header_interfaces_sfm.files += $$files($${PWD}/interfaces/api/sfm/*.h*)

INCLUDEPATH += $${PWD}/interfaces

Expand All @@ -140,6 +128,7 @@ INSTALLS += header_interfaces_fusion
INSTALLS += header_interfaces_geom
INSTALLS += header_interfaces_image
INSTALLS += header_interfaces_input_devices header_interfaces_input_files
INSTALLS += header_interfaces_output_files
INSTALLS += header_interfaces_pointCloud
INSTALLS += header_interfaces_reloc
INSTALLS += header_interfaces_sink
Expand All @@ -152,27 +141,20 @@ INSTALLS += header_interfaces_core
INSTALLS += header_interfaces_datastructure
INSTALLS += header_interfaces_pipeline
INSTALLS += header_interfaces_loop
INSTALLS += header_interfaces_segm
INSTALLS += header_interfaces_slam
INSTALLS += header_interfaces_sfm
INSTALLS += header_base_features
INSTALLS += header_base_geom
INSTALLS += header_base_pipeline
INSTALLS += header_interfaces_segm


OTHER_FILES += \
packagedependencies.txt \
packagedependencies-win.txt \
packagedependencies-linux.txt \
packagedependencies-mac.txt \
packagedependencies-android.txt \
extra-packages.txt \
extra-packages-linux.txt

#NOTE : Must be placed at the end of the .pro
include ($$shell_quote($$shell_path($${QMAKE_REMAKEN_RULES_ROOT}/remaken_install_target.pri)))) # Shell_quote & shell_path required for visual on windows

DISTFILES +=

HEADERS += \
interfaces/api/pipeline/IAsyncRelocalizationPipeline.h


1 change: 0 additions & 1 deletion SolARWrapper
Submodule SolARWrapper deleted from e970cd
2 changes: 1 addition & 1 deletion bcom-SolARFramework.pc.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ libdir=${exec_prefix}/lib
includedir=${prefix}/interfaces
Name: SolARFramework
Description:
Version: 0.11.0
Version: 1.0.0
Requires:
Libs: -L${libdir} -l${libname}
Libs.private: ${libdir}/${pfx}${libname}.${lext}
Expand Down
8 changes: 4 additions & 4 deletions interfaces/api/display/I3DOverlay.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ class [[xpcf::clientUUID("ce48f688-bb48-4d61-800c-e504c0d060a8")]] [[xpcf::serve
/// @brief I3DOverlay default destructor
virtual ~I3DOverlay() = default;

/// @brief Set the intrinsic parameters and distorsion of the camera
virtual void setCameraParameters(const SolAR::datastructure::CamCalibration & intrinsic_parameters, const SolAR::datastructure::CamDistortion & distorsion_parameters) = 0;

/// @brief Draw a box on the given Image
/// The box is displayed according to the pose given in parameter. The reference of the box is positionned on the center of its bottom face.
/// @param[in] Transfomr3Df The pose of the camera from which the box is viewed.
/// @param[in] camParams The camera parameters.
/// @param[in,out] displayImage The image on which the box will be drawn
virtual void draw (const SolAR::datastructure::Transform3Df & pose, SRef<SolAR::datastructure::Image> displayImage) = 0;
virtual void draw (const SolAR::datastructure::Transform3Df & pose,
const SolAR::datastructure::CameraParameters & camParams,
SRef<SolAR::datastructure::Image> displayImage) = 0;

};
}
Expand Down
26 changes: 17 additions & 9 deletions interfaces/api/features/IDescriptorMatcherGeometric.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,32 +56,40 @@ class [[xpcf::clientUUID("1bd62a3f-3376-45c3-a980-94d042ae509f")]] [[xpcf::serve
/// @param[in] undistortedKeypoints2 The second set of undistorted keypoints.
/// @param[in] pose1 The first pose.
/// @param[in] pose2 The second pose.
/// @param[in] camParams The intrinsic parameters of the camera.
/// @param[in] camParams1 The intrinsic parameters of the camera 1.
/// @param[in] camParams2 The intrinsic parameters of the camera 2.
/// @param[out] matches A vector of matches representing pairs of indices relatively to the first and second set of descriptors.
/// @param[in] mask The indices of descriptors in the first frame are used for matching to the second frame. If it is empty then all will be used.
/// @param[in] mask1 The indices of descriptors in the first frame are used for matching to the second frame. If it is empty then all will be used.
/// @param[in] mask2 The indices of descriptors in the second frame are used for matching to the first frame. If it is empty then all will be used.
/// @return FrameworkReturnCode::_SUCCESS if matching succeed, else FrameworkReturnCode::_ERROR_
virtual FrameworkReturnCode match(const SRef<SolAR::datastructure::DescriptorBuffer> descriptors1,
const SRef<SolAR::datastructure::DescriptorBuffer> descriptors2,
const std::vector<SolAR::datastructure::Keypoint> &undistortedKeypoints1,
const std::vector<SolAR::datastructure::Keypoint> &undistortedKeypoints2,
const SolAR::datastructure::Transform3Df& pose1,
const SolAR::datastructure::Transform3Df& pose2,
const SolAR::datastructure::CameraParameters & camParams,
std::vector<SolAR::datastructure::DescriptorMatch> & matches,
const std::vector<uint32_t>& mask = {}) = 0;
const SolAR::datastructure::CameraParameters & camParams1,
const SolAR::datastructure::CameraParameters & camParams2,
std::vector<SolAR::datastructure::DescriptorMatch> & matches,
const std::vector<uint32_t>& mask1 = {},
const std::vector<uint32_t>& mask2 = {}) = 0;

/// @brief Match two sets of descriptors from two frames based on epipolar constraint.
/// @param[in] frame1 The first frame containing descriptors and undistorted keypoints.
/// @param[in] frame2 The second frame containing descriptors and undistorted keypoints.
/// @param[in] camParams The intrinsic parameters of the camera.
/// @param[in] camParams1 The intrinsic parameters of the camera 1.
/// @param[in] camParams2 The intrinsic parameters of the camera 2.
/// @param[out] matches A vector of matches representing pairs of indices relatively to the first and second set of descriptors.
/// @param[in] mask The indices of descriptors in the first frame are used for matching to the second frame. If it is empty then all will be used.
/// @param[in] mask1 The indices of descriptors in the first frame are used for matching to the second frame. If it is empty then all will be used.
/// @param[in] mask2 The indices of descriptors in the second frame are used for matching to the first frame. If it is empty then all will be used.
/// @return FrameworkReturnCode::_SUCCESS if matching succeed, else FrameworkReturnCode::_ERROR_
virtual FrameworkReturnCode match(const SRef<SolAR::datastructure::Frame> frame1,
const SRef<SolAR::datastructure::Frame> frame2,
const SolAR::datastructure::CameraParameters & camParams,
const SolAR::datastructure::CameraParameters & camParams1,
const SolAR::datastructure::CameraParameters & camParams2,
std::vector<SolAR::datastructure::DescriptorMatch> & matches,
const std::vector<uint32_t>& mask = {}) = 0;
const std::vector<uint32_t>& mask1 = {},
const std::vector<uint32_t>& mask2 = {}) = 0;
};
}
}
Expand Down
6 changes: 3 additions & 3 deletions interfaces/api/features/IImageMatcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ class [[xpcf::clientUUID("0fcb5bf1-7251-4c7d-a3cc-3da7b4c306f4")]] [[xpcf::serve
} // end of namespace SolAR

XPCF_DEFINE_INTERFACE_TRAITS(SolAR::api::features::IImageMatcher,
"157ec340-0682-4e6c-bf69-e4d95fa760d3",
"IImageMatcher",
"IImageMatcher interface description");
"157ec340-0682-4e6c-bf69-e4d95fa760d3",
"IImageMatcher",
"IImageMatcher interface description");

#endif // IIMAGEMATCHER_H
6 changes: 4 additions & 2 deletions interfaces/api/features/IMatchesFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,16 @@ namespace features {
/// @param[in] Original keypoints associated to desc_2.
/// @param[in] camera pose 1.
/// @param[in] camera pose 2.
/// @param[in] camera's intrinsic parameters.
/// @param[in] first camera's intrinsic parameters.
/// @param[in] second camera's intrinsic parameters.
virtual void filter(ATTRIBUTE(maybe_unused) const std::vector<SolAR::datastructure::DescriptorMatch> & inputMatches,
ATTRIBUTE(maybe_unused) std::vector<SolAR::datastructure::DescriptorMatch> & outputMatches,
ATTRIBUTE(maybe_unused) const std::vector<SolAR::datastructure::Keypoint> & inputKeyPoints1,
ATTRIBUTE(maybe_unused) const std::vector<SolAR::datastructure::Keypoint> & inputKeyPoints2,
ATTRIBUTE(maybe_unused) const SolAR::datastructure::Transform3Df &pose1,
ATTRIBUTE(maybe_unused) const SolAR::datastructure::Transform3Df &pose2,
ATTRIBUTE(maybe_unused) const SolAR::datastructure::CamCalibration &intrinsicParams) {};
ATTRIBUTE(maybe_unused) const SolAR::datastructure::CamCalibration &intrinsicParams1,
ATTRIBUTE(maybe_unused) const SolAR::datastructure::CamCalibration &intrinsicParams2 = SolAR::datastructure::CamCalibration::Zero()) {};
};
}
}
Expand Down
21 changes: 10 additions & 11 deletions interfaces/api/geom/IProject.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,28 +42,27 @@ class [[xpcf::clientUUID("64351b8a-7801-4ca9-841f-a4254506abc3")]] [[xpcf::serve
/// @brief I3DTransform default destructor
virtual ~IProject() = default;

/// @brief this method is used to set intrinsic parameters and distorsion of the camera
/// @param[in] intrinsicParams camera calibration matrix parameters.
/// @param[in] distorsionParams camera distorsion parameters.
virtual void setCameraParameters(const SolAR::datastructure::CamCalibration & intrinsicParams, const SolAR::datastructure::CamDistortion & distorsionParams) = 0;

/// @brief This method project a set of 3D points in the image plane
/// @param[in] inputPoints the set of 3D points to project
/// @param[out] imagePoints the resulting set of 2D points defined in the image coordinate systemn
/// @param[in] pose the 3D pose of the camera (a 4x4 float matrix)
/// @param[in] camParams the camera parameters.
/// @param[out] imagePoints the resulting set of 2D points defined in the image coordinate systemn
/// @return FrameworkReturnCode::_SUCCESS_ if 3D projection succeed, else FrameworkReturnCode::_ERROR.
virtual FrameworkReturnCode project(const std::vector<SolAR::datastructure::Point3Df> & inputPoints,
std::vector<SolAR::datastructure::Point2Df> & imagePoints,
const SolAR::datastructure::Transform3Df& pose = SolAR::datastructure::Transform3Df::Identity()) = 0;
const SolAR::datastructure::Transform3Df& pose,
const SolAR::datastructure::CameraParameters & camParams,
std::vector<SolAR::datastructure::Point2Df> & imagePoints) = 0;

/// @brief This method project a set of 3D cloud points in the image plane
/// @param[in] inputPoints the set of 3D cloud points to project
/// @param[out] imagePoints the resulting set of 2D points defined in the image coordinate systemn
/// @param[in] pose the 3D pose of the camera (a 4x4 float matrix)
/// @param[in] camParams the camera parameters.
/// @param[out] imagePoints the resulting set of 2D points defined in the image coordinate systemn
/// @return FrameworkReturnCode::_SUCCESS_ if 3D projection succeed, else FrameworkReturnCode::_ERROR.
virtual FrameworkReturnCode project(const std::vector<SRef<SolAR::datastructure::CloudPoint>> & inputPoints,
std::vector<SolAR::datastructure::Point2Df> & imagePoints,
const SolAR::datastructure::Transform3Df& pose = SolAR::datastructure::Transform3Df::Identity()) = 0;
const SolAR::datastructure::Transform3Df& pose,
const SolAR::datastructure::CameraParameters & camParams,
std::vector<SolAR::datastructure::Point2Df> & imagePoints) = 0;


};
Expand Down
Loading

0 comments on commit 21032db

Please sign in to comment.