Skip to content

Ahmed-Magdi1/Nova_Robot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

Nova Robot Project

Directory Structure

.nova_ws/ 
    └── src/
         ├── nova_nav/
         │    ├── config/param
         │    │     ├── base_local_planner_params.yaml
         │    │     ├── costmap_common_params.yaml
         │    │     ├── dwa_local_planner_params.yaml
         │    │     ├── global_costmap_params.yaml
         │    │     ├── global_planner_params.yaml
         │    │     ├── local_costmap_params.yaml
         │    │     └── move_base_params.yaml
         │    ├── launch/
         │    │     ├── amcl.launch
         │    │     ├── gmapping.launch
         │    │     ├── move_base.launch
         │    │     └── navigation.launch
         │    ├── maps/
         │    │     ├── final_map.pgm
         │    │     └── final_map.yaml
         │    ├── CMakeLists.txt
         │    └── package.xml
         ├── nova_slam/
         │       ├── launch/
         │       │     ├── amcl.launch
         │       │     └── gmapping.launch
         │       ├── CMakeLists.txt
         │       └── package.xml
         ├── nova_gazebo/
         │       ├── launch/
         │       │     ├── gazebo.launch
         │       │     └── rviz.launch
         │       ├── world/
         │       │     └── arche.world
         │       ├── CMakeLists.txt
         │       └── package.xml
         ├── nova_description/
         │       ├── launch/
         │       │     └── rviz.launch
         │       ├── meshes/
         │       │     ├── MecanumLeft.stl
         │       │     ├── MecanumRight.stl
         │       │     ├── Raspberry_pi_4_case.stl
         │       │     ├── Raspberry_pi_4.stl
         │       │     ├── Robot_base.stl             
         │       │     └── rplidar.dae
         │       ├── rviz_config/
         │       │     ├── main.rviz
         │       │     ├── nav.rviz
         │       ├── urdf/
         │       │     ├── color_gazebo
         │       │     ├── color.xacro
         │       │     ├── nova_gazebo.xacro
         │       │     ├── nova.gazebo             
         │       │     └── nova.urdf.xacro
         │       ├── image/
         │       │     ├── AMCL.png
         │       │     ├── DWA.png
         │       │     ├── DWA2.png
         │       │     ├── frames.png 
         │       │     ├── global_costmap.png
         │       │     ├── local_costmap.png   
         │       │     ├── map.png
         │       │     ├── path.png  
         │       │     ├── robot_gazebo.png
         │       │     ├── robot_rviz.png              
         │       │     └── rviz_gazebo.png
         │       ├── CMakeLists.txt
         │       └── package.xml  
         ├── CMakeLists.txt
         └── README.md      

The goal of this project is to program a robot that can take the map generated earlier, localize itself in that map, and navigate the robot to pick up and drop off virtual object. Here is a list of steps undertaken to accomplish that goal:

  • Build a simulated world in Gazebo building editor.
  • Build a map of the environment using gmapping.
  • Use Adaptive Monte Carlo Localisation (AMCL) to detect the robot position within the known map.
  • Use the ROS move_base library to plot a path to a target pose and navigate to it.

About the project

The mobile robot begins by driving around and scanning the area using a lidar to generate a static map of the environment. With this map in hand, it utilizes odometry and laser data to determine its position through adaptive Monte Carlo Localization (AMCL). When given a navigation goal, the robot plans its path using Dijkstra's algorithm and then navigates to the specified goal using DWA as a local planner.

Description

The project consists of the following parts:

  1. A Gazebo world and a mobile robot.
  2. ROS packages: map_server, amcl, move_base, slam-gmapping and teleop_twist_keyboard.

Prerequisites

  1. ROS (noetic), Gazebo on Linux
  2. CMake & g++/gcc, C++11
  3. Install some dependencies
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install ros-noetic-map-server
sudo apt-get install ros-noetic-amcl
sudo apt-get install ros-noetic-move-base
sudo apt-get install ros-noetic-slam-gmapping

Build and Launch

  1. Clone the project into your workspace
git clone https://github.com/Ahmed-Magdi1/Nova_Robot.git
cd Nova_Robot
  1. Build the project
catkin_make
source devel/setup.bash
  1. Simulate Robot in Gazebo
roslaunch nova_gazebo gazebo.launch
  1. SLAM gmapping to perform SLAM and generate a map:
roslaunch nova_nav gmapping.launch
  1. Navigation
roslaunch nova_nav navigation.launch

Set a 2D Nav Goal in RViz to command the robot to a target position.

Robot In Action

Gazebo
Robot In Gazebo

Rviz
Robot In Rviz

AMCL
AMCL Particles

costmap
Global_and_Local costmap

Planners

Gazebo
Global_Planner

Rviz
Local_Planner

Robot tf

Nova_robot

About

This repository contains Nova_robot Simulated in gazebo and ROS noetic

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages