Code Monkey home page Code Monkey logo

saiga's Introduction

SAIGA

Saiga is a lightweight utility and rendering framework. It supports all major desktop operating systems and provides OpenGL and Vulkan rendering backends. Saiga was successfully used as a game engine for Redie and in many privat and university projects.

History

  • January 2014: Development start as a private OpenGL framework for university projects.
  • September 2015: The name SAIGA was chosen as a reference to the saiga antelope.
  • April 2014 - December 2016: Development of the game Redie. In this time most of SAIGA's functionality was added so it could be used as a lightweight game engine.
  • January 2017 - August 2017: Increased usability and documentation in preparation of the open source release.
  • August 2017: Open-Source Release.
  • September 2018: Experimental Vulkan support.
  • December 2018: Added Vision module with focus on SLAM, Reconstruction, Registration, and Optimization

Supported Compilers

  • g++ 8.2
  • Visual Studio 2017
  • clang++ 7.0
Master Experimental
Build Status Build Status

Required Dependencies

Optional Dependencies

Window creation and GL-Context managment

Sound loading and playback

Video Recording

Model Loading

Image/Font loading

Utility

Vulkan

Building + Running the samples

Building With Submodules

sudo apt install xorg-dev

git clone [email protected]:darglein/saiga.git
git submodule update --init --recursive

Linux

  • Install dependencies with the package manager (in older Linux systems you might have to compile the latest library versions by yourself)

    Package names for Ubuntu and other Debian-based distributions. Install these with sudo apt install <package_name>

# Window Management
libglfw3-dev

# Image
libpng-dev libfreeimage-dev libfreeimageplus-dev

# Sound
libopenal-dev libopus-dev libopusfile-dev

# Video 
libavutil-dev libavcodec-dev libavresample-dev libswscale-dev libavformat-dev

# Other Misc
libassimp-dev 
libeigen3-dev 
libsuitesparse-dev
libfreetype6-dev
  • Build Saiga
cd saiga
mkdir build
cd build
cmake ..
make

License

SAIGA is licensed under the MIT License. See LICENSE file for more information.

saiga's People

Contributors

darglein avatar dings3 avatar kunitsyn avatar lfranke avatar muetimueti avatar pardinensis avatar paul-hi avatar petereichinger avatar pkurth avatar simonmederer avatar xenexi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

saiga's Issues

A cmake configuration problem

An error occurred when I configured snake-slam

Snake-SLAM-master/External/saiga/tests/test_vision_tsdf.cpp: In member function ‘virtual void Saiga::TSDF_Create_Test::TestBody()’:
Snake-SLAM-master/External/saiga/tests/test_vision_tsdf.cpp:93:52: error: no match for ‘operator=’ (operand types are ‘Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>’ and ‘Saiga::UnifiedMesh’)
93 | test->mesh = test->tsdf->CreateMesh(tris, false);
| ^
In file included from Snake-SLAM-master/External/saiga/src/saiga/core/geometry/all.h:15,
Snake-SLAM-master/External/saiga/src/saiga/core/Core.h:13,
Snake-SLAM-master/External/saiga/tests/test_vision_tsdf.cpp:6:
Snake-SLAM-master/External/saiga/src/saiga/core/geometry/triangle_mesh.h:29:7: note: candidate: ‘Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>& Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>::operator=(const Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>&)’
29 | class TriangleMesh : public Mesh<vertex_t>
| ^~~~~~~~~~~~
Snake-SLAM-master/External/saiga/src/saiga/core/geometry/triangle_mesh.h:29:7: note: no known conversion for argument 1 from ‘Saiga::UnifiedMesh’ to ‘const Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>&’
Snake-SLAM-master/External/saiga/src/saiga/core/geometry/triangle_mesh.h:29:7: note: candidate: ‘Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>& Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>::operator=(Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>&&)’
Snake-SLAM-master/External/saiga/src/saiga/core/geometry/triangle_mesh.h:29:7: note: no known conversion for argument 1 from ‘Saiga::UnifiedMesh’ to ‘Saiga::TriangleMesh<Saiga::VertexNC, unsigned int>&&’

make error

