본문 바로가기

Project/KUSMO

[KUSMO] 10/12 NUC에서 USB Camera를 통한 Aruco Marker 인식

728x90
 

FIT0701 : 반도체

USB CAMERA FOR RASPBERRY PI AND - Bulk - 15186원 국내 최대 전자부품 전문 쇼핑몰 - 아이씨뱅큐

www.icbanq.com

 

1. USB Camera Driver 설치

$ sudo apt install ros-noetic-usb-cam
  • USB Webcam 사용을 위한 ROS Driver 설치

 

$ roscore
$ rosrun usb_cam usb_cam_node _camera_name:='usb_cam' _camera_frame_id:='usb_cam'
  • 서로 다른 Terminal 창에서 roscore와 Camera Driver 실행
  • 실행 후 Rviz 창에서 Add -> By topic -> /usb_cam 선택 -> /image_raw 중 image(raw) 을 선택하여 카메라 영상 확인

 

$ rostopic list
  • Camera 정상 동작 여부 확인
  • /usb_cam/camera_info, /usb_cam/image_raw 확인

 

  • Camera가 아직 uncalibrated 된 상태이므로, 아래와 같은 경고창이 표시되어야 함

 

  • camera_info topic의 모든 값들은 0이어야 함

 

 

2. Aruco Detector 설치

$ cd catkin_ws/src
$ git clone https://github.com/CesMak/aruco_detector_ocv
$ git clone https://github.com/CesMak/alfons_msgs
$ cd ..
$ catkin_make --only-pkg-with-deps 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

 

 

  • detector.launch file에서 image의 width와 height를 Camera에 맞게 설정

 

$ roslaunch aruco_detector_ocv detector.launch
  • Aruco Detector 실행

 

 

- VIDIOC_G_FMT error 22, Invalid argument Error 발생

  • 위 명령어로 Aruco Marker Launch 시도 시 'VIDIOC_G_FMT error 22, Invalid argument' Error가 표시되며 아무런 영상도 뜨지 않음
  • 이는 Launch File에서 사용할 수 없는 Argument가 있어 발생하는 Error

 

- 해결 방법

$ ls /dev/video*
  • 위 명령어를 통해 다른 Camera Application이 있는지 확인

  • 확인 결과 2개의 Camera Application 구동 중
  • Launch File (~/catkin_ws/src/aruco_detector_ocv/launch/detector.launch) 확인 결과 "video_device" Parameter의 값이 "/dev/video1" 로 설정되어 있었음

dev/video1 -> dev/video0 으로 변경

  • 이를 "/dev/video0" 으로 변경 후 Launch File 실행. 이후 Aruco Detector 정상 실행

Aruco Detector Launch 성공

 

$ rostopic echo /tf
  • 이후 TF topic의 값을 확인하여 USB Camera와 Aruco Marker의 거리값 확인
  • USB Camera와 Aruco Marker의 거리는 translation_z 값

 

  • 이후 USB Camera와 Aruco Marker의 TF 방향 확인

 

  • 위 TF 값을 통해 로봇과 Aruco Marker 간의 거리를 파악할 수 있을 것으로 보임

 

$ sudo gedit /opt/ros/noetic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
  • OpenCV 관련 Error 발생 시 위 명령어 입력

 

'set(_include_dirs "include;/usr/include;/usr/include/opencv"'

'set(_include_dirs "include;/usr/include;/usr/include/opencv4"'
  • 이후 96번째 줄을 위처럼 변경

참고 자료 :

https://github.com/NVlabs/Deep_Object_Pose/blob/master/doc/camera_tutorial.md

 

https://95mkr.tistory.com/entry/DD4

 

[디딤돌] 연구 기록 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 내장) ☞ 설치 목록 ROS Melodic(Ubuntu 18.04) 또는 Kinetic(Ubuntu 16.04) OPENCV 4

95mkr.tistory.com

https://95mkr.tistory.com/entry/OPENCV1

 

[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

 

https://answers.ros.org/question/9098/usb_cam-vidioc_s_fmt-error-22/

 

usb_cam: VIDIOC_S_FMT error 22 - ROS Answers: Open Source Q&A Forum

usb_cam: VIDIOC_S_FMT error 22 edit asked 2011-02-16 12:09:41 -0500 This post is a wiki. Anyone with karma >75 is welcome to improve it. When using usb_cam package, I get the following error message: VIDIOC_S_FMT error 22, Invalid argument

answers.ros.org

 

https://answers.ros.org/question/246775/where-is-the-source-code-of-installed-packages/

 

Where is the source code of installed packages? - ROS Answers: Open Source Q&A Forum

Where is the source code of installed packages? edit I have installed ROS Kinetic and it sits is the /opt/ros/kinetic/ folder which has the following structure: . ├── bin ├── env.sh ├── etc ├── include ├── lib ├── setup.

answers.ros.org

 

https://github.com/ros-drivers/usb_cam/tree/develop

 

GitHub - ros-drivers/usb_cam: A ROS Driver for V4L USB Cameras

A ROS Driver for V4L USB Cameras. Contribute to ros-drivers/usb_cam development by creating an account on GitHub.

github.com