# DEMOD **Repository Path**: nie_xun/DEMOD ## Basic Information - **Project Name**: DEMOD - **Description**: RGBD/Lidar/IMU direct SLAM - **Primary Language**: Unknown - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-09 - **Last Updated**: 2025-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Introduction The SLAM algorithm described in this chapter has the ability to receive a variety of data sources, including IMU inertial data, ordinary images, (depth images or 3D point cloud, alternative) data. This algorithm uses the visual direct method and incorporates the Euler angle forward addtive algorithm(five solutions can be chosen), effectively reducing the computational burden of the SLAM algorithm. In addition, the algorithm incorporates the gray-scale information constraint optimization of multi-frame images. ## Dependencies: OpenCV 3.4 PCL Sophus Eigen3 Pangolin 0.5 ## Usage: alternative ### Non - ROS Run the bash script in the `scripts` directory. ### ROS Launch the launch file in the `launch` directory. ## Examples https://gitee.com/nie_xun/DEMOD/blob/master/doc/tum.webm https://gitee.com/nie_xun/DEMOD/blob/master/doc/kitti.webm ## Source structure: | rviz |   | demo.rviz |   | tum.rviz | config: Save the config files, including camera parameters,     log levels, solution methods, and displays, etc. | scripts: To run the non-ROS SLAM, it can be configured to |    read raw data from a specific location, |    such as within the "data" folder. |   | cmd_kitti.sh |   | cmd.sh |   | cmd_tum.sh | src: source codes |   | Frame.cpp : Store and manage the raw image data, |   | the feature points, and the corresponding poses of each frame. |   | Jacobian.cpp : The direct-method-based solver can configure multiple solutions. |   | Log.cpp : Set log level |   | Tracker.cpp : SLAM core cpp, which read files,call solver to solve motion, show, output. |   | SetDataATrack API is the core api for SLAM. |   | View.cpp : Viewer implemented using Pangolin. | include |   | Frame.h |   | IMUFilter.h : IMU complementary integrator. |   | Jacobian.h |   | Log.h |   | Mapper.h : Map world points API. |   | Math.h : Some basic mathematical APIs. |   | Params.h : The configs. |   | PointDefinition.h : PCL point types definition. |   | Tracker.h |   | Types.h : Matrix & Vector definition. |   | Viewer.h | demo |   | demo_node.cpp : ROS Track/SLAM API. |   | demo_rgbd_tum.cpp : TUM node, which can run with tum RGBD bags. |   | imu_integration_node.cpp : IMU integrator node. |   | kitti_image_vel.cpp : KITTI node, which can run with KITTI image&laser data bags. | launch |   | demo_rgbd_tum.launch : Run with tum rgbd data. |   | imu.launch : Only launch IMU integrator node. |   | realsense_align.launch : Run using realsense D435i with align depth images. |   | realsense.launch : Run using realsense D435i with raw depth images. |   | simulation.launch | lib: The lib generated after compilation. |   | libdemo_rgbd_core.so |   | libTracker.so | output: Save the trajectories generated by SLAM | data: The raw data, which tracker can read directly. ## References: Motion Transformation Solutions based on Euler angle Perturbation Model [blog-https://blog.csdn.net/weixin_41469272/article/details/147116565](https://blog.csdn.net/weixin_41469272/article/details/147116565)