when i use 39b5a8a to make, i meet 3 problem;
First cmake error! In tests/CMakeLists.txt: cmake_policy(SET CMP0104 OLD)
and then, i solve this problem by change this line to:
if(POLICY CMP0104)
cmake_policy(SET CMP0104 OLD)
endif()
second cmake success, but make error: fatal error: sophus/se3.hpp: No such file or directory
18 | # include "sophus/se3.hpp"
then I solve this line by change the code in SophusSelector.h:
// #ifdef SAIGA_SYSTEM_SOPHUS
// # include "sophus/se3.hpp"
// # include "sophus/sim3.hpp"
// #else
#include "External/se3.hpp"
#include "External/sim3.hpp"
// #endif
third i met error:
Snake-SLAM/External/saiga/src/saiga/vision/imu/DecoupledImuSolver.cpp:117:12: error: ‘using PGOSolver = struct Eigen::Recursive::MixedSymmetricRecursiveSolver<Eigen::SparseMatrix<Eigen::Recursive::MatrixScalar<Eigen::Matrix<double, 9, 9> >, 1>, Eigen::Matrix<Eigen::Recursive::MatrixScalar<Eigen::Matrix<double, 9, 1, 0, 9, 1> >, -1, 1> >’ {aka ‘struct Eigen::Recursive::MixedSymmetricRecursiveSolver<Eigen::SparseMatrix<Eigen::Recursive::MatrixScalar<Eigen::Matrix<double, 9, 9> >, 1>, Eigen::Matrix<Eigen::Recursive::MatrixScalar<Eigen::Matrix<double, 9, 1, 0, 9, 1> >, -1, 1> >’} has no member named ‘Init’
117 | solver.Init();
| ^~~~

but i don't know how to solve this problem

Is the snake-slam code content uploaded correctly?

@darglein
Thank you very much for your work, I read the snake-slam paper and thought it was great, but when I compile the program, there are various errors, some internal errors, such as in SnakeGlobal.h:
using Vec4f = Saiga::Vec4f;

using Vec3f = Saiga::Vec3f;

using Vec2f = Saiga::Vec2f;
error: no type named 'Vec4f' in namespace 'Saiga'
Next:
inline Intrinsics4& K = mono_intrinsics.model.K;
error: unknown type name 'Intrinsics4'
Intrinsics4 is a file name, but it is used as a definition variable in the program, which is obviously wrong. I changed it to the following:
inline IntrinsicsPinholed& K = mono_intrinsics.model.K;
The program runs normally

In addition to these bugs, there are some bugs in FeatureDetector.h and FeatureDetector.cpp. So I would like to ask, is your program uploading the full version or the correct version?
Had very high expectations for the snake-slam framework because of your paper and seeing your framework in a SenseTime competition, but the bugs did disappoint me a bit,so looking forward to your early reply!

Vulkan support broken

Compiling saiga with Vulkan support and then linking a program against saiga raises the following errors:

1st: cmake error:
Target "agphys" links to target "Vulkan::Vulkan" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?

2nd: linker error:
/usr/bin/ld: cannot find -lVulkan::Vulkan

version used: a42470a

A current workaround is to disable Vulkan when compiling saiga.

Question on Sim3 PoseGraph Optimization with Ceres

Hi there,

Impressive work! As I have seen that you have been dealing with PGO using ceres along with sophus based Sim3, I was wondering if you had any tips to share here? I have seen that you have turned to the use of DSim3 for PGO, is the use of such decoupled representation enough to make it compliant with ceres's way of computing gradient? Or is it mandatory to modify the gradient computation in ceres to keep it on the lie algebra space and avoid huge gradients?

Thanks!

CUDA 12 Updates

Example edits for updating to CUDA 12:

Update cuda/pinned_vector.h:
Thrust pinned memory in CUDA 12.0

Update cuda/imageProcessing/scale.cu:
Fix CUDA texture bugs and replace all instances of CUDA texture references with texture objects

There may be an easier way on texture intrisics but I don't know it at the moment.

Other unrelated updates for a newer build on ubuntu mantic:

Update shader/compute/compute_blur.glsl:
but texture2D and texture calls are mixed.

stdint.h is missing in many files.

compilation error with bullet installed

OS: Debian Buster (x86_64)
Version: 1af9c42

If libbullet-dev is installed compilation will fail:

