터틀봇 주행 시 차선 확인 및 표지판 인식을 구현하기 위해 카메라를 마운트해야 한다. 환경은 아래와 같다.
일단 카메라 인식시키는 것부터 시작한다. 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 파일을 수정해야 한다.