Pick and Place Robot simulation for toy collection in pre-schools
This repository contains the simulation of a mobile manipulator robot, Tiago++, used for pick and place operations for tidying up toys in play areas. This system can be deployed in child-care centers and pre-schools for after-hours cleanup. The robot operates in a known map with a known covariance of where the toys could be. Each type of toy contains an ArUco marker with a unique id which are pre-known. This helps in both easy identification of toys for segregation and pose computation for moving towards a new -found toy.
The following steps explain the overall workflow of the pipeline:
- Once the robot is spawned and the ArUco blocks(toys) are generated in the environment, the robot moves to the location where the probability of finding the toys is the highest.
- Upon reaching the location it searches for the toy by yawing.
- When a toy is detected in the frame, it's pose is computed in the world frame.
- This pose information is used to call a service "/knd/moveTo" which runs actionlib to go to the detected toy.
- After reaching the toy position, it returns to home and then goes back for the next toy.
- This process is repeated till all the toys are returned to home.
Rohan Singh: I am in my third semester of M.Eng. in Robotics at University of Maryland. You can follow me on my Linkedin
Abhinav Modi: I am in my third semester of M.Eng. in Robotics at University of Maryland. You can follow me on my Linkedin
Ashwin Varghese Kuruttukulam: I am in my third semester of M.Eng. in Robotics at University of Maryland. You can follow me on my Linkedin
The Agile Iterative Process was followed for the development of the software. Follow this Google Sheets link to view the product backlog and sprint schedules. Follow this Google Docs link to view Sprint notes.
Sprint 1 :
- Driver - Rohan Singh
- Navigator - Abhinav Modi
- Design Keeper - Ashwin Varghese Kuruttukulam
Sprint 2 :
- Driver - Ashwin Varghese Kuruttukulam
- Navigator - Rohan Singh
- Design Keeper - Abhinav Modi
Sprint 3 :
- Driver - Abhinav Modi
- Navigator - Ashwin Varghese Kuruttukulam
- Design Keeper - Rohan Singh
The software is developed on Ubuntu 16.04 and has the following dependencies :
- ROS-Kinetic
- ROS Tiago++ package
- Gazebo 7
- doxygen (For documentation generation)
To build the package, first follow the steps to install Tiago++ packages given in this link. Assuming the steps were followed exactly, in the created workspace (tiago_public_ws), clone the repo like the following steps,
cd ~/tiago_public_ws/src
git clone --recursive https://github.com/rohansingh42/kids_next_door
cd ..
Now, move the the folder from the third_party_packages directory to tiago_public_ws/src (replace existing package). Move the marker model folders from the data folder to tiago_public_ws/src/tiago_simulation/tiago_gazebo/models/ and the world file to tiago_public_ws/src/tiago_simulation/tiago_gazebo/worlds/ folder.
Now, from the tiago_public_ws/ directory, do the following.
catkin_make
source devel/setup.bash
It is advisable to source the devel/setup.bash file in your .bashrc for running the built package from any new terminal.
Once the build is complete successfully and you have sourced the bash file, you can run it using roslaunch:
roslaunch kids_next_door combined.launch
Once the Gazebo environment comes up, to execute the demo do the following from a new terminal (where devel/detup.bash is sourced),
rosrun kids_next_door TaskPlanner
From the tiago_public_ws/ directory,
catkin_make run_tests_kids_next_door
To generate the doxygen documentation in the docs folder, from the repository,
doxygen Doxyfile
MIT License
Copyright (c) 2019 Rohan Singh, Abhinav Modi, Ashwin Kuruttukulam
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.