Skip to content

Commit

Permalink
Merge pull request #1 from urastogi885/phase1
Browse files Browse the repository at this point in the history
Readme and UML diagrams checked and are correct.
Verified AIP Process and understood Sprint Planning Notes.
  • Loading branch information
namangupta98 authored Nov 25, 2019
2 parents a2467bf + 6733336 commit 3773c60
Show file tree
Hide file tree
Showing 6 changed files with 193 additions and 1 deletion.
91 changes: 91 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
dist: xenial
sudo: required
cache: apt
language: generic

# Configuration variables. All variables are global
env:
global:
- ROS_DISTRO=kinetic
- ROS_CI_DESKTOP="`lsb_release -cs`" # e.g. [precise|trusty|...]
- CI_SOURCE_PATH=$(pwd)
- ROSINSTALL_FILE=$CI_SOURCE_PATH/dependencies.rosinstall
- CATKIN_OPTIONS=$CI_SOURCE_PATH/catkin.options
- ROS_PARALLEL_JOBS='-j8 -l6'

################################################################################

# Install system dependencies, namely a very barebones ROS setup.
before_install:
- sudo sh -c "echo \"deb http://packages.ros.org/ros/ubuntu $ROS_CI_DESKTOP main\" > /etc/apt/sources.list.d/ros-latest.list"
- sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
- sudo apt-get update -qq
- sudo apt-get install dpkg
- sudo apt-get install -y --allow-unauthenticated python-catkin-pkg python-rosdep python-wstool
# Add opencv support in ROS
#- sudo apt-get install libopencv-dev
# install lcov to generate code coverage data
- sudo apt-get install -y lcov
# Needed to install coveralls-lcov to upload coverage information generated by LCOV to coveralls.io
- gem install coveralls-lcov
# Install ROS-Base: (Bare Bones) ROS package, build, and communication libraries. No GUI tools.
- sudo apt-get install -y --allow-unauthenticated ros-$ROS_DISTRO-ros-base
- source /opt/ros/$ROS_DISTRO/setup.bash
# Prepare rosdep to install dependencies.
- sudo rosdep init
- rosdep update
# Install


# Create a catkin workspace with the package under integration.
install:
# Create a catkin workspace
- mkdir -p ~/catkin_ws/src
- cd ~/catkin_ws/src
- catkin_init_workspace
# Create the devel/setup.bash (run catkin_make with an empty workspace) and
# source it to set the path variables.
- cd ~/catkin_ws
- catkin_make
- source devel/setup.bash
# Add the package under integration to the workspace using a symlink.
- cd ~/catkin_ws/src
- ln -s $CI_SOURCE_PATH .

# Install all dependencies, using wstool first and rosdep second.
# wstool looks for a ROSINSTALL_FILE defined in the environment variables.
before_script:
# source dependencies: install using wstool.
- cd ~/catkin_ws/src
- wstool init
- if [[ -f $ROSINSTALL_FILE ]] ; then wstool merge $ROSINSTALL_FILE ; fi
- wstool up
# package depdencies: install using rosdep.
- cd ~/catkin_ws
- rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

# Compile and test (mark the build as failed if any step fails). If the
# CATKIN_OPTIONS file exists, use it as an argument to catkin_make, for example
# to blacklist certain packages.
#
# NOTE on testing: `catkin_make run_tests` will show the output of the tests
# (gtest, nosetest, etc..) but always returns 0 (success) even if a test
# fails. Running `catkin_test_results` aggregates all the results and returns
# non-zero when a test fails (which notifies Travis the build failed).
script:
- source /opt/ros/$ROS_DISTRO/setup.bash
- cd ~/catkin_ws
- catkin_make
# Run the tests, ensuring the path is set correctly.
- source devel/setup.bash
- catkin_make run_tests && catkin_test_results

after_success:
- cd ~/catkin_ws/build
- lcov --directory . --capture --output-file coverage.info
- lcov --remove coverage.info '/opt/*' '/usr/*' '*/devel/*' '*test_*' '*_test*' --output-file coverage.info
- lcov --list coverage.info
- coveralls-lcov coverage.info

notifications:
email: false
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 3-Clause License

