This repository contains the code and assets for the ROS-based project "TurtleBot Autonomous Maneuvers". As a part of class AUE893 - Autonomy Science and Systems, at Clemson University International Center for Automotive Research (CU-ICAR).
The project is ROS based using the Turtlebot3 Burger in simulation (Gazebo) and real-world environments to go through a prespecified course in which the TurtleBot will have to deal with 4 maneouvers:
-
Wall follower and Obstacle avoidance: Turtlebot maintains safe distance from obstacle and maneuvers through course until it finds yellow lanes. In this it manipulates Lidar values for the design of controller.
-
Line following: Turtlebot follows the yellow line using image processing (open-cv package). The controller uses lane centroid to control the angular speed of the bot, with maintained linear velocity.
-
Traffic sign detection: YOLO is used for traffic sign detection. Traffic sign callback functions stop the turtlebot for 3 seconds, then it proceeds following the line.
-
April Tag follower: AprilTag_ros package is used to detect apriltags and then its co-ordinates are used to design the controller for tracking the april tag, and maintain a sfae distance.
Navigating the whole course autonomously without any manual entry. This is being excuted using the below ROS archicture.
The architecture used in the project could be enhanced by having a controller node that governs the switching between the modes based on the subscribed topics from the sensing nodes. Accordingly, using semaphore flags through publishing control topics, each node could be turned on or off. Using this architecture will allow for better modularity and scalability.
The project was created on ROS1 on Ubuntu 20.04.
Clone the repository into your local PC. Make sure to name the cloned folder "project_turtlebot_maneouvres".
Use the below lines in your terminal to start the launch files.
- For Gazebo simulation
1. '$ roslaunch project_turtlebot_maneouvres turtlebot3_maneouvres.launch'
2. '$ rosrun project_turtlebot_maneouvres keyboard_teleop_apriltag.py' -- for operating the 2nd turtlebot with apriltag in the gazebo world.
- For real world
1. Bring-up the turtleot and the raspicam
2. '$ rosrun image_transport republish compressed in:=/raspicam_node/image raw out:=camera/rgb/image_raw' -- tp republish raspicam/image to rgb/camera/raw
3. '$ roslaunch project_turtlebot_maneouvres turtlebot3_maneouvres_real.launch'