[ 83%] Building CXX object samples/opengl/simpleBullet/CMakeFiles/opengl_simpleBullet.dir/bulletDebugDrawer.cpp.o
/tmp/saiga/samples/opengl/simpleBullet/bulletDebugDrawer.cpp: In constructor ‘Saiga::GLDebugDrawer::GLDebugDrawer()’:
/tmp/saiga/samples/opengl/simpleBullet/bulletDebugDrawer.cpp:13:32: error: ‘instance’ is not a member of ‘Saiga::ShaderLoader’
     lineShader = ShaderLoader::instance()->load<MVPShader>("geometry/deferred_mvp_model_forward.glsl");
                                ^~~~~~~~
/tmp/saiga/samples/opengl/simpleBullet/bulletDebugDrawer.cpp:13:58: error: expected primary-expression before ‘>’ token
     lineShader = ShaderLoader::instance()->load<MVPShader>("geometry/deferred_mvp_model_forward.glsl");

Removing bullet or forcefully disabling it in the cmake files will make it work again (which I guess isn't the most appropriate long term solution).

DatasetViewer does not compile

When enabling samples in the CMakeLists "DatasetViewer" will not compile:

 97%] Building CXX object samples/vision/datasetViewer/CMakeFiles/vision_datasetViewer.dir/DatasetViewer.cpp.o
/var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp: In member function ‘virtual void Sample::renderFinal(Saiga::Camera*)’:
/var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:142:41: error: ‘EuRoCDataset’ was not declared in this scope
         stereocamera = std::make_unique<EuRoCDataset>(dparams);
                                         ^~~~~~~~~~~~
/var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:142:62: error: no matching function for call to ‘make_unique<<expression error> >(Saiga::DatasetParameters&)’
         stereocamera = std::make_unique<EuRoCDataset>(dparams);
                                                              ^
In file included from /usr/include/c++/8/memory:80,
                 from /var/tmp/saiga/src/saiga/core/geometry/triangle_mesh_generator.h:13,
                 from /var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.h:11,
                 from /var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:9:
/usr/include/c++/8/bits/unique_ptr.h:830:5: note: candidate: ‘template<class _Tp, class ... _Args> typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...)’
     make_unique(_Args&&... __args)
     ^~~~~~~~~~~
/usr/include/c++/8/bits/unique_ptr.h:830:5: note:   template argument deduction/substitution failed:
/var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:142:62: error: template argument 1 is invalid
         stereocamera = std::make_unique<EuRoCDataset>(dparams);
                                                              ^
In file included from /usr/include/c++/8/memory:80,
                 from /var/tmp/saiga/src/saiga/core/geometry/triangle_mesh_generator.h:13,
                 from /var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.h:11,
                 from /var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:9:
/usr/include/c++/8/bits/unique_ptr.h:836:5: note: candidate: ‘template<class _Tp> typename std::_MakeUniq<_Tp>::__array std::make_unique(std::size_t)’
     make_unique(size_t __num)
     ^~~~~~~~~~~
/usr/include/c++/8/bits/unique_ptr.h:836:5: note:   template argument deduction/substitution failed:
/var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:142:62: error: template argument 1 is invalid
         stereocamera = std::make_unique<EuRoCDataset>(dparams);
                                                              ^
In file included from /usr/include/c++/8/memory:80,
                 from /var/tmp/saiga/src/saiga/core/geometry/triangle_mesh_generator.h:13,
                 from /var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.h:11,
                 from /var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:9:
/usr/include/c++/8/bits/unique_ptr.h:842:5: note: candidate: ‘template<class _Tp, class ... _Args> typename std::_MakeUniq<_Tp>::__invalid_type std::make_unique(_Args&& ...)’ <deleted>
     make_unique(_Args&&...) = delete;
     ^~~~~~~~~~~
/usr/include/c++/8/bits/unique_ptr.h:842:5: note:   template argument deduction/substitution failed:
/var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:142:62: error: template argument 1 is invalid
         stereocamera = std::make_unique<EuRoCDataset>(dparams);
                                                              ^
/var/tmp/saiga/samples/vision/datasetViewer/DatasetViewer.cpp:146:22: error: ‘EuRoCDataset’ is not a class, namespace, or enumeration
         cameraType = EuRoCDataset::FrameType::cameraType;
                      ^~~~~~~~~~~~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.