This repository contains the implementation of the Irona bot. Irona bot is designed for fulfilling orders at ACME warehouse. We make use of Tiago ground robot to scan the warehouse, identify orders to be picked up, and return to checkout. Tiago is a mobile manipulator with an arm along with several other components to assist picking and grasping of several shaped objects. The proposed package takes the map of the environment and the ArUco marker’s information associated with the package as the input and ultimately identifies the box and return to checkout.
We have simulated the environment in Gazebo with custom boxes we made and added the ArUco tags on all the sides of the boxes. For navigation purpose we generated the cost map (using gmapping) of the environment that is needed for Rviz. The demo video (in the link) demonstrate working of the module. Follow this link to see the presentation
We have used a single handed manipualtor rather than two haded manipulator as we are not picking up the boxes and the stacks available for TIAGO++ are in ubuntu 18.04. We decide to not pick up the objects as it is not the aim of the project and it increases the unnecessary complexity to the problem.
We follow the following steps in order to complete the task:
- We first take the order from the user.
- We generate the ArUco tags for the new objects if any added by the user.
- Then we go to one corner of the room and while going to that room we search for the required ArUco tags.
- If object is not found while going to that corner we roatate in the random direction and move towards it.
- We do this till we find the ArUco tag.
- After we find the ArUco tag we go near the object and mark it completed in our order list.
- We return to the base position which we call checkout and then reiterate the same process for next order.
Aruna Baijal: I am in my first semester of M.Engg. in Robotics at University of Maryland. My research interest lies in the field of computer vision. You can follow me on my Linkedin.
Arjun Gupta: I am in my first semester of M.Engg. in Robotics at University of Maryland. My research interest lies in the field of computer vision. You can follow me on my Linkedin.
Kartik Madhira: I am in my third semester of M.Engg. in Robotics at University of Maryland. My research interest lies in the field of perception and planning. You can follow me on my Linkedin.
Before build, follow the instructions here. (Do not forget to select kinetic under ROS Distros)
source ./devel/setup.bash
cd src
git clone --recursive https://github.com/kartikmadhira1/irona.git
cd ..
source /opt/ros/kinetic/setup.bash
catkin build -DCATKIN_ENABLE_TESTING=0
-
A modified version of the aruco_ros source is used, replace the
[ros_workspace]/src/aruco_ros/aruco_ros/src/simple_single.cpp
withsimple_single.cpp
indata
folder of this repo -
Unzip the
arblocks.zip
folder and copy the contents into the$HOME/.gazebo/mmodels
folder in your machine. -
Copy the world launch file from
data/test_file.world
into[workspace_ros]/src/tiago_simulation/tiago_gazebo/worlds/
-
Unzip and replace the
config
folder under$HOME/.pal/tiago_maps/config
withdata/config
of this repository.
-
Open terminal and run,
roslaunch tiago_2dnav_gazebo tiago_navigation.launch public_sim:=true lost:=false world:=test_file
-
Open another terminal and run,
roslaunch irona run_irona.launch
-
Open another terminal and run,
rosrun irona navigation
To run the tests by launch file run the following command:
rostest irona launchtest.launch
To run the tests
roscore
catkin_make run_tests_irona
Both the above commands should be ran separately in new terminals.
If you'd still like to generate it then follow the instructions below
sudo apt-get install doxygen
sudo apt install doxygen-gui
doxygen -g
doxywizard
When doxywizard is open, select the workspace as the repository. Fill in the details as required and set the source code folder to the repository as well. Create a new folder in the repository and select that as the destination directory. Proceed with the default settings and generate the documentation.
The detection and the planner algorithms are not the focus of this project and we thus haven't used any known algorithms rather we rely on detection stack of TIAGO and brute force planning algorithm. It can happen at times that the object is present but is not found because the detection algorihm is not robust enough. Siilarly for navigation, it sometimes can take quite long to find the required box.