터틀봇 주행 시 차선 확인 및 표지판 인식을 구현하기 위해 카메라를 마운트해야 한다. 환경은 아래와 같다.
- Raspberry Pi 4B 4Gb(8Gb는 Ubuntu server가 불안정하다)
- Ubuntu Server 20.04 + ROS Noetic Ninjemys
- YR-019 광각 카메라(추정)
일단 카메라 인식시키는 것부터 시작한다. Ubuntu 18.04 이미지의 경우 카메라 자체가 인식이 안된다. 이 경우 로보티즈에서 제공한 이미지 내부에 그래픽 커널이 없는 듯 했다.
리본 케이블로 카메라를 연결하고 인식 여부부터 확인한다. ssh로 접근해서 아래 명령으로 디바이스 인식을 확인할 수 있다.
ls /dev/ | grep video
video0이 잡히면 정상이다. 이제 OpenCV를 사용하기 위해 패키지를 설치해줄거다.
sudo apt update
sudo apt install python3-opencv
위 방식으로 패키지를 받는 방식도 있는데 오류가 자주 나므로 직접 빌드해줄 것이다.
2Gb 모델을 사용한다면 메모리가 부족할 수 있으므로 swap memory부터 할당한다. 그리고 dependencies를 한 번에 설치해준다.
# move to home directory
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# install dependencies
sudo apt-get update
sudo apt-get install build-essential cmake gcc g++ git unzip pkg-config
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libgtk2.0-dev libcanberra-gtk* libxvidcore-dev libx264-dev python3-dev python3-numpy python3-pip libtbb2 libtbb-dev libdc1394-22-dev libv4l-dev v4l-utils libopenblas-dev libatlas-base-dev libblas-dev liblapack-dev gfortran libhdf5-dev libprotobuf-dev libgoogle-glog-dev libgflags-dev protobuf-compiler
이제 소스 파일을 다운로드 받고 빌드할 준비를 한다. cmake 파일을 생성해줘야 한다.
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zip
unzip opencv.zip
unzip opencv_contrib.zip
# if there's no opencv folder "mkdir opencv"
mv opencv-4.5.0 opencv
mv opencv_contrib-4.5.0 opencv_contrib
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
이제 빌드하고 오류가 안나길 기도한다.
cd opencv/build
make
sudo make insyall
sudo ldconfig
make clean
sudo apt-get update
카메라 사용을 위해서 /boot/firmware/config.txt 파일을 수정해야 한다.
sudo vi /boot/firmware/config.txt
맨 아래에 두 줄을 추가한다.
start_x=1
gpu_mem=128
이제 마지막 패키지만 설치하고 reboot 해준다.
sudo apt install ffmpeg
sudo apt install ros-noetic-cv-camera
sudo reboot
다시 켜지면 카메라 작동을 확인할 것이다.
켜지면 아래 python 파일을 생성하여 실행한다.
from posixpath import ismount
import cv2
while True:
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, img = cap.read()
print(ret)
if ret:
cv2.imshow('camera-0',img)
if cv2.waitKey(1) & 0xFF == 27:
break
else:
print('no camera')
break
break
cap.release()
cv2.destroyAllWindows()
정상적으로 video streaming 확인하였다. 카메라가 뒤집어져 있어서 뒤집혀나오긴 하는데 색 보정만 거치면 사용 가능할 것으로 판단된다.
'ROBOTICS > Turtlebot3 - Noetic' 카테고리의 다른 글
Turtlebot3 : Camera Imaging (1) | 2022.10.03 |
---|---|
Turtlebot3 Autorace Simulation (1) | 2022.09.29 |
Turtlebot Simulation : Navigation (0) | 2022.08.23 |
Turtlebot Simulation : SLAM (0) | 2022.08.22 |
Turtlebot Simulation : Setup (0) | 2022.08.22 |
댓글