본문 바로가기
ROS

Jetson (Ubuntu 20.04, Ros noetic)과 USB 카메라 연결 및 입력 이미지 확인

by rainbow-chaser 2024. 8. 5.

Jetson과 USB 카메라 연결 및 시각화

카메라의 이미지 데이터를 이용한 실시간 객체 분류가 필요하여 Jetson에 카메라를 연결하고자 한다.

 

Hardware : Jetson AGX xavier Developer Kit, oCam-5CRO-U (USB 카메라, 꼭 해당 모델의 카메라가 아니어도 상관 없다)

Software : Ubuntu 20.04, Ros noetic

 

1. Jetson - 카메라 연결

 oCam-5CRO-UJetson xavierusb 3.0 (2.0도 상관없지만 전송 가능한 fps가 낮아진다는 것을 고려해야한다)을 이용해 연결해준다.

 Jetson AGX Xavier Developer Kit의 경우 USB-A 타입을 한개 포트만 지원하기 때문에 KVM 스위치를 이용해 연결해주었다.(키보드 마우스도 사용해야하기 때문에...)

혹시 Jetson Xavier에서 USB-A 포트가 보이지 않는다고 당황하지 말도록 하자.  HDMI 포트 왼쪽에 있는 그 포트가 USB 포트이다. eSata도 사용할 수 있는 eSATA/USB 콤보 포트라서 웃기게 생겼다.

좌 - USB Cam, 우 - Jetson Xavier

둘을 연결하고 Jetson의 터미널 창을 연다.

v4l2-ctl --list-devices

위의 명령어를 입력하면, 현재 연결된 카메라 디바이스의 리스트가 나타난다.

연결된 카메라 디바이스 확인

만약 노트북과 같이 내장 카메라가 존재하는 경우 usb 카메라는 /dev/video2 , /dev/video3 으로 잡힐 것이다.

 

2. Ros 패키지 설치

mkdir -p ~/<워크스페이스 이름>/src
cd ~/<워크스페이스 이름>/src
git clone -b develop https://github.com/ros-drivers/usb_cam.git # ros noetic은 develop 브랜치로 설치해야한다

cd ..
rosdep install --from-paths src --ignore-src --rosdistro noetic -y 
catkin_make # 빌드

3. 실행

source ~/<워크스페이스 이름>/devel/setup.bash

roslaunch usb_cam usb_cam.launch # 실행

 

+ 만약 노트북과 같은 환경에서 위의 v4l2-ctl --list-devices 명령어를 입력했을때, USB 카메라가 /dev/video0 이 아닌 다른 숫자로 잡힌다면

yml 파일 수정

~/<워크스페이스 이름>/src/usb_cam/config/usb_cam.yml 파일의 video_device 값을 수정-저장 하고 재실행 한다.

(/dev/video2, /dev/video3 중 전자를 입력하면 된다)

해당 파일을 통해 해상도와 fps 등의 옵션을 수정하기 편했다. 필자는 HD 해상도(1280 x 720)로 설정하고 실행했다.

 

4. 이미지 확인

Rviz를 통해 이미지 확인

 

Rviz를 실행하고 ADD → By topic → /usb_cam/ image_raw/ image 를 선택하고 OK를 누르면 다음과 같이 카메라 이미지가 들어오고 있음을 확인할 수 있다!