Coder Social home page Coder Social logo

mohamednagymostafa / home-service-robot Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 581 KB

The Home Service Workspace project is a robotics project developed using ROS (Robot Operating System). It aims to simulate a home service scenario where a robot performs pick-up and drop-off tasks autonomously in a simulated environment.

License: Apache License 2.0

Shell 5.43% CMake 45.96% C++ 13.19% Python 19.21% C 9.51% Makefile 6.71%
gazebo localization navigation particle-filter path-planning slam slam-gmapping

home-service-robot's Introduction

Home Service Workspace

Video Demo

This repository contains packages and configurations for a home service task. The task involves robot localization, mapping, path planning, and simulated package delivery using ROS (Robot Operating System). The packages and their functionalities are described below.

๐Ÿ“ฆ Packages

av_robot

This package contains a custom maze gazebo world with a custom robot. The robot is equipped with an RGB-D camera and LiDAR sensors. Launch this package with the following command:

roslaunch av_robot world.launch

This command will open the gazebo world containing the custom robot and the maze environment.

amcl

The amcl package is responsible for robot localization using particle filters (MCL). Launch this package using the following command:

roslaunch av_robot amcl.launch

This command will initialize the localization algorithm and provide accurate pose estimation for the robot.

turtlebot, turtlebot_interations, turtlebot_simulator

These packages contain the turtlebot robot model and various valuable packages. In this project, we only use the turtlebot_rviz_launchers package for navigation and path planning. Launch this package using the following command:

roslaunch turtlebot_rviz_launchers view_navigation.launch

This command will launch the planner as well as RViz, allowing you to visualize and interact with the navigation system.

move_base, slam_gmapping

The move_base package is responsible for path planning and navigation, while slam_gmapping package is used for world mapping using SLAM (Simultaneous Localization and Mapping). Launch the mapping functionality using the following command:

rosrun gmapping slam_gmapping scan:=scan _base_frame:=map

Make sure to include the necessary topic remappings as shown in the command line.

pick_objects

This package contains a node that is responsible for navigating the robot between the pickup location and the dropoff zone. Launch this package using the following command:

rosrun pick_objects pick_objects

This command will start the robot's navigation to pick up and deliver the package.

add_markers

This package contains a node that adds a virtual marker to RViz to simulate the delivered package in the world. The node subscribes to a "storage status" topic published by the pick_objects node and shows or hides the package in the world based on the robot's storage status. Launch this package using the following command:

rosrun add_markers add_markers

This command will start the node that adds the virtual marker to RViz.

๐Ÿ› ๏ธ Installation

To use this workspace, you need to have ROS installed on your system. Follow the official ROS installation instructions for your operating system.

After installing ROS, clone this repository into your catkin workspace:

mkdir ~/catkin_ws && cd ~/catkin_ws
git clone https://github.com/MohamedNagyMostafa/home_service_workspace.git

Once cloned, build the packages:

cd ~/catkin_ws
catkin_make

๐Ÿš€ Launching

To launch different functionalities of the home service workspace, there are several shell scripts provided. These scripts automate the launch process and simplify testing. The important scripts are:

  • test_slam.sh: Launches mapping for the environment using SLAM. It launches the following packages: av_robot, slam_gmapping, and RViz with the SLAM configuration.

  • test_navigation.sh: Tests the robot's planner, navigation algorithm, and localization. It launches the following packages: av_robot, amcl, turtlebot_rviz_launchers/view_navigation, and RViz with the

navigation configuration.

  • pick_objects.sh: Launches the robot's navigation between two predefined pick-up and drop-off locations. It launches the following packages: av_robot, amcl, turtlebot_rviz_launchers/view_navigation, pick_objects, and RViz with the navigation configuration.

  • add_markers.sh: Tests generating a virtual item in RViz. It launches the following packages: av_robot, amcl, turtlebot_rviz_launchers/view_navigation, add_markers, and RViz with the marker configuration.

  • home_service.sh: The main launcher to run the entire workspace and allow the robot to perform pickup and dropoff tasks. It launches the following packages: av_robot, amcl, turtlebot_rviz_launchers/view_navigation, pick_objects, add_markers, and RViz with the marker configuration.

To execute any of these scripts, make them executable if they are not already:

chmod +x <script-name>.sh

Then, run the desired script:

./<script-name>.sh

๐Ÿ“ Important Directories

  • rvizConfig: Contains all RViz configurations used by the shell scripts.
  • av_robot/maps: Contains the world map file. This folder is added inside the av_robot package, allowing it to be accessed using find av_robot instead of using a static path.

Feel free to explore and modify the code and configurations to suit your needs. Happy home service automation!

home-service-robot's People

Contributors

mohamednagymostafa avatar

Stargazers

 avatar

Watchers

 avatar

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.