https://github.com/borisdayma/home_service_robot
Autonomously map and navigate a home environment to pick-up and drop-off objects
https://github.com/borisdayma/home_service_robot
localization slam
Last synced: about 2 months ago
JSON representation
Autonomously map and navigate a home environment to pick-up and drop-off objects
- Host: GitHub
- URL: https://github.com/borisdayma/home_service_robot
- Owner: borisdayma
- Created: 2018-07-21T23:41:28.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-07-30T18:54:17.000Z (almost 7 years ago)
- Last Synced: 2025-01-25T06:10:47.536Z (4 months ago)
- Topics: localization, slam
- Language: CMake
- Homepage:
- Size: 140 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Home Service Robot
*This repository presents my solution to the Udacity Home Service Robot Project. A SLAM algorithm is used to create a map of an environment. Then the map is used to localize a robot and plan its trajectory towards an object to pick-up and drop it off at another location. The entire project is created through ROS packages.*

## Objective
The project is built entirely with ROS packages (some existing and some newly created). The objective is to create a map of an environment through SLAM, and then localize and navigate through it in order to reach target locations.
The project is split in several parts:
* design a custom environment,
* make a *wall follower* node to navigate autonomously following walls,
* use a SLAM algorithm to map the environment,
* create a *pick objects* node to go to target object location followed by drop off location,
* create a *add markers* node to display objects on rviz,
* establish a communication between nodes to notify of reached locations.The robot used for navigation is *turtlebot* present as a standard ROS package.
## Architecture
The project is made of several ROS packages:
* *turtlebot_gazebo* loads our custom world environment in gazebo and creates a turtlebot robot,
* *turtlebot_teleop* for manually operating the turtlebot,
* *gmapping* uses the camera, laser & odometry in order to simultaneously localize the robot and map the environment (SLAM algorithm),
* *wall_follower* controls the robot and make it continuously follow the left wall,
* *amcl* is a probabilistic localization system that uses a particle filter to track a robot through a given map,
* *pick_objects* sends target pick-up and drop-off locations, and notify when those have been reached,
* *rviz* is used for visualization of the environment, the robot, and any other parameter (laser scan, localization particles, navigation cost maps and path, etc),
* *add_markers* is used to visualize simulated objects at pick-up and drop-off locations on rviz.## Future work
The following required improvements have been identified:
* a package needs to be developed to send & receive object pick-up and drop-off targets in real time ;
* other SLAM packages need to be evaluated and compared for better performance ;
* the robot needs to be able to identify its initial location automatically ;
* custom robots need to be added to launch or script files.## Installing
A script has been developed for quick installation:
* Copy the `setup.sh` script in your home directory.
* Ensure you don't have a **catkin_ws** directory as its contents may be deleted.
* Run `./setup.sh`This will clone the full repository, including required ROS packages as sub-modules.
**Note**: Once installed, do not move or rename the packages folder as the Shell scripts rely on preserving relative paths.
## Running the scripts
The entire project can be run through the scripts present in `src/ShellScripts`.
The different scripts were developed in the following sequence:
* `test_slam.sh` - generate a map through SLAM while navigating manually
* `wall_follower.sh` - generate a map through SLAM while navigating autonomously following walls
* `test_navigation.sh` - load map generated through SLAM and define manually target navigation goals
* `pick_objects.sh` - run autonously the robot towards pick-up and drop-off locations
* `add_markers.sh` - add objects as markers to rviz
* `home_service.sh` - run autonomously the robot to pick up target object and bring it to drop off location, with rviz visualization## Built With
* [SLAM Gmapping](https://github.com/ros-perception/slam_gmapping) - The SLAM algorithm
* [Turtlebot](https://github.com/turtlebot) - ROS robot model and its stack