본문 바로가기
ROBOTICS/Turtlebot3 - Noetic

Turtlebot3 Camera + OpenCV installation

by 누워있는말티즈 2022. 9. 30.

터틀봇 주행 시 차선 확인 및 표지판 인식을 구현하기 위해 카메라를 마운트해야 한다. 환경은 아래와 같다.

- 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

댓글