# 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.