Git Product home page Git Product logo

draco-slam's Introduction

DRACo-SLAM

Distributed Robust Acoustic Communication-efficient SLAM for Imaging Sonar Equipped Underwater Robot Teams

Welcome! This repo contains the code for DRACo-SLAM, a distributed multi-robot SLAM system for underwater robots using imaging sonar for perception. This system is based on our single agent slam system, extending it to estimate each robot's pose but also the poses of team members. Real data is used with simulated communications. For more information on the single agent SLAM system, see this repo. Note that the single agent SLAM system uses DVL, IMU, and imaging sonar.

Detailed documentation on the DRACo-SLAM system can be found in the DRACo-SLAM folder and paper.

Sensor overview

Our vehicle is documented in this repo https://github.com/jake3991/Argonaut.git. The highlights are the following pieces of hardware.

  • Occulus M750d imaging sonar
  • Rowe SeaPilot DVL
  • Vectornav 100 MEMS IMU
  • Bar30 pressure sensor
  • KVH-DSP-1760 fiber optic gyroscope (optional)

Python Dependencies, note python-3

cv_bridge
gtsam
matplotlib
message_filters
numpy
opencv_python
rosbag
rospy
scikit_learn
scipy
sensor_msgs
Shapely
tf
tqdm
pyyaml

ROS Dependencies

ROS-noetic
catkin-pybind11
catkin-tools

Installation

Sample data

Link to sample data: https://drive.google.com/file/d/1FyQxVwVZbaGT_OypRuzX4nm1dPCfsJh5/view?usp=sharing

Running "Online"

This will launch the SLAM system, and then we will playback the data as if it is happening now. Note the launch file slam.launch will launch a team of three vehicles.

  • source catkin_ws/devel/setup.bash
  • roslaunch draco_slam slam.launch
  • rosbag play your_data.bag

Configuration

This multi-robot SLAM system has many parameters. Please review the readme in the draco_slam folder for an explanation of each parameter. However, we highly recommend using the default parameters in the config folder. Tune at your own risk.

Presentation

For a high-level overview of this systems functionality, see the presentation video here LINK NEEDED on my YouTube channel.

Citation

Paper arxiv link: https://arxiv.org/abs/2210.00867

@inproceedings{
  title={DRACo-SLAM: Distributed Robust Acoustic Communication-efficient SLAM for Imaging Sonar Equipped Underwater Robot Teams},
  author={John McConnell, Yewei Huang, Paul Szenher, Ivana Collado-Gonzalez and Brendan Englot},
  booktitle={International Conference on Intelligent Robots and Systems (IROS),
  year={2022},
  organization={IEEE/RSJ}
}

draco-slam's People

Contributors

jake3991 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

Watchers

 avatar

draco-slam's Issues

some problems

Hello, thank you for your contribution. I encountered some problems when I reappeared your work recently, and I look forward to your reply.
First of all, in the dead_reckoning.py file, it seems that you don't have the initialization parameter self.rov_id, which makes it impossible to correctly publish the transformation from odom coordinate system to base_link coordinate system of each robot.
Next,when I run roslaunch draco_slam slam.launch, I open a new terminal to run roabag play sample_data_three_robot.bag, and it displays "unknown frame world" in rviz.
However, the launch file of each rov has the following definition: .
Why is it wrong to report "unknown frame world"? I would appreciate it if you could give me some advice.

RuntimeError: Indeterminant linear system detected while working near variable8791026472627208192 (Symbol: z0).

Hello! Thank you very much for your work. When I successfully compiled and ran this demo, the terminal reported an error:
draco_slam/src/draco_slam/multi_robot_slam.py", line 1320, in merge_trajectory
isam.update(graph, values)
RuntimeError: Indeterminant linear system detected while working near variable8791026472627208192 (Symbol: z0).
Thrown when a linear system is ill-posed. The most common cause for this error is having underconstrained variables. Mathematically, the system is underdetermined.
Is this error due to a problem with the ros packet? Or is there something wrong with the parameters? I don't know how to modify it. I would appreciate it if you could answer my question.
Looking forward to your reply

Error in running dataset

Thank you very much for your work, but I have a question.The terminal running roslaunch will report an error when I run the data set sample _ data _ three _ robot.bag. The error content is: [rov_two/rov_two_feature_extraction-7] process has died [pid 39565, exit code -11, cmd /home/xlx/aa_ws/src/draco_slam/scripts/feature_extraction_node.py __name:=rov_two_feature_extraction __log:=/home/xlx/.ros/log/e61706d4-f1b3-11ee-a4c2-2997702f1df1/rov_two-rov_two_feature_extraction-7.log]. What is the reason? I have been debugging the code and failed to solve it.

index entry for topic/ROV _ one/RTI/body _ velocity/rawcontains invalid time

Hello, thank you very much for your work, but I have a problem when running this project, as follows: When I run rosbag playsample _ data _ three _ robot.bag, I get an error: Error: index entry for topic/ROV _ one/RTI/body _ velocity/rawcontains invalid time. This message will not be loaded.
at line 651 in /tmp/binarydeb/ros-noetic-rosbag-storage-1.16.0/src/bag.cpp
Error: Index entry for topic /rov_two/vn100/imu/raw contains invalid time. This message will not be loaded.
at line 651 in /tmp/binarydeb/ros-noetic-rosbag-storage-1.16.0/src/bag.cpp
Error: Index entry for topic /rov_three/vn100/imu/raw contains invalid time. This message will not be loaded.
at line 651 in /tmp/binarydeb/ros-noetic-rosbag-storage-1.16.0/src/bag.cpp

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.