Git Product home page Git Product logo

ekf-monoslam_for_3d-reconstruction's Introduction

EKF-MonoSLAM for 3D reconstruction

EKF stands for Extended Kalman Filter and MonoSLAM stands for Monocular Simultaneous Localization and Mapping. This project is the first part for the code of a complete project for 3D reconstuction, the second part source code is here. the output from this part should be taken as input for 3D reconstruction (second part).

For the MonoSLAM part, the project from here was used as backbone to this work.

Notes:

  • for some of the jacobian calculation there's a Jupyter notebook explaining the result with the use of Sympy , to confirm the used formula, here

If you use this project in your work, you can cite this reference here [bib]:

@Inbook{Yousif2021,
      author="Yousif, Yasin Maan and Hatem, Iyad",
      editor="Koubaa, Anis",
      title="Video Frames Selection Method for 3D Reconstruction Depending on ROS-Based Monocular SLAM",
      bookTitle="Robot Operating System (ROS): The Complete Reference (Volume 5)",
      year="2021",
      publisher="Springer International Publishing",
      address="Cham",
      pages="351--380",
      doi="10.1007/978-3-030-45956-7_11",
      url="https://doi.org/10.1007/978-3-030-45956-7_11"
}

How to install and make

This is a ROS project and it can be installed simply by placing the files in the source directory of the workspace. it has the following requirements:

Usage

After putting the source in workspace and making the project with catkin_make open the following terminals:

Terminal 1 (Simulation):

$ roslaunch turtlebot_gazebo turtlebot_world.launch world_file:="../some_world9.world"

the .world file in the root of the workspace

Terminal 2 (Keyboard control):

$ roslaunch turtlebot_teleop keyboard_teleop.launch

Terminal 3 (Kalman Filter):

$ source ./devel/setup.bash
$ roslaunch mono_slam_sim.launch

This launch file is in the root of workspace.

Terminal 4 (sparse 3D reconstruction):

After runinng the previous command , the keyboard must be used to move the robot around the object.

When it ends moving, the images and nodes_and_prjs.txt file should be taken to the second program directory. From these results, a 5th terminal should be opened to run an optimzation process.

Terminal 5 (Sparse bundle Adjustment):

SBA requires moving the files, NodesProjs and PointsNew to the ROS root directory (usually in .ros folder) and then running

$ roslaunch sba_1.launch

Terminal 6 (Dense 3D reconstruction):

Lastly after SBA process ends, Nodes_Out.txt should be renamed to nodes_and_prjs.txt and a 3d reconstruction program in dense mode is run by the command:

$ python main_3d.py

Example Videos:

Many parts of the running of the project are recorded in short videos (less than 1 minute each) in this playlist

ekf-monoslam_for_3d-reconstruction's People

Contributors

engyasin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

yrsns

ekf-monoslam_for_3d-reconstruction's Issues

Error compiling mono-slam

Hi,

I am not able to compile this using catkin_make. The mono-slam node is throwing error:
Not sure why its not able to find ros libraries because I can see that catkin required packages are there in the CMakeList.


[  0%] Building CXX object mono-slam/CMakeFiles/mono-slam.dir/src/vslamRansac.cpp.o
/home/arav/catkin_ws/src/mono-slam/src/monoslam_ransac.cpp:1:21: fatal error: ros/ros.h: No such file or directory
compilation terminated.
mono-slam/CMakeFiles/mono-slam.dir/build.make:62: recipe for target 'mono-slam/CMakeFiles/mono-slam.dir/src/monoslam_ransac.cpp.o' failed
make[2]: *** [mono-slam/CMakeFiles/mono-slam.dir/src/monoslam_ransac.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/home/arav/catkin_ws/src/mono-slam/src/vslamRansac.cpp:4:21: fatal error: ros/ros.h: No such file or directory
compilation terminated.
mono-slam/CMakeFiles/mono-slam.dir/build.make:86: recipe for target 'mono-slam/CMakeFiles/mono-slam.dir/src/vslamRansac.cpp.o' failed
make[2]: *** [mono-slam/CMakeFiles/mono-slam.dir/src/vslamRansac.cpp.o] Error 1
CMakeFiles/Makefile2:1577: recipe for target 'mono-slam/CMakeFiles/mono-slam.dir/all' failed
make[1]: *** [mono-slam/CMakeFiles/mono-slam.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[  0%] Built target _velodyne_msgs_generate_messages_check_deps_VelodyneScan
[  0%] Built target _velodyne_msgs_generate_messages_check_deps_VelodynePacket
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j3" failed

Can you help with this? Thanks.

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.