# Autonomous Exploration using Turtlebot
<!-- # Map-Generation using Turtlebot using LiDAR or Depth Camera -->
### Description:
Mapping of unknown environments using Turtlebot3 and the Gazebo simulator.
### Aim :
Understanding the basics of Robot Operating System-nodes,topics, publisher etc. and Gazebo,mapping method(Hector Mapping) Working of LiDAR, Sampling-based Search Methods.
#### Phase 1 :
* Introduction to ROS and its usage
* ROS basic implementations on turtlesim -- teleop, spiral, go-to-goal, turtle-follower, formation control
* Implementation of simple tasks like teleop, go-to-goal to get familiar with Turtlebot3.
* Getting familiar with topics used in turtlebot for further applications.
#### Phase 2:
* Introduction to Robotic Mapping (Cyrill 1st video only)
* Understanding Hector Mapping - https://youtu.be/Q4qM-Uzj1SI
* Understanding sensor_msgs/LaserScan
* Setting up Hector Mapping and teleoperation on hardware.
* Understanding occupancy grid and how to work with them
#### Phase 3:
* Literature study of path search methods.
* Implementation on a pre-built map.
* RRT_exploration package implementation with addition of Breadth-first search algorithm(finding unknown point in vicinity and publishing it the rrt package)
* Rule or heuristic based exploration for mapping.
* Hardware Implementation
* Implement Other Path Planning algorithms and mapping packages (Extensions) for map construction.
* RTAB-Mapping
#### Extension:
<!-- Deploying RRT algorithm for exploration and mapping. -->
* Wavefront Frontier Dectector implementation for autonomous mapping(if feasible). https://arxiv.org/ftp/arxiv/papers/1806/1806.03581.pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.386.6394&rep=rep1&type=pdf
* Implementing Motion Planning Algos on generated map
### Tools:
ROS, Gazebo, Python , OpenCV(For initial exercises with path planning algorithms)
### End Outcome:
Understanding the basics of Robot Operating System-nodes,topics, publisher etc. and Gazebo,Working of LiDAR/Depth Camera, Sampling-based Search Methods.
Using turtlebot to autonomously explore and map an environment.
### References/Materials:
* [ROS for Beginners](https://www.udemy.com/course/ros-essentials/)
* [ROS Autonomous SLAM using Rapidly Exploring Random Tree (RRT)](https://towardsdatascience.com/ros-autonomous-slam-using-randomly-exploring-random-tree-rrt-37186f6e3568)
* [Autonomous robotic exploration based on multiple rapidly-exploring randomized trees](https://ieeexplore.ieee.org/document/8202319)
* https://automaticaddison.com/how-to-build-an-indoor-map-using-ros-and-lidar-based-slam/#Method_1
* https://www.autonomousrobotslab.com/autonomous-navigation-and-exploration.html
### Resources
* http://wiki.ros.org/noetic/Installation/Ubuntu
* https://drive.google.com/drive/folders/1w25DNhHX5ni11rzTHJScpawzCPzLkVGt
* https://youtube.com/playlist?list=PLn8PRpmsu08rLRGrnF-S6TyGrmcA2X7kg
* https://www.youtube.com/watch?v=MC5rVN3C920
* https://github.com/skasperski/navigation_2d
* https://github.com/hasauino/rrt_exploration
Laser
* http://wiki.ros.org/laser_pipeline/Tutorials/IntroductionToWorkingWithLaserScannerData
* https://maker.pro/ros/tutorial/how-to-use-a-lidar-sensor-with-robot-operating-system-ros
* http://wiki.ros.org/freenect_camera
### Mentors:
### SOP:
**Before coming to campus:**
* Ubuntu(dual-boot or virtual-machine) and ROS set-up.
* ROS tutorials commencement (Anis Kouba lectures).
**After coming to campus:**
* Continuation of ROS tutorials and start of basic tasks. Aid in dual-boot set-up in case virtual machine is being used.
* Teleop and Go-to-Goal in Gazebo.
* Deployment of teleop on turtlebot.