본문 바로가기

창업성장기술개발(디딤돌) 연구 기록

[디딤돌] 연구 기록 6~8주차 - ArUco Marker

반응형

 

 

☞ 메인보드 : Jetson Nano Developer Kit

☞ 운영 체제 : Ubuntu 18.04 - JetPack 4.4.3
☞ ROS 버전 : Melodic
☞ OPENCV 버전 : 4.2.0(설치), 3.2.0(ROS 내장)

 

 

☞ 설치 목록

  1. ROS Melodic(Ubuntu 18.04) 또는 Kinetic(Ubuntu 16.04)
  2. OPENCV 4 버전 이상(본 포스팅에서는 4.2.0으로 진행)
  3. Github 오픈소스 -> https://github.com/CesMak/aruco_detector_ocv

 

 

 


 

 

♣ 유의 사항 ♣

 

 

중간중간에 에러 발생 시 해결 방법을 적어두었는데 해당 방법과 똑같이 진행했는데도 에러가 나면 일단 끝까지 진행해보자. 그래도 에러가 발생하면 댓글로 남겨주기 바란다.

 

 

 

 


 

 

몇 주간 기업 미팅 및 사업의 컨셉을 제대로 잡는 과정이 필요하여 연구를 제대로 기록하지 못했다. 현재까지는 TTA 소프트웨어 성능 시험에 맞는 운영체제와 컴퓨터 스펙에 관계없이 급한 대로 윈도우에서 개발 환경을 구축하여 진행했고 이후에는 AWS 리눅스 서버에서 개발을 진행할 것으로 예상하여 이전에 자주 다루던 Jetson Nano의 환경에서 작업하기로 결정했다.

 

 

 

ArUco Marker

ArUco Marker는 opencv_contrib에서 라이브러리 형태로 볼 수 있으며, 로봇 산업에서 사용되는 마커 종류 중 하나이다. 이는 4X4, 5X5, 6X6, 7X7 크기로 QR코드와 같이 흰색, 검은색의 이진화 이미지로 이루어져 있고 패턴을 달리하여 각각의 마커에 ID를 할당한다. ID를 부여받은 마커는 풋살 선수의 조끼에 붙여 식별하기 편하다고 생각하여 개발 계획에 추가하였다.

먼저 실제로 적용할 수 있는 거리(인식되는 거리)를 알아봐야하기 때문에 오픈소스로 올라와 있는 패키지들을 사용해보려 한다. 일단은 기본적인 내용들은 아래의 OPENCV document에서 확인할 수 있다.

 

https://docs.opencv.org/4.x/d5/dae/tutorial_aruco_detection.html

 

 

 

잘 설명이 되어 있는 오픈소스는 아래와 같다.

 

1. https://github.com/fdcl-gwu/aruco-markers#generating-markers

 

2. https://github.com/CesMak/aruco_detector_ocv

 

 

1번과 2번의 차이는 ROS 플랫폼에서 돌리느냐 안돌리느냐의 차이이다. 2번은 ROS로 소스코드를 실행하여 Rviz라는 시각화 소프트웨어로 정확도와 거리를 확인할 수 있다. 먼저, 마커를 얼마나 멀리서 인식할 수 있는지 알아야 하기 때문에 2번을 진행하였다.

 

 

 


② ArUco Detector ocv

※ 기본 정보

 

 

GitHub - CesMak/aruco_detector_ocv: Detect aruco markers using opencv

Detect aruco markers using opencv. Contribute to CesMak/aruco_detector_ocv development by creating an account on GitHub.

github.com

 

 

 

 

이 소프트웨어의 개발자는 Ubuntu 16.04 커널과 ROS Kinetic 환경에서 작업하였고, 카메라 모델로는 Logitech C920을 사용했다. 나는 예전부터 공부할 때 썼던 카메라를 그대로 사용했는데 모델명을 까먹어서 뭔지를 모르겠다. 단지 2~3만 원 선에서 살 수 있던 것으로 기억한다. 

 

예시 사진을 보아해서는 약 1m 거리에서도 100% 인식률과 함께 마커를 인식할 수 있는 것으로 보여진다. 또한 TF를 통해 Rviz 상에서 현재 카메라의 거리의 절대 거리를 보여주고 있다.

 

 

내 카메라

 

 

모델명 아는 사람 있으면 알려주면 좋겠다.

 

 

 

 

※ 의존성 패키지

 

 

 

의존성 패키지 목록이다. tf2_ros는 절대 좌표계 역할을 cv_bridge ROS와 OPENCV간의 이미지 및 frame Convert 중계 역할을 한다. cv_bridge만 터미널 상에서 sudo apt install ros-melodic-cv-brdige 명령으로 다운로드할 수 있다. OPENCV는 Jetson Nano에 이미지를 부팅시키고 처음에 하는 소프트웨어 업데이트를 해줄 때 설치된다.

 

alfons_msgs는 std_msgs나 sensor_msgs와 같이 ROS에서 사용되는 메세지 포맷 라이브러리이다. 이는 ROS 공식 메세지 라이브러리가 아니니 직접 다운로드해서 빌드해야 한다.

 