Copyright (c) 2019, Umang Rastogi
Copyright (c) 2019, Umang Rastogi, Naman Gupta
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
101 changes: 101 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Project X
[![Build Status](https://travis-ci.org/urastogi885/Supermarket-Cleaning-Robot.svg?branch=master)](https://travis-ci.org/urastogi885/Supermarket-Cleaning-Robot)
[![Coverage Status](https://coveralls.io/repos/github/urastogi885/Supermarket-Cleaning-Robot/badge.svg?branch=master)](https://coveralls.io/github/urastogi885/Supermarket-Cleaning-Robot?branch=master)
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/urastogi885/Supermarket-Cleaning-Robot/blob/master/LICENSE)
---

## Overview

According to a study done in Morrisville, North Carolina, the Walmart Supercenter located in the town
receives about 10,000 people per day. Unquestionably, the actual foot traffic depends on a variety of
factors, but we cannot disregard that supermarkets are one of the busiest places in a town. The more the
number of people, the more likely it is for the store to become dirty. It always begets frustration among
workers to maintain the store at its most pristine level. Our supermarket cleaning robot can remove the
stress of cleanliness by performing the tasks of an employee.

Currently, most of the robots are only capable of executing a single task. It turns out to be expensive for
a store owner to buy a robot that can perform a single task. We propose to develop a robot that can
perform various maintenance tasks. The robot will be able to maintain cleanliness as well as make
supermarkets autonomous. The robot will able to clean aisles, stack up empty rows, and collect fallen
items.

For prototyping, we are focusing on only one task that is identifying and collecting the items using the
robot. The robot will roam in a supermarket like environment in Gazebo and identify the type of items
that it needs to collect. It identifies the item using a camera, mounted on its base, and moves towards the
fallen item. Here, we are considering objects such as food, soft drinks cans and it is assumed that the robot
will already know the type of item that it needs to pick. As the robot reaches the location of the item and
touches it, the item will vanish depicting that the item is collected using a suction cup. The robot will
traverse randomly in the supermarket and keep on collecting a can. We are focusing on the detection of
cans using the OpenCV to improve the processing of the detection feature. In addition to this, the robot
has an obstacle avoidance feature that is used to prevent the robot from colliding from obstacles such as
humans, uninteresting items and walls/shelves.

<p align="center">
<img src="https://github.com/urastogi885/Supermarket-Cleaning-Robot/blob/phase1/readme_images/initial_proposal_setup.png">
<b>Figure 1 - Robot approaching towards the cans lying on the ground to collect them</b>
</p>


## Team Members

- [Umang Rastogi](https://github.com/urastogi885) - Pursuing masters in Robotics at University of Maryland | B.Tech in Electronics & Communication Engineering
- [Naman Gupta](https://github.com/namangupta98) - Grad Student at University of Maryland, pursuing M.Eng. in Robotics.

## AIP and Sprint Documents

- Click on this [*link*](https://docs.google.com/spreadsheets/d/1k6e7rM7TTvE5w2fQ_wuSDY_giNWaVuCHeImB6D53lT4/edit?usp=sharing)
to access our AIP Google Sheet.
- Click on this [*link*](https://docs.google.com/document/d/1iQZUstgoCCvtSvlcv1_xpxGW6ntUbkOpcgMuvrSP_ms/edit?usp=sharing)
to access our Sprint notes document.

## Accessing the UML Diagrams

- Open the *UML* directory of the project.
- Access UML diagrams from the *initial* folder located within *UML* sub-directory.

## Dependencies

- Ubuntu 16.04
- ROS Kinetic
- Gazebo
- Turtlebot Packages

## Install Dependences

- This project was developed using ROS Kinetic.
- It is highly recommended that ROS Kinetic is properly installed on your system before the use of this project.
- Follow the instructions on the [*ROS kinetic install tutorial page*](http://wiki.ros.org/kinetic/Installation/Ubuntu)
to install ***Full-Desktop Version*** of ROS Kinetic.
- The full-version would help you install *Gazebo* as well. If you have ROS Kinetic pre-installed on your machine, use
the following [*link*](http://gazebosim.org/tutorials?tut=install_ubuntu&cat=install) to just install *Gazebo* on your
machine.
- Ensure successful installation by running *Gazebo* via your terminal window:
```shell script
gazebo
```
- An empty window of *Gazebo Simulator* should be launched.
- Make sure that turtlebot packages have been installed on your machine using the following commands:
```shell script
roslaunch turtlebot_gazebo turtlebot_world.launch
```
- A window of *Gazebo Simulator* with various items and a turtlebot should be launched.
- If an error pops up upo launching the turtlebot world, then install the necessary turtlebot packages:
```shell script
sudo apt install ros-kinetic-turtlebot-gazebo ros-kinetic-turtlebot-apps ros-kinetic-turtlebot-rviz-launchers
```
- Create your ROS workspace by following instructions on the [*create ROS workspace tutortial page*](http://wiki.ros.org/catkin/Tutorials/create_a_workspace).

## Build

- ***Ignore this section*** as nothing to be built has been added yet.
- Even if you run the following, it will not impact your existing workspace.
- Switch to your *src* sub-directory of your ROS workspace to clone this repository.
```shell script
<ROS Workspace>/src
```
- Run the following commands to clone and build this project:
```shell script
git clone --recursive https://github.com/urastogi885/obstacle_avoidance_simulation
cd ..
catkin_make
```
Binary file added UML/initial/uml_activity_diagram.pdf
Binary file not shown.
Binary file added UML/initial/uml_class_diagram.pdf
Binary file not shown.
Binary file added readme_images/initial_proposal_setup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 3773c60

Please sign in to comment.