In this project I made SLAM with 3WD Onidirectional Robot. The mobile robot chasis consists of 3 omni wheels spaced at 120 degrees apart. It is designed for indoor mapping by keeping maneuverability in the first place. You can find the chasis in this link: https://www.nexusrobot.com/product/3wd-48mm-omni-wheel-robot-platform-chassiswith-encoderblack-15001b.html
For mapping, Hector SLAM and GMapping methods have been tried and compared. Another unique aspect of the work is that it can be controlled via the WEB interface that I designed.
For seeing and controlling manually on gazebo with teleop_twist_keyboard you can launch gazebo.launch
roslaunch diff gazebo.launch
This is differential drive for controlling with teleop_twist_keyboard. I made omnidirectional drive in arduino code for controlling the real robot. You can check the 1.ino code in arduino folder.
for seeing in RVIZ:
roslaunch diff rviz.launch
- Wheels model from here: https://github.com/GuiRitter/OpenBase
The robot needs to map of its enviroment to determine the position and to know their own location to map the enviroment.
GMAPPING
For Gmapping, you only launch this gmapping.launch file and use the teleop_twist for kontrolling and mapping.
roslaunch diff gmapping.launch
https://www.youtube.com/watch?v=kkTh4ROfFig&t=1s
HECTOR
For hector SLAM:
roslaunch diff gazebo.launch
roslaunch hector_slam_launch tutorial.launch
rosrun teleop_twist_keyboard teleop_twist_keyboard
https://www.youtube.com/watch?v=_wcQZBHmdKQ&t=4s
- Here is the real robot
When we control the real robot first we need to activate RPLidar.
ls -l /dev |grep ttyUSB
sudo chmod 666 /dev/ttyUSB0
roslaunch rplidar_ros view_rplidar.launch
- Then we start rosserial
rosrun rosserial_arduino serial_node.py /dev/ttyUSB1
After starting the comminication between ros and arduino. You can launch the hector slam node and start to mapping.