https://github.com/CesMak/alfons_msgs

 

 

 

 

alfons_msgs에서 요구하는 의존성 패키지는 ROS를 설치하면 자동으로 함께 설치되기 때문에 상관없다.

 

 

 

 

☞ ROS 설치

오픈소스 개발자의 작업 환경인 Ubuntu 16.04의 ROS Kinetic에서 작업을 하는 것이 더 바람직할 수 있으나 예전부터 썼던 본 포스트는 Ubuntu 18.04 Melodic 환경에서 작업을 진행한다.  ROS Melodic 설치로 아래 포스트를 참고하길 바란다.

 

 

 

[ROS] 3. ROS Melodic 설치

☞ 메인보드 : Jetson Nano Developer Kit ☞ 운영 체제 : Ubuntu 18.04 - JetPack 4.3 ☞ ROS 버전 : Melodic <이전 포스트> 1. 이미지 삽입, 포맷 그리고 백업 # 이미지 삽입 1) Rufus 다운로드 https://rufus.i..

95mkr.tistory.com

 

 

 

☞ OPENCV 설치

Jetson 환경에서 작업하는 경우 OPENCV 설치는 아래의 포스트를 참고하길 바란다. Jetson 외 다른 리눅스 환경에서 작업했더라도 아래의 포스팅과 설치 및 빌드 과정은 같으니 함께 참고하면 좋을 것 같다.

 

 

 

[OPENCV] 1. Jetson Nano 보드 ubuntu 18.04에서 OpenCV 설치 및 CUDA 빌드

☞ 메인보드 : Jetson Nano Developer Kit ☞ 운영 체제 : Ubuntu 18.04 - JetPack 4.3 목차 ○ OpenCV 설치 준비 ○ OpenCV 설치 ○ Make + Make install ① OpenCV 설치 준비 이 설치는 Jetson Nano 보드로 진..

95mkr.tistory.com

 

 

 

 

 

※ 다운로드 & 실행시 에러

 

☞ 다운로드

// Github로부터의 다운로드 및 catkin 빌드
cd catkin_ws/src
git clone https://github.com/CesMak/aruco_detector_ocv
git clone https://github.com/CesMak/alfons_msgs

// catkin_ws 디렉터리에서 빌드 진행
cd ..
catkin_make

 

 

☞ 실행

roslaunch aruco_detector_ocv detector.launch

 

 

 

※ 에러 모음

 

☞ Cannot locate node ~

 

 

 

해결 방법 : (~/catkin_ws) caktin_make clean 명령 실행

 

 

 

 

위와 같이 aruco_detector_ocv/node 링킹 내용이 나오면 성공했다는 뜻이다.

 

 

 

 

☞ process has died ~

 

detector.launch 파일 내용

 

 

추측하는 에러 원인 : (~/catkin_ws/src/aruco_detector_ocv/launch/detector.launch) pixel_format 파라미터의 value 값을 jpeg 또는 png와 같이 launch 파일이 알아먹을 수 없는 파일 포맷으로 설정한 경우

 

해결 방법 : 재부팅 & pixel_format 파라미터의 value 값을 yuyv로 설정한다.(원래 default 값이 yuyv)

 

 

 

 

에러가 해결되고 launch 파일을 실행하면 위와 같은 터미널 내용을 볼 수 있다.

 

 

 

 

☞ [WARN] Camera calibration file ~ /.ros/camera_info/head_camera.yaml not found

카메라 왜곡 보정 정보가 있으면 아루코 코드 인식 정확도가 올라갈 것이라 생각하여 camera calibration을 진행했다. 그 과정은 아래의 글을 참고하면 된다.

 

 

 

[ROS] 16. Camera Calibration

☞ 메인보드 : Jetson Nano Developer Kit ☞ 운영 체제 : Ubuntu 18.04 - JetPack 4.4.3 ☞ ROS 버전 : Melodic 목차 ○ 1. Camera Calibration ○ 2. Camera Calibration 과정 ○ 3. 결과 파일 이번 연구에 ROS..

95mkr.tistory.com

 

 

 

 

~/.ros/camera_info 디렉터리 내의 head_camera.yaml 파일이다. 파일 이름을 head_camera로 안의 내용에서 camera_name 부분을 head_camera로 변경해야 roslaunch시 진행에 WARN이 발생하지 않는다.

 

 

 

 


③ 실행 결과

 

 

 

FPS가 고정은 아닌 것 같다. 멀리갈 수록 당연히 정확도가 줄어들긴한다. 그리고 화면에 dis라고 연두색의 글씨가 나오는데 이는 카메라의 절대 좌표로 부터 아루코 코드가 인식된 지점과의 거리이다. 화면에는 1.168m로 나오지만 실제로는 약 3m 40cm 정도 나온다 1 : 3 정도의 비례로 생각하면 될 것 같다.

 

다음은 640x480이 아닌 다른 해상도에서 실험을 해보려한다.

 

 

반응형