Unmanned vehicle using artificial intelligence in ROS
Establishing a logistics system equipped with autonomous driving and object recognition artificial intelligence based on rails using unmanned vehicles.
Driving Video Link <line_detect> <https://www.youtube.com/watch?v=QiVPxZddGn0>
Driving Video Link <SLAM_MOVE> <https://www.youtube.com/watch?v=w1bOpxk9GYY&t=1s>
Ubuntu 18.04 Installation
-
ROS Installation
-
Reference Site <https://wiki.ros.org/melodic/Installation/Ubuntu> 1.2 ~ 1.6.1 Installation
-
scout_mini SDK Installation Reference Site <https://github.com/agilexrobotics/ugv_sdk>
-
scout_mini Package installation Reference Site <https://github.com/agilexrobotics/scout_ros>
If you installed SDK & package and Scout_MIni doesn't work, please write it down on GIT Issue. I'll give you a solution
-
intel Realsense L515 SDK installation Ubuntu 18.04
$ sudo add-apt-repository "deb http://librealsense.intel.com/Debian/apt-repo bionic main" -u $ sudo apt-get install librealsense2-dkms $ sudo apt-get install librealsense2-utils $ sudo apt-get install librealsense2-dev $ sudo apt-get install librealsense2-dbg ## test $ realsense-viewer
-
If you are going to use SLAM, refer to this GitHub link. I referred to this package
Reference Site <https://github.com/wh200720041/ssl_slam>
library used
1. install pyzbar
2. install pyrealsense2
3. install numpy
4. install cv2
5. install time
6. install datetime
message used
from geometry_msgs.msg import Twist ## Massage for scout MINI movement
● Modified scout MINI for rail recognition
# Parts Used #
● scout MINI : 1
● Logitech C920 PRO HD WEBCAM : 2
● Intel L515 3D Rider sensor : 1
● Video with rail recognition algorithm // Rail Recognition
# Explanation #
1) "cvtColor" function : Convert images to gray scale
2) "boxFilter" function : Use to remove noise
3) "Threshold" function : Black/white classification of images based on threshold
4) "Canny" function : Boundary (line) detection
5) "HoughLinesP" function : Data extraction of both end points of a line detected as a straight line in the form of (x1, y1, x2, y2)
6) Implement scout MINI to move along the rail using the average value of the "x" value of each detected line
● Video with QR code Recognition
# Explanation - Use pyzbar library #
1) Create QR code (Start, A, B, C)
2) When webcam1 recognizes Start QR, scout MINI stops
3) When A or B or C QR is recognized in webcam 2, it moves to the recognized QR position and stops
4) After arriving at the recognized QR position, remove the QR on webcam 2 and resume driving
● Video with Obstacles recognition and avoidance
# Explanation - Use pyrealsense2 library #
1) Use the depth value of the 3D lidar camera
2) Algorithm designed to display " ,1,2,3,4,5,6,7,8" in each pixel of the image according to the depth value
3) Determine if an obstacle exists with the value indicated by the algorithm presented
4) Control the speed and angle of the scout MINI to avoid obstacles
● Project1 - Line Detect Full Version Video
<https://www.youtube.com/watch?v=QiVPxZddGn0>
library used
1. install pyzbar
2. install pyrealsense2
3. install numpy
4. install cv2
5. install realcamera
6. install math
message used
from geometry_msgs.msg import Twist ## Message for scout MINI movement
from nav_msgs.msg import Odometry ## Message for scout MINI position
● Modified scout MINI for SLAM recognition
# Parts Used #
● scout MINI : 1
● Logitech C920 PRO HD WEBCAM : 1
● Intel L515 3D Rider sensor : 1
● Video of my office that Use SSL_SLAM // Reference Site <https://github.com/wh200720041/ssl_slam>
● Convert raw_data of L515_Depth to sorted list
# Explanation for this video #
1) The depth of the 3D lidar camera had 307200 raw_data.
2) To use this depth value, raw_data must be replaced with sorted data.
3) Use the bytearray function to convert raw_data and use numpy to calculate it at a high speed and convert it into an ordered list.
● Project2 - SLAM_MOVE Full Version Video
<https://www.youtube.com/watch?v=w1bOpxk9GYY&t=1s>
● If you have any questions about code, please leave a comment on YouTube or leave a comment on Git