Skip to content

ROS 2 - based project implementing simple covering area with turtlebot3 as vacuum cleaner

Notifications You must be signed in to change notification settings

MaciejGroszyk/vacuum_cleaner_pkg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simulation system for the development of autonomous vacuum cleaner navigation

ROS 2 - based project implementing simple covering area with turtlebot3 as vacuum cleaner.

Simulation system for autonomous mobile robot navigation evaluation, which enables to create dynamic simulation environment with random rooms and emerging obstacles. System is described in Domain Specification Language SPSysML (https://arxiv.org/abs/2303.09565) , which rates system simulation-physical integrality. The thesis proposes indicators used to examinate navigation algorithms. The work is a proposal of a standard for quality indicators used when evaluating navigation algorithms of mobile robots

Installation

ROS 2 Foxy https://docs.ros.org/en/foxy/Installation.html

TurtleBot3 https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/

Install dependencies

pip3 install meshlib
pip3 install aspose-words

Clone project

cd ~/vc_ws/src
ros2 pkg create --build-type ament_cmake vacuum_cleaner_pkg
sudo rm -r vacuum_cleaner_pkg
git clone https://github.com/MaciejGroszyk/vacuum_cleaner_pkg.git
cd ..
colcon build

Run

cd vc_ws/ && source ~/ros2_foxy/install/setup.bash && source ~/turtlebot3_ws/install/setup.bash && source install/setup.bash

export TURTLEBOT3_MODEL=waffle && ros2 launch turtlebot3_gazebo empty_world.launch.py

Manualy spawn map from /home/user/.gazebo/models and drop robot to map frames and run algorithm.

-- random walk
ros2 run vacuum_cleaner_pkg main_node random
-- spiral walk
ros2 run vacuum_cleaner_pkg main_node spiral
-- snaking walk
ros2 run vacuum_cleaner_pkg main_node snaking

Generate world with command

~/vc_ws/src/vacuum_cleaner_pkg/scripts
-- generate model 3D
pip3 worldMapModelGenerator.py
-- generate model 2D
pip3 worldMapPngGenerator.py
-- spawn obstacles
pip3 gazeboRandomSpawnModel.py

Requirement specification

system_requirements Requirements

example_use_case

Project structure

main

World synchronization

simulated_world

Flow diagram ibd_general_world generator

Load visualization Load_World From_Data

Load visualization example current_map_img current_map_model_3D

Generating the real world to simulation Generate_Real_World

Generating the real world to simulation example

lab_map lab_map_without_noise lab_map_gazebo

Generate random visualization

Random_World_Generator

sq_Random_World_Generator

Generate random visualization example random_world_generator

Spawninng obstacles sq_spawn_obstacle

DT/PT decomposition – Mirroring Agent Groups specification

Simulation agent sim_realization

Physical agent phy_realization

Agent decomposition

Simulation agent decomposition

simulated_sega_ibd

Physical agent decomposition

physical_sega_ibd

Structure evaluation

Controller integrity factor IFF = 1. The higher the IIF value, the more software components are shared between the simulation and physical embodiments. Maximum IIF value is 1 - all abstract hardware parts of the system are common.

Driver generalisation factor DGF = 1. The higher the value, the easier it is to integrate physical and simulated hardware in the future.

Digital Twin coverage DTC = 1. All physical parts have digital twins.

Mirror integrity factor MIFRobot = 1. Parts of the system between the physical and digital twins that make up the robot are shared.

About

ROS 2 - based project implementing simple covering area with turtlebot3 as vacuum cleaner

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published