Giter Club home page Giter Club logo

door-slam's Introduction

Check out our latest work on Collaborative Multi-Robot SLAM! https://github.com/MISTLab/Swarm-SLAM

DOOR-SLAM

Read the paper! Code documentation here!

If you reuse parts of this work, please cite:

P.-Y. Lajoie, B. Ramtoula, Y. Chang, L. Carlone, and G. Beltrame, “DOOR-SLAM: Distributed, Online, and Outlier Resilient SLAM for Robotic Teams,” IEEE Robotics and Automation Letters, vol. 5, no. 2, pp. 1656–1663, Apr. 2020, doi: 10.1109/LRA.2020.2967681.

BibTex:

@ARTICLE{Lajoie2020DOORSLAM,  
author={P. {Lajoie} and B. {Ramtoula} and Y. {Chang} and L. {Carlone} and G. {Beltrame}},  
journal={IEEE Robotics and Automation Letters},   
title={DOOR-SLAM: Distributed, Online, and Outlier Resilient SLAM for Robotic Teams},   
year={2020},  
volume={5},  
number={2},  
pages={1656-1663},}

door-slam's People

Contributors

beltrame avatar bramtoula avatar lajoiepy avatar tylerferrara 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

door-slam's Issues

Question about testing on KITTI

hello,
I've read your paper, in which you mentioned your project has been tested on KITTI, but as far as I know, KITTI only provides with one trajectory(one car perspective). Would you mind teaching me how to build multi vechiles(drones) method, or just manully split the whole rosbag into serveral parts with overlapping area ?

Thank u for ur attention~

Is that possible to test it with MacOS and Docker?

Hi there, thank you for sharing this project. I tested on my MacBook, then I realized X11Docker doesn't support macOS. I have a dumb question: is there anyone in your team using Docker + macOS to test it? If it's doable I think I will do some effort to make it work otherwise I am switching to Windows/Linux.

where is the SLAM framework

Sorry,I didn't saw the SLAM framework in this code,forexample,where is the method of extract feature point...And is the code complete? Is the project based on C++? I hope I will receive a reply as soon as possible..THANK U VERY VERY VERY MUCH!!!

Question about launch command 'blabbermouth2'

Hello?

I think DOOR SLAM can help me a lot with my research, so I'm studying.
But I'm having trouble running the code, so I'm leaving a message

I was planning to run this code to two TX2 boards and KITTI Dataset, and I finished setting it up by looking at the Quick Setup you wrote.
However, there was a problem running 'A typical sequence' after setting aliases and parameters.

I typed 'docker_bash' in two TX2 terminals, and the container was created. And the following error occurred while performing blabbermouth2 in Robot1.

error

I think there was a problem during the porting process of the container created in TX2. However, I tried many ways, but I couldn't solve the problem.

How can I solve this problem?

QXcbConnection: XCB error: 13

I'm trying to run the simulation, but it keeps aborting with this message:

QXcbConnection: XCB error: 13 (BadGC), sequence: 615, resource id: 0, major code: 72 (PutImage), minor code: 0
vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)

the sequence varies, but the rest was the same in all tries. Am I supposed to configure something between running the command line and hitting the "play experiment" button?

Thanks in advance!

Why is RANSAC works well in centralized setting?

Hi @lajoiepy! Great work of you guys!

I'm recently reading your paper "Towards Collaborative Simultaneous Localization and Mapping: a Survey of the Current Research Landscape", which is really inspiring.

But I have one question, in the section 5.4 of the paper, you mentioned "While RANSAC works well in centralized settings, it is not adapted to distributed systems" , I got confused by this, I think there is no difference between centralized and distributed systems in terms of RANSAC procedure.

Could you please explain why is that?

How could I set up the 3 robot SLAM?

Hi, the 3 robot experiment you show in your ICRA paper is impressive, but it seems that there are only launch file for two robots in the multi_distributed_SLAM_module. Could you please also release the launch file for 3 robots, or is there any method to reach the 3 robot result with the present code?

h: No such file or directory #include <loop_closure_transform/ReceiveLoopClosures.h>

Hello!

