This is a still on going project. There are some future work to be added
- A very simpe navigation algorithm is implemented, and it experiences setting the goal outside the reachable distance.
- This will be tested on a real robot outside the house enviroment gazebo
- Ultimately, the goal is to make a robot to navigate any sort of enviroments including ramp without collision
The goal is to use the Turtlebot 3
to autonomously map an environment and then navigate within the map using the slam_toolbox
-
This project requires
ROS
-
This project requires either a real robot of
Turtlebot 3
or agazebo
simulation enviorment and its info can be found in the following link: https://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ -
If you are using a real robot, refer to to following website: https://emanual.robotis.com/docs/en/platform/turtlebot3/setup/
-
we will be using turtlebot 3 packages that ROBOTIS has already developed. Refer to the following website: https://github.com/ROBOTIS-GIT/turtlebot3
I will be using ROS-noetic
version.
-
sudo apt-get update
-
sudo apt-get upgrade
-
install
ROS-noetic
from following website: http://wiki.ros.org/noetic/Installation/Ubuntu -
install
pythpn3
rosdepsudo apt install python3-rosdep sudo rosdep init rosdep update
-
install some dependencies
sudo apt install python3-vcstool git gitk python3-pip catkin-lint
-
install
slam-toolbox
by runingsudo apt install ros-eloquent-slam-toolbox
-
install
ROS_navigation
by runningsudo apt install ros-noetic-navigation
-
go to yout home dir `cd ~'
-
Create workspace:
mkdir ws
andcd _ws
-
mkdir src
andcd src
-
git clone https://github.com/ME495-EmbeddedSystems/homework04-rubberdk.git
-
cd ..
to cd into yourws
dir andcatkin_make
-
edit your
./bashrc
and addexport TURTLEBOT3_MODEL=burger
in the file. If we are not using burger, change the model name accordingly
This project include one node auto_nav
used for autonomous mapping & navigation
This node generates xy-coordinates that move_base uses for the navigation of the turtlebot. goal coordinate points are generated by a simple algorithm that adds random numbers in between -0.5 and 0.5 to the previous goal coordinates allowing the robot to move slowly and spontaneously.
SUBSCRIBER: + map_sub (/map) ~ information about the robot's current knowledge of the environment type = nav_msgs/OccupancyGrid
The maps
directory contains two sets of map data.
map.yaml
andmaps.pgm
were mapped by mannual control of the turtlebotexpl.yaml
andexpl.pgm
were mapped autonomously by the turtlebot
make sure to source your workspace by source ~/ws/devel/setup.bash
Demo gif files are fast-forwarded for your convinence. Refer to the YouTube link for the full video.
roslaunch hw4 auto_nav.launch
This launch file makes the turtlebot to autonomously navigate and do mapping
Full Video: https://youtu.be/ceaA-sR2w_s