Skip to content

Latest commit

 

History

History
74 lines (58 loc) · 3.4 KB

README.md

File metadata and controls

74 lines (58 loc) · 3.4 KB

License: MIT

Distributed Byzantine-Tolerant Collabarative Mapping | Gazebo Sim

Partition-Tolerant and Byzantine-Tolerant Decision-Making for Distributed Robotic Systems with IOTA and ROS 2. Farhad Keramat, Jorge Peña Queralta, Tomi Westerlund The paper is available in our website. and also in arXiv.

If you find the code or data in this repository useful in your research, please cite our paper:

@article{keramat2022partition, 
      title="Partition-Tolerant and Byzantine-Tolerant Decision-Making for Distributed Robotic Systems with IOTA and {ROS} 2", 
      author="Farhad Keramat and Jorge {Pe\~na Queralta} and Tomi Westerlund", 
      journal="arXiv:2208.13467", 
      publisher="arXiv", 
      year="2022", 
      doi="https://doi.org/10.48550/arXiv.2208.13467"
}

Description

This ROS2 package provides a Gazebo simulation of our proposed Distributed Byzantine-Tolerant Collabarative Mapping smart contract. It is developed to demonstrate the applicabilty of collective decision making algorithm in the multi-robot system to the distributed ledger technology. This package is not intended to provide a state of the art collabarative mapping solution.

In this simulation enviornment, there are 8 Turtlebot3 (waffle) robots navigating the whole area based on a predifined path. On top of each robot a 2D lidar is installed. Based on 2D lidar data and odometry published by Gazebo we run Cartographer ros for each robot.

Finally, when each robot finished their navigation, they'll publish a message on /mapping_done topic. The controller_agent node receives these messages and send them for an python-implementation of our smart contract. We will publish the Solidity and Go implemetations for Ethereum and IOTA respectively on another repository.

Simulator Screenshot

This simulator uses parts of AUVSL / UWB-Jackal-World and Multi-robot UGVs+UAVs with UWB | Gazebo Sim.

Dependencies

You should have a full installation of ROS2 (including Gazebo + Rviz2). This package is developed and tested on foxy.

Note: If you are using another version of ROS2 replace foxy with your version.

sudo apt install ros-foxy-cartographer-ros ros-foxy-robot-state-publisher ros-foxy-turtlebot3-description ros-foxy-gazebo-ros

Installation

Create a ROS2 workspace:

mkdir -p ~/collab_mapping_ws/src
cd ~/collab_mapping_ws/src

Clone this repository:

git clone git@github:TIERS/collab_mapping.git

Then you should build it with colcon:

cd ~/collab_mapping
colcon build

Launch Simulation

To launch the simulation:

cd ~/collab_mapping_ws
source install/setup.bash
ros2 launch collab_mapping true_world.launch.py

Now you can see the Cartographer outputs on /robot{i}/map topic (For example for robot1 it will be /robot1/map). For visualization you can use Rviz2 or Rosboard.

Then you should run the smart contract:

ros2 run collab_mapping run_sc

The final merged map will be published on /map topic.

Results

Maps created by each robot visualized by rosboard. Maps 0 to 3 Maps 4 to 7