Skip to content

A Gazebo simulation to illustrate a Distributed Byzantine Tolerant Collabarative Mapping smart contract.

Notifications You must be signed in to change notification settings

TIERS/collab_mapping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A Gazebo simulation to illustrate a Distributed Byzantine Tolerant Collabarative Mapping smart contract.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published