when I installed BUZZ-SLAM,i got a problem like
"In file included from /home/docker/robust_distributed_slam_simulation/Buzz_SLAM/src/generic_robot/buzz_generic_robot_slam_ros.cpp:3:0:
/home/docker/robust_distributed_slam_simulation/Buzz_SLAM/src/generic_robot/message_handler_utils/message_handler_utils.h:7:10: fatal error: loop_closure_transform/ReceiveLoopClosures.h: No such file or directory
#include <loop_closure_transform/ReceiveLoopClosures.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
CMakeFiles/generic_robot_buzz_slam_node.dir/build.make:158: recipe for target 'CMakeFiles/generic_robot_buzz_slam_node.dir/generic_robot/buzz_generic_robot_slam_ros.cpp.o' failed
make[2]: *** [CMakeFiles/generic_robot_buzz_slam_node.dir/generic_robot/buzz_generic_robot_slam_ros.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/generic_robot_buzz_slam_node.dir/all' failed
make[1]: *** [CMakeFiles/generic_robot_buzz_slam_node.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2"
And i found the file buzz-slam has been updated by the author,so i changed it to the lastest one.But the name of this file changed from "buzz-slam" to "Buzz-SLAM". i tried to rewrite its name to "buzz-slam",but i got the same error .

Looking forward to your reply!!!

ps:
proplem

Question in launching container

Hello!
I have read your paper and try to run multi-robot slam simulation. When i follow the step 2--launch container from https://mistlab.ca/DOOR-SLAM/simulation.html, it seems stuck at mid of somewhere.
question
After "x11docker note: Found 'WORKDIR /home/docker/robust_distributed_slam_simulation/argos_simulation' in image.
You can change it with option --workdir=DIR.", the program doesn't seem run anymore or it's stuck. Which step may i had mistakes? And what should i do now? Thanks for your reply!!!!

build bug

Hi.When I run the dockerfile in simulation I get an error reporting(in appendix1), To solve this error I added the command of
build commulti_robot_separators to the dockerfile .However, when i run the dockerfile again.I received much errors(in appendix2)..I have not been able to solve the problem for a long time.Looking forward to your reply,thanks very much!!
Appendix1:
[ 6%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/slam/buzz_slam.cpp.o
[ 9%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/slam/buzz_slam_closures.cpp.o
[ 12%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/slam/specialized/ros/buzz_slam_ros_closures.cpp.o
[ 15%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/slam/specialized/ros/buzz_slam_ros.cpp.o
[ 18%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/generic_robot/buzz_generic_robot_slam_ros.cpp.o
In file included from /home/docker/robust_distributed_slam_simulation/buzz_slam/src/generic_robot/buzz_generic_robot_slam_ros.cpp:3:0:
/home/docker/robust_distributed_slam_simulation/buzz_slam/src/generic_robot/message_handler_utils/message_handler_utils.h:6:10: fatal error: multi_robot_separators/ReceiveSeparators.h: No such file or directory
#include <multi_robot_separators/ReceiveSeparators.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/generic_robot_buzz_slam_node.dir/generic_robot/buzz_generic_robot_slam_ros.cpp.o] Error 1
CMakeFiles/generic_robot_buzz_slam_node.dir/build.make:158: recipe for target 'CMakeFiles/generic_robot_buzz_slam_node.dir/generic_robot/buzz_generic_robot_slam_ros.cpp.o' failed
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/generic_robot_buzz_slam_node.dir/all' failed
make[1]: *** [CMakeFiles/generic_robot_buzz_slam_node.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
The command '/bin/sh -c cd /home/docker/robust_distributed_slam_simulation/buzz_slam && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug -Wno-dev ../src && make && make install' returned a non-zero code: 2

Appendix2:

/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:215:52: error: invalid cast from type 'cv::Size {aka cv::Size_}' to type 'int'
(int)fromSignature.getWordsDescriptors().size(),
^
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/ULogger.h:51:89: note: in definition of macro 'ULOGGER_LOG'
#define ULOGGER_LOG(level, ...) ULogger::write(level, FILE, LINE, FUNCTION, VA_ARGS)
^~~~~~~~~~~
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/ULogger.h:59:23: note: in expansion of macro 'ULOGGER_DEBUG'
#define UDEBUG(...) ULOGGER_DEBUG(VA_ARGS)
^~~~~~~~~~~~~
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:211:2: note: in expansion of macro 'UDEBUG'
UDEBUG("Input(%d): %d words, %d 3D words, %d words descriptors, %d kpts, %d kpts3D, %d descriptors, image=%dx%d",
^
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:246:39: error: no match for 'operator==' (operand types are 'std::multimap<int, int>::size_type {aka long unsigned int}' and 'cv::Size {aka cv::Size_}')
fromSignature.getWords().size() == fromSignature.getWordsDescriptors().size() ||
error: no matching function for call to 'uMultimapToMapUnique(const std::vector<cv::Point3_ >&)'
uMultimapToMapUnique(signatureB->getWords3()),
^
In file included from /multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:43:0:
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: candidate: template<class K, class V> std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V>&)
inline std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V> & m)
^~~~~~~~~~~~~~~~~~~~
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: template argument deduction/substitution failed:
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2576:53: note: 'const std::vector<cv::Point3_ >' is not derived from 'const std::multimap<K, V>'
uMultimapToMapUnique(signatureB->getWords3()),
^
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2613:52: error: no matching function for call to 'uMultimapToMapUnique(const std::vector<cv::Point3_ >&)'
uMultimapToMapUnique(signatureA->getWords3()),
^
In file included from /multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:43:0:
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: candidate: template<class K, class V> std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V>&)
inline std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V> & m)
^~~~~~~~~~~~~~~~~~~~
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: template argument deduction/substitution failed:
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2613:52: note: 'const std::vector<cv::Point3_ >' is not derived from 'const std::multimap<K, V>'
uMultimapToMapUnique(signatureA->getWords3()),
^
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2614:52: error: no matching function for call to 'uMultimapToMapUnique(const std::vector<cv::Point3_ >&)'
uMultimapToMapUnique(signatureB->getWords3()),
^
In file included from /multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:43:0:
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: candidate: template<class K, class V> std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V>&)
inline std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V> & m)
^~~~~~~~~~~~~~~~~~~~
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: template argument deduction/substitution failed:
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2614:52: note: 'const std::vector<cv::Point3_ >' is not derived from 'const std::multimap<K, V>'
uMultimapToMapUnique(signatureB->getWords3()),
^
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2785:58: error: 'const class std::vector<cv::Point3_ >' has no member named 'find'; did you mean 'end'?
const cv::Point3f & pt3D = fromSignature.getWords3().find(wordId)->second;
^~~~
end
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2792:72: error: invalid initialization of reference of type 'const cv::KeyPoint&' from expression of type 'const int'
const cv::KeyPoint & kpt = fromSignature.getWords().find(wordId)->second;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2798:33: error: 'const class std::vector<cv::Point3_ >' has no member named 'find'; did you mean 'end'?
if(toSignature.getWords3().find(wordId) != toSignature.getWords3().end())
^~~~
end
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2800:64: error: 'const class std::vector<cv::Point3_ >' has no member named 'find'; did you mean 'end'?
depthTo = util3d::transformPoint(toSignature.getWords3().find(wordId)->second, invLocalTransformTo).z;
^~~~
end
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2802:70: error: invalid initialization of reference of type 'const cv::KeyPoint&' from expression of type 'const int'
const cv::KeyPoint & kpt = toSignature.getWords().find(wordId)->second;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
multi_robot_separators/CMakeFiles/multi_robot_separators.dir/build.make:86: recipe for target 'multi_robot_separators/CMakeFiles/multi_robot_separators.dir/src/myRegistrationVis.cpp.o' failed
make[2]: *** [multi_robot_separators/CMakeFiles/multi_robot_separators.dir/src/myRegistrationVis.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:3621: recipe for target 'multi_robot_separators/CMakeFiles/multi_robot_separators.dir/all' failed
make[1]: *** [multi_robot_separators/CMakeFiles/multi_robot_separators.